Class for MINLP problems with symbolic information. More...
#include <CouenneProblem.hpp>
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... | |
CouenneProblem * | clone () 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 |
Nauty * | getNtyInfo () |
void | setupSymmetry () |
empty if no NTY, symmetry data structure setup otherwise More... | |
int | evalOrder (int i) const |
get evaluation order index More... | |
int * | evalVector () |
get evaluation order vector (numbering_) More... | |
CouenneConstraint * | Con (int i) const |
i-th constraint More... | |
CouenneObjective * | Obj (int i) const |
i-th objective More... | |
exprVar * | Var (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... | |
DepGraph * | getDepGraph () |
Return pointer to dependence graph. More... | |
Domain * | domain () const |
return current point & bounds More... | |
std::vector< expression * > & | commonExprs () |
CouNumber & | X (int i) const |
![]() | |
CouNumber & | Lb (int i) const |
lower bound on ![]() | |
CouNumber & | Ub (int i) const |
upper bound on ![]() | |
CouNumber * | X () const |
Return vector of variables. More... | |
CouNumber * | Lb () const |
Return vector of lower bounds. More... | |
CouNumber * | Ub () 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 ![]() | |
void | addGEConstraint (expression *, expression *=NULL) |
Add ![]() ![]() | |
void | addLEConstraint (expression *, expression *=NULL) |
Add ![]() ![]() | |
void | addRNGConstraint (expression *, expression *=NULL, expression *=NULL) |
Add range constraint, ![]() | |
void | setObjective (int indObj=0, expression *=NULL, const std::string &="min") |
Add (non linear) objective function. More... | |
expression * | addVariable (bool isint=false, Domain *d=NULL) |
Add original variable. More... | |
exprAux * | addAuxiliary (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 ![]() ![]() ![]() | |
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... | |
CouNumber * | getCutOffSol () 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... | |
exprAux * | linStandardize (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... | |
int * | unusedOriginalsIndices () |
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::BabSetupBase * | bonBase () const |
options More... | |
double | constObjVal () const |
returns constant objective value if it contains no variables More... | |
CouenneSdpCuts * | getSdpCutGen () |
Returns pointer to sdp cut generator. More... | |
int | getLastPrioSort () const |
void | setLastPrioSort (int givenLastPS) |
CouenneRecordBestSol * | getRecordBestSol () 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< Node > | node_info |
Nauty * | nauty_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... | |
CouNumber * | optimum_ |
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... | |
int * | numbering_ |
numbering of variables. More... | |
int | ndefined_ |
Number of "defined variables" (aka "common expressions") More... | |
DepGraph * | graph_ |
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... | |
GlobalCutOff * | pcutoff_ |
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... | |
int * | integerRank_ |
each element is true if variable is integer and, if auxiliary, depends on no integer More... | |
std::vector< int > | numberInRank_ |
numberInRank_ [i] is the number of integer variables in rank i More... | |
double | maxCpuTime_ |
maximum cpu time More... | |
Bonmin::BabSetupBase * | bonBase_ |
options More... | |
ASL * | asl_ |
AMPL structure pointer (temporary — looking forward to embedding into OS...) More... | |
int * | unusedOriginalsIndices_ |
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_ |
CouenneRecordBestSol * | recBSol |
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... | |
CouenneBTPerfIndicator * | FBBTperfIndicator_ |
Performance indicator for FBBT – to be moved away from CouenneProblem when we do it with FBBT. More... | |
CouenneBTPerfIndicator * | OBBTperfIndicator_ |
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... | |
CouenneSdpCuts * | sdpCutGen_ |
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 |
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.
|
private |
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.
CouenneProblem::CouenneProblem | ( | ASL * | asl = NULL , |
Bonmin::BabSetupBase * | base = NULL , |
||
JnlstPtr | jnlst = NULL |
||
) |
CouenneProblem::CouenneProblem | ( | const CouenneProblem & | p | ) |
CouenneProblem::~CouenneProblem | ( | ) |
Destructor.
Definition at line 224 of file CouenneProblemConstructors.cpp.
void CouenneProblem::initOptions | ( | Ipopt::SmartPtr< Ipopt::OptionsList > | options | ) |
initializes parameters like doOBBT
Definition at line 282 of file CouenneProblemConstructors.cpp.
|
inline |
Clone method (for use within CouenneCutGenerator::clone)
Definition at line 369 of file CouenneProblem.hpp.
|
inline |
Get number of objectives.
Definition at line 372 of file CouenneProblem.hpp.
|
inline |
Get number of constraints.
Definition at line 373 of file CouenneProblem.hpp.
|
inline |
Get number of original constraints.
Definition at line 374 of file CouenneProblem.hpp.
|
inline |
Number of orig. variables.
Definition at line 376 of file CouenneProblem.hpp.
|
inline |
Number of def'd variables.
Definition at line 377 of file CouenneProblem.hpp.
|
inline |
Number of original integers.
Definition at line 378 of file CouenneProblem.hpp.
|
inline |
Number of integer variables.
Definition at line 379 of file CouenneProblem.hpp.
|
inline |
Total number of variables.
Definition at line 380 of file CouenneProblem.hpp.
Definition at line 382 of file CouenneProblem.hpp.
void Couenne::CouenneProblem::sym_setup | ( | ) |
void Couenne::CouenneProblem::Compute_Symmetry | ( | ) | const |
void Couenne::CouenneProblem::Print_Orbits | ( | ) | const |
|
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.
get evaluation order index
Definition at line 407 of file CouenneProblem.hpp.
|
inline |
get evaluation order vector (numbering_)
Definition at line 411 of file CouenneProblem.hpp.
|
inline |
i-th constraint
Definition at line 415 of file CouenneProblem.hpp.
|
inline |
i-th objective
Definition at line 416 of file CouenneProblem.hpp.
Return pointer to i-th variable.
Definition at line 419 of file CouenneProblem.hpp.
|
inline |
Return vector of variables (symbolic representation)
Definition at line 423 of file CouenneProblem.hpp.
Return pointer to set for comparisons.
Definition at line 427 of file CouenneProblem.hpp.
|
inline |
Return pointer to dependence graph.
Definition at line 431 of file CouenneProblem.hpp.
|
inline |
return current point & bounds
Definition at line 435 of file CouenneProblem.hpp.
|
inline |
Definition at line 438 of file CouenneProblem.hpp.
Definition at line 441 of file CouenneProblem.hpp.
lower bound on
Definition at line 442 of file CouenneProblem.hpp.
upper bound on
Definition at line 443 of file CouenneProblem.hpp.
|
inline |
Return vector of variables.
Definition at line 446 of file CouenneProblem.hpp.
|
inline |
Return vector of lower bounds.
Definition at line 447 of file CouenneProblem.hpp.
|
inline |
Return vector of upper bounds.
Definition at line 448 of file CouenneProblem.hpp.
|
inline |
Best known solution (read from file)
Definition at line 451 of file CouenneProblem.hpp.
|
inline |
Objective of best known solution.
Definition at line 452 of file CouenneProblem.hpp.
|
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 .
methods to add nonlinear constraints:
equality constraint
Definition at line 51 of file CouenneProblem.cpp.
void CouenneProblem::addGEConstraint | ( | expression * | body, |
expression * | rhs = NULL |
||
) |
void CouenneProblem::addLEConstraint | ( | expression * | body, |
expression * | rhs = NULL |
||
) |
void CouenneProblem::addRNGConstraint | ( | expression * | body, |
expression * | lb = NULL , |
||
expression * | ub = NULL |
||
) |
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)
isint | if 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.
|
inline |
shall we do Feasibility Based Bound Tightening?
Definition at line 502 of file CouenneProblem.hpp.
|
inline |
shall we do reduced cost Bound Tightening?
Definition at line 503 of file CouenneProblem.hpp.
|
inline |
shall we do Optimality Based Bound Tightening?
Definition at line 504 of file CouenneProblem.hpp.
|
inline |
shall we do Aggressive Bound Tightening?
Definition at line 505 of file CouenneProblem.hpp.
|
inline |
How often shall we do OBBT?
Definition at line 507 of file CouenneProblem.hpp.
|
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)
fname | Name of the .mod file to be written |
aux | controls the use of auxiliaries. If true, a problem is written with auxiliary variables written with their associated expression, i.e. ![]() ![]() ![]() |
Note: if used before standardization, writes original AMPL formulation
with or without auxiliaries?
aux | name 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.
fname | Name of the .gams file to be written. |
fname | Name 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)
fname | Name 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.
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 | ||
) |
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 in an expression
to the bounds of
.
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.
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::resetCutOff | ( | CouNumber | value = COUENNE_INFINITY | ) | const |
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.
|
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.
|
inline |
return problem name
Definition at line 658 of file CouenneProblem.hpp.
|
inline |
Definition at line 661 of file CouenneProblem.hpp.
|
inline |
return inverse dependence structure
Definition at line 665 of file CouenneProblem.hpp.
|
inline |
return object vector
Definition at line 669 of file CouenneProblem.hpp.
int CouenneProblem::findSOS | ( | CbcModel * | CbcModelPtr, |
OsiSolverInterface * | solver, | ||
OsiObject ** | objects | ||
) |
|
inline |
set maximum CPU time
Definition at line 678 of file CouenneProblem.hpp.
|
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.
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.
|
inline |
return indices of neglected redundant variables
Definition at line 700 of file CouenneProblem.hpp.
|
inline |
number of unused originals
Definition at line 704 of file CouenneProblem.hpp.
|
inline |
return type of separator for multilinear terms
Definition at line 708 of file CouenneProblem.hpp.
|
inline |
true if latest call to FBBT terminated due to iteration limit reached
Definition at line 712 of file CouenneProblem.hpp.
|
inline |
return true if orbital branching activated
Definition at line 716 of file CouenneProblem.hpp.
|
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.
|
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.
|
inline |
return type of decomposition of quadrilinear terms
Definition at line 731 of file CouenneProblem.hpp.
|
inline |
options
Definition at line 735 of file CouenneProblem.hpp.
|
inline |
returns constant objective value if it contains no variables
Definition at line 738 of file CouenneProblem.hpp.
|
inline |
Returns pointer to sdp cut generator.
Definition at line 741 of file CouenneProblem.hpp.
|
protected |
single fake tightening.
Return
-1 if infeasible 0 if no improvement +1 if improved
direction | 0: left, 1: right |
index | index of the variable tested |
X | point round which tightening is done |
olb | cur. lower bound |
oub | cur. upper bound |
Definition at line 88 of file fake_tightening.cpp.
|
protected |
|
protected |
Iteration on one variable.
Definition at line 68 of file obbt_iter.cpp.
|
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.
|
protected |
re-organizes multiplication and stores indices (and exponents) of its variables
Definition at line 21 of file flattenMul.cpp.
|
protected |
clear all spurious variables pointers not referring to the variables_ vector
Definition at line 392 of file problem.cpp.
|
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.
|
protected |
fill freeIntegers_ array
fill in the integerRank_ array
Definition at line 173 of file CouenneProblem.cpp.
|
protected |
Test fixing of an integer variable (used in getIntegerCandidate())
Definition at line 19 of file testIntFix.cpp.
|
inline |
Definition at line 814 of file CouenneProblem.hpp.
Definition at line 292 of file CouenneProblem.cpp.
|
inline |
returns recorded best solution
Definition at line 821 of file CouenneProblem.hpp.
|
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.
|
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.
|
friend |
Definition at line 171 of file CouenneProblem.hpp.
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.
|
protected |
problem name
Definition at line 193 of file CouenneProblem.hpp.
|
protected |
Variables (original, auxiliary, and defined)
Definition at line 195 of file CouenneProblem.hpp.
|
protected |
Definition at line 196 of file CouenneProblem.hpp.
|
protected |
Definition at line 197 of file CouenneProblem.hpp.
|
protected |
AMPL's common expressions (read from AMPL through structures cexps and cexps1)
Definition at line 200 of file CouenneProblem.hpp.
|
mutableprotected |
current point and bounds;
Definition at line 202 of file CouenneProblem.hpp.
Expression map for comparison in standardization and to count occurrences of an auxiliary.
Definition at line 206 of file CouenneProblem.hpp.
|
mutableprotected |
Number of elements in the x_, lb_, ub_ arrays.
Definition at line 209 of file CouenneProblem.hpp.
|
protected |
Number of discrete variables.
Definition at line 212 of file CouenneProblem.hpp.
|
mutableprotected |
Best solution known to be loaded from file – for testing purposes.
Definition at line 215 of file CouenneProblem.hpp.
|
protected |
Best known objective function.
Definition at line 218 of file CouenneProblem.hpp.
|
protected |
Variables that have commuted to auxiliary.
Definition at line 221 of file CouenneProblem.hpp.
|
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.
|
protected |
Number of "defined variables" (aka "common expressions")
Definition at line 228 of file CouenneProblem.hpp.
|
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.
|
protected |
Number of original variables.
Definition at line 237 of file CouenneProblem.hpp.
|
protected |
Number of original constraints (disregarding those that turned into auxiliary variable definition)
Definition at line 241 of file CouenneProblem.hpp.
|
protected |
Number of original integer variables.
Definition at line 244 of file CouenneProblem.hpp.
|
mutableprotected |
Pointer to a global cutoff object.
Definition at line 247 of file CouenneProblem.hpp.
|
mutableprotected |
flag indicating if this class is creator of global cutoff object
Definition at line 250 of file CouenneProblem.hpp.
|
protected |
do Feasibility-based bound tightening
Definition at line 252 of file CouenneProblem.hpp.
|
protected |
do reduced cost bound tightening
Definition at line 253 of file CouenneProblem.hpp.
|
protected |
do Optimality-based bound tightening
Definition at line 254 of file CouenneProblem.hpp.
|
protected |
do Aggressive bound tightening
Definition at line 255 of file CouenneProblem.hpp.
|
protected |
frequency of Optimality-based bound tightening
Definition at line 257 of file CouenneProblem.hpp.
|
protected |
frequency of Aggressive bound tightening
Definition at line 258 of file CouenneProblem.hpp.
|
protected |
SmartPointer to the Journalist.
Definition at line 261 of file CouenneProblem.hpp.
|
protected |
window around known optimum (for testing purposes)
Definition at line 264 of file CouenneProblem.hpp.
|
protected |
Use quadratic expressions?
Definition at line 267 of file CouenneProblem.hpp.
|
protected |
feasibility tolerance (to be used in checkNLP)
Definition at line 270 of file CouenneProblem.hpp.
|
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.
|
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.
|
mutableprotected |
each element is true if variable is integer and, if auxiliary, depends on no integer
Definition at line 284 of file CouenneProblem.hpp.
|
mutableprotected |
numberInRank_ [i] is the number of integer variables in rank i
Definition at line 287 of file CouenneProblem.hpp.
|
protected |
maximum cpu time
Definition at line 290 of file CouenneProblem.hpp.
|
protected |
options
Definition at line 293 of file CouenneProblem.hpp.
|
protected |
AMPL structure pointer (temporary — looking forward to embedding into OS...)
Definition at line 296 of file CouenneProblem.hpp.
|
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.
|
protected |
number of unused originals
Definition at line 304 of file CouenneProblem.hpp.
|
protected |
Definition at line 307 of file CouenneProblem.hpp.
|
protected |
Definition at line 310 of file CouenneProblem.hpp.
|
protected |
Type of Multilinear separation.
Definition at line 313 of file CouenneProblem.hpp.
|
protected |
number of FBBT iterations
Definition at line 316 of file CouenneProblem.hpp.
|
mutableprotected |
true if FBBT exited for iteration limits as opposed to inability to further tighten bounds
Definition at line 320 of file CouenneProblem.hpp.
|
protected |
use orbital branching?
Definition at line 323 of file CouenneProblem.hpp.
|
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.
|
protected |
return type of decomposition of quadrilinear terms
Definition at line 332 of file CouenneProblem.hpp.
|
protected |
constant value of the objective if no variable is declared in it
Definition at line 335 of file CouenneProblem.hpp.
|
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.
|
protected |
Performance indicator for OBBT – to be moved away from CouenneProblem.
Definition at line 343 of file CouenneProblem.hpp.
|
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.
|
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.
|
mutable |
Definition at line 387 of file CouenneProblem.hpp.
|
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.