diff options
author | Georgey | 2017-07-05 11:40:43 +0530 |
---|---|---|
committer | Georgey | 2017-07-05 11:40:43 +0530 |
commit | 938fef4a37a7b7c61b4b6ff74cb4cfd2f100c427 (patch) | |
tree | b343c0ee5609433c80e0de1db8b6886c9126dc2d /thirdparty/linux/include/coin/BonLocalSolverBasedHeuristic.hpp | |
parent | 5b72577efe080c5294b32d804e4d26351fef30bc (diff) | |
download | FOSSEE-Optimization-toolbox-938fef4a37a7b7c61b4b6ff74cb4cfd2f100c427.tar.gz FOSSEE-Optimization-toolbox-938fef4a37a7b7c61b4b6ff74cb4cfd2f100c427.tar.bz2 FOSSEE-Optimization-toolbox-938fef4a37a7b7c61b4b6ff74cb4cfd2f100c427.zip |
Added linux shared libraries and header files for int and ecos functions
Diffstat (limited to 'thirdparty/linux/include/coin/BonLocalSolverBasedHeuristic.hpp')
-rw-r--r-- | thirdparty/linux/include/coin/BonLocalSolverBasedHeuristic.hpp | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/thirdparty/linux/include/coin/BonLocalSolverBasedHeuristic.hpp b/thirdparty/linux/include/coin/BonLocalSolverBasedHeuristic.hpp new file mode 100644 index 0000000..3f935e6 --- /dev/null +++ b/thirdparty/linux/include/coin/BonLocalSolverBasedHeuristic.hpp @@ -0,0 +1,102 @@ +// (C) Copyright CNRS +// This code is published under the Eclipse Public License. +// +// Authors : +// Pierre Bonami, LIF Université de la Méditérannée-CNRS +// +// Date : 06/18/2008 + +#ifndef BonLocalSolverBasedHeuristic_H +#define BonLocalSolverBasedHeuristic_H +#include "BonBonminSetup.hpp" +#include "CbcHeuristic.hpp" + +namespace Bonmin { + class LocalSolverBasedHeuristic : public CbcHeuristic { + public: + /** Default constructor.*/ + LocalSolverBasedHeuristic(); + + /** Constructor with setup.*/ + LocalSolverBasedHeuristic(BonminSetup * setup); + + /** Copy constructor.*/ + LocalSolverBasedHeuristic(const LocalSolverBasedHeuristic & other); + + /** Destructor.*/ + ~LocalSolverBasedHeuristic(); + + /** Virtual copy constructor.*/ + virtual CbcHeuristic * clone() const = 0; + + /// Assignment operator + LocalSolverBasedHeuristic & operator=(const LocalSolverBasedHeuristic& rhs); + +#if 0 + /// update model (This is needed if cliques update matrix etc) + virtual void setModel(CbcModel * model){throw -1;} +#endif + /// Resets stuff if model changes + virtual void resetModel(CbcModel * model){ + setModel(model); + } + + /** Change setup used for heuristic.*/ + void setSetup(BonminSetup * setup){ + setup_ = setup; + Initialize(setup_->options()); + } + /** Performs heuristic */ + virtual int solution(double & objectiveValue, + double * newSolution)=0; + + /** Performs heuristic which adds cuts */ + virtual int solution(double & objectiveValue, + double * newSolution, + OsiCuts & cs) {return 0;} + + + /** Do a local search based on setup and passed solver.*/ + int doLocalSearch(OsiTMINLPInterface * solver, + double *solution, + double & solValue, + double cutoff, std::string prefix = "local_solver.") const; + + /** Register the options common to all local search based heuristics.*/ + static void registerOptions(Ipopt::SmartPtr<Bonmin::RegisteredOptions> roptions); + + /** Setup the defaults.*/ + virtual void setupDefaults(Ipopt::SmartPtr<Ipopt::OptionsList> options); + + /** Initiaize using passed options.*/ + void Initialize(Ipopt::SmartPtr<Ipopt::OptionsList> options); + protected: + /** Setup to use for local searches (will make copies).*/ + BonminSetup * setup_; + + static void changeIfNotSet(Ipopt::SmartPtr<Ipopt::OptionsList> options, + std::string prefix, + const std::string &option, + const std::string &value); + + static void changeIfNotSet(Ipopt::SmartPtr<Ipopt::OptionsList> options, + std::string prefix, + const std::string &option, + const double &value); + + static void changeIfNotSet(Ipopt::SmartPtr<Ipopt::OptionsList> options, + std::string prefix, + const std::string &option, + const int &value); + private: + /** Time limit in local search.*/ + double time_limit_; + /** maximal number of nodes in local search.*/ + int max_number_nodes_; + /** Maximal number of solutions in local search.*/ + int max_number_solutions_; + }; +} /** ends namespace Bonmin.*/ + +#endif + |