From a0d9443af147e949c1e6a01ac24749d12593ec5b Mon Sep 17 00:00:00 2001 From: Harpreet Date: Sat, 3 Sep 2016 00:36:51 +0530 Subject: cbcintlinprog added --- thirdparty/linux/include/coin/BonIpoptSolver.hpp | 188 +++++++++++++++++++++++ 1 file changed, 188 insertions(+) create mode 100644 thirdparty/linux/include/coin/BonIpoptSolver.hpp (limited to 'thirdparty/linux/include/coin/BonIpoptSolver.hpp') diff --git a/thirdparty/linux/include/coin/BonIpoptSolver.hpp b/thirdparty/linux/include/coin/BonIpoptSolver.hpp new file mode 100644 index 0000000..0f96693 --- /dev/null +++ b/thirdparty/linux/include/coin/BonIpoptSolver.hpp @@ -0,0 +1,188 @@ +// (C) Copyright International Business Machines (IBM) 2005, 2007 +// All Rights Reserved. +// This code is published under the Eclipse Public License. +// +// Authors : +// Pierre Bonami, IBM +// +// Date : 26/09/2006 + +#ifndef IpoptSolver_HPP +#define IpoptSolver_HPP +#include "BonTNLPSolver.hpp" +#include "IpIpoptApplication.hpp" + + +namespace Bonmin +{ + class IpoptSolver: public TNLPSolver + { + public: + class UnsolvedIpoptError: public TNLPSolver::UnsolvedError + { + public: + UnsolvedIpoptError(int errorNum, + Ipopt::SmartPtr problem, + std::string name): + TNLPSolver::UnsolvedError(errorNum, problem, name) + {} + virtual const std::string& errorName() const; + + virtual const std::string& solverName() const; + virtual ~UnsolvedIpoptError() + {} + private: + static std::string errorNames [17]; + static std::string solverName_; + }; + + virtual UnsolvedError * newUnsolvedError(int num, + Ipopt::SmartPtr problem, + std::string name) + { + return new UnsolvedIpoptError(num, problem, name); + } + + + + /// Constructor + IpoptSolver(bool createEmpty = false); + +/// Constructor with Passed in journalist, registered options, options + IpoptSolver(Ipopt::SmartPtr roptions, + Ipopt::SmartPtr options, + Ipopt::SmartPtr journalist, + const std::string & prefix); + +/// Constructor with Passed in journalist, registered options, options + IpoptSolver(Ipopt::SmartPtr roptions, + Ipopt::SmartPtr options, + Ipopt::SmartPtr journalist); + + /// Copy constructor + IpoptSolver(const IpoptSolver &other); + + ///virtual copy constructor + virtual Ipopt::SmartPtr clone(); + + /// Virtual destructor + virtual ~IpoptSolver(); + + /** Initialize the TNLPSolver (read options from params_file) + */ + virtual bool Initialize(std::string params_file); + + /** Initialize the TNLPSolver (read options from istream is) + */ + virtual bool Initialize(std::istream& is); + + /** @name Solve methods */ + //@{ + /// Solves a problem expresses as a TNLP + virtual TNLPSolver::ReturnStatus OptimizeTNLP(const Ipopt::SmartPtr & tnlp); + + /// Resolves a problem expresses as a TNLP + virtual TNLPSolver::ReturnStatus ReOptimizeTNLP(const Ipopt::SmartPtr & tnlp); + + /// Set the warm start in the solver + virtual bool setWarmStart(const CoinWarmStart * warm, + Ipopt::SmartPtr tnlp); + + /// Get warm start used in last optimization + virtual CoinWarmStart * getUsedWarmStart(Ipopt::SmartPtr tnlp) const; + + + /// Get the warm start form the solver + virtual CoinWarmStart * getWarmStart(Ipopt::SmartPtr tnlp) const; + + virtual CoinWarmStart * getEmptyWarmStart() const; + + /** Check that warm start object is valid.*/ + virtual bool warmStartIsValid(const CoinWarmStart * ws) const; + + /// Enable the warm start options in the solver + virtual void enableWarmStart(); + + /// Disable the warm start options in the solver + virtual void disableWarmStart(); + + //@} + + /// Get the CpuTime of the last optimization. + virtual double CPUTime(); + + /// Get the iteration count of the last optimization. + virtual int IterationCount(); + + /// turn off all output from the solver + virtual void setOutputToDefault(); + /// turn on all output from the solver + virtual void forceSolverOutput(int log_level); + + /// Get the solver name + virtual std::string & solverName() + { + return solverName_; + } + + /// Register this solver options into passed roptions + static void RegisterOptions(Ipopt::SmartPtr roptions) + { + Ipopt::IpoptApplication::RegisterAllIpoptOptions(GetRawPtr(roptions)); + } + + + + /// Return status of last optimization + Ipopt::ApplicationReturnStatus getOptStatus() const + { + return optimizationStatus_; + } + + Ipopt::IpoptApplication& getIpoptApp() + { + return *app_; + } + + virtual int errorCode() const + { + return (int) optimizationStatus_; + } + private: + /** Set default Ipopt parameters for use in a MINLP */ + void setMinlpDefaults(Ipopt::SmartPtr< Ipopt::OptionsList> Options); + + /** get Bonmin return status from Ipopt one. */ + TNLPSolver::ReturnStatus solverReturnStatus(Ipopt::ApplicationReturnStatus optimization_status) const; + + /** Ipopt application */ + Ipopt::SmartPtr app_; + /** return status of last optimization.*/ + Ipopt::ApplicationReturnStatus optimizationStatus_; + //@} + + + /** Flag to indicate if last problem solved had 0 dimension. (in this case Ipopt was not called).*/ + bool problemHadZeroDimension_; + + /** Warm start strategy : +
    +
  1. no warm start,
  2. +
  3. simple warm start (optimal point),
  4. +
  5. more elaborate strategies (interior point...).
  6. +
+ */ + int warmStartStrategy_; + + /** flag remembering if we want to use warm start option */ + bool enable_warm_start_; + + /** flag remembering if we have call the Optimize method of the + IpoptInterface before */ + bool optimized_before_; + //name of solver (Ipopt) + static std::string solverName_; + }; +} +#endif + -- cgit