MAiNGO
ubpIpopt.h
Go to the documentation of this file.
1 /**********************************************************************************
2  * Copyright (c) 2019 Process Systems Engineering (AVT.SVT), RWTH Aachen University
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License 2.0 which is available at
6  * http://www.eclipse.org/legal/epl-2.0.
7  *
8  * SPDX-License-Identifier: EPL-2.0
9  *
10  * @file ubpIpopt.h
11  *
12  * @brief File containing declaration of UbpIpopt class used for solving the
13  * upper bounding problems.
14  *
15  **********************************************************************************/
16 
17 #pragma once
18 
19 #include "ipoptProblem.h"
20 #include "ubp.h"
21 
22 #include "IpIpoptApplication.hpp"
23 
24 
25 namespace maingo {
26 
27 
28 namespace ubp {
29 
30 
40 
41  public:
57  UbpIpopt(mc::FFGraph &DAG, const std::vector<mc::FFVar> &DAGvars, const std::vector<mc::FFVar> &DAGfunctions, const std::vector<babBase::OptimizationVariable> &variables,
58  const unsigned nineqIn, const unsigned neqIn, const unsigned nineqSquashIn, Settings *settingsIn, Logger *loggerIn, std::vector<Constraint> *constraintPropertiesIn, UBS_USE useIn);
59 
60 
61  private:
71  SUBSOLVER_RETCODE _solve_nlp(const std::vector<double> &lowerVarBounds, const std::vector<double> &upperVarBounds, double &objectiveValue, std::vector<double> &solutionPoint);
72 
73  Ipopt::SmartPtr<Ipopt::IpoptApplication> _Ipopt;
74  Ipopt::SmartPtr<IpoptProblem> _theIpoptProblem;
76  // Prevent use of default copy constructor and copy assignment operator by declaring them private:
77  UbpIpopt(const UbpIpopt &);
78  UbpIpopt &operator=(const UbpIpopt &);
79 };
80 
81 
82 } // end namespace ubp
83 
84 
85 } // end namespace maingo
Wrapper for handling the upper bounding problems by interfacing Ipopt.
Definition: ubpIpopt.h:39
Struct for storing settings for MAiNGO.
Definition: settings.h:143
SUBSOLVER_RETCODE _solve_nlp(const std::vector< double > &lowerVarBounds, const std::vector< double > &upperVarBounds, double &objectiveValue, std::vector< double > &solutionPoint)
Function for actually solving the NLP sub-problem.
Definition: ubpIpopt.cpp:111
UbpIpopt & operator=(const UbpIpopt &)
This class contains all logging and output information.
Definition: logger.h:100
Base class for wrappers for handling the upper bounding problems.
Definition: ubp.h:49
SUBSOLVER_RETCODE
Enum for representing the return codes returned by the different sub-solvers (UpperBoundingSolver,...
Definition: returnCodes.h:40
Ipopt::SmartPtr< IpoptProblem > _theIpoptProblem
Definition: ubpIpopt.h:74
namespace holding all essentials of MAiNGO
Definition: aleModel.h:31
Ipopt::SmartPtr< Ipopt::IpoptApplication > _Ipopt
Definition: ubpIpopt.h:73
UbpIpopt(mc::FFGraph &DAG, const std::vector< mc::FFVar > &DAGvars, const std::vector< mc::FFVar > &DAGfunctions, const std::vector< babBase::OptimizationVariable > &variables, const unsigned nineqIn, const unsigned neqIn, const unsigned nineqSquashIn, Settings *settingsIn, Logger *loggerIn, std::vector< Constraint > *constraintPropertiesIn, UBS_USE useIn)
Constructor, stores information on the problem and initializes the local-subsolvers used.
Definition: ubpIpopt.cpp:30
UBS_USE
Enum for communicating what the intended purpose of the solver is. This determines which settings are...
Definition: ubp.h:56