#include <column.h>
Collaboration diagram for ColumnGenerator:
Public Member Functions | |
ColumnGenerator (Pointer< MinlpNode > node_, MinlpBCP &bcp_) | |
int | init_RMP () |
Solves the relaxed RMP and tries to find new RMP points, if y is not 0. | |
int | solve_RMP () |
void | clear_RMP () |
void | solve_lag_problem (MinlpBCP::LagSolveStatus &status, int k, Pointer< SepQcFunc > temp_cut=NULL) |
void | update_ExtremePoints () |
Update the RMP points after subdivision, and adds the columns to the RMP, if the RMP was built before. | |
void | mult_W (UserVector< double > &x, const dvector &z, int k) |
Computes Wz=sum_l z_{k,l} * w_{k,l} for a fixed k. | |
int | generate_RMP () |
Generates the RMP by column generation. | |
double | subprobl_key (double rc, int k) |
A key for sorting Lagrangian subproblems. | |
void | print (ostream &out) const |
Private Member Functions | |
void | add_cut (Pointer< SepQcFunc > cut, int k) |
int | get_search_dir2 (dvector &a, double &c, int k) |
Private Attributes | |
Pointer< MinlpNode > | node |
A reference to MinlpNode, where the sub-problem is defined. | |
MinlpBCP & | bcp |
Pointer< Param > | param |
Pointer< RMPManager > | RMP |
The restricted master problem. | |
int | max_major_iter |
int | max_minor_iter |
int | max_initRMP_iter |
double | rc_tol |
ColumnGenerator | max major iter options integer $ 0$ default 5 How often $$ is maximally updated during one generate run. | |
ColumnGenerator | max minor iter options integer $ 0$ default 0 For how many blocks the lagrangian subproblem is solved. Only iterations, where the gap could be significantly reduced, are counted. If 0, the number is computed as $(5, 1.39{n}{p}-.05({n}{p})^2+0.15p)$ | |
ColumnGenerator | max init RMP iter options integer $ 0$ default 0 level 0 Iteration limit to make RMP feasible. If 0, the number is computed as 2*(maxblocksize+1). |
Definition at line 39 of file column.h.
int ColumnGenerator::get_search_dir2 | ( | dvector & | a, | |
double & | c, | |||
int | k | |||
) | [private] |
int ColumnGenerator::init_RMP | ( | ) |
Solves the relaxed RMP and tries to find new RMP points, if y is not 0.
int ColumnGenerator::solve_RMP | ( | ) |
void ColumnGenerator::clear_RMP | ( | ) | [inline] |
void ColumnGenerator::solve_lag_problem | ( | MinlpBCP::LagSolveStatus & | status, | |
int | k, | |||
Pointer< SepQcFunc > | temp_cut = NULL | |||
) |
void ColumnGenerator::update_ExtremePoints | ( | ) |
Update the RMP points after subdivision, and adds the columns to the RMP, if the RMP was built before.
void ColumnGenerator::mult_W | ( | UserVector< double > & | x, | |
const dvector & | z, | |||
int | k | |||
) |
Computes Wz=sum_l z_{k,l} * w_{k,l} for a fixed k.
x | The vector to store the result in. Must have (R).block[k].size(). | |
z | The vector which is multiplicated by W. Must have (RMP).block[k].size()==node.i_RMP_points[k].size(). |
int ColumnGenerator::generate_RMP | ( | ) |
Generates the RMP by column generation.
double ColumnGenerator::subprobl_key | ( | double | rc, | |
int | k | |||
) |
A key for sorting Lagrangian subproblems.
k | The number of the subproblem |
void ColumnGenerator::print | ( | ostream & | out | ) | const |
Pointer<MinlpNode> ColumnGenerator::node [private] |
MinlpBCP& ColumnGenerator::bcp [private] |
Pointer<Param> ColumnGenerator::param [private] |
Pointer<RMPManager> ColumnGenerator::RMP [private] |
int ColumnGenerator::max_major_iter [private] |
int ColumnGenerator::max_minor_iter [private] |
int ColumnGenerator::max_initRMP_iter [private] |
double ColumnGenerator::rc_tol [private] |