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

 box_off
 box_C
 box_Cext
 box_Pext
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, const 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,
const 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

Pointer<Param> MinlpOpt::param [private]

Parameters.

Definition at line 205 of file minlpopt.h.

Pointer<Timer> MinlpOpt::timer [private]

Definition at line 207 of file minlpopt.h.

Pointer<MINLPData> MinlpOpt::minlpdata [private]

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.

Pointer<MinlpProblem> MinlpOpt::orig_prob [private]

The original problem.

Definition at line 217 of file minlpopt.h.

Pointer<MinlpProblem> MinlpOpt::split_prob [private]

The decomposed original problem.

Definition at line 221 of file minlpopt.h.

Pointer<MinlpProblem> MinlpOpt::quad_prob [private]

The nonconvex quadratic relaxation of the decomposed problem.

Definition at line 225 of file minlpopt.h.

Pointer<MinlpProblem> MinlpOpt::convex_prob [private]

The convexified quadratic decomposed problem.

Definition at line 229 of file minlpopt.h.

Pointer<Reformulation> MinlpOpt::reform [private]

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.

SparseVector<double> MinlpOpt::quad_obj_c_add [private]

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.

SparseVector<double> MinlpOpt::conv_obj_c_add [private]

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.

ivector MinlpOpt::ineq_index [private]

Definition at line 254 of file minlpopt.h.

Pointer<LinearRelax> MinlpOpt::linear_relax [private]

Linear relaxation methods: Generates (R) and cuts.

Definition at line 258 of file minlpopt.h.

Pointer<LevelCutHandler> MinlpOpt::levelcuts [private]

Definition at line 260 of file minlpopt.h.

IntervalReduction MinlpOpt::intervalreduction [private]

Definition at line 262 of file minlpopt.h.

bool MinlpOpt::init_called [private]

Definition at line 280 of file minlpopt.h.

double MinlpOpt::sol_cand_closeval_tol [private]

Definition at line 288 of file minlpopt.h.

Pointer<dvector> MinlpOpt::sol_cand_diam [private]

Definition at line 289 of file minlpopt.h.

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

int MinlpOpt::boxreduce_effort [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.

set<SolCandidate> MinlpOpt::sol_cand

Solution candidates.

Definition at line 310 of file minlpopt.h.

Pointer<dvector> MinlpOpt::sol_Cext

A solution of (C_ext).

Definition at line 314 of file minlpopt.h.

bool MinlpOpt::sol_Cext_is_solution

Definition at line 315 of file minlpopt.h.

double MinlpOpt::low_bound

Definition at line 317 of file minlpopt.h.


The documentation for this class was generated from the following file:
Generated on Tue Oct 21 03:12:35 2008 for LaGO by  doxygen 1.4.7