10 #ifndef COUENNEITERATIVEROUNDING_HPP
11 #define COUENNEITERATIVEROUNDING_HPP
76 int solution(
double & objectiveValue,
double * newSolution);
80 maxRoundingIter_ = value;
85 maxFirPoints_ = value;
95 maxTimeFirstCall_ = value;
141 int maxRoundingIter_;
147 double maxTimeFirstCall_;
160 double* colLowerNlp_;
161 double* colUpperNlp_;
181 inline bool areEqual(
double a,
double b){
186 int feasibilityIR(
double& objectiveValue,
double* newSolution);
189 int improvementIR(
double& objectiveValue,
double* newSolution,
190 const double* startingSolution);
197 int computeIntAtBound(
const double* x);
202 int computeIntAtBound(
const double* x,
double& avgBoundSize);
205 void writeLB(
OsiRowCut&
cut,
const double* x,
char sense,
double rhs);
209 std::vector<int>& previousBranches);
An iterative rounding heuristic, tailored for nonconvex MINLPs.
void setOmega(double value)
Set the value for omega, the multiplicative factor for the minimum log-barrier parameter mu used by F...
void setMaxTimeFirstCall(double value)
Set maximum CPU time for the heuristic at the root node only.
static void registerOptions(Ipopt::SmartPtr< Bonmin::RegisteredOptions >)
initialize options to be read later
void setMaxFirPoints(int value)
Set maximum number of points that we try to round in F-IR.
void setBaseLbRhs(int value)
Set the base value for the rhs of the local branching constraint in the I-IR heuristic.
CouenneIterativeRounding & operator=(const CouenneIterativeRounding &rhs)
Assignment operator.
void resetModel(CbcModel *model)
Does nothing.
void setMaxRoundingIter(int value)
Set maximum number of iterations for each rounding phase.
CouenneIterativeRounding()
Default constructor.
CouenneIterativeRounding(const CouenneIterativeRounding &other)
Copy constructor.
void setCouenneProblem(CouenneProblem *couenne)
Set the couenne problem to use.
void setNlp(Bonmin::OsiTMINLPInterface *nlp, OsiSolverInterface *cinlp)
Set the minlp solver.
void setMaxTime(double value)
Set maximum CPU time for the heuristic at each node.
virtual CbcHeuristic * clone() const
Clone.
virtual ~CouenneIterativeRounding()
Destructor.
void setAggressiveness(int value)
Set aggressiveness of heuristic.
int solution(double &objectiveValue, double *newSolution)
Run heuristic, return 1 if a better solution than the one passed is found and 0 otherwise.
CouenneIterativeRounding(Bonmin::OsiTMINLPInterface *nlp, OsiSolverInterface *cinlp, CouenneProblem *couenne, Ipopt::SmartPtr< Ipopt::OptionsList > options)
Constructor with model and Couenne problems.
Class for MINLP problems with symbolic information.
general include file for different compilers