OS 2.10.2
Loading...
Searching...
No Matches
OSBonminSolver.h
Go to the documentation of this file.
1/* $Id: OSBonminSolver.h 5284 2017-12-08 13:52:50Z stefan $ */
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
54{
55
56
57
58public:
59
61 BonminProblem(OSInstance *osinstance_ , OSOption *osoption_);
62
64 virtual ~BonminProblem();
65
67
69
71
72
82 virtual bool get_variables_types(Ipopt::Index n, VariableType* var_types);
83
86
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
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:
185 bool printSol_;
186
187private:
199 // HS071_NLP();
200
202
203
204
205 std::string bonminErrorMsg;
206
207
208};
209
210
226{
227public:
228
229
230
233
236
237
238
240
241 // this is a Bonmin BonCbc object;
243
244 Bonmin::TMINLP::SolverReturn status;
245
246 //SmartPtr<IpoptApplication> app;
247
248
251 virtual void solve() throw (ErrorClass) ;
252
257 virtual void buildSolverInstance() throw(ErrorClass);
258
263 virtual void setSolverOptions() throw(ErrorClass);
264
271
277
283
284
285
291
292
293private:
294 OSrLWriter *osrlwriter;
295
296 Bonmin::BonminSetup bonminSetup;
297
298 std::string bonminErrorMsg;
299};
300
301
302#endif /*BONMINSOLVER_H*/
This file defines the OSInstance class along with its supporting classes.
This file defines the OSnLNode class along with its derived classes.
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.
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 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)
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 eval_f(Ipopt::Index n, const Ipopt::Number *x, bool new_x, Ipopt::Number &obj_value)
Method to return the objective value.
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.
OSOption * osoption
OSInstance * osinstance
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 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 const BranchingInfo * branchingInfo() const
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.
Bonmin::TMINLP::SolverReturn status
void printSolutionAtEndOfAlgorithm()
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...
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_variables_linearity(Ipopt::Index n, Ipopt::TNLP::LinearityType *var_types)
Pass info about linear and nonlinear variables.
virtual ~BonminProblem()
the BonminProblem class destructor
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.
virtual const SosInfo * sosConstraints() const
The BonminSolver class solves problems using Ipopt.
Bonmin::TMINLP::SolverReturn status
Ipopt::SmartPtr< BonminProblem > tminlp
Bonmin::Bab bb
virtual void setSolverOptions()
The implementation of the virtual functions.
void dataEchoCheck()
use this for debugging, print out the instance that the solver thinks it has and compare this with th...
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
virtual void solve()
solve results in an instance being read into the Bonmin data structrues and optimized
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 buildSolverInstance()
buildSolverInstance is a virtual function – the actual solvers will implement their own buildSolverIn...
BonminSolver()
the BonminSolver class constructor
The Default Solver Class.
used for throwing exceptions.
Definition: OSErrorClass.h:32
The in-memory representation of an OSiL instance.
Definition: OSInstance.h:2263
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
int Index
double Number