15#ifndef MINOTAURUnoENGINE_H
16#define MINOTAURUnoENGINE_H
22#include "ingredients/constraint_relaxation_strategy/ConstraintRelaxationStrategyFactory.hpp"
23#include "ingredients/globalization_mechanism/GlobalizationMechanismFactory.hpp"
24#include "model/ModelFactory.hpp"
25#include "tools/Logger.hpp"
26#include "tools/Options.hpp"
42typedef Environment* EnvPtr;
43typedef UnoEngine* UnoEnginePtr;
44typedef Problem* ProblemPtr;
108 assert(!
"implement me!");
112 void setDualOfVars(
const double* lower,
const double* upper);
115 void write(std::ostream& out)
const;
126typedef UnoWarmStart* UnoWarmStartPtr;
127typedef const UnoWarmStart* ConstUnoWarmStartPtr;
157 void write(std::ostream& out)
const;
242 void removeCons(std::vector<ConstraintPtr>& delcons);
299 static const int maxIterLimit_ = 3000;
302 static const std::string me_;
325 std::unique_ptr<uno::Uno> uno_;
326 std::shared_ptr<uno::Iterate> initial_iterate;
327 std::shared_ptr<uno::Model> model_;
328 std::unique_ptr<uno::Model> uno_model_;
329 uno::Options options;
363 void setOptionsForProb_();
Declare NLPEngine Class for solving nonlinear problems using a nonlinear solver.
Implement base class Solution.
The Constraint class is used to manage a constraint.
Definition: Constraint.h:61
Definition: Environment.h:28
Definition: Function.h:37
The base class linear function is of the form c'x.
Definition: LinearFunction.h:31
Definition: NLPEngine.h:37
Base class for nonlinear functions.
Definition: NonlinearFunction.h:31
Definition: Solution.h:30
Definition: UnoEngine.h:168
UnoEngine(EnvPtr env)
Default constructor.
Definition: UnoEngine.cpp:165
void changeBound(ConstraintPtr cons, BoundType lu, double new_val)
Change a bound of a constraint.
Definition: UnoEngine.cpp:182
void removeCons(std::vector< ConstraintPtr > &delcons)
Delete constraints from the engine.
Definition: UnoEngine.cpp:311
void setIterationLimit(int limit)
Definition: UnoEngine.cpp:319
double getSolutionValue()
Get the solution value.
Definition: UnoEngine.cpp:250
void loadFromWarmStart(const WarmStartPtr ws)
Definition: UnoEngine.cpp:302
EnginePtr emptyCopy()
Return an empty UnoEngine pointer.
Definition: UnoEngine.cpp:221
WarmStartPtr getWarmStartCopy()
Definition: UnoEngine.cpp:246
~UnoEngine()
Destroy.
Definition: UnoEngine.cpp:173
std::string getName() const
Get the name.
Definition: UnoEngine.cpp:229
void changeObj(FunctionPtr f, double cb)
Change objective function.
Definition: UnoEngine.cpp:208
EngineStatus solve()
Definition: UnoEngine.cpp:335
void setOptionsForSingleSolve()
Definition: UnoEngine.cpp:331
ConstWarmStartPtr getWarmStart()
Definition: UnoEngine.cpp:242
void resetIterationLimit()
Reset the iteration limit to maximum possible.
Definition: UnoEngine.cpp:315
void disableStrBrSetup()
Restore settings after strong branching.
Definition: UnoEngine.cpp:217
int setDualObjLimit(double)
Set the dual objective limit.
Definition: UnoEngine.h:251
void load(ProblemPtr problem)
Load the problem into Uno. We create the TNLP interface to Uno.
Definition: UnoEngine.cpp:260
void enableStrBrSetup()
Make settings for strong branching.
Definition: UnoEngine.cpp:225
void fillStats(std::vector< double > &)
Accumulate statistics from different threads in a common data.
Definition: UnoEngine.cpp:383
EngineStatus getStatus()
Get the status of the last solve command.
Definition: UnoEngine.cpp:255
void clear()
Clear the loaded problem, if any, from the engine.
Definition: UnoEngine.cpp:213
void addConstraint(ConstraintPtr c)
Add a new constraint to the engine.
Definition: UnoEngine.cpp:177
void changeConstraint(ConstraintPtr con, LinearFunctionPtr lf, double lb, double ub)
Change the linear function, and the bounds of a constraint.
Definition: UnoEngine.cpp:197
void writeStats(std::ostream &out) const
Write statistics.
Definition: UnoEngine.cpp:387
ConstSolutionPtr getSolution()
Get the solution obtained after solving the problem.
Definition: UnoEngine.cpp:234
void setOptionsForRepeatedSolve()
Set options to solve the NLP repeatedly, with few changes.
Definition: UnoEngine.cpp:327
void negateObj()
Negate the objective function. Min f is changed to Min -f.
Definition: UnoEngine.cpp:306
Definition: UnoEngine.h:67
void setDualOfVars(const double *)
Copy values of dual variables of variables.
Definition: UnoEngine.h:106
const double * getUpperDualOfVars() const
Definition: UnoEngine.h:100
UnoSolution()
Default constructor.
Definition: UnoEngine.cpp:52
~UnoSolution()
Destroy.
Definition: UnoEngine.cpp:109
const double * getLowerDualOfVars() const
Definition: UnoEngine.h:91
UnoSolution(const double *x, ProblemPtr problem)
Construct a solution for a problem from an array of doubles.
void write(std::ostream &out) const
Write to an output.
Definition: UnoEngine.cpp:124
Class for saving and using Warm-start information in Uno.
Definition: UnoEngine.h:131
void setPoint(UnoSolPtr sol)
Definition: UnoEngine.cpp:155
void write(std::ostream &out) const
Write to an output stream.
Definition: UnoEngine.cpp:159
bool hasInfo()
Definition: UnoEngine.cpp:150
~UnoWarmStart()
Destroy.
Definition: UnoEngine.cpp:141
UnoWarmStart()
Default constructor.
Definition: UnoEngine.cpp:131
UnoSolPtr getPoint()
Return the soluton that can be used as starting point.
Definition: UnoEngine.cpp:145
Definition: Variable.h:31
Definition: WarmStart.h:45
Definition: ActiveNodeStore.h:20
BoundType
Different types of variable-bounds.
Definition: Types.h:131
unsigned int UInt
Unsigned integer.
Definition: Types.h:30
EngineStatus
Different status that an external engine may report.
Definition: Types.h:176
Definition: UnoEngine.h:48
UInt reopt
No. of calls to Uno's ReOptimize.
Definition: UnoEngine.h:51
UInt calls
Total number of calls to solve.
Definition: UnoEngine.h:49
double strTime
time taken in strong branching alone.
Definition: UnoEngine.h:56
UInt opt
No. of calls to Uno's Optimize.
Definition: UnoEngine.h:50
UInt strIters
Number of iterations in strong branching alone.
Definition: UnoEngine.h:55
double time
Sum of time taken in all calls to solve.
Definition: UnoEngine.h:57
UInt iters
Sum of number of iterations in all calls.
Definition: UnoEngine.h:52
UInt strCalls
Calls to solve while strong branching.
Definition: UnoEngine.h:54
double ptime
Sum of time taken in all calls to presolve.
Definition: UnoEngine.h:53