|
| ParMINLPDiving (EnvPtr env, ProblemPtr p, EnginePtr e) |
| default constructor
|
|
| ~ParMINLPDiving () |
| default destructor
|
|
void | solve (NodePtr node, RelaxationPtr rel, SolutionPoolPtr s_pool) |
| call to heuristic More...
|
|
void | writeStats (std::ostream &out) const |
| writing the statistics to the logger More...
|
|
void | writeParStats (std::ostream &out, DivingheurStats *stats, double wallTime) const |
| writing the statistics to the logger
|
|
virtual std::string | getDirectionString (UInt i) |
| Return a string that describes the rounding direction in simple words.
|
|
virtual std::string | getScoreString (UInt i) |
| Return a string that describes the scoring rule in simple words.
|
|
virtual std::string | getOrderString (UInt i) |
| Return a string that describes the rounding order in simple words.
|
|
void | setAltEngine (EnginePtr nlpe) |
| Set the alternate (typically NLP) engine pointer.
|
|
void | setOrigProb (ProblemPtr minlp) |
| Set the original problem pointer.
|
|
void | solveNLP (ConstSolutionPtr sol, bool *solFound, ProblemPtr minlp, EnginePtr nlpe) |
| Solve NLP at LP integer feasible solution.
|
|
void | fixInts (const double *x, std::stack< Modification * > &nlpMods, ProblemPtr minlp) |
| Fix integer variables as in x.
|
|
void | unfixInts (std::stack< Modification * > &nlpMods, ProblemPtr minlp) |
|
double | getWallTime () |
| Get wall clock time.
|
|
| Heuristic () |
| Default constructor.
|
|
virtual | ~Heuristic () |
| Destroy.
|
|
virtual void | solve (NodePtr node, RelaxationPtr rel, SolutionPoolPtr s_pool)=0 |
| Use this heuristic. More...
|
|
virtual void | solveNode (ConstSolutionPtr, NodePtr, RelaxationPtr, SolutionPoolPtr) |
| Use this heuristic. More...
|
|
virtual void | writeStats (std::ostream &out) const =0 |
| Write statistics to the logger. More...
|
|
|
void | backtrack_ (UInt n_moded, ModVector &lastNodeMods, ProblemPtr p, std::stack< VarBoundModPtr > &mods) |
| Backtracking method. More...
|
|
UInt | FracBounds_ (UInt numfrac, const double *x, Direction d, Order o, ProblemPtr p, UIntVector &violated, std::stack< VarBoundModPtr > &mods, LinearHandler *lh, ModVector &lastNodesMods, DoubleVector &score, DoubleVector &avgDual, double *gradientObj) |
| Fractional selection method for fractional variable. More...
|
|
void | getScore_ (const double *x, Scoretype s, DoubleVector &score, ProblemPtr p, DoubleVector &avgDual, double *gradientObj) |
| Get the score of solution. More...
|
|
void | implementDive_ (int i, const double *x, SolutionPoolPtr s_pool, ModVector &lastNodesMods, EnginePtr e, ProblemPtr p, DoubleVector &avgDual, UIntVector &violated, std::stack< VarBoundModPtr > &mods, LinearHandler *lh, DoubleVector &score, double *gradientObj, DivingheurStats *stats) |
| Function to implement diving. More...
|
|
UInt | isFrac_ (const double *x, UIntVector &violated, ProblemPtr p) |
| The number of fractional variables in current solution. More...
|
|
UInt | LexBounds_ (UInt numfrac, const double *x, Direction d, Order o, ProblemPtr p, UIntVector &violated, std::stack< VarBoundModPtr > &mods, LinearHandler *lh, ModVector &lastNodesMods, DoubleVector &score, DoubleVector &avgDual, double *gradientObj) |
| Lexicographic selection method for fractional variable. More...
|
|
UInt | ReducedCost_ (UInt numfrac, const double *x, Direction d, Order o, ProblemPtr p, UIntVector &violated, std::stack< VarBoundModPtr > &mods, LinearHandler *lh, ModVector &lastNodesMods, DoubleVector &score, DoubleVector &avgDual, double *gradientObj) |
| Reduced cost diving selection method for fractional variable. More...
|
|
void | restoreBounds_ (double *LB_copy, double *UB_copy, UInt vars, ProblemPtr p) |
| Restore the bounds for the problem. More...
|
|
double | rounding_ (double value, Direction d) |
| Rounding a value in a given direction. More...
|
|
void | saveBounds_ (double *LB_copy, double *UB_copy, UInt vars) |
| Save bounds of the problem. More...
|
|
FuncPtr | selectHeur_ (int i, Direction &d, Order &o) |
| Select the method, ordering and direction. More...
|
|
bool | shouldDive_ () |
| Function to decide on diving or not. More...
|
|
void | sort_ (UInt left, UInt right, DoubleVector &score, UIntVector &violated) |
| Sort the score. More...
|
|
void | updateAvgDual_ (ConstSolutionPtr sol, DoubleVector &avgDual, DivingheurStats *stats) |
| Update the average of dual multiplier. More...
|
|
UInt | VectorLength_ (UInt numfrac, const double *x, Direction d, Order o, ProblemPtr p, UIntVector &violated, std::stack< VarBoundModPtr > &mods, LinearHandler *lh, ModVector &lastNodesMods, DoubleVector &score, DoubleVector &avgDual, double *gradientObj) |
| Vector Length selection method for fractional variable. More...
|
|
bool | vectorFlag_ (UInt min_vlength, ProblemPtr p) |
| Function to decide on vector length diving.
|
|
|
EnginePtr | e_ |
| Engine being used to solve the problems during dive. More...
|
|
EnginePtr | nlpe_ |
| NLP Engine (required only if e_ is LP Engine)
|
|
EnvPtr | env_ |
| Environment.
|
|
double | intTol_ |
| Gradient of objective function for vector length diving. More...
|
|
LoggerPtr | logger_ |
| Linear Handler for presolving. More...
|
|
UInt | maxProbs_ |
| Maximum number of problem-solves allowed for each thread.
|
|
UInt | maxSol_ |
| Maximum number of feasible solution required from heuristic.
|
|
UInt | nSelector_ |
| Number of method for selection of variables. More...
|
|
UInt | numThreads_ |
| Number of threads to be used for the heuristic.
|
|
ProblemPtr | minlp_ |
| Original problem (required only if p_ is LP relaxation)
|
|
ProblemPtr | p_ |
| Problem to be solved.
|
|
DivingheurStats * | stats_ |
| Violated variable fraction part list. More...
|
|
Timer * | timer_ |
| Timer for this heuristic.
|
|
double | wallTimeStart_ |
| violated variable index list More...
|
|
UInt | numLevels_ |
| Number of subsets to fix the fractional variables in each round.
|
|
Parallel Diving heuristic for MINLPs.
A Diving Heuristic used to find solutions for Mixed Integer NLPs by solving the Relaxed NLP or LP using an appropriate engine. The engine is called once initially to generate a solution which is rounded and used for diving.