|
|
| ParMINLPDiving (EnvPtr env, ProblemPtr p, EnginePtr e) |
| | default constructor
|
| |
|
| ~ParMINLPDiving () |
| | default destructor
|
| |
| void | solve (NodePtr node, RelaxationPtr rel, SolutionPoolPtr s_pool) |
| | call to heuristic
|
| |
| void | writeStats (std::ostream &out) const |
| | writing the statistics to the logger
|
| |
|
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 | solveNode (ConstSolutionPtr, NodePtr, RelaxationPtr, SolutionPoolPtr) |
| | Use this heuristic.
|
| |
|
| void | backtrack_ (UInt n_moded, ModVector &lastNodeMods, ProblemPtr p, std::stack< VarBoundModPtr > &mods) |
| | Backtracking method.
|
| |
| 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.
|
| |
| void | getScore_ (const double *x, Scoretype s, DoubleVector &score, ProblemPtr p, DoubleVector &avgDual, double *gradientObj) |
| | Get the score of solution.
|
| |
| 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.
|
| |
| UInt | isFrac_ (const double *x, UIntVector &violated, ProblemPtr p) |
| | The number of fractional variables in current solution.
|
| |
| 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.
|
| |
| 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.
|
| |
| void | restoreBounds_ (double *LB_copy, double *UB_copy, UInt vars, ProblemPtr p) |
| | Restore the bounds for the problem.
|
| |
| double | rounding_ (double value, Direction d) |
| | Rounding a value in a given direction.
|
| |
| void | saveBounds_ (double *LB_copy, double *UB_copy, UInt vars) |
| | Save bounds of the problem.
|
| |
| FuncPtr | selectHeur_ (int i, Direction &d, Order &o) |
| | Select the method, ordering and direction.
|
| |
| bool | shouldDive_ () |
| | Function to decide on diving or not.
|
| |
| void | sort_ (UInt left, UInt right, DoubleVector &score, UIntVector &violated) |
| | Sort the score.
|
| |
| void | updateAvgDual_ (ConstSolutionPtr sol, DoubleVector &avgDual, DivingheurStats *stats) |
| | Update the average of dual multiplier.
|
| |
| 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.
|
| |
|
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.
|
| |
|
EnginePtr | nlpe_ |
| | NLP Engine (required only if e_ is LP Engine)
|
| |
|
EnvPtr | env_ |
| | Environment.
|
| |
| double | intTol_ |
| | Gradient of objective function for vector length diving.
|
| |
| LoggerPtr | logger_ |
| | Linear Handler for presolving.
|
| |
|
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.
|
| |
|
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.
|
| |
|
Timer * | timer_ |
| | Timer for this heuristic.
|
| |
| double | wallTimeStart_ |
| | violated variable index list
|
| |
|
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.