48 std::vector<mc::FFVar>
vars;
109 DagObj(mc::FFGraph&
DAG,
const std::vector<mc::FFVar>& DAGvars,
const std::vector<mc::FFVar>& DAGfunctions,
110 const std::vector<babBase::OptimizationVariable>& variables,
const unsigned nineq,
const unsigned neq,
111 const unsigned nineqSquash, std::vector<Constraint>* constraintProperties,
Settings* settingsIn,
Logger* loggerIn):
115 const unsigned nvar = variables.size();
116 const unsigned nobj = 1;
119 for (
unsigned int i = 0; i < nvar; i++) {
121 this->vars.push_back(Y);
122 this->vars[i].set(&this->DAG);
124 this->resultVars.resize(DAGfunctions.size());
125 DAG.eval(DAGfunctions.size(), DAGfunctions.data(), this->resultVars.data(), nvar, DAGvars.data(), this->vars.data());
126 this->functions.resize(1 + nineq + neq + nineqSquash);
129 for (
size_t i = 0; i < constraintProperties->size(); i++) {
130 unsigned index = (*constraintProperties)[i].indexNonconstant;
131 switch ((*constraintProperties)[i].type) {
133 this->functions[i] = this->resultVars[index];
136 this->functions[i] = this->resultVars[index];
139 this->functions[i] = this->resultVars[index];
142 this->functions[i] = this->resultVars[index];
153 this->subgraph = this->DAG.subgraph(this->functions.size(), this->functions.data());
155 this->functionsObj.resize(nobj);
156 this->functionsIneq.resize(nineq);
157 this->functionsEq.resize(neq);
158 this->functionsIneqSquash.resize(nineqSquash);
159 this->functionsIneqSquashIneq.resize(nineq + nineqSquash);
160 this->functionsIneqEq.resize(nineq + neq + nineqSquash);
163 for (
size_t i = 0; i < constraintProperties->size(); i++) {
164 unsigned index = (*constraintProperties)[i].indexNonconstantUBP;
165 unsigned indexType = (*constraintProperties)[i].indexTypeNonconstant;
166 switch ((*constraintProperties)[i].type) {
168 this->functionsObj[i] = this->functions[index];
171 this->functionsIneq[indexType] = this->functions[index];
172 this->functionsIneqSquashIneq[indexType] = this->functions[index];
173 this->functionsIneqEq[indexType] = this->functions[index];
176 this->functionsIneqSquash[indexType] = this->functions[index];
177 this->functionsIneqSquashIneq[indexType + nineq] = this->functions[index];
178 this->functionsIneqEq[indexType + nineq] = this->functions[index];
181 this->functionsEq[indexType] = this->functions[index];
182 this->functionsIneqEq[indexType + nineq + nineqSquash] = this->functions[index];
191 this->subgraphObj = this->DAG.subgraph(this->functionsObj.size(), this->functionsObj.data());
192 this->subgraphIneq = this->DAG.subgraph(this->functionsIneq.size(), this->functionsIneq.data());
193 this->subgraphEq = this->DAG.subgraph(this->functionsEq.size(), this->functionsEq.data());
194 this->subgraphIneqSquash = this->DAG.subgraph(this->functionsIneqSquash.size(), this->functionsIneqSquash.data());
195 this->subgraphIneqSquashIneq = this->DAG.subgraph(this->functionsIneqSquashIneq.size(), this->functionsIneqSquashIneq.data());
196 this->subgraphIneqEq = this->DAG.subgraph(this->functionsIneqEq.size(), this->functionsIneqEq.data());
199 this->adPoint.resize(nvar);
200 this->fadbadArray.resize(this->subgraph.l_op.size());
201 this->doublePoint.resize(nvar);
202 this->doubleArray.resize(this->subgraph.l_op.size());
203 this->resultAD.resize(this->functions.size());
204 this->resultADobj.resize(this->functionsObj.size());
205 this->resultADineq.resize(this->functionsIneq.size());
206 this->resultADeq.resize(this->functionsEq.size());
207 this->resultADineqEq.resize(this->functionsIneqEq.size());
208 this->resultADineqSquash.resize(this->functionsIneqSquash.size());
209 this->resultADineqSquashIneq.resize(this->functionsIneqSquashIneq.size());
210 this->resultDouble.resize(this->functions.size());
211 this->resultDoubleObj.resize(this->functionsObj.size());
212 this->resultDoubleIneq.resize(this->functionsIneq.size());
213 this->resultDoubleEq.resize(this->functionsEq.size());
214 this->resultDoubleIneqSquash.resize(this->functionsIneqSquash.size());
215 this->resultDoubleIneqSquashIneq.resize(this->functionsIneqSquashIneq.size());
216 this->resultDoubleIneqEq.resize(this->functionsIneqEq.size());
217 this->adPoint2ndOrder.resize(nvar);
218 this->fadbadArray2ndOrder.resize(this->subgraph.l_op.size());
219 this->resultAD2ndOrder.resize(this->functions.size());
221 this->warningFlag =
false;
Definition: constraint.h:45
std::vector< mc::FFVar > functions
Definition: ubpDagObj.h:50
Definition: constraint.h:46
std::vector< fadbad::F< double > > fadbadArray
Definition: ubpDagObj.h:54
std::vector< fadbad::F< double > > resultADineq
Definition: ubpDagObj.h:57
std::vector< mc::FFVar > functionsIneqSquash
Definition: ubpDagObj.h:80
std::vector< fadbad::F< double > > resultADobj
Definition: ubpDagObj.h:56
bool warningFlag
Definition: ubpDagObj.h:92
mc::FFSubgraph subgraphIneq
Definition: ubpDagObj.h:84
mc::FFSubgraph subgraphIneqSquash
Definition: ubpDagObj.h:86
Struct for storing settings for MAiNGO.
Definition: settings.h:143
std::vector< fadbad::F< double > > resultADineqEq
Definition: ubpDagObj.h:61
mc::FFSubgraph subgraphIneqEq
Definition: ubpDagObj.h:88
mc::FFSubgraph subgraph
Definition: ubpDagObj.h:49
std::vector< mc::FFVar > functionsObj
Definition: ubpDagObj.h:77
std::vector< fadbad::F< double > > resultADineqSquashIneq
Definition: ubpDagObj.h:60
Definition: constraint.h:47
This class contains all logging and output information.
Definition: logger.h:100
std::vector< fadbad::F< double > > resultAD
Definition: ubpDagObj.h:55
std::vector< double > resultDoubleIneqSquash
Definition: ubpDagObj.h:73
Settings * maingoSettings
Definition: ubpDagObj.h:90
std::vector< double > doublePoint
Definition: ubpDagObj.h:67
Definition: constraint.h:48
std::vector< fadbad::F< fadbad::F< double > > > resultAD2ndOrder
Definition: ubpDagObj.h:63
mc::FFSubgraph subgraphObj
Definition: ubpDagObj.h:83
Definition: constraint.h:49
std::vector< mc::FFVar > functionsIneqEq
Definition: ubpDagObj.h:82
namespace holding all essentials of MAiNGO
Definition: aleModel.h:31
std::vector< mc::FFVar > functionsIneq
Definition: ubpDagObj.h:78
std::vector< mc::FFVar > functionsEq
Definition: ubpDagObj.h:79
std::vector< fadbad::F< fadbad::F< double > > > fadbadArray2ndOrder
Definition: ubpDagObj.h:64
std::vector< fadbad::F< double > > resultADeq
Definition: ubpDagObj.h:58
Struct for storing all needed Directed acyclic Graph objects for the upper bounding solver.
Definition: ubpDagObj.h:42
std::vector< fadbad::F< double > > resultADineqSquash
Definition: ubpDagObj.h:59
Definition: constraint.h:50
std::vector< double > resultDoubleIneqEq
Definition: ubpDagObj.h:75
std::vector< mc::FFVar > functionsIneqSquashIneq
Definition: ubpDagObj.h:81
std::vector< double > resultDoubleIneq
Definition: ubpDagObj.h:71
std::vector< double > resultDoubleIneqSquashIneq
Definition: ubpDagObj.h:74
std::vector< double > resultDoubleObj
Definition: ubpDagObj.h:70
std::vector< mc::FFVar > vars
Definition: ubpDagObj.h:48
std::vector< mc::FFVar > resultVars
Definition: ubpDagObj.h:51
std::vector< double > doubleArray
Definition: ubpDagObj.h:68
mc::FFSubgraph subgraphIneqSquashIneq
Definition: ubpDagObj.h:87
std::vector< double > resultDouble
Definition: ubpDagObj.h:69
mc::FFGraph DAG
Definition: ubpDagObj.h:47
std::vector< fadbad::F< fadbad::F< double > > > adPoint2ndOrder
Definition: ubpDagObj.h:65
Logger * logger
Definition: ubpDagObj.h:91
DagObj(mc::FFGraph &DAG, const std::vector< mc::FFVar > &DAGvars, const std::vector< mc::FFVar > &DAGfunctions, const std::vector< babBase::OptimizationVariable > &variables, const unsigned nineq, const unsigned neq, const unsigned nineqSquash, std::vector< Constraint > *constraintProperties, Settings *settingsIn, Logger *loggerIn)
Constructor.
Definition: ubpDagObj.h:109
std::vector< double > resultDoubleEq
Definition: ubpDagObj.h:72
mc::FFSubgraph subgraphEq
Definition: ubpDagObj.h:85
std::vector< fadbad::F< double > > adPoint
Definition: ubpDagObj.h:53