My Project
OSBonminSolver.h
Go to the documentation of this file.
1/* $Id$ */
15#ifndef BONMINSOLVER_H
16#define BONMINSOLVER_H
17
18#include "OSConfig.h"
19#include "OSDefaultSolver.h"
20#include "OSrLWriter.h"
21#include "OSInstance.h"
22#include "OSParameters.h"
23#include "OSnLNode.h"
24#include "OSiLReader.h"
25#include "OSrLReader.h"
26#include "OSoLReader.h"
27#include "OSInstance.h"
28#include "OSExpressionTree.h"
29#include "OSnLNode.h"
30#include "OSDataStructures.h"
31#include "OSFileUtil.h"
32#include "OSErrorClass.h"
33
34#include "OSResult.h"
35#include "OSInstance.h"
36#include "OSOption.h"
37
38#include <cstddef>
39#include <cstdlib>
40#include <cctype>
41#include <cassert>
42#include <stack>
43#include <string>
44#include <iostream>
45#include <vector>
46#include <map>
47
48#include "BonCbc.hpp"
49#include "BonTMINLP.hpp"
50#include "BonBonminSetup.hpp"
51
52// for Stefan
53class BonminProblem : public Bonmin::TMINLP
54{
55
56
57
58public:
59
61 BonminProblem(OSInstance *osinstance_ , OSOption *osoption_);
62
64 virtual ~BonminProblem();
65
67
69
70 Bonmin::TMINLP::SolverReturn status;
71
72
82 virtual bool get_variables_types(Ipopt::Index n, VariableType* var_types);
83
85 virtual bool get_variables_linearity(Ipopt::Index n, Ipopt::TNLP::LinearityType* var_types);
86
91 virtual bool get_constraints_linearity(Ipopt::Index m, Ipopt::TNLP::LinearityType* const_types);
93
106 virtual bool get_nlp_info(Ipopt::Index& n, Ipopt::Index&m, Ipopt::Index& nnz_jac_g,
107 Ipopt::Index& nnz_h_lag, Ipopt::TNLP::IndexStyleEnum& index_style);
108
109
110
112 //virtual bool get_nlp_info(Index& n, Index& m, Index& nnz_jac_g,
113 // Index& nnz_h_lag, IndexStyleEnum& index_style);
114
116 virtual bool get_bounds_info(Ipopt::Index n, Ipopt::Number* x_l, Ipopt::Number* x_u,
117 Ipopt::Index m, Ipopt::Number* g_l, Ipopt::Number* g_u);
118
120 virtual bool get_starting_point(Ipopt::Index n, bool init_x, Ipopt::Number* x,
121 bool init_z, Ipopt::Number* z_L, Ipopt::Number* z_U,
122 Ipopt::Index m, bool init_lambda,
123 Ipopt::Number* lambda);
124
126 virtual bool eval_f(Ipopt::Index n, const Ipopt::Number* x, bool new_x, Ipopt::Number& obj_value);
127
129 virtual bool eval_grad_f(Ipopt::Index n, const Ipopt::Number* x, bool new_x, Ipopt::Number* grad_f);
130
132 virtual bool eval_g(Ipopt::Index n, const Ipopt::Number* x, bool new_x, Ipopt::Index m, Ipopt::Number* g);
133
138 virtual bool eval_jac_g(Ipopt::Index n, const Ipopt::Number* x, bool new_x,
139 Ipopt::Index m, Ipopt::Index nele_jac, Ipopt::Index* iRow, Ipopt::Index *jCol,
140 Ipopt::Number* values);
141
146 virtual bool eval_h(Ipopt::Index n, const Ipopt::Number* x, bool new_x,
147 Ipopt::Number obj_factor, Ipopt::Index m, const Ipopt::Number* lambda,
148 bool new_lambda, Ipopt::Index nele_hess, Ipopt::Index* iRow,
149 Ipopt::Index* jCol, Ipopt::Number* values);
150
152
153
154 virtual bool get_scaling_parameters(Ipopt::Number& obj_scaling,
155 bool& use_x_scaling, Ipopt::Index n,
156 Ipopt::Number* x_scaling,
157 bool& use_g_scaling, Ipopt::Index m,
158 Ipopt::Number* g_scaling);
159
162 virtual void finalize_solution(Bonmin::TMINLP::SolverReturn status_,
163 Ipopt::Index n, const Ipopt::Number* x, Ipopt::Number obj_value);
165
166 virtual const SosInfo * sosConstraints() const
167 {
168 return NULL;
169 }
170 virtual const BranchingInfo* branchingInfo() const
171 {
172 return NULL;
173 }
174
176 {
177 printSol_ = true;
178 }
179
180
181
182
183
184private:
186
187private:
199 // HS071_NLP();
200
202
203
204
205 std::string bonminErrorMsg;
206
207
208};
209
210
226{
227public:
228
229
230
232 BonminSolver();
233
236
237
238
239 Ipopt::SmartPtr<BonminProblem> tminlp;
240
241 // this is a Bonmin BonCbc object;
242 Bonmin::Bab bb;
243
244 Bonmin::TMINLP::SolverReturn status;
245
246 //SmartPtr<IpoptApplication> app;
247
248
251 virtual void solve();
252
257 virtual void buildSolverInstance();
258
263 virtual void setSolverOptions();
264
270 void dataEchoCheck();
271
277
283
284
285
290 void writeResult();
291
292
293private:
295
296 Bonmin::BonminSetup bonminSetup;
297
298 std::string bonminErrorMsg;
299};
300
301
302#endif /*BONMINSOLVER_H*/
This file defines the OSnLNode class along with its derived classes.
bool printSol_
Method called by Ipopt at the end of optimization.
virtual ~BonminProblem()
the BonminProblem class destructor
virtual bool get_constraints_linearity(Ipopt::Index m, Ipopt::TNLP::LinearityType *const_types)
Pass the type of the constraints (LINEAR, NON_LINEAR) to the optimizer.
virtual bool eval_g(Ipopt::Index n, const Ipopt::Number *x, bool new_x, Ipopt::Index m, Ipopt::Number *g)
Method to return the constraint residuals.
virtual void finalize_solution(Bonmin::TMINLP::SolverReturn status_, Ipopt::Index n, const Ipopt::Number *x, Ipopt::Number obj_value)
Method called by Ipopt at the end of optimization.
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)
Method to pass the main dimensions of the problem to Ipopt.
OSOption * osoption
virtual bool eval_grad_f(Ipopt::Index n, const Ipopt::Number *x, bool new_x, Ipopt::Number *grad_f)
Method to return the gradient of the objective.
OSInstance * osinstance
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)
Method to return the starting point for the algorithm.
virtual bool get_variables_types(Ipopt::Index n, VariableType *var_types)
Pass the type of the variables (INTEGER, BINARY, CONTINUOUS) to the optimizer.
virtual bool eval_f(Ipopt::Index n, const Ipopt::Number *x, bool new_x, Ipopt::Number &obj_value)
Method to return the objective value.
virtual bool get_variables_linearity(Ipopt::Index n, Ipopt::TNLP::LinearityType *var_types)
Pass info about linear and nonlinear variables.
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)
Bonmin specific methods for defining the nlp problem.
virtual const BranchingInfo * branchingInfo() const
Method called by Ipopt at the end of optimization.
std::string bonminErrorMsg
Bonmin::TMINLP::SolverReturn status
void printSolutionAtEndOfAlgorithm()
Method called by Ipopt at the end of optimization.
BonminProblem(OSInstance *osinstance_, OSOption *osoption_)
the BonminProblemclass constructor
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)
Method to return: 1) The structure of the hessian of the lagrangian (if "values" is NULL) 2) The valu...
virtual bool get_scaling_parameters(Ipopt::Number &obj_scaling, bool &use_x_scaling, Ipopt::Index n, Ipopt::Number *x_scaling, bool &use_g_scaling, Ipopt::Index m, Ipopt::Number *g_scaling)
Method to pass the main dimensions of the problem to Ipopt.
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)
Method to return: 1) The structure of the jacobian (if "values" is NULL) 2) The values of the jacobia...
virtual const SosInfo * sosConstraints() const
Method called by Ipopt at the end of optimization.
The BonminSolver class solves problems using Ipopt.
Bonmin::TMINLP::SolverReturn status
std::string bonminErrorMsg
Ipopt::SmartPtr< BonminProblem > tminlp
Bonmin::Bab bb
virtual void setSolverOptions()
The implementation of the virtual functions.
virtual void buildSolverInstance()
buildSolverInstance is a virtual function – the actual solvers will implement their own buildSolverIn...
void dataEchoCheck()
use this for debugging, print out the instance that the solver thinks it has and compare this with th...
Bonmin::BonminSetup bonminSetup
OSiLReader * m_osilreader
m_osilreader is an OSiLReader object used to create an osinstance from an osil string if needed
void writeResult()
use this to write the solution information to an OSResult object
OSoLReader * m_osolreader
m_osolreader is an OSoLReader object used to create an osoption from an osol string if needed
~BonminSolver()
the IpoptSolver class destructor
virtual void solve()
solve results in an instance being read into the Bonmin data structrues and optimized
OSrLWriter * osrlwriter
BonminSolver()
the BonminSolver class constructor
The Default Solver Class.
The in-memory representation of an OSiL instance..
The Option Class.
Definition OSOption.h:3565
Used to read an OSiL string.
Definition OSiLReader.h:38
Used to read an OSoL string.
Definition OSoLReader.h:38
Take an OSResult object and write a string that validates against OSrL.
Definition OSrLWriter.h:31