summaryrefslogtreecommitdiff
path: root/build/Bonmin/include/coin/BonBranchingTQP.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'build/Bonmin/include/coin/BonBranchingTQP.hpp')
-rw-r--r--build/Bonmin/include/coin/BonBranchingTQP.hpp197
1 files changed, 0 insertions, 197 deletions
diff --git a/build/Bonmin/include/coin/BonBranchingTQP.hpp b/build/Bonmin/include/coin/BonBranchingTQP.hpp
deleted file mode 100644
index f718419..0000000
--- a/build/Bonmin/include/coin/BonBranchingTQP.hpp
+++ /dev/null
@@ -1,197 +0,0 @@
-// (C) Copyright International Business Machines Corporation and
-// Carnegie Mellon University 2006, 2008
-// All Rights Reserved.
-// This code is published under the Eclipse Public License.
-//
-// Authors :
-// Andreas Waechter, International Business Machines Corporation
-// (derived from BonTMINLP2TNLP.hpp) 12/22/2006
-
-#ifndef __BONBRANCHINGTQP_HPP__
-#define __BONBRANCHINGTQP_HPP__
-
-#include "BonTMINLP2TNLP.hpp"
-
-namespace Bonmin
-{
- /** This is an adapter class that converts a TMINLP2TNLP object into
- * a TNLP, which is now just a QP. The QP is the linear quadratic
- * of the TNLP at the optimal point. The purpose of the
- * BranchingTQP is that it is used in a strong-branching framework,
- * strong branching is only done for the QP approximation of the
- * TNLP, not on the TNLP itself. The variables of the QP are the
- * displacement from the reference point.
- */
- class BranchingTQP : public Ipopt::TNLP
- {
- public:
- /**@name Constructors/Destructors */
- //@{
- BranchingTQP(Ipopt::SmartPtr<TMINLP2TNLP> tminlp2tnlp);
-
- /** Default destructor */
- virtual ~BranchingTQP();
- //@}
-
- /**@name methods to gather information about the NLP, only those
- * that need to be overloaded from TNLP */
- //@{
- 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);
- 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);
- /** Returns the constraint linearity. array should be alocated
- * with length at least n. Since this is a QP, all constraints are
- * linear.*/
- virtual bool get_constraints_linearity(Ipopt::Index m, LinearityType* const_types);
- /** Method called by Ipopt to get the starting point. The bools
- * init_x and init_lambda are both inputs and outputs. As inputs,
- * they indicate whether or not the algorithm wants you to
- * initialize x and lambda respectively. If, for some reason, the
- * algorithm wants you to initialize these and you cannot, set
- * the respective bool to false.
- */
- 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);
-
- /** Returns the value of the objective function in x*/
- virtual bool eval_f(Ipopt::Index n, const Ipopt::Number* x, bool new_x,
- Ipopt::Number& obj_value);
-
- /** Returns the vector of the gradient of
- * the objective w.r.t. x */
- virtual bool eval_grad_f(Ipopt::Index n, const Ipopt::Number* x, bool new_x,
- Ipopt::Number* grad_f);
-
- /** Returns the vector of constraint values in x*/
- virtual bool eval_g(Ipopt::Index n, const Ipopt::Number* x, bool new_x,
- Ipopt::Index m, Ipopt::Number* g);
-
- /** Returns the jacobian of the
- * constraints. The vectors iRow and jCol only need to be set
- * once. The first call is used to set the structure only (iRow
- * and jCol will be non-NULL, and values will be NULL) For
- * subsequent calls, iRow and jCol will be NULL. */
- 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);
-
- /** Return the hessian of the
- * lagrangian. The vectors iRow and jCol only need to be set once
- * (during the first call). The first call is used to set the
- * structure only (iRow and jCol will be non-NULL, and values
- * will be NULL) For subsequent calls, iRow and jCol will be
- * NULL. This matrix is symmetric - specify the lower diagonal
- * only */
- 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);
- virtual void finalize_solution(Ipopt::SolverReturn status,
- Ipopt::Index n, const Ipopt::Number* x, const Ipopt::Number* z_L, const Ipopt::Number* z_U,
- Ipopt::Index m, const Ipopt::Number* g, const Ipopt::Number* lambda,
- Ipopt::Number obj_value,
- const Ipopt::IpoptData* ip_data,
- Ipopt::IpoptCalculatedQuantities* ip_cq);
- //@}
-
- /** Accessor Methods for QP data */
- //@{
- const Ipopt::Number ObjVal()
- {
- return obj_val_;
- }
- const Ipopt::Number* ObjGrad()
- {
- return obj_grad_;
- }
- const Ipopt::Number* ObjHessVals()
- {
- return obj_hess_;
- }
- const Ipopt::Index* ObjHessIRow()
- {
- return obj_hess_irow_;
- }
- const Ipopt::Index* ObjHessJCol()
- {
- return obj_hess_jcol_;
- }
- const Ipopt::Number* ConstrRhs()
- {
- return g_vals_;
- }
- const Ipopt::Number* ConstrJacVals()
- {
- return g_jac_;
- }
- const Ipopt::Index* ConstrJacIRow()
- {
- return g_jac_irow_;
- }
- const Ipopt::Index* ConstrJacJCol()
- {
- return g_jac_jcol_;
- }
- //@}
-
- 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. */
- //@{
- /** Default Constructor */
- BranchingTQP();
-
- /** Copy Constructor */
- BranchingTQP(const BranchingTQP&);
-
- /** Overloaded Equals Operator */
- void operator=(const BranchingTQP&);
- //@}
-
- /** @name static information about the QP's constraints and
- * objective function */
- //@{
- Ipopt::Number obj_val_;
- Ipopt::Number* obj_grad_;
- Ipopt::Number* obj_hess_;
- Ipopt::Index* obj_hess_irow_;
- Ipopt::Index* obj_hess_jcol_;
- Ipopt::Number* g_vals_;
- Ipopt::Number* g_jac_;
- Ipopt::Index* g_jac_irow_;
- Ipopt::Index* g_jac_jcol_;
- //@}
-
- /** @name Data from the MINLP */
- //@{
- Ipopt::Index n_;
- Ipopt::Index m_;
- Ipopt::Index nnz_jac_g_;
- Ipopt::Index nnz_h_lag_;
- Ipopt::TNLP::IndexStyleEnum index_style_;
- //@}
-
- /** Copy of original x_sol_. x_sol_ is changed after the first QP
- * has been solved once. */
- Ipopt::Number* x_sol_copy_;
-
- /** Copy of original duals_sol_. duals_sol_ is changed after the
- * first QP has been solved once. */
- Ipopt::Number* duals_sol_copy_;
-
- /** Pointer to the TMINLP2TNLP model which stores the bounds
- * information */
- Ipopt::SmartPtr<TMINLP2TNLP> tminlp2tnlp_;
- };
-
-} // namespace Ipopt
-
-#endif