MinlpOpt Class Reference

Main class to solve a MINLP. More...

#include <minlpopt.h>

Inheritance diagram for MinlpOpt:
Inheritance graph
[legend]
Collaboration diagram for MinlpOpt:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 MinlpOpt (Pointer< MinlpProblem > prob, Pointer< Param > param_, bool is_gams_prob_=false, Pointer< ostream > out_solver_p=out_out_p, Pointer< ostream > out_solver_log_p=out_log_p)
void box_reduce0 ()
void box_reduce1 ()
 Reduces the box using BoundsFinder.
double box_reduce2 ()
void box_reduce3 ()
int start_round_part_heu ()
 Starts Rounding and Partition Heuristic.
int start_bb ()
 Starts Branch-and-Bound Algorithm.
void check_initial_point ()
 Checks, if the initial point is inside it's bound.
int solve ()
 Tries to solve the problem.

Public Attributes

set< SolCandidatesol_cand
 Solution candidates.
Pointer< dvectorsol_Cext
 A solution of (C_ext).
bool sol_Cext_is_solution
double low_bound

Private Types

enum  { box_off, box_C, box_Cext, box_Pext }

Private Member Functions

void decompose ()
 Computes decomposed formulation (S) of (P).
bool check_convex (MinlpProblem &prob)
 Determines curvature.
void quad_relax ()
 Computes the quadratic relaxation (Q) of (S).
void convex_relax ()
 Computes the convex relaxation (C) of (Q) or (S).
void init ()
 Initialization of (basic) relaxations.
void init2 ()
 Initialization of further relaxations.
Pointer< MinlpProblemget_convex_prob (Pointer< MinlpProblem > prob)
 Gives a problem, which containts only the convex constraints from a given problem.
Pointer< MinlpProblemget_convex_prob (Pointer< MinlpProblem > prob, Pointer< MinlpProblem > prob_curv_ref)
 Gives a problem, which containts only the convex constraints from a given problem.
double print_box_reduce_quality (dvector &oldlow, dvector &oldup, Pointer< MinlpProblem > prob, char *prefix)

Private Attributes

Pointer< Paramparam
 Parameters.
Pointer< Timertimer
Pointer< MINLPDataminlpdata
bool is_gams_prob
 Indicates, whether the original problem comes from gams.
Pointer< MinlpProblemorig_prob
 The original problem.
Pointer< MinlpProblemsplit_prob
 The decomposed original problem.
Pointer< MinlpProblemquad_prob
 The nonconvex quadratic relaxation of the decomposed problem.
Pointer< MinlpProblemconvex_prob
 The convexified quadratic decomposed problem.
Pointer< Reformulationreform
 Reformulated problems (Pext), (Qext), (Cext).
vector< vector< double > > min_eigval
vector< vector< double > > max_eigval
bool prob_is_convex
 Indicates, whether the problem is convex.
SparseVector< double > quad_obj_c_add
 To remember, which constants were added to the objective during computation of (Q).
vector< SparseVector< double > > quad_con_c_add
 To remember, which constants were added to the constraints during computation of (Q).
SparseVector< double > conv_obj_c_add
 To remember, which constants were added to the objective during computation of (C).
vector< SparseVector< double > > conv_con_c_add
 To remember, which constants were added to the constraints during computation of (C).
ivector ineq_index
Pointer< LinearRelaxlinear_relax
 Linear relaxation methods: Generates (R) and cuts.
Pointer< LevelCutHandlerlevelcuts
IntervalReduction intervalreduction
bool init_called
double sol_cand_closeval_tol
Pointer< dvectorsol_cand_diam
enum MinlpOpt:: { ... }  boxreduce_type
int boxreduce_effort
double boxreduce_time
list< int > unbounded_var
 The variables, where still no bound is known.

Friends

class LinearRelax
class Reformulation
int main (int argc, char **argv)

Detailed Description

Main class to solve a MINLP.

Parameters:
MinlpOpt mode options BCP, off level 0 default BCP Determines, which algorithm to use. BCP is the Branch and Cut algorithm. off stops after preprocessing.
Boxreduce effort options 0, 1, 2 default 1 level 2 How much effort to spend in boxreduction. 0 computes unknown variable bounds only, except of the IntervalReduction, which is still run on all variables. 1 applies IntervalReduction and boxreduction by linear relaxations for all variables. 2 uses all available techniques for all variables.
Boxreduce type options off, NLP, NLP2, MINLP default off level 0 Which method to use for the box reduction phase II. NLP is (C)-method, NLP2 is (Cext)-method, MINLP is (Pext)-method, off, if switches this part off.
Boxreduction limit for reconvexification options [0,1] default 0.8 level 1 If the boxdiameter was reduced better than the value of this parameter, using (C), we compute a new convex relaxation from (Q).
Decomposition options 0, 1 default 1 level 1 Whether to apply decomposition or not.
Decomposition sample set Monte Carlo options integer >= 0 default 20 level 1
Decomposition sample set mid point options integer >= 0 default 1 level 1
Decomposition sample set vertices options integer >= 0 default 20 level 1
Relax check convex sample set Monte Carlo options integer >= 0 default 200 level 1 The number of sample points to use for convexity test.
Check decomposition options 0, 1 default 0 level 0 Performs a test on the decomposition.
Check polynomial underestimator options 0, 1 default 0 level 0 Performs a test on the polynomial underestimators.
Check convexification options 0, 1 default 0 level 0 Performs a test on the convexification.
heu close value tolerance options double $ 0$ default 10E-8 level 0 It the relative distance of two (objective) values is less than this tolerance, they are considered as equal.
heu close points tolerance options double $ 0$ default .0001 level 0 If the maximal (over all variables) relative (to box diameter) distance is less than this tolerance, two points are considered as equal.
Level Cuts options 0, 1 default 1 level 1 Whether to add a level cut.
Quadratic Underestimator adaptive options 0, 1 default 1 level 2 Whether to use the new adaptive (but slower) quadratic underestimator or the old less reliable ones.

Definition at line 198 of file minlpopt.h.


Member Enumeration Documentation

anonymous enum [private]
Enumerator:
box_off 
box_C 
box_Cext 
box_Pext 

Definition at line 291 of file minlpopt.h.


Constructor & Destructor Documentation

MinlpOpt::MinlpOpt ( Pointer< MinlpProblem prob,
Pointer< Param param_,
bool  is_gams_prob_ = false,
Pointer< ostream >  out_solver_p = out_out_p,
Pointer< ostream >  out_solver_log_p = out_log_p 
)

Member Function Documentation

void MinlpOpt::decompose (  )  [private]

Computes decomposed formulation (S) of (P).

bool MinlpOpt::check_convex ( MinlpProblem prob  )  [private]

Determines curvature.

void MinlpOpt::quad_relax (  )  [private]

Computes the quadratic relaxation (Q) of (S).

void MinlpOpt::convex_relax (  )  [private]

Computes the convex relaxation (C) of (Q) or (S).

void MinlpOpt::init (  )  [private]

Initialization of (basic) relaxations.

void MinlpOpt::init2 (  )  [private]

Initialization of further relaxations.

Pointer<MinlpProblem> MinlpOpt::get_convex_prob ( Pointer< MinlpProblem prob  )  [private]

Gives a problem, which containts only the convex constraints from a given problem.

Pointer<MinlpProblem> MinlpOpt::get_convex_prob ( Pointer< MinlpProblem prob,
Pointer< MinlpProblem prob_curv_ref 
) [private]

Gives a problem, which containts only the convex constraints from a given problem.

Uses another problem as reference to get curvature information.

double MinlpOpt::print_box_reduce_quality ( dvector oldlow,
dvector oldup,
Pointer< MinlpProblem prob,
char *  prefix 
) [private]
void MinlpOpt::box_reduce0 (  ) 
void MinlpOpt::box_reduce1 (  ) 

Reduces the box using BoundsFinder.

Using NLP method with (C), if available, or convex constraints from (Q) or (P).

double MinlpOpt::box_reduce2 (  ) 
void MinlpOpt::box_reduce3 (  ) 
int MinlpOpt::start_round_part_heu (  ) 

Starts Rounding and Partition Heuristic.

int MinlpOpt::start_bb (  ) 

Starts Branch-and-Bound Algorithm.

void MinlpOpt::check_initial_point (  ) 

Checks, if the initial point is inside it's bound.

Exits, if the initial point of the original problem isn't inside the box.

int MinlpOpt::solve (  )  [virtual]

Tries to solve the problem.

Implements Solver.


Friends And Related Function Documentation

friend class LinearRelax [friend]

Definition at line 199 of file minlpopt.h.

friend class Reformulation [friend]

Definition at line 200 of file minlpopt.h.

int main ( int  argc,
char **  argv 
) [friend]

Member Data Documentation

Parameters.

Definition at line 205 of file minlpopt.h.

Definition at line 207 of file minlpopt.h.

Definition at line 209 of file minlpopt.h.

bool MinlpOpt::is_gams_prob [private]

Indicates, whether the original problem comes from gams.

Definition at line 213 of file minlpopt.h.

The original problem.

Definition at line 217 of file minlpopt.h.

The decomposed original problem.

Definition at line 221 of file minlpopt.h.

The nonconvex quadratic relaxation of the decomposed problem.

Definition at line 225 of file minlpopt.h.

The convexified quadratic decomposed problem.

Definition at line 229 of file minlpopt.h.

Reformulated problems (Pext), (Qext), (Cext).

Definition at line 233 of file minlpopt.h.

vector<vector<double> > MinlpOpt::min_eigval [private]

Definition at line 235 of file minlpopt.h.

vector<vector<double> > MinlpOpt::max_eigval [private]

Definition at line 235 of file minlpopt.h.

bool MinlpOpt::prob_is_convex [private]

Indicates, whether the problem is convex.

Definition at line 239 of file minlpopt.h.

To remember, which constants were added to the objective during computation of (Q).

Definition at line 243 of file minlpopt.h.

vector<SparseVector<double> > MinlpOpt::quad_con_c_add [private]

To remember, which constants were added to the constraints during computation of (Q).

Definition at line 246 of file minlpopt.h.

To remember, which constants were added to the objective during computation of (C).

Definition at line 249 of file minlpopt.h.

vector<SparseVector<double> > MinlpOpt::conv_con_c_add [private]

To remember, which constants were added to the constraints during computation of (C).

Definition at line 252 of file minlpopt.h.

Definition at line 254 of file minlpopt.h.

Linear relaxation methods: Generates (R) and cuts.

Definition at line 258 of file minlpopt.h.

Definition at line 260 of file minlpopt.h.

Definition at line 262 of file minlpopt.h.

bool MinlpOpt::init_called [private]

Definition at line 280 of file minlpopt.h.

Definition at line 288 of file minlpopt.h.

Definition at line 289 of file minlpopt.h.

enum { ... } MinlpOpt::boxreduce_type [private]

Definition at line 292 of file minlpopt.h.

double MinlpOpt::boxreduce_time [private]

Definition at line 293 of file minlpopt.h.

list<int> MinlpOpt::unbounded_var [private]

The variables, where still no bound is known.

Definition at line 297 of file minlpopt.h.

Solution candidates.

Definition at line 310 of file minlpopt.h.

A solution of (C_ext).

Definition at line 314 of file minlpopt.h.

Definition at line 315 of file minlpopt.h.

Definition at line 317 of file minlpopt.h.


The documentation for this class was generated from the following file:

Generated on 10 Mar 2013 for LaGO by  doxygen 1.6.1