Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | Private Types | Friends | List of all members
Couenne::CouenneProblem Class Reference

Class for MINLP problems with symbolic information. More...

#include <CouenneProblem.hpp>

Collaboration diagram for Couenne::CouenneProblem:
Collaboration graph
[legend]

Public Types

enum  multiSep { MulSepNone, MulSepSimple, MulSepTight }
 Type of multilinear separation. More...
 

Public Member Functions

 CouenneProblem (ASL *=NULL, Bonmin::BabSetupBase *base=NULL, JnlstPtr jnlst=NULL)
 Constructor. More...
 
 CouenneProblem (const CouenneProblem &)
 Copy constructor. More...
 
 ~CouenneProblem ()
 Destructor. More...
 
void initOptions (Ipopt::SmartPtr< Ipopt::OptionsList > options)
 initializes parameters like doOBBT More...
 
CouenneProblemclone () const
 Clone method (for use within CouenneCutGenerator::clone) More...
 
int nObjs () const
 Get number of objectives. More...
 
int nCons () const
 Get number of constraints. More...
 
int nOrigCons () const
 Get number of original constraints. More...
 
int nOrigVars () const
 Number of orig. variables. More...
 
int nDefVars () const
 Number of def'd variables. More...
 
int nOrigIntVars () const
 Number of original integers. More...
 
int nIntVars () const
 Number of integer variables. More...
 
int nVars () const
 Total number of variables. More...
 
void setNDefVars (int ndefined__)
 
std::vector< int > * Find_Orbit (int) const
 
void sym_setup ()
 
void Compute_Symmetry () const
 
void Print_Orbits () const
 
void ChangeBounds (const double *, const double *, int) const
 
bool compare (register Node &a, register Node &b) const
 
NautygetNtyInfo ()
 
void setupSymmetry ()
 empty if no NTY, symmetry data structure setup otherwise More...
 
int evalOrder (int i) const
 get evaluation order index More...
 
intevalVector ()
 get evaluation order vector (numbering_) More...
 
CouenneConstraintCon (int i) const
 i-th constraint More...
 
CouenneObjectiveObj (int i) const
 i-th objective More...
 
exprVarVar (int i) const
 Return pointer to i-th variable. More...
 
std::vector< exprVar * > & Variables ()
 Return vector of variables (symbolic representation) More...
 
std::set< exprAux *, compExpr > *& AuxSet ()
 Return pointer to set for comparisons. More...
 
DepGraphgetDepGraph ()
 Return pointer to dependence graph. More...
 
Domaindomain () const
 return current point & bounds More...
 
std::vector< expression * > & commonExprs ()
 
CouNumberX (int i) const
 $x_i$ More...
 
CouNumberLb (int i) const
 lower bound on $x_i$ More...
 
CouNumberUb (int i) const
 upper bound on $x_i$ More...
 
CouNumberX () const
 Return vector of variables. More...
 
CouNumberLb () const
 Return vector of lower bounds. More...
 
CouNumberUb () const
 Return vector of upper bounds. More...
 
CouNumber *& bestSol () const
 Best known solution (read from file) More...
 
CouNumber bestObj () const
 Objective of best known solution. More...
 
bool *& Commuted ()
 Get vector of commuted variables. More...
 
void addObjective (expression *, const std::string &="min")
 Add (non linear) objective function. More...
 
void addEQConstraint (expression *, expression *=NULL)
 Add equality constraint $ h(x) = b$. More...
 
void addGEConstraint (expression *, expression *=NULL)
 Add $\ge$ constraint, $h(x)\ge b$. More...
 
void addLEConstraint (expression *, expression *=NULL)
 Add $\le$ constraint, $h(x)\le b$. More...
 
void addRNGConstraint (expression *, expression *=NULL, expression *=NULL)
 Add range constraint, $a\le h(x)\le b$. More...
 
void setObjective (int indObj=0, expression *=NULL, const std::string &="min")
 Add (non linear) objective function. More...
 
expressionaddVariable (bool isint=false, Domain *d=NULL)
 Add original variable. More...
 
exprAuxaddAuxiliary (expression *)
 Add auxiliary variable and associate it with expression given as argument (used in standardization) More...
 
void reformulate (CouenneCutGenerator *=NULL)
 preprocess problem in order to extract linear relaxations etc. More...
 
bool standardize ()
 Break problem's nonlinear constraints in simple expressions to be convexified later. More...
 
void print (std::ostream &=std::cout)
 Display current representation of problem: objective, linear and nonlinear constraints, and auxiliary variables. More...
 
bool doFBBT () const
 shall we do Feasibility Based Bound Tightening? More...
 
bool doRCBT () const
 shall we do reduced cost Bound Tightening? More...
 
bool doOBBT () const
 shall we do Optimality Based Bound Tightening? More...
 
bool doABT () const
 shall we do Aggressive Bound Tightening? More...
 
int logObbtLev () const
 How often shall we do OBBT? More...
 
int logAbtLev () const
 How often shall we do ABT? More...
 
void writeAMPL (const std::string &fname, bool aux)
 Write nonlinear problem to a .mod file (with lots of defined variables) More...
 
void writeGAMS (const std::string &fname)
 Write nonlinear problem to a .gms file. More...
 
void writeLP (const std::string &fname)
 Write nonlinear problem to a .lp file. More...
 
void initAuxs () const
 Initialize auxiliary variables and their bounds from original variables. More...
 
void getAuxs (CouNumber *) const
 Get auxiliary variables from original variables. More...
 
bool boundTightening (t_chg_bounds *, const CglTreeInfo info, Bonmin::BabInfo *=NULL) const
 tighten bounds using propagation, implied bounds and reduced costs More...
 
bool btCore (t_chg_bounds *chg_bds) const
 core of the bound tightening procedure More...
 
int obbt (const CouenneCutGenerator *cg, const OsiSolverInterface &csi, OsiCuts &cs, const CglTreeInfo &info, Bonmin::BabInfo *babInfo, t_chg_bounds *chg_bds)
 Optimality Based Bound Tightening. More...
 
bool aggressiveBT (Bonmin::OsiTMINLPInterface *nlp, t_chg_bounds *, const CglTreeInfo &info, Bonmin::BabInfo *=NULL) const
 aggressive bound tightening. More...
 
int redCostBT (const OsiSolverInterface *psi, t_chg_bounds *chg_bds) const
 procedure to strengthen variable bounds. More...
 
int tightenBounds (t_chg_bounds *) const
 "Forward" bound tightening, that is, propagate bound of variable $x$ in an expression $w = f(x)$ to the bounds of $w$. More...
 
int impliedBounds (t_chg_bounds *) const
 "Backward" bound tightening, aka implied bounds. More...
 
void fillQuadIndices ()
 Look for quadratic terms to be used with SDP cuts. More...
 
void fillObjCoeff (double *&)
 Fill vector with coefficients of objective function. More...
 
void auxiliarize (exprVar *, exprVar *=NULL)
 Replace all occurrences of original variable with new aux given as argument. More...
 
void setCutOff (CouNumber cutoff, const CouNumber *sol=NULL) const
 Set cutoff. More...
 
void resetCutOff (CouNumber value=COUENNE_INFINITY) const
 Reset cutoff. More...
 
CouNumber getCutOff () const
 Get cutoff. More...
 
CouNumbergetCutOffSol () const
 Get cutoff solution. More...
 
void installCutOff () const
 Make cutoff known to the problem. More...
 
ConstJnlstPtr Jnlst () const
 Provide Journalist. More...
 
bool checkNLP (const double *solution, double &obj, bool recompute=false) const
 Check if solution is MINLP feasible. More...
 
int getIntegerCandidate (const double *xFrac, double *xInt, double *lb, double *ub) const
 generate integer NLP point Y starting from fractional solution using bound tightening More...
 
bool readOptimum (std::string *fname=NULL)
 Read best known solution from file given in argument. More...
 
exprAuxlinStandardize (bool addAux, CouNumber c0, LinMap &lmap, QuadMap &qmap)
 standardization of linear exprOp's More...
 
int splitAux (CouNumber, expression *, expression *&, bool *, enum expression::auxSign &)
 split a constraint w - f(x) = c into w's index (it is returned) and rest = f(x) + c More...
 
void indcoe2vector (int *indexL, CouNumber *coeff, std::vector< std::pair< exprVar *, CouNumber > > &lcoeff)
 translates pair (indices, coefficients) into vector with pointers to variables More...
 
void indcoe2vector (int *indexI, int *indexJ, CouNumber *coeff, std::vector< quadElem > &qcoeff)
 translates triplet (indicesI, indicesJ, coefficients) into vector with pointers to variables More...
 
void decomposeTerm (expression *term, CouNumber initCoe, CouNumber &c0, LinMap &lmap, QuadMap &qmap)
 given (expression *) element of sum, returns (coe,ind0,ind1) depending on element: More...
 
const std::string & problemName () const
 return problem name More...
 
void setProblemName (std::string &problemName__)
 
const std::vector< std::set
< int > > & 
Dependence () const
 return inverse dependence structure More...
 
const std::vector
< CouenneObject * > & 
Objects () const
 return object vector More...
 
int findSOS (CbcModel *CbcModelPtr, OsiSolverInterface *solver, OsiObject **objects)
 find SOS constraints in problem More...
 
void setMaxCpuTime (double time)
 set maximum CPU time More...
 
double getMaxCpuTime () const
 return maximum CPU time More...
 
void setBase (Bonmin::BabSetupBase *base)
 save CouenneBase More...
 
void createUnusedOriginals ()
 Some originals may be unused due to their zero multiplicity (that happens when they are duplicates). More...
 
void restoreUnusedOriginals (CouNumber *=NULL) const
 Some originals may be unused due to their zero multiplicity (that happens when they are duplicates). More...
 
intunusedOriginalsIndices ()
 return indices of neglected redundant variables More...
 
int nUnusedOriginals ()
 number of unused originals More...
 
enum multiSep MultilinSep () const
 return type of separator for multilinear terms More...
 
bool fbbtReachedIterLimit () const
 true if latest call to FBBT terminated due to iteration limit reached More...
 
bool orbitalBranching () const
 return true if orbital branching activated More...
 
void setCheckAuxBounds (bool value)
 set the value for checkAuxBounds. More...
 
bool checkAuxBounds () const
 return true if bounds of auxiliary variables have to be satisfied whenever a solution is tested for MINLP feasibiliry More...
 
enum TrilinDecompType getTrilinDecompType ()
 return type of decomposition of quadrilinear terms More...
 
Bonmin::BabSetupBasebonBase () const
 options More...
 
double constObjVal () const
 returns constant objective value if it contains no variables More...
 
CouenneSdpCutsgetSdpCutGen ()
 Returns pointer to sdp cut generator. More...
 
int getLastPrioSort () const
 
void setLastPrioSort (int givenLastPS)
 
CouenneRecordBestSolgetRecordBestSol () const
 returns recorded best solution More...
 
double getFeasTol ()
 returns feasibility tolerance More...
 
double checkObj (const CouNumber *sol, const double &precision) const
 Recompute objective value for sol. More...
 
bool checkInt (const CouNumber *sol, const int from, const int upto, const std::vector< int > listInt, const bool origVarOnly, const bool stopAtFirstViol, const double precision, double &maxViol) const
 check integrality of vars in sol with index between from and upto (original vars only if origVarOnly == true); return true if all integer vars are within precision of an integer value More...
 
bool checkBounds (const CouNumber *sol, const bool stopAtFirstViol, const double precision, double &maxViol) const
 Check bounds; returns true iff feasible for given precision. More...
 
bool checkAux (const CouNumber *sol, const bool stopAtFirstViol, const double precision, double &maxViol) const
 returns true iff value of all auxiliaries are within bounds More...
 
bool checkCons (const CouNumber *sol, const bool stopAtFirstViol, const double precision, double &maxViol) const
 returns true iff value of all auxiliaries are within bounds More...
 
bool checkNLP2 (const double *solution, const double obj, const bool careAboutObj, const bool stopAtFirstViol, const bool checkAll, const double precision) const
 Return true if either solution or recomputed_solution obtained using getAuxs() from the original variables in solution is feasible within precision (the solution with minimum violation is then stored in recBSol->modSol, as well as its value and violation); return false otherwise. More...
 
bool checkNLP0 (const double *solution, double &obj, bool recompute_obj=false, const bool careAboutObj=false, const bool stopAtFirstViol=true, const bool checkAll=false, const double precision=-1) const
 And finally a method to get both. More...
 
std::vector< CouenneConstraint * > * ConstraintClass (const char *str)
 return particular constraint class. More...
 

Static Public Member Functions

static void registerOptions (Ipopt::SmartPtr< Bonmin::RegisteredOptions > roptions)
 Add list of options to be read from file. More...
 

Public Attributes

int minDepthPrint_
 
int minNodePrint_
 
bool doPrint_
 
std::vector< Nodenode_info
 
Nautynauty_info
 
myclass0 node_sort
 
myclass index_sort
 

Protected Member Functions

int fake_tighten (char direction, int index, const double *X, CouNumber *olb, CouNumber *oub, t_chg_bounds *chg_bds, t_chg_bounds *f_chg) const
 single fake tightening. More...
 
int obbtInner (OsiSolverInterface *, OsiCuts &, t_chg_bounds *, Bonmin::BabInfo *) const
 Optimality Based Bound Tightening – inner loop. More...
 
int obbt_iter (OsiSolverInterface *csi, t_chg_bounds *chg_bds, const CoinWarmStart *warmstart, Bonmin::BabInfo *babInfo, double *objcoe, int sense, int index) const
 Iteration on one variable. More...
 
int call_iter (OsiSolverInterface *csi, t_chg_bounds *chg_bds, const CoinWarmStart *warmstart, Bonmin::BabInfo *babInfo, double *objcoe, enum nodeType type, int sense) const
 
void analyzeSparsity (CouNumber, LinMap &, QuadMap &)
 analyze sparsity of potential exprQuad/exprGroup and change linear/quadratic maps accordingly, if necessary by adding new auxiliary variables and including them in the linear map More...
 
void flattenMul (expression *mul, CouNumber &coe, std::map< int, CouNumber > &indices)
 re-organizes multiplication and stores indices (and exponents) of its variables More...
 
void realign ()
 clear all spurious variables pointers not referring to the variables_ vector More...
 
void fillDependence (Bonmin::BabSetupBase *base, CouenneCutGenerator *=NULL)
 fill dependence_ structure More...
 
void fillIntegerRank () const
 fill freeIntegers_ array More...
 
int testIntFix (int index, CouNumber xFrac, enum fixType *fixed, CouNumber *xInt, CouNumber *dualL, CouNumber *dualR, CouNumber *olb, CouNumber *oub, bool patient) const
 Test fixing of an integer variable (used in getIntegerCandidate()) More...
 

Protected Attributes

std::string problemName_
 problem name More...
 
std::vector< exprVar * > variables_
 Variables (original, auxiliary, and defined) More...
 
std::vector< CouenneObjective * > objectives_
 Objectives. More...
 
std::vector< CouenneConstraint * > constraints_
 Constraints. More...
 
std::vector< expression * > commonexprs_
 AMPL's common expressions (read from AMPL through structures cexps and cexps1) More...
 
Domain domain_
 current point and bounds; More...
 
std::set< exprAux *, compExpr > * auxSet_
 Expression map for comparison in standardization and to count occurrences of an auxiliary. More...
 
int curnvars_
 Number of elements in the x_, lb_, ub_ arrays. More...
 
int nIntVars_
 Number of discrete variables. More...
 
CouNumberoptimum_
 Best solution known to be loaded from file – for testing purposes. More...
 
CouNumber bestObj_
 Best known objective function. More...
 
bool * commuted_
 Variables that have commuted to auxiliary. More...
 
intnumbering_
 numbering of variables. More...
 
int ndefined_
 Number of "defined variables" (aka "common expressions") More...
 
DepGraphgraph_
 Dependence (acyclic) graph: shows dependence of all auxiliary variables on one another and on original variables. More...
 
int nOrigVars_
 Number of original variables. More...
 
int nOrigCons_
 Number of original constraints (disregarding those that turned into auxiliary variable definition) More...
 
int nOrigIntVars_
 Number of original integer variables. More...
 
GlobalCutOffpcutoff_
 Pointer to a global cutoff object. More...
 
bool created_pcutoff_
 flag indicating if this class is creator of global cutoff object More...
 
bool doFBBT_
 do Feasibility-based bound tightening More...
 
bool doRCBT_
 do reduced cost bound tightening More...
 
bool doOBBT_
 do Optimality-based bound tightening More...
 
bool doABT_
 do Aggressive bound tightening More...
 
int logObbtLev_
 frequency of Optimality-based bound tightening More...
 
int logAbtLev_
 frequency of Aggressive bound tightening More...
 
JnlstPtr jnlst_
 SmartPointer to the Journalist. More...
 
CouNumber opt_window_
 window around known optimum (for testing purposes) More...
 
bool useQuadratic_
 Use quadratic expressions? More...
 
CouNumber feas_tolerance_
 feasibility tolerance (to be used in checkNLP) More...
 
std::vector< std::set< int > > dependence_
 inverse dependence structure: for each variable x give set of auxiliary variables (or better, their indices) whose expression depends on x More...
 
std::vector< CouenneObject * > objects_
 vector of pointer to CouenneObjects. More...
 
intintegerRank_
 each element is true if variable is integer and, if auxiliary, depends on no integer More...
 
std::vector< intnumberInRank_
 numberInRank_ [i] is the number of integer variables in rank i More...
 
double maxCpuTime_
 maximum cpu time More...
 
Bonmin::BabSetupBasebonBase_
 options More...
 
ASL * asl_
 AMPL structure pointer (temporary — looking forward to embedding into OS...) More...
 
intunusedOriginalsIndices_
 some originals may be unused due to their zero multiplicity (that happens when they are duplicates). More...
 
int nUnusedOriginals_
 number of unused originals More...
 
int lastPrioSort_
 
CouenneRecordBestSolrecBSol
 
enum multiSep multilinSep_
 Type of Multilinear separation. More...
 
int max_fbbt_iter_
 number of FBBT iterations More...
 
bool fbbtReachedIterLimit_
 true if FBBT exited for iteration limits as opposed to inability to further tighten bounds More...
 
bool orbitalBranching_
 use orbital branching? More...
 
bool checkAuxBounds_
 check bounds on auxiliary variables when verifying MINLP feasibility of a solution. More...
 
enum TrilinDecompType trilinDecompType_
 return type of decomposition of quadrilinear terms More...
 
double constObjVal_
 constant value of the objective if no variable is declared in it More...
 
CouenneBTPerfIndicatorFBBTperfIndicator_
 Performance indicator for FBBT – to be moved away from CouenneProblem when we do it with FBBT. More...
 
CouenneBTPerfIndicatorOBBTperfIndicator_
 Performance indicator for OBBT – to be moved away from CouenneProblem. More...
 
std::map< const char
*, std::vector
< CouenneConstraint * >
*, less_than_str
ConstraintClass_
 Return particular constraint class. More...
 
CouenneSdpCutssdpCutGen_
 Temporary pointer to SDP cut generator. More...
 

Private Types

enum  fixType { UNFIXED, FIXED, CONTINUOUS }
 structure to record fixed, non-fixed, and continuous variables More...
 

Friends

class exprMul
 

Detailed Description

Class for MINLP problems with symbolic information.

It is read from an AMPL .nl file and contains variables, AMPL's "defined variables" (aka common expressions), objective(s), and constraints in the form of expression's. Changes throughout the program occur in standardization.

Definition at line 169 of file CouenneProblem.hpp.

Member Enumeration Documentation

structure to record fixed, non-fixed, and continuous variables

Enumerator
UNFIXED 
FIXED 
CONTINUOUS 

Definition at line 174 of file CouenneProblem.hpp.

Type of multilinear separation.

Enumerator
MulSepNone 
MulSepSimple 
MulSepTight 

Definition at line 179 of file CouenneProblem.hpp.

Constructor & Destructor Documentation

CouenneProblem::CouenneProblem ( ASL *  asl = NULL,
Bonmin::BabSetupBase base = NULL,
JnlstPtr  jnlst = NULL 
)

Constructor.

constructor

Definition at line 49 of file CouenneProblemConstructors.cpp.

CouenneProblem::CouenneProblem ( const CouenneProblem p)

Copy constructor.

copy constructor

Definition at line 127 of file CouenneProblemConstructors.cpp.

CouenneProblem::~CouenneProblem ( )

Destructor.

Definition at line 224 of file CouenneProblemConstructors.cpp.

Member Function Documentation

void CouenneProblem::initOptions ( Ipopt::SmartPtr< Ipopt::OptionsList >  options)

initializes parameters like doOBBT

Definition at line 282 of file CouenneProblemConstructors.cpp.

CouenneProblem* Couenne::CouenneProblem::clone ( ) const
inline

Clone method (for use within CouenneCutGenerator::clone)

Definition at line 369 of file CouenneProblem.hpp.

int Couenne::CouenneProblem::nObjs ( ) const
inline

Get number of objectives.

Definition at line 372 of file CouenneProblem.hpp.

int Couenne::CouenneProblem::nCons ( ) const
inline

Get number of constraints.

Definition at line 373 of file CouenneProblem.hpp.

int Couenne::CouenneProblem::nOrigCons ( ) const
inline

Get number of original constraints.

Definition at line 374 of file CouenneProblem.hpp.

int Couenne::CouenneProblem::nOrigVars ( ) const
inline

Number of orig. variables.

Definition at line 376 of file CouenneProblem.hpp.

int Couenne::CouenneProblem::nDefVars ( ) const
inline

Number of def'd variables.

Definition at line 377 of file CouenneProblem.hpp.

int Couenne::CouenneProblem::nOrigIntVars ( ) const
inline

Number of original integers.

Definition at line 378 of file CouenneProblem.hpp.

int Couenne::CouenneProblem::nIntVars ( ) const
inline

Number of integer variables.

Definition at line 379 of file CouenneProblem.hpp.

int Couenne::CouenneProblem::nVars ( ) const
inline

Total number of variables.

Definition at line 380 of file CouenneProblem.hpp.

void Couenne::CouenneProblem::setNDefVars ( int  ndefined__)
inline

Definition at line 382 of file CouenneProblem.hpp.

std::vector<int>* Couenne::CouenneProblem::Find_Orbit ( int  ) const
void Couenne::CouenneProblem::sym_setup ( )
void Couenne::CouenneProblem::Compute_Symmetry ( ) const
void Couenne::CouenneProblem::Print_Orbits ( ) const
void Couenne::CouenneProblem::ChangeBounds ( const double *  ,
const double *  ,
int   
) const
bool Couenne::CouenneProblem::compare ( register Node a,
register Node b 
) const
inline
Nauty* Couenne::CouenneProblem::getNtyInfo ( )
inline

Definition at line 398 of file CouenneProblem.hpp.

void CouenneProblem::setupSymmetry ( )

empty if no NTY, symmetry data structure setup otherwise

Definition at line 451 of file CouenneSymmetry.cpp.

int Couenne::CouenneProblem::evalOrder ( int  i) const
inline

get evaluation order index

Definition at line 407 of file CouenneProblem.hpp.

int* Couenne::CouenneProblem::evalVector ( )
inline

get evaluation order vector (numbering_)

Definition at line 411 of file CouenneProblem.hpp.

CouenneConstraint* Couenne::CouenneProblem::Con ( int  i) const
inline

i-th constraint

Definition at line 415 of file CouenneProblem.hpp.

CouenneObjective* Couenne::CouenneProblem::Obj ( int  i) const
inline

i-th objective

Definition at line 416 of file CouenneProblem.hpp.

exprVar* Couenne::CouenneProblem::Var ( int  i) const
inline

Return pointer to i-th variable.

Definition at line 419 of file CouenneProblem.hpp.

std::vector<exprVar *>& Couenne::CouenneProblem::Variables ( )
inline

Return vector of variables (symbolic representation)

Definition at line 423 of file CouenneProblem.hpp.

std::set<exprAux *, compExpr>*& Couenne::CouenneProblem::AuxSet ( )
inline

Return pointer to set for comparisons.

Definition at line 427 of file CouenneProblem.hpp.

DepGraph* Couenne::CouenneProblem::getDepGraph ( )
inline

Return pointer to dependence graph.

Definition at line 431 of file CouenneProblem.hpp.

Domain* Couenne::CouenneProblem::domain ( ) const
inline

return current point & bounds

Definition at line 435 of file CouenneProblem.hpp.

std::vector<expression *>& Couenne::CouenneProblem::commonExprs ( )
inline

Definition at line 438 of file CouenneProblem.hpp.

CouNumber& Couenne::CouenneProblem::X ( int  i) const
inline

$x_i$

Definition at line 441 of file CouenneProblem.hpp.

CouNumber& Couenne::CouenneProblem::Lb ( int  i) const
inline

lower bound on $x_i$

Definition at line 442 of file CouenneProblem.hpp.

CouNumber& Couenne::CouenneProblem::Ub ( int  i) const
inline

upper bound on $x_i$

Definition at line 443 of file CouenneProblem.hpp.

CouNumber* Couenne::CouenneProblem::X ( ) const
inline

Return vector of variables.

Definition at line 446 of file CouenneProblem.hpp.

CouNumber* Couenne::CouenneProblem::Lb ( ) const
inline

Return vector of lower bounds.

Definition at line 447 of file CouenneProblem.hpp.

CouNumber* Couenne::CouenneProblem::Ub ( ) const
inline

Return vector of upper bounds.

Definition at line 448 of file CouenneProblem.hpp.

CouNumber*& Couenne::CouenneProblem::bestSol ( ) const
inline

Best known solution (read from file)

Definition at line 451 of file CouenneProblem.hpp.

CouNumber Couenne::CouenneProblem::bestObj ( ) const
inline

Objective of best known solution.

Definition at line 452 of file CouenneProblem.hpp.

bool*& Couenne::CouenneProblem::Commuted ( )
inline

Get vector of commuted variables.

Definition at line 455 of file CouenneProblem.hpp.

void CouenneProblem::addObjective ( expression newobj,
const std::string &  sense = "min" 
)

Add (non linear) objective function.

methods to add objective function.

Definition at line 41 of file CouenneProblem.cpp.

void CouenneProblem::addEQConstraint ( expression body,
expression rhs = NULL 
)

Add equality constraint $ h(x) = b$.

methods to add nonlinear constraints:

equality constraint

Definition at line 51 of file CouenneProblem.cpp.

void CouenneProblem::addGEConstraint ( expression body,
expression rhs = NULL 
)

Add $\ge$ constraint, $h(x)\ge b$.

"greater than" constraint

Definition at line 58 of file CouenneProblem.cpp.

void CouenneProblem::addLEConstraint ( expression body,
expression rhs = NULL 
)

Add $\le$ constraint, $h(x)\le b$.

"smaller than" constraint

Definition at line 65 of file CouenneProblem.cpp.

void CouenneProblem::addRNGConstraint ( expression body,
expression lb = NULL,
expression ub = NULL 
)

Add range constraint, $a\le h(x)\le b$.

range constraint

Definition at line 79 of file CouenneProblem.cpp.

void CouenneProblem::setObjective ( int  indObj = 0,
expression newObj = NULL,
const std::string &  sense = "min" 
)

Add (non linear) objective function.

Definition at line 72 of file CouenneProblem.cpp.

expression * CouenneProblem::addVariable ( bool  isint = false,
Domain d = NULL 
)

Add original variable.

add variable to the problem – check whether it is integer (isDiscrete)

Parameters
isintif true, this variable is integer, otherwise it is continuous

Definition at line 89 of file CouenneProblem.cpp.

exprAux * CouenneProblem::addAuxiliary ( expression symbolic)

Add auxiliary variable and associate it with expression given as argument (used in standardization)

add auxiliary variable and associate it with pointer to expression given as argument

Definition at line 108 of file CouenneProblem.cpp.

void CouenneProblem::reformulate ( CouenneCutGenerator cg = NULL)

preprocess problem in order to extract linear relaxations etc.

Definition at line 32 of file reformulate.cpp.

bool CouenneProblem::standardize ( )

Break problem's nonlinear constraints in simple expressions to be convexified later.

standardize (nonlinear) common expressions, objectives, and constraints

Return true if problem looks feasible, false if proven infeasible.

re-check integrality. This is necessary as the initial integrality check is done on some continuous variables, which may turn out to be identical to other, integer, variables. See minlplib/ex1223.nl, where x_29 = x_4^2 and x_4=x_9, with x_4 declared continuous and x_9 integer

Definition at line 34 of file standardize.cpp.

void CouenneProblem::print ( std::ostream &  out = std::cout)

Display current representation of problem: objective, linear and nonlinear constraints, and auxiliary variables.

Definition at line 24 of file problemIO.cpp.

bool Couenne::CouenneProblem::doFBBT ( ) const
inline

shall we do Feasibility Based Bound Tightening?

Definition at line 502 of file CouenneProblem.hpp.

bool Couenne::CouenneProblem::doRCBT ( ) const
inline

shall we do reduced cost Bound Tightening?

Definition at line 503 of file CouenneProblem.hpp.

bool Couenne::CouenneProblem::doOBBT ( ) const
inline

shall we do Optimality Based Bound Tightening?

Definition at line 504 of file CouenneProblem.hpp.

bool Couenne::CouenneProblem::doABT ( ) const
inline

shall we do Aggressive Bound Tightening?

Definition at line 505 of file CouenneProblem.hpp.

int Couenne::CouenneProblem::logObbtLev ( ) const
inline

How often shall we do OBBT?

Definition at line 507 of file CouenneProblem.hpp.

int Couenne::CouenneProblem::logAbtLev ( ) const
inline

How often shall we do ABT?

Definition at line 508 of file CouenneProblem.hpp.

void CouenneProblem::writeAMPL ( const std::string &  fname,
bool  aux 
)

Write nonlinear problem to a .mod file (with lots of defined variables)

Parameters
fnameName of the .mod file to be written
auxcontrols the use of auxiliaries. If true, a problem is written with auxiliary variables written with their associated expression, i.e. $w_i = h_i(x,y,w)$ and bounds $l_i \le w_i \le u_i$, while if false these constraints are written in the form $l_i \le h_i (x,y) \le u_i$.

Note: if used before standardization, writes original AMPL formulation

with or without auxiliaries?

Parameters
auxname of the mod file

Definition at line 22 of file writeAMPL.cpp.

void CouenneProblem::writeGAMS ( const std::string &  fname)

Write nonlinear problem to a .gms file.

Parameters
fnameName of the .gams file to be written.
fnameName of the .gms file to be written.

Definition at line 24 of file writeGAMS.cpp.

void CouenneProblem::writeLP ( const std::string &  fname)

Write nonlinear problem to a .lp file.

Note: only works with MIQCQPs (and MISOCPs in the future)

Parameters
fnameName of the .lp file to be written

name of the mod file

Definition at line 270 of file writeLP.cpp.

void CouenneProblem::initAuxs ( ) const

Initialize auxiliary variables and their bounds from original variables.

initialize auxiliary variables from original variables in the nonlinear problem

Definition at line 51 of file problem.cpp.

void CouenneProblem::getAuxs ( CouNumber x) const

Get auxiliary variables from original variables.

get auxiliary variables from original variables in the nonlinear problem

Definition at line 162 of file problem.cpp.

bool CouenneProblem::boundTightening ( t_chg_bounds chg_bds,
const CglTreeInfo  info,
Bonmin::BabInfo babInfo = NULL 
) const

tighten bounds using propagation, implied bounds and reduced costs

procedure to strengthen variable bounds.

Return false if problem turns out to be infeasible with given bounds, true otherwise.

Definition at line 180 of file boundTightening.cpp.

bool CouenneProblem::btCore ( t_chg_bounds chg_bds) const

core of the bound tightening procedure

Definition at line 26 of file boundTightening.cpp.

int CouenneProblem::obbt ( const CouenneCutGenerator cg,
const OsiSolverInterface &  csi,
OsiCuts &  cs,
const CglTreeInfo &  info,
Bonmin::BabInfo babInfo,
t_chg_bounds chg_bds 
)

Optimality Based Bound Tightening.

OBBT has tightened, add improved bounds

Definition at line 177 of file obbt.cpp.

bool CouenneProblem::aggressiveBT ( Bonmin::OsiTMINLPInterface nlp,
t_chg_bounds chg_bds,
const CglTreeInfo &  info,
Bonmin::BabInfo babInfo = NULL 
) const

aggressive bound tightening.

Fake bounds in order to cut portions of the solution space by fathoming on bounds/infeasibility

Definition at line 62 of file aggressiveBT.cpp.

int CouenneProblem::redCostBT ( const OsiSolverInterface *  psi,
t_chg_bounds chg_bds 
) const

procedure to strengthen variable bounds.

reduced cost bound tightening

Return false if problem turns out to be infeasible with given bounds, true otherwise.

Definition at line 240 of file boundTightening.cpp.

int CouenneProblem::tightenBounds ( t_chg_bounds chg_bds) const

"Forward" bound tightening, that is, propagate bound of variable $x$ in an expression $w = f(x)$ to the bounds of $w$.

Bound propagation for auxiliary variables.

Definition at line 21 of file tightenBounds.cpp.

int CouenneProblem::impliedBounds ( t_chg_bounds chg_bds) const

"Backward" bound tightening, aka implied bounds.

Bound tightening for auxiliary variables.

Definition at line 20 of file impliedBounds.cpp.

void CouenneProblem::fillQuadIndices ( )

Look for quadratic terms to be used with SDP cuts.

Definition at line 15 of file fillQuadIndices.cpp.

void CouenneProblem::fillObjCoeff ( double *&  obj)

Fill vector with coefficients of objective function.

fill obj vector with coefficient of the (linearized) obj function (depends on sense of optimization – invert if sense()==MAXIMIZE)

Definition at line 241 of file problem.cpp.

void CouenneProblem::auxiliarize ( exprVar aux,
exprVar subst = NULL 
)

Replace all occurrences of original variable with new aux given as argument.

replace, in all expressions of the problem (auxiliaries, objectives and constraints) link to an original variable that has gone auxiliary

Definition at line 27 of file auxiliarize.cpp.

void CouenneProblem::setCutOff ( CouNumber  cutoff,
const CouNumber sol = NULL 
) const

Set cutoff.

set cutoff from NLP solution

Definition at line 326 of file problem.cpp.

void CouenneProblem::resetCutOff ( CouNumber  value = COUENNE_INFINITY) const

Reset cutoff.

Reset cutoff to a given value.

Definition at line 348 of file problem.cpp.

CouNumber CouenneProblem::getCutOff ( ) const

Get cutoff.

Definition at line 280 of file CouenneProblem.cpp.

CouNumber * CouenneProblem::getCutOffSol ( ) const

Get cutoff solution.

Definition at line 284 of file CouenneProblem.cpp.

void CouenneProblem::installCutOff ( ) const

Make cutoff known to the problem.

Tell problem that auxiliary related to obj has a cutoff, to be used in bound tightening.

Definition at line 363 of file problem.cpp.

ConstJnlstPtr CouenneProblem::Jnlst ( ) const

Provide Journalist.

Definition at line 288 of file CouenneProblem.cpp.

bool CouenneProblem::checkNLP ( const double *  solution,
double &  obj,
bool  recompute = false 
) const

Check if solution is MINLP feasible.

Definition at line 23 of file checkNLP.cpp.

int CouenneProblem::getIntegerCandidate ( const double *  xFrac,
double *  xInt,
double *  lb,
double *  ub 
) const

generate integer NLP point Y starting from fractional solution using bound tightening

GRASP for finding integer feasible solutions.

Generate integer NLP point xInt starting from fractional solution xFrac, using (feasibility-based, i.e. cheap) bound tightening

return -1 if the problem is infeasible

Definition at line 34 of file getIntegerCandidate.cpp.

bool CouenneProblem::readOptimum ( std::string *  fname = NULL)

Read best known solution from file given in argument.

read optimal solution into member optimum

Definition at line 107 of file problemIO.cpp.

void CouenneProblem::registerOptions ( Ipopt::SmartPtr< Bonmin::RegisteredOptions roptions)
static

Add list of options to be read from file.

Definition at line 421 of file problem.cpp.

exprAux * CouenneProblem::linStandardize ( bool  addAux,
CouNumber  c0,
LinMap lmap,
QuadMap qmap 
)

standardization of linear exprOp's

data for exprQuad

data for exprGroup

Definition at line 28 of file linStandardize.cpp.

int CouenneProblem::splitAux ( CouNumber  rhs,
expression body,
expression *&  rest,
bool *  wentAux,
enum expression::auxSign sign 
)

split a constraint w - f(x) = c into w's index (it is returned) and rest = f(x) + c

split a constraint aw + f(x) >/</= c into w's index (returned) and rest = (-f(x) + c)/a

Definition at line 36 of file splitAux.cpp.

void CouenneProblem::indcoe2vector ( int indexL,
CouNumber coeff,
std::vector< std::pair< exprVar *, CouNumber > > &  lcoeff 
)

translates pair (indices, coefficients) into vector with pointers to variables

Definition at line 150 of file CouenneProblem.cpp.

void CouenneProblem::indcoe2vector ( int indexI,
int indexJ,
CouNumber coeff,
std::vector< quadElem > &  qcoeff 
)

translates triplet (indicesI, indicesJ, coefficients) into vector with pointers to variables

Definition at line 161 of file CouenneProblem.cpp.

void CouenneProblem::decomposeTerm ( expression term,
CouNumber  initCoe,
CouNumber c0,
LinMap lmap,
QuadMap qmap 
)

given (expression *) element of sum, returns (coe,ind0,ind1) depending on element:

1) a * x_i ^ 2 —> (a,i,?) return COU_EXPRPOW 2) a * x_i —> (a,i,?) return COU_EXPRVAR 3) a * x_i * x_j —> (a,i,j) return COU_EXPRMUL 4) a —> (a,?,?) return COU_EXPRCONST

x_i and/or x_j may come from standardizing other (linear or quadratic operator) sub-expressions

a constant

a variable

the opposite of a term

a subtraction

a quadratic form

a linear term

a sum of (possibly) nonlinear elements

a product of n factors /////////////////////////////////////////

otherwise, simply standardize expression

Definition at line 35 of file decomposeTerm.cpp.

const std::string& Couenne::CouenneProblem::problemName ( ) const
inline

return problem name

Definition at line 658 of file CouenneProblem.hpp.

void Couenne::CouenneProblem::setProblemName ( std::string &  problemName__)
inline

Definition at line 661 of file CouenneProblem.hpp.

const std::vector<std::set <int> >& Couenne::CouenneProblem::Dependence ( ) const
inline

return inverse dependence structure

Definition at line 665 of file CouenneProblem.hpp.

const std::vector<CouenneObject *>& Couenne::CouenneProblem::Objects ( ) const
inline

return object vector

Definition at line 669 of file CouenneProblem.hpp.

int CouenneProblem::findSOS ( CbcModel *  CbcModelPtr,
OsiSolverInterface *  solver,
OsiObject **  objects 
)

find SOS constraints in problem

find SOS objects

Definition at line 28 of file CouenneSOS.cpp.

void Couenne::CouenneProblem::setMaxCpuTime ( double  time)
inline

set maximum CPU time

Definition at line 678 of file CouenneProblem.hpp.

double Couenne::CouenneProblem::getMaxCpuTime ( ) const
inline

return maximum CPU time

Definition at line 682 of file CouenneProblem.hpp.

void CouenneProblem::setBase ( Bonmin::BabSetupBase base)

save CouenneBase

Definition at line 37 of file problem.cpp.

void CouenneProblem::createUnusedOriginals ( )

Some originals may be unused due to their zero multiplicity (that happens when they are duplicates).

This procedure creates a structure for quickly checking and restoring their value after solving.

Definition at line 19 of file CouenneRestoreUnused.cpp.

void CouenneProblem::restoreUnusedOriginals ( CouNumber x = NULL) const

Some originals may be unused due to their zero multiplicity (that happens when they are duplicates).

This procedure restores their value after solving

Definition at line 54 of file CouenneRestoreUnused.cpp.

int* Couenne::CouenneProblem::unusedOriginalsIndices ( )
inline

return indices of neglected redundant variables

Definition at line 700 of file CouenneProblem.hpp.

int Couenne::CouenneProblem::nUnusedOriginals ( )
inline

number of unused originals

Definition at line 704 of file CouenneProblem.hpp.

enum multiSep Couenne::CouenneProblem::MultilinSep ( ) const
inline

return type of separator for multilinear terms

Definition at line 708 of file CouenneProblem.hpp.

bool Couenne::CouenneProblem::fbbtReachedIterLimit ( ) const
inline

true if latest call to FBBT terminated due to iteration limit reached

Definition at line 712 of file CouenneProblem.hpp.

bool Couenne::CouenneProblem::orbitalBranching ( ) const
inline

return true if orbital branching activated

Definition at line 716 of file CouenneProblem.hpp.

void Couenne::CouenneProblem::setCheckAuxBounds ( bool  value)
inline

set the value for checkAuxBounds.

When true, all MINLP feasible solutions will additionally be tested for feasibility with respect to auxiliary variable bounds. This is normally not needed.

Definition at line 722 of file CouenneProblem.hpp.

bool Couenne::CouenneProblem::checkAuxBounds ( ) const
inline

return true if bounds of auxiliary variables have to be satisfied whenever a solution is tested for MINLP feasibiliry

Definition at line 727 of file CouenneProblem.hpp.

enum TrilinDecompType Couenne::CouenneProblem::getTrilinDecompType ( )
inline

return type of decomposition of quadrilinear terms

Definition at line 731 of file CouenneProblem.hpp.

Bonmin::BabSetupBase* Couenne::CouenneProblem::bonBase ( ) const
inline

options

Definition at line 735 of file CouenneProblem.hpp.

double Couenne::CouenneProblem::constObjVal ( ) const
inline

returns constant objective value if it contains no variables

Definition at line 738 of file CouenneProblem.hpp.

CouenneSdpCuts* Couenne::CouenneProblem::getSdpCutGen ( )
inline

Returns pointer to sdp cut generator.

Definition at line 741 of file CouenneProblem.hpp.

int CouenneProblem::fake_tighten ( char  direction,
int  index,
const double *  X,
CouNumber olb,
CouNumber oub,
t_chg_bounds chg_bds,
t_chg_bounds f_chg 
) const
protected

single fake tightening.

Return

-1 if infeasible 0 if no improvement +1 if improved

Parameters
direction0: left, 1: right
indexindex of the variable tested
Xpoint round which tightening is done
olbcur. lower bound
oubcur. upper bound

Definition at line 88 of file fake_tightening.cpp.

int CouenneProblem::obbtInner ( OsiSolverInterface *  csi,
OsiCuts &  cs,
t_chg_bounds chg_bds,
Bonmin::BabInfo babInfo 
) const
protected

Optimality Based Bound Tightening – inner loop.

Optimality based bound tightening – inner loop.

Definition at line 99 of file obbt.cpp.

int CouenneProblem::obbt_iter ( OsiSolverInterface *  csi,
t_chg_bounds chg_bds,
const CoinWarmStart *  warmstart,
Bonmin::BabInfo babInfo,
double *  objcoe,
int  sense,
int  index 
) const
protected

Iteration on one variable.

Definition at line 68 of file obbt_iter.cpp.

int CouenneProblem::call_iter ( OsiSolverInterface *  csi,
t_chg_bounds chg_bds,
const CoinWarmStart *  warmstart,
Bonmin::BabInfo babInfo,
double *  objcoe,
enum nodeType  type,
int  sense 
) const
protected

Definition at line 43 of file obbt.cpp.

void CouenneProblem::analyzeSparsity ( CouNumber  c0,
LinMap lmap,
QuadMap qmap 
)
protected

analyze sparsity of potential exprQuad/exprGroup and change linear/quadratic maps accordingly, if necessary by adding new auxiliary variables and including them in the linear map

Definition at line 31 of file analyzeSparsity.cpp.

void CouenneProblem::flattenMul ( expression mul,
CouNumber coe,
std::map< int, CouNumber > &  indices 
)
protected

re-organizes multiplication and stores indices (and exponents) of its variables

Definition at line 21 of file flattenMul.cpp.

void CouenneProblem::realign ( )
protected

clear all spurious variables pointers not referring to the variables_ vector

Definition at line 392 of file problem.cpp.

void CouenneProblem::fillDependence ( Bonmin::BabSetupBase base,
CouenneCutGenerator cg = NULL 
)
protected

fill dependence_ structure

fill in inverse dependence structure: for each variable x give set of auxiliary variables (or better, their indices) whose expression depends on x

Definition at line 23 of file fillDependence.cpp.

void CouenneProblem::fillIntegerRank ( ) const
protected

fill freeIntegers_ array

fill in the integerRank_ array

Definition at line 173 of file CouenneProblem.cpp.

int CouenneProblem::testIntFix ( int  index,
CouNumber  xFrac,
enum fixType fixed,
CouNumber xInt,
CouNumber dualL,
CouNumber dualR,
CouNumber olb,
CouNumber oub,
bool  patient 
) const
protected

Test fixing of an integer variable (used in getIntegerCandidate())

Definition at line 19 of file testIntFix.cpp.

int Couenne::CouenneProblem::getLastPrioSort ( ) const
inline

Definition at line 814 of file CouenneProblem.hpp.

void CouenneProblem::setLastPrioSort ( int  givenLastPS)

Definition at line 292 of file CouenneProblem.cpp.

CouenneRecordBestSol* Couenne::CouenneProblem::getRecordBestSol ( ) const
inline

returns recorded best solution

Definition at line 821 of file CouenneProblem.hpp.

double Couenne::CouenneProblem::getFeasTol ( )
inline

returns feasibility tolerance

Definition at line 825 of file CouenneProblem.hpp.

double CouenneProblem::checkObj ( const CouNumber sol,
const double &  precision 
) const

Recompute objective value for sol.

Definition at line 280 of file checkNLP.cpp.

bool CouenneProblem::checkInt ( const CouNumber sol,
const int  from,
const int  upto,
const std::vector< int listInt,
const bool  origVarOnly,
const bool  stopAtFirstViol,
const double  precision,
double &  maxViol 
) const

check integrality of vars in sol with index between from and upto (original vars only if origVarOnly == true); return true if all integer vars are within precision of an integer value

Definition at line 313 of file checkNLP.cpp.

bool CouenneProblem::checkBounds ( const CouNumber sol,
const bool  stopAtFirstViol,
const double  precision,
double &  maxViol 
) const

Check bounds; returns true iff feasible for given precision.

Definition at line 361 of file checkNLP.cpp.

bool CouenneProblem::checkAux ( const CouNumber sol,
const bool  stopAtFirstViol,
const double  precision,
double &  maxViol 
) const

returns true iff value of all auxiliaries are within bounds

Definition at line 403 of file checkNLP.cpp.

bool CouenneProblem::checkCons ( const CouNumber sol,
const bool  stopAtFirstViol,
const double  precision,
double &  maxViol 
) const

returns true iff value of all auxiliaries are within bounds

Definition at line 489 of file checkNLP.cpp.

bool CouenneProblem::checkNLP2 ( const double *  solution,
const double  obj,
const bool  careAboutObj,
const bool  stopAtFirstViol,
const bool  checkAll,
const double  precision 
) const

Return true if either solution or recomputed_solution obtained using getAuxs() from the original variables in solution is feasible within precision (the solution with minimum violation is then stored in recBSol->modSol, as well as its value and violation); return false otherwise.

If stopAtFirstViol == true, recBSol->modSol is meaningless upon return. If stopAtFirstViol == false, recBSol->modSol contains the solution with minimum violation, although this violation might be larger than precision. This is useful for cases where the current solution must be considered valid (e.g., because Cbc is going to accept it anyway), although it violates precision requirements. Value of obj matters only if careAboutObj == true; the code then tries to balance violation of constraints and value of objective. if checkAll = false, check only integrality/bounds for original vars and constraints; consider only recomputed_sol if checkAll == true, check also integrality/bounds on auxs; consider both recomputed_sol and solution if careAboutObj is set to true, then stopAtFirstViol must be set to false too.

Definition at line 571 of file checkNLP.cpp.

bool CouenneProblem::checkNLP0 ( const double *  solution,
double &  obj,
bool  recompute_obj = false,
const bool  careAboutObj = false,
const bool  stopAtFirstViol = true,
const bool  checkAll = false,
const double  precision = -1 
) const

And finally a method to get both.

Definition at line 959 of file checkNLP.cpp.

std::vector<CouenneConstraint *>* Couenne::CouenneProblem::ConstraintClass ( const char *  str)
inline

return particular constraint class.

Classes:

1) "convex": convex constraints; 2) "PSDcon": constraints of the form X 0 3) "normal": regular constraints

Definition at line 900 of file CouenneProblem.hpp.

Friends And Related Function Documentation

friend class exprMul
friend

Definition at line 171 of file CouenneProblem.hpp.

Member Data Documentation

int Couenne::CouenneProblem::minDepthPrint_

Definition at line 182 of file CouenneProblem.hpp.

int Couenne::CouenneProblem::minNodePrint_

Definition at line 185 of file CouenneProblem.hpp.

bool Couenne::CouenneProblem::doPrint_

Definition at line 188 of file CouenneProblem.hpp.

std::string Couenne::CouenneProblem::problemName_
protected

problem name

Definition at line 193 of file CouenneProblem.hpp.

std::vector<exprVar *> Couenne::CouenneProblem::variables_
protected

Variables (original, auxiliary, and defined)

Definition at line 195 of file CouenneProblem.hpp.

std::vector<CouenneObjective *> Couenne::CouenneProblem::objectives_
protected

Objectives.

Definition at line 196 of file CouenneProblem.hpp.

std::vector<CouenneConstraint *> Couenne::CouenneProblem::constraints_
protected

Constraints.

Definition at line 197 of file CouenneProblem.hpp.

std::vector<expression *> Couenne::CouenneProblem::commonexprs_
protected

AMPL's common expressions (read from AMPL through structures cexps and cexps1)

Definition at line 200 of file CouenneProblem.hpp.

Domain Couenne::CouenneProblem::domain_
mutableprotected

current point and bounds;

Definition at line 202 of file CouenneProblem.hpp.

std::set<exprAux *, compExpr>* Couenne::CouenneProblem::auxSet_
protected

Expression map for comparison in standardization and to count occurrences of an auxiliary.

Definition at line 206 of file CouenneProblem.hpp.

int Couenne::CouenneProblem::curnvars_
mutableprotected

Number of elements in the x_, lb_, ub_ arrays.

Definition at line 209 of file CouenneProblem.hpp.

int Couenne::CouenneProblem::nIntVars_
protected

Number of discrete variables.

Definition at line 212 of file CouenneProblem.hpp.

CouNumber* Couenne::CouenneProblem::optimum_
mutableprotected

Best solution known to be loaded from file – for testing purposes.

Definition at line 215 of file CouenneProblem.hpp.

CouNumber Couenne::CouenneProblem::bestObj_
protected

Best known objective function.

Definition at line 218 of file CouenneProblem.hpp.

bool* Couenne::CouenneProblem::commuted_
protected

Variables that have commuted to auxiliary.

Definition at line 221 of file CouenneProblem.hpp.

int* Couenne::CouenneProblem::numbering_
protected

numbering of variables.

No variable xi with associated pi(i) greater than pi(j) should be evaluated before variable xj

Definition at line 225 of file CouenneProblem.hpp.

int Couenne::CouenneProblem::ndefined_
protected

Number of "defined variables" (aka "common expressions")

Definition at line 228 of file CouenneProblem.hpp.

DepGraph* Couenne::CouenneProblem::graph_
protected

Dependence (acyclic) graph: shows dependence of all auxiliary variables on one another and on original variables.

Used to create a numbering of all variables for evaluation and bound tightening (reverse order for implied bounds)

Definition at line 234 of file CouenneProblem.hpp.

int Couenne::CouenneProblem::nOrigVars_
protected

Number of original variables.

Definition at line 237 of file CouenneProblem.hpp.

int Couenne::CouenneProblem::nOrigCons_
protected

Number of original constraints (disregarding those that turned into auxiliary variable definition)

Definition at line 241 of file CouenneProblem.hpp.

int Couenne::CouenneProblem::nOrigIntVars_
protected

Number of original integer variables.

Definition at line 244 of file CouenneProblem.hpp.

GlobalCutOff* Couenne::CouenneProblem::pcutoff_
mutableprotected

Pointer to a global cutoff object.

Definition at line 247 of file CouenneProblem.hpp.

bool Couenne::CouenneProblem::created_pcutoff_
mutableprotected

flag indicating if this class is creator of global cutoff object

Definition at line 250 of file CouenneProblem.hpp.

bool Couenne::CouenneProblem::doFBBT_
protected

do Feasibility-based bound tightening

Definition at line 252 of file CouenneProblem.hpp.

bool Couenne::CouenneProblem::doRCBT_
protected

do reduced cost bound tightening

Definition at line 253 of file CouenneProblem.hpp.

bool Couenne::CouenneProblem::doOBBT_
protected

do Optimality-based bound tightening

Definition at line 254 of file CouenneProblem.hpp.

bool Couenne::CouenneProblem::doABT_
protected

do Aggressive bound tightening

Definition at line 255 of file CouenneProblem.hpp.

int Couenne::CouenneProblem::logObbtLev_
protected

frequency of Optimality-based bound tightening

Definition at line 257 of file CouenneProblem.hpp.

int Couenne::CouenneProblem::logAbtLev_
protected

frequency of Aggressive bound tightening

Definition at line 258 of file CouenneProblem.hpp.

JnlstPtr Couenne::CouenneProblem::jnlst_
protected

SmartPointer to the Journalist.

Definition at line 261 of file CouenneProblem.hpp.

CouNumber Couenne::CouenneProblem::opt_window_
protected

window around known optimum (for testing purposes)

Definition at line 264 of file CouenneProblem.hpp.

bool Couenne::CouenneProblem::useQuadratic_
protected

Use quadratic expressions?

Definition at line 267 of file CouenneProblem.hpp.

CouNumber Couenne::CouenneProblem::feas_tolerance_
protected

feasibility tolerance (to be used in checkNLP)

Definition at line 270 of file CouenneProblem.hpp.

std::vector<std::set <int> > Couenne::CouenneProblem::dependence_
protected

inverse dependence structure: for each variable x give set of auxiliary variables (or better, their indices) whose expression depends on x

Definition at line 275 of file CouenneProblem.hpp.

std::vector<CouenneObject *> Couenne::CouenneProblem::objects_
protected

vector of pointer to CouenneObjects.

Used by CouenneVarObjects when finding all objects related to (having as argument) a single variable

Definition at line 280 of file CouenneProblem.hpp.

int* Couenne::CouenneProblem::integerRank_
mutableprotected

each element is true if variable is integer and, if auxiliary, depends on no integer

Definition at line 284 of file CouenneProblem.hpp.

std::vector<int> Couenne::CouenneProblem::numberInRank_
mutableprotected

numberInRank_ [i] is the number of integer variables in rank i

Definition at line 287 of file CouenneProblem.hpp.

double Couenne::CouenneProblem::maxCpuTime_
protected

maximum cpu time

Definition at line 290 of file CouenneProblem.hpp.

Bonmin::BabSetupBase* Couenne::CouenneProblem::bonBase_
protected

options

Definition at line 293 of file CouenneProblem.hpp.

ASL* Couenne::CouenneProblem::asl_
protected

AMPL structure pointer (temporary — looking forward to embedding into OS...)

Definition at line 296 of file CouenneProblem.hpp.

int* Couenne::CouenneProblem::unusedOriginalsIndices_
protected

some originals may be unused due to their zero multiplicity (that happens when they are duplicates).

This array keeps track of their indices and is sorted by evaluation order

Definition at line 301 of file CouenneProblem.hpp.

int Couenne::CouenneProblem::nUnusedOriginals_
protected

number of unused originals

Definition at line 304 of file CouenneProblem.hpp.

int Couenne::CouenneProblem::lastPrioSort_
protected

Definition at line 307 of file CouenneProblem.hpp.

CouenneRecordBestSol* Couenne::CouenneProblem::recBSol
protected

Definition at line 310 of file CouenneProblem.hpp.

enum multiSep Couenne::CouenneProblem::multilinSep_
protected

Type of Multilinear separation.

Definition at line 313 of file CouenneProblem.hpp.

int Couenne::CouenneProblem::max_fbbt_iter_
protected

number of FBBT iterations

Definition at line 316 of file CouenneProblem.hpp.

bool Couenne::CouenneProblem::fbbtReachedIterLimit_
mutableprotected

true if FBBT exited for iteration limits as opposed to inability to further tighten bounds

Definition at line 320 of file CouenneProblem.hpp.

bool Couenne::CouenneProblem::orbitalBranching_
protected

use orbital branching?

Definition at line 323 of file CouenneProblem.hpp.

bool Couenne::CouenneProblem::checkAuxBounds_
protected

check bounds on auxiliary variables when verifying MINLP feasibility of a solution.

Usually this is not needed, unless some manipulation on auxiliary variables is done before Branch-and-Bound

Definition at line 329 of file CouenneProblem.hpp.

enum TrilinDecompType Couenne::CouenneProblem::trilinDecompType_
protected

return type of decomposition of quadrilinear terms

Definition at line 332 of file CouenneProblem.hpp.

double Couenne::CouenneProblem::constObjVal_
protected

constant value of the objective if no variable is declared in it

Definition at line 335 of file CouenneProblem.hpp.

CouenneBTPerfIndicator* Couenne::CouenneProblem::FBBTperfIndicator_
protected

Performance indicator for FBBT – to be moved away from CouenneProblem when we do it with FBBT.

Definition at line 339 of file CouenneProblem.hpp.

CouenneBTPerfIndicator* Couenne::CouenneProblem::OBBTperfIndicator_
protected

Performance indicator for OBBT – to be moved away from CouenneProblem.

Definition at line 343 of file CouenneProblem.hpp.

std::map<const char *, std::vector <CouenneConstraint *> *, less_than_str> Couenne::CouenneProblem::ConstraintClass_
protected

Return particular constraint class.

Classes:

1) "convex": convex constraints; 2) "PSDcon": constraints of the form X 0 3) "normal": regular constraints

Definition at line 350 of file CouenneProblem.hpp.

CouenneSdpCuts* Couenne::CouenneProblem::sdpCutGen_
protected

Temporary pointer to SDP cut generator.

A little dirty as it is generated DURING standardization, but necessary to avoid meddling with different spaces

Definition at line 355 of file CouenneProblem.hpp.

std::vector<Node> Couenne::CouenneProblem::node_info
mutable

Definition at line 387 of file CouenneProblem.hpp.

Nauty* Couenne::CouenneProblem::nauty_info
mutable

Definition at line 388 of file CouenneProblem.hpp.

myclass0 Couenne::CouenneProblem::node_sort

Definition at line 390 of file CouenneProblem.hpp.

myclass Couenne::CouenneProblem::index_sort

Definition at line 391 of file CouenneProblem.hpp.


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