summaryrefslogtreecommitdiff
path: root/newstructure/thirdparty/linux/include/coin/BonAmplTMINLP.hpp
diff options
context:
space:
mode:
authorHarpreet2016-09-03 00:36:51 +0530
committerHarpreet2016-09-03 00:36:51 +0530
commita0d9443af147e949c1e6a01ac24749d12593ec5b (patch)
tree1a1955c5482ae608fd7f618b06f4ecc6a0d39a23 /newstructure/thirdparty/linux/include/coin/BonAmplTMINLP.hpp
parent4b64cf486f5c999fd8167758cae27839f3b50848 (diff)
downloadFOSSEE-Optim-toolbox-development-a0d9443af147e949c1e6a01ac24749d12593ec5b.tar.gz
FOSSEE-Optim-toolbox-development-a0d9443af147e949c1e6a01ac24749d12593ec5b.tar.bz2
FOSSEE-Optim-toolbox-development-a0d9443af147e949c1e6a01ac24749d12593ec5b.zip
cbcintlinprog added
Diffstat (limited to 'newstructure/thirdparty/linux/include/coin/BonAmplTMINLP.hpp')
-rw-r--r--newstructure/thirdparty/linux/include/coin/BonAmplTMINLP.hpp332
1 files changed, 0 insertions, 332 deletions
diff --git a/newstructure/thirdparty/linux/include/coin/BonAmplTMINLP.hpp b/newstructure/thirdparty/linux/include/coin/BonAmplTMINLP.hpp
deleted file mode 100644
index 0a566a2..0000000
--- a/newstructure/thirdparty/linux/include/coin/BonAmplTMINLP.hpp
+++ /dev/null
@@ -1,332 +0,0 @@
-// (C) Copyright International Business Machines Corporation and
-// Carnegie Mellon University 2004, 2007
-//
-// All Rights Reserved.
-// This code is published under the Eclipse Public License.
-//
-// Authors :
-// Carl D. Laird, Carnegie Mellon University,
-// Andreas Waechter, International Business Machines Corporation
-// Pierre Bonami, Carnegie Mellon University,
-//
-// Date : 12/01/2004
-
-#ifndef __IPAMPLTMINLP_HPP__
-#define __IPAMPLTMINLP_HPP__
-
-#include "BonTMINLP.hpp"
-#include "IpSmartPtr.hpp"
-#include "CoinPackedMatrix.hpp"
-#include "OsiCuts.hpp"
-#include "BonRegisteredOptions.hpp"
-#include "BonTypes.hpp"
-
-/* non Ipopt forward declaration */
-struct ASL_pfgh;
-struct SufDecl;
-struct SufDesc;
-
-
-// Declarations, so that we don't have to include the Ipopt AMPL headers
-namespace Ipopt
-{
- class AmplSuffixHandler;
- class AmplOptionsList;
- class AmplTNLP;
-}
-
-namespace Bonmin
-{
-
- /** Ampl MINLP Interface.
- * Ampl MINLP Interface, implemented as a TMINLP.
- * This interface creates a AmplTNLP and also retrieves
- * the information about the binary and integer variables
- */
- class AmplTMINLP : public TMINLP
- {
- public:
- /**@name Constructors/Destructors */
- //@{
- /** Constructor */
- AmplTMINLP(const Ipopt::SmartPtr<const Ipopt::Journalist>& jnlst,
- const Ipopt::SmartPtr<Bonmin::RegisteredOptions> roptions,
- const Ipopt::SmartPtr<Ipopt::OptionsList> options,
- char**& argv,
- Ipopt::AmplSuffixHandler* suffix_handler = NULL,
- const std::string& appName = "bonmin",
- std::string* nl_file_content = NULL);
-
- virtual void Initialize(const Ipopt::SmartPtr<const Ipopt::Journalist>& jnlst,
- const Ipopt::SmartPtr<Bonmin::RegisteredOptions> roptions,
- const Ipopt::SmartPtr<Ipopt::OptionsList> options,
- char**& argv,
- Ipopt::AmplSuffixHandler* suffix_handler =NULL,
- const std::string& appName = "bonmin",
- std::string* nl_file_content = NULL);
-
- /** read the branching priorities from ampl suffixes.*/
- void read_priorities();
-
- /** read the sos constraints from ampl suffixes */
- void read_sos();
-
- /** Read suffixes which indicate which constraints are convex.*/
- void read_convexities();
-
- /** Read suffixes used to apply perspective in OA to some of the constraints.*/
- void read_onoff();
-
- /** Read suffixes on objective functions for upper bounding*/
- void read_obj_suffixes();
-
- /** Default constructor.*/
- AmplTMINLP();
-
- virtual AmplTMINLP * createEmpty()
- {
- AmplTMINLP * tminlp = new AmplTMINLP;
- return tminlp;
- }
-
- /** destructor */
- virtual ~AmplTMINLP();
- //@}
-
- /** Return the ampl solver object (ASL*) */
- const ASL_pfgh* AmplSolverObject() const;
-
-
- /**@name methods to gather information about the NLP. These
- * methods are overloaded from TMINLP. See TMINLP for their more
- * detailed documentation. */
- //@{
- /** returns dimensions of the nlp. Overloaded from TMINLP */
- virtual bool get_nlp_info(Ipopt::Index& n, Ipopt::Index& m, Ipopt::Index& nnz_jac_g,
- Ipopt::Index& nnz_h_lag,
- Ipopt::TNLP::IndexStyleEnum& index_style);
-
- /** returns the vector of variable types */
- virtual bool get_variables_types(Ipopt::Index n, VariableType* var_types);
-
- /** return the variables linearity (linear or not)*/
- virtual bool get_variables_linearity(Ipopt::Index n, Ipopt::TNLP::LinearityType * var_types);
-
- /** Returns the constraint linearity.
- * array should be alocated with length at least n.*/
- virtual bool get_constraints_linearity(Ipopt::Index m,
- Ipopt::TNLP::LinearityType* const_types);
-
- /** returns bounds of the nlp. Overloaded from TMINLP */
- virtual bool get_bounds_info(Ipopt::Index n, Ipopt::Number* x_l, Ipopt::Number* x_u,
- Ipopt::Index m, Ipopt::Number* g_l, Ipopt::Number* g_u);
-
- /** provides a starting point for the nlp variables. Overloaded
- from TMINLP */
- virtual bool get_starting_point(Ipopt::Index n, bool init_x, Ipopt::Number* x,
- bool init_z, Ipopt::Number* z_L, Ipopt::Number* z_U,
- Ipopt::Index m, bool init_lambda, Ipopt::Number* lambda);
-
- /** evaluates the objective value for the nlp. Overloaded from TMINLP */
- virtual bool eval_f(Ipopt::Index n, const Ipopt::Number* x, bool new_x,
- Ipopt::Number& obj_value);
-
- /** evaluates the gradient of the objective for the
- nlp. Overloaded from TMINLP */
- virtual bool eval_grad_f(Ipopt::Index n, const Ipopt::Number* x, bool new_x,
- Ipopt::Number* grad_f);
-
- /** evaluates the constraint residuals for the nlp. Overloaded from TMINLP */
- virtual bool eval_g(Ipopt::Index n, const Ipopt::Number* x, bool new_x,
- Ipopt::Index m, Ipopt::Number* g);
-
- /** specifies the jacobian structure (if values is NULL) and
- * evaluates the jacobian values (if values is not NULL) for the
- * nlp. Overloaded from TMINLP */
- virtual bool eval_jac_g(Ipopt::Index n, const Ipopt::Number* x, bool new_x,
- Ipopt::Index m, Ipopt::Index nele_jac, Ipopt::Index* iRow,
- Ipopt::Index *jCol, Ipopt::Number* values);
-
- /** specifies the structure of the hessian of the lagrangian (if
- * values is NULL) and evaluates the values (if values is not
- * NULL). Overloaded from TMINLP */
- virtual bool eval_h(Ipopt::Index n, const Ipopt::Number* x, bool new_x,
- Ipopt::Number obj_factor, Ipopt::Index m, const Ipopt::Number* lambda,
- bool new_lambda, Ipopt::Index nele_hess, Ipopt::Index* iRow,
- Ipopt::Index* jCol, Ipopt::Number* values);
-
- /** compute the value of a single constraint */
- virtual bool eval_gi(Ipopt::Index n, const Ipopt::Number* x, bool new_x,
- Ipopt::Index i, Ipopt::Number& gi);
- /** compute the structure or values of the gradient for one
- constraint */
- virtual bool eval_grad_gi(Ipopt::Index n, const Ipopt::Number* x, bool new_x,
- Ipopt::Index i, Ipopt::Index& nele_grad_gi, Ipopt::Index* jCol,
- Ipopt::Number* values);
- //@}
-
- /** @name Solution Methods */
- //@{
- /** Called after optimizing to return results to ampl.
- * Status code is put into solve_result_num according to the table below.
- * <table>
- * <tr> <td> <b> <center> Code </center> </b> </td> <td> <b> <center> Status </center> </b> </td> </tr>
- * <tr> <td> 3 </td> <td> Integer optimal </td> </tr>
- * <tr> <td> 220 </td> <td> problem is proven infeasible. </td> </tr>
- * <tr> <td> 421 </td> <td> limit reached or user interrupt with integer feasible solution found. </td> </tr>
- * <tr> <td> 410 </td> <td> limit reached or user interrupt without any integer feasible solution. </td> </tr>
- * <tr> <td> 500 </td> <td> error. </td> </tr>
- * <caption> Status codes for optimization. </caption>
- * </table>
- * */
- virtual void finalize_solution(TMINLP::SolverReturn status,
- Ipopt::Index n, const Ipopt::Number* x, Ipopt::Number obj_value);
-
- /** Write the solution using ampl's write_sol (called by finalize_solution).*/
- void write_solution(const std::string & message, const Ipopt::Number *x_sol);
- //@}
-
- //@}
-
-
- virtual const BranchingInfo * branchingInfo() const
- {
- return &branch_;
- }
-
- virtual const SosInfo * sosConstraints() const
- {
- return &sos_;
- }
-
- virtual const PerturbInfo* perturbInfo() const
- {
- return &perturb_info_;
- }
-
- /** @name User callbacks */
- //@{
- /** Additional application specific options.*/
- virtual void fillApplicationOptions(Ipopt::AmplOptionsList* amplOptList)
- {}
- //@}
-
-
- /** This methods gives the linear part of the objective function */
- virtual void getLinearPartOfObjective(double * obj);
-
-
- /** Do we have an alternate objective for upper bounding?*/
- virtual bool hasUpperBoundingObjective()
- {
- return upperBoundingObj_ != -1;
- }
-
- /** This method to returns the value of an alternative objective function for
- upper bounding (if one has been declared by using the prefix UBObj).*/
- virtual bool eval_upper_bound_f(Ipopt::Index n, const Ipopt::Number* x,
- Ipopt::Number& obj_value);
-
- /** Get accest to constraint convexities.*/
- virtual bool get_constraint_convexities(int m, TMINLP::Convexity * constraints_convexities)const
- {
- if (constraintsConvexities_ != NULL) {
- CoinCopyN(constraintsConvexities_, m, constraints_convexities);
- }
- else {
- CoinFillN(constraints_convexities, m, TMINLP::Convex);
- }
- return true;
- }
- /** Get dimension information on nonconvex constraints.*/
- virtual bool get_number_nonconvex(int & number_non_conv, int & number_concave) const
- {
- number_non_conv = numberNonConvex_;
- number_concave = numberSimpleConcave_;
- return true;
- }
- /** Get array describing the constraints marked nonconvex in the model.*/
- virtual bool get_constraint_convexities(int number_non_conv, MarkedNonConvex * non_convexes) const
- {
- assert(number_non_conv == numberNonConvex_);
- CoinCopyN( nonConvexConstraintsAndRelaxations_, number_non_conv, non_convexes);
- return true;
- }
- /** Fill array containing indices of simple concave constraints.*/
- virtual bool get_simple_concave_constraints(int number_concave, SimpleConcaveConstraint * simple_concave) const
- {
- assert(number_concave == numberSimpleConcave_);
- CoinCopyN(simpleConcaves_, numberSimpleConcave_, simple_concave);
- return true;
- }
-
- /** Say if problem has a linear objective (for OA) */
- virtual bool hasLinearObjective()
- {
- return hasLinearObjective_;
- }
-
- /** Access array describing onoff constraint.*/
- virtual const int * get_const_xtra_id() const{
- return c_extra_id_();
- }
- private:
- /**@name Default Compiler Generated Methods
- * (Hidden to avoid implicit creation/calling).
- * These methods are not implemented and
- * we do not want the compiler to implement
- * them for us, so we declare them private
- * and do not define them. This ensures that
- * they will not be implicitly created/called. */
- //@{
-
- /** Copy Constructor */
- AmplTMINLP(const AmplTMINLP&);
-
- /** Overloaded Equals Operator */
- void operator=(const AmplTMINLP&);
- //@}
- /** Name of application.*/
- std::string appName_;
-
- /** Index of the objective to use for upper bounding*/
- int upperBoundingObj_;
- /** pointer to the internal AmplTNLP */
- Ipopt::AmplTNLP* ampl_tnlp_;
- /** Journalist */
- Ipopt::SmartPtr<const Ipopt::Journalist> jnlst_;
-
- /** Storage of branching priorities information.*/
- BranchingInfo branch_;
- /** Storage of sos constraints */
- SosInfo sos_;
- /** Storage for perturbation radii */
- PerturbInfo perturb_info_;
- /** Store a suffix handler.*/
- Ipopt::SmartPtr<Ipopt::AmplSuffixHandler> suffix_handler_;
-
- /** Store constraints types.*/
- TMINLP::Convexity * constraintsConvexities_;
-
- /** Store onoff information.*/
- vector<int> c_extra_id_;
-
- /** Ipopt::Number of nonConvex constraints.*/
- int numberNonConvex_;
- /** Store marked non-convex constraints and their relaxations.*/
- MarkedNonConvex * nonConvexConstraintsAndRelaxations_;
- /** Ipopt::Number of simpleConcave constraints.*/
- int numberSimpleConcave_;
- /** Store simple concave constraints descriptions.*/
- SimpleConcaveConstraint * simpleConcaves_;
-
- /** Flag to indicate if objective function is linear */
- bool hasLinearObjective_;
-
- /** Flag to say if AMPL solution file should be written.*/
- int writeAmplSolFile_;
- };
-} // namespace Ipopt
-
-#endif
-