43 std::vector<mc::FFVar>
vars;
104 DagObj(mc::FFGraph&
DAG,
const std::vector<mc::FFVar>& DAGvars,
const std::vector<mc::FFVar>& DAGfunctions,
105 const std::vector<babBase::OptimizationVariable>& variables,
const unsigned nineq,
const unsigned neq,
106 const unsigned nineqSquash, std::shared_ptr<std::vector<Constraint>> constraintProperties, std::shared_ptr<Settings> settingsIn, std::shared_ptr<Logger> loggerIn):
110 const unsigned nvar = variables.size();
111 const unsigned nobj = 1;
114 for (
unsigned int i = 0; i < nvar; i++) {
116 this->vars.push_back(Y);
117 this->vars[i].set(&this->DAG);
119 this->resultVars.resize(DAGfunctions.size());
120 DAG.eval(DAGfunctions.size(), DAGfunctions.data(), this->resultVars.data(), nvar, DAGvars.data(), this->vars.data());
121 this->functions.resize(1 + nineq + neq + nineqSquash);
124 for (
size_t i = 0; i < constraintProperties->size(); i++) {
125 unsigned index = (*constraintProperties)[i].indexNonconstant;
126 switch ((*constraintProperties)[i].type) {
128 this->functions[i] = this->resultVars[index];
131 this->functions[i] = this->resultVars[index];
134 this->functions[i] = this->resultVars[index];
137 this->functions[i] = this->resultVars[index];
148 this->subgraph = this->DAG.subgraph(this->functions.size(), this->functions.data());
150 this->functionsObj.resize(nobj);
151 this->functionsIneq.resize(nineq);
152 this->functionsEq.resize(neq);
153 this->functionsIneqSquash.resize(nineqSquash);
154 this->functionsIneqSquashIneq.resize(nineq + nineqSquash);
155 this->functionsIneqEq.resize(nineq + neq + nineqSquash);
158 for (
size_t i = 0; i < constraintProperties->size(); i++) {
159 unsigned index = (*constraintProperties)[i].indexNonconstantUBP;
160 unsigned indexType = (*constraintProperties)[i].indexTypeNonconstant;
161 switch ((*constraintProperties)[i].type) {
163 this->functionsObj[i] = this->functions[index];
166 this->functionsIneq[indexType] = this->functions[index];
167 this->functionsIneqSquashIneq[indexType] = this->functions[index];
168 this->functionsIneqEq[indexType] = this->functions[index];
171 this->functionsIneqSquash[indexType] = this->functions[index];
172 this->functionsIneqSquashIneq[indexType + nineq] = this->functions[index];
173 this->functionsIneqEq[indexType + nineq] = this->functions[index];
176 this->functionsEq[indexType] = this->functions[index];
177 this->functionsIneqEq[indexType + nineq + nineqSquash] = this->functions[index];
186 this->subgraphObj = this->DAG.subgraph(this->functionsObj.size(), this->functionsObj.data());
187 this->subgraphIneq = this->DAG.subgraph(this->functionsIneq.size(), this->functionsIneq.data());
188 this->subgraphEq = this->DAG.subgraph(this->functionsEq.size(), this->functionsEq.data());
189 this->subgraphIneqSquash = this->DAG.subgraph(this->functionsIneqSquash.size(), this->functionsIneqSquash.data());
190 this->subgraphIneqSquashIneq = this->DAG.subgraph(this->functionsIneqSquashIneq.size(), this->functionsIneqSquashIneq.data());
191 this->subgraphIneqEq = this->DAG.subgraph(this->functionsIneqEq.size(), this->functionsIneqEq.data());
194 this->adPoint.resize(nvar);
195 this->fadbadArray.resize(this->subgraph.l_op.size());
196 this->doublePoint.resize(nvar);
197 this->doubleArray.resize(this->subgraph.l_op.size());
198 this->resultAD.resize(this->functions.size());
199 this->resultADobj.resize(this->functionsObj.size());
200 this->resultADineq.resize(this->functionsIneq.size());
201 this->resultADeq.resize(this->functionsEq.size());
202 this->resultADineqEq.resize(this->functionsIneqEq.size());
203 this->resultADineqSquash.resize(this->functionsIneqSquash.size());
204 this->resultADineqSquashIneq.resize(this->functionsIneqSquashIneq.size());
205 this->resultDouble.resize(this->functions.size());
206 this->resultDoubleObj.resize(this->functionsObj.size());
207 this->resultDoubleIneq.resize(this->functionsIneq.size());
208 this->resultDoubleEq.resize(this->functionsEq.size());
209 this->resultDoubleIneqSquash.resize(this->functionsIneqSquash.size());
210 this->resultDoubleIneqSquashIneq.resize(this->functionsIneqSquashIneq.size());
211 this->resultDoubleIneqEq.resize(this->functionsIneqEq.size());
212 this->adPoint2ndOrder.resize(nvar);
213 this->fadbadArray2ndOrder.resize(this->subgraph.l_op.size());
214 this->resultAD2ndOrder.resize(this->functions.size());
216 this->warningFlag =
false;
Definition: constraint.h:40
std::vector< mc::FFVar > functions
Definition: ubpDagObj.h:45
Definition: constraint.h:41
std::vector< fadbad::F< double > > fadbadArray
Definition: ubpDagObj.h:49
std::vector< fadbad::F< double > > resultADineq
Definition: ubpDagObj.h:52
std::vector< mc::FFVar > functionsIneqSquash
Definition: ubpDagObj.h:75
std::vector< fadbad::F< double > > resultADobj
Definition: ubpDagObj.h:51
bool warningFlag
Definition: ubpDagObj.h:87
mc::FFSubgraph subgraphIneq
Definition: ubpDagObj.h:79
mc::FFSubgraph subgraphIneqSquash
Definition: ubpDagObj.h:81
std::vector< fadbad::F< double > > resultADineqEq
Definition: ubpDagObj.h:56
mc::FFSubgraph subgraphIneqEq
Definition: ubpDagObj.h:83
mc::FFSubgraph subgraph
Definition: ubpDagObj.h:44
std::vector< mc::FFVar > functionsObj
Definition: ubpDagObj.h:72
std::vector< fadbad::F< double > > resultADineqSquashIneq
Definition: ubpDagObj.h:55
Definition: constraint.h:42
std::vector< fadbad::F< double > > resultAD
Definition: ubpDagObj.h:50
std::vector< double > resultDoubleIneqSquash
Definition: ubpDagObj.h:68
std::vector< double > doublePoint
Definition: ubpDagObj.h:62
Definition: constraint.h:43
std::vector< fadbad::F< fadbad::F< double > > > resultAD2ndOrder
Definition: ubpDagObj.h:58
mc::FFSubgraph subgraphObj
Definition: ubpDagObj.h:78
Definition: constraint.h:44
std::vector< mc::FFVar > functionsIneqEq
Definition: ubpDagObj.h:77
namespace holding all essentials of MAiNGO
Definition: aleModel.h:25
std::vector< mc::FFVar > functionsIneq
Definition: ubpDagObj.h:73
std::vector< mc::FFVar > functionsEq
Definition: ubpDagObj.h:74
std::vector< fadbad::F< fadbad::F< double > > > fadbadArray2ndOrder
Definition: ubpDagObj.h:59
std::vector< fadbad::F< double > > resultADeq
Definition: ubpDagObj.h:53
Struct for storing all needed Directed acyclic Graph objects for the upper bounding solver...
Definition: ubpDagObj.h:37
std::vector< fadbad::F< double > > resultADineqSquash
Definition: ubpDagObj.h:54
Definition: constraint.h:45
std::vector< double > resultDoubleIneqEq
Definition: ubpDagObj.h:70
std::vector< mc::FFVar > functionsIneqSquashIneq
Definition: ubpDagObj.h:76
std::vector< double > resultDoubleIneq
Definition: ubpDagObj.h:66
std::vector< double > resultDoubleIneqSquashIneq
Definition: ubpDagObj.h:69
std::vector< double > resultDoubleObj
Definition: ubpDagObj.h:65
std::vector< mc::FFVar > vars
Definition: ubpDagObj.h:43
std::vector< mc::FFVar > resultVars
Definition: ubpDagObj.h:46
std::vector< double > doubleArray
Definition: ubpDagObj.h:63
mc::FFSubgraph subgraphIneqSquashIneq
Definition: ubpDagObj.h:82
std::shared_ptr< Settings > maingoSettings
Definition: ubpDagObj.h:85
std::vector< double > resultDouble
Definition: ubpDagObj.h:64
mc::FFGraph DAG
Definition: ubpDagObj.h:42
std::vector< fadbad::F< fadbad::F< double > > > adPoint2ndOrder
Definition: ubpDagObj.h:60
std::vector< double > resultDoubleEq
Definition: ubpDagObj.h:67
mc::FFSubgraph subgraphEq
Definition: ubpDagObj.h:80
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::shared_ptr< std::vector< Constraint >> constraintProperties, std::shared_ptr< Settings > settingsIn, std::shared_ptr< Logger > loggerIn)
Constructor.
Definition: ubpDagObj.h:104
std::shared_ptr< Logger > logger
Definition: ubpDagObj.h:86
std::vector< fadbad::F< double > > adPoint
Definition: ubpDagObj.h:48