diff options
Diffstat (limited to 'build/Bonmin/include/coin/BonOaFeasChecker.hpp')
-rw-r--r-- | build/Bonmin/include/coin/BonOaFeasChecker.hpp | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/build/Bonmin/include/coin/BonOaFeasChecker.hpp b/build/Bonmin/include/coin/BonOaFeasChecker.hpp new file mode 100644 index 0000000..5ef8c14 --- /dev/null +++ b/build/Bonmin/include/coin/BonOaFeasChecker.hpp @@ -0,0 +1,73 @@ +// (C) Copyright International Business Machines 2006 +// All Rights Reserved. +// This code is published under the Eclipse Public License. +// +// Authors : +// P. Bonami, Carnegie Mellon University +// +// Date : 12/26/2006 + + +#ifndef BonOaFeasibilityChecker_HPP +#define BonOaFeasibilityChecker_HPP +#include "BonOaDecBase.hpp" + +namespace Bonmin +{ + /** Class to perform OA in its classical form.*/ + class OaFeasibilityChecker : public OaDecompositionBase + { + public: + /// New usefull constructor + OaFeasibilityChecker(BabSetupBase &b); + /// Copy constructor + OaFeasibilityChecker(const OaFeasibilityChecker ©) + : + OaDecompositionBase(copy), + pol_(copy.pol_), + type_(copy.type_), + cut_count_(copy.cut_count_), + maximum_oa_cuts_(copy.maximum_oa_cuts_) + {} + /// Destructor + ~OaFeasibilityChecker(); + + /** Register OA options.*/ + static void registerOptions(Ipopt::SmartPtr<Bonmin::RegisteredOptions> roptions); + + virtual CglCutGenerator * clone() const + { + return new OaFeasibilityChecker(*this); + } + protected: + /// virtual method which performs the OA algorithm by modifying lp and nlp. + virtual double performOa(OsiCuts & cs, solverManip &lpManip, + BabInfo * babInfo, double &cutoff, const CglTreeInfo & info) const; + /// virutal method to decide if local search is performed + virtual bool doLocalSearch(BabInfo * babInfo) const + { + return 0; + } + + /** See documentation for feas_check_discard_policy option.*/ + enum CutsPolicies { + DetectCycles = 0, + KeepAll, + TreatAsNormal}; + /** Policy for keeping cuts.*/ + CutsPolicies pol_; + + /** See documentation for feas_check_cut_types option.*/ + enum CutsTypes { + OA = 0, + Benders}; + /** Type of cuts.*/ + CutsTypes type_; + + /** Count the total number of cuts generated.*/ + mutable unsigned int cut_count_; + /** maximum number of OA cuts.*/ + unsigned int maximum_oa_cuts_; + }; +} +#endif |