diff options
Diffstat (limited to 'newstructure/thirdparty/linux/include/coin/BonBabSetupBase.hpp')
-rw-r--r-- | newstructure/thirdparty/linux/include/coin/BonBabSetupBase.hpp | 386 |
1 files changed, 0 insertions, 386 deletions
diff --git a/newstructure/thirdparty/linux/include/coin/BonBabSetupBase.hpp b/newstructure/thirdparty/linux/include/coin/BonBabSetupBase.hpp deleted file mode 100644 index c51c67c..0000000 --- a/newstructure/thirdparty/linux/include/coin/BonBabSetupBase.hpp +++ /dev/null @@ -1,386 +0,0 @@ -// (C) Copyright International Business Machines Corporation 2007 -// All Rights Reserved. -// This code is published under the Eclipse Public License. -// -// Authors : -// Pierre Bonami, International Business Machines Corporation -// -// Date : 04/12/2007 - -#ifndef BabSetupBase_H -#define BabSetupBase_H - -#include <string> -#include <list> -#include "CglCutGenerator.hpp" -#include "CbcHeuristic.hpp" -#include "OsiChooseVariable.hpp" -#include "BonOsiTMINLPInterface.hpp" -#include "IpSmartPtr.hpp" -#include "BonTMINLP2OsiLP.hpp" - -namespace Bonmin -{ - /** A class to have all elements necessary to setup a branch-and-bound.*/ - class BabSetupBase - { - public: - /** Type for cut generation method with its frequency and string identification. */ - struct CuttingMethod - { - int frequency; - std::string id; - CglCutGenerator * cgl; - bool atSolution; - bool normal; - bool always; - CuttingMethod(): - atSolution(false), - normal(true), - always(false) - {} - - CuttingMethod(const CuttingMethod & other): - frequency(other.frequency), - id(other.id), - cgl(other.cgl), - atSolution(other.atSolution), - normal(other.normal), - always(other.always) - {} - }; - /** Type for heuristic method with its string identification. */ - struct HeuristicMethod - { - std::string id; - CbcHeuristic* heuristic; - HeuristicMethod() - {} - - HeuristicMethod(const HeuristicMethod & other): - id(other.id), - heuristic(other.heuristic) - {} - }; - typedef std::list<CuttingMethod> CuttingMethods; - typedef std::list<HeuristicMethod > HeuristicMethods; - - /** Strategies for comparing the nodes on the heap. */ - enum NodeComparison { - bestBound = 0 /** Best bound*/, - DFS /** Depth First Search*/, - BFS /** Best First Search */, - dynamic /** Dynamic strategy, see <a href="http://www.coin-or.org/Doxygen/Cbc/class_cbc_branch_dynamic_decision.html"> - CbcBranchActual.hpp </a> for explanations.*/, - bestGuess /** Best guessed integer solution is subtree below, based on pseudo costs */ - }; - - /** Strategies for traversing the tree.*/ - enum TreeTraversal { - HeapOnly=0 /** Only using the heap, uses CbcTree.*/, - DiveFromBest /** dive from top node of the heap untill it gets to a leaf of the tree. Uses Bonmin::CbcDiver.*/, - ProbedDive /** Eplore two kids before following on dive.*/, - DfsDiveFromBest /** dive from top node of the heap with more elaborate strategy (see options doc). Uses Bonmin::CbcDfsDiver.*/, - DfsDiveDynamic /** Same as DfsDiveFromBest, but after a prescribed number of integer solution are found switch to best-bound and if too many node switches to depth-first. Uses Bonmin::CbcDfsDiver.*/ - }; - - - /** @name Enums for optionslist parameters */ - enum VarSelectStra_Enum { - MOST_FRACTIONAL=0, - STRONG_BRANCHING, - RELIABILITY_BRANCHING, -#ifdef BONMIN_CURVATURE_BRANCHING - CURVATURE_ESTIMATOR, -#endif - QP_STRONG_BRANCHING, - LP_STRONG_BRANCHING, - NLP_STRONG_BRANCHING, - OSI_SIMPLE, - OSI_STRONG, - RANDOM - }; - - /** Parameters represented by an integer. */ - enum IntParameter{ - BabLogLevel = 0 /** Log level of main branch-and-bound*/, - BabLogInterval/** Display information every logIntervval nodes.*/, - MaxFailures /** Max number of failures in a branch.*/, - FailureBehavior /** Behavior of the algorithm in the case of a failure.*/, - MaxInfeasible /** Max number of consecutive infeasible problem in a branch - before fathoming.*/, - NumberStrong /** Number of candidates for strong branching.*/, - MinReliability /** Minimum reliability before trust pseudo-costs.*/, - MaxNodes /** Global node limit.*/, - MaxSolutions /** limit on number of integer feasible solution.*/, - MaxIterations /** Global iteration limit. */, - SpecialOption /** Spetial option in particular for Cbc. */, - DisableSos /** Consider or not SOS constraints.*/, - NumCutPasses/** Number of cut passes at nodes.*/, - NumCutPassesAtRoot/** Number of cut passes at nodes.*/, - RootLogLevel/** Log level for root relaxation.*/, - NumberIntParam /** Dummy end to size table*/ - }; - - - /** Parameters represented by a double.*/ - enum DoubleParameter{ - CutoffDecr = 0 /** Amount by which cutoff is incremented */, - Cutoff /** cutoff value */, - AllowableGap /** Stop if absolute gap is less than this. */, - AllowableFractionGap /** Stop if relative gap is less than this.*/, - IntTol /** Integer tolerance.*/, - MaxTime /** Global time limit. */, - NumberDoubleParam /** Dummy end to size table*/ - }; - - /** Default constructor. */ - BabSetupBase(const CoinMessageHandler * handler = NULL); - - /** Construct from existing tminlp. */ - BabSetupBase(Ipopt::SmartPtr<TMINLP> tminlp, const CoinMessageHandler * handler = NULL); - /** Construct from existing application.*/ - BabSetupBase(Ipopt::SmartPtr<TNLPSolver> app); - /** Construct from existing TMINLP interface.*/ - BabSetupBase(const OsiTMINLPInterface& nlp); - /** Copy but uses an other nlp.*/ - BabSetupBase(const BabSetupBase &setup, - OsiTMINLPInterface &nlp); - - /** Copy but uses an other nlp.*/ - BabSetupBase(const BabSetupBase &setup, - OsiTMINLPInterface &nlp, - const std::string &prefix); - - /** Copy constructor. */ - BabSetupBase(const BabSetupBase & other); - - /** virtual copy constructor. */ - virtual BabSetupBase * clone() const = 0; - - /** Make a copy with solver replace by one passed .*/ - virtual BabSetupBase *clone(OsiTMINLPInterface&nlp)const; - /** Virtual destructor. */ - virtual ~BabSetupBase(); - - /** @name Methods to initialize algorithm with various inputs. */ - /** @{ */ - /** use existing TMINLP interface (containing the options).*/ - void use(const OsiTMINLPInterface& nlp); - /** Read options (if not done before) and create interface using tminlp.*/ - void use(Ipopt::SmartPtr<TMINLP> tminlp ); - /** use specific instanciation of a TMINLP2TNLP.*/ - void use(Ipopt::SmartPtr<TMINLP2TNLP> prob); - /** Set the non-linear solver used */ - void setNonlinearSolver(OsiTMINLPInterface * s) - { - nonlinearSolver_ = s; - } - /** @} */ - - /** @name Methods to manipulate options. */ - /** @{ */ - /** Register all the options for this algorithm instance.*/ - virtual void registerOptions(); - /** Setup the defaults options for this algorithm. */ - virtual void setBabDefaultOptions(Ipopt::SmartPtr<Bonmin::RegisteredOptions> roptions) - {} - /** Register all the options for this algorithm instance.*/ - static void registerAllOptions(Ipopt::SmartPtr<Bonmin::RegisteredOptions> roptions); - - /** Get the options from default text file (bonmin.opt) if don't already have them.*/ - virtual void readOptionsFile() - { - if (readOptions_) return; - readOptionsFile("bonmin.opt"); - } - - /** Get the options from given fileName */ - void readOptionsFile(std::string fileName); - - /** Get the options from long string containing all.*/ - void readOptionsString(std::string opt_string); - - /** Get the options from stream.*/ - void readOptionsStream(std::istream& is); - - /** May print documentation of options if options print_options_documentation is set to yes.*/ - void mayPrintDoc(); - - - /** Get prefix to use for options.*/ - const char * prefix() const { - return prefix_.c_str(); - } - - /** Set the value for options, output...*/ - void setOptionsAndJournalist(Ipopt::SmartPtr<Bonmin::RegisteredOptions> roptions, - Ipopt::SmartPtr<Ipopt::OptionsList> options, - Ipopt::SmartPtr<Ipopt::Journalist> journalist) - { - options_ = options; - roptions_ = roptions; - journalist_ = journalist; - } - - /** Initialize the options and the journalist.*/ - void initializeOptionsAndJournalist(); - /** @} */ - - /** @name Elements of the branch-and-bound setup.*/ - /** @{ */ - /** Pointer to the non-linear solver used.*/ - OsiTMINLPInterface * nonlinearSolver() - { - return nonlinearSolver_; - } - /** Pointer to the continuous solver to use for relaxations. */ - OsiSolverInterface * continuousSolver() - { - return continuousSolver_; - } - /** list of cutting planes methods to apply with their frequencies. */ - CuttingMethods& cutGenerators() - { - return cutGenerators_; - } - /** list of Heuristic methods to use. */ - HeuristicMethods& heuristics() - { - return heuristics_; - } - /** branching method to use. */ - OsiChooseVariable * branchingMethod() - { - return branchingMethod_; - } - /** Method used to compare nodes. */ - NodeComparison& nodeComparisonMethod() - { - return nodeComparisonMethod_; - } - /** Method used to traverse tree.*/ - TreeTraversal treeTraversalMethod() - { - return treeTraversalMethod_; - } - /** Return value of integer parameter. */ - int getIntParameter(const IntParameter &p) const - { - return intParam_[p]; - } - /** Return value of double parameter.*/ - double getDoubleParameter(const DoubleParameter &p) const - { - return doubleParam_[p]; - } - /** Return value of integer parameter. */ - void setIntParameter(const IntParameter &p, const int v) - { - intParam_[p] = v; - } - /** Return value of double parameter.*/ - void setDoubleParameter(const DoubleParameter &p, const double v) - { - doubleParam_[p] = v; - } - /** @} */ - - /** Get the values of base parameters from the options stored.*/ - void gatherParametersValues() - { - gatherParametersValues(options_); - } - /** Get the values of the base parameters from the passed options.*/ - void gatherParametersValues(Ipopt::SmartPtr<Ipopt::OptionsList> options); - /** Acces storage of Journalist for output */ - Ipopt::SmartPtr<Ipopt::Journalist> journalist() - { - return journalist_; - } - - /** Acces list of Options */ - Ipopt::SmartPtr<Ipopt::OptionsList> options() - { - return options_; - } - - /** Access registered Options */ - Ipopt::SmartPtr<Bonmin::RegisteredOptions> roptions() - { - return roptions_; - } - - /** Access to extra objects.*/ - const vector<OsiObject *>& objects() const - { - return objects_; - } - - /** Access to extra objects.*/ - vector<OsiObject *>& objects() - { - return objects_; - } - - void addCutGenerator(CuttingMethod & cg){ - cutGenerators_.push_back(cg); - } - - void set_linearizer(TMINLP2OsiLP * linearizer){ - linearizer_ = linearizer; - } - - protected: - /** Set the priorities into OsiTMINLPInterface when needed.*/ - void setPriorities(); - /** Add SOS constraints to OsiTMINLPInterface when needed.*/ - void addSos(); - - /** storage of integer parameters.*/ - int intParam_[NumberIntParam]; - /** default values for int parameters.*/ - static int defaultIntParam_[NumberIntParam]; - /** storage of double parameters. */ - double doubleParam_[NumberDoubleParam]; - /** default values for double parameters. */ - static double defaultDoubleParam_[NumberDoubleParam]; - /** Storage of the non-linear solver used.*/ - OsiTMINLPInterface * nonlinearSolver_; - /** Storage of continuous solver.*/ - OsiSolverInterface * continuousSolver_; - /** Method to linearize MINLPs */ - Ipopt::SmartPtr<TMINLP2OsiLP> linearizer_; - /** Cut generation methods. */ - CuttingMethods cutGenerators_; - /** Heuristic methods. */ - HeuristicMethods heuristics_; - /** Branching method.*/ - OsiChooseVariable * branchingMethod_; - /** Node comparison method.*/ - NodeComparison nodeComparisonMethod_; - /** Tree traversal method.*/ - TreeTraversal treeTraversalMethod_; - /** Extra object to add to Cbc (not OsiObjects).*/ - vector<OsiObject *> objects_; - - - /** Storage of Journalist for output */ - Ipopt::SmartPtr<Ipopt::Journalist> journalist_; - - /** List of Options */ - Ipopt::SmartPtr<Ipopt::OptionsList> options_; - - /** Registered Options */ - Ipopt::SmartPtr<Bonmin::RegisteredOptions> roptions_; - - /** flag to say if option file was read.*/ - bool readOptions_; - /** separate message handler.*/ - CoinMessageHandler * messageHandler_; - /** Prefix to use when reading options.*/ - std::string prefix_; - }; -}/* End namespace Bonmin. */ -#endif - |