MAiNGO
constraint.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  **********************************************************************************/
11 
12 #pragma once
13 
14 #include <string>
15 #include <vector>
16 
17 
18 namespace maingo {
19 
20 
26  LP = 0,
27  MIP,
28  QP,
29  MIQP,
30  NLP,
31  DNLP,
33 };
34 
40  OBJ = 0,
41  INEQ,
42  EQ,
49 };
50 
56  CONV_NONE = 0,
59 };
60 
66  MON_NONE = 0,
67  INCR,
69 };
70 
84 };
85 
96 struct Constraint {
97 
98  public:
107 
111  Constraint(const CONSTRAINT_TYPE typeIn, const unsigned indexOriginalIn, const unsigned indexTypeIn, const unsigned indexNonconstantIn,
112  const unsigned indexTypeNonconstantIn, const std::string& nameIn = ""):
113  name(nameIn),
116  isFeasible(true), indexOriginal(indexOriginalIn), indexNonconstant(indexNonconstantIn), indexNonconstantUBP(0), indexConstant(0),
117  indexLinear(0), indexNonlinear(0), indexType(indexTypeIn), indexTypeNonconstant(indexTypeNonconstantIn), indexTypeConstant(0), nparticipatingVariables(0)
118  {
119  if (name == "") {
120  std::string str;
121  switch (typeIn) {
122  case OBJ:
123  str = "obj" + std::to_string(indexTypeIn + 1);
124  break;
125  case INEQ:
126  str = "ineq" + std::to_string(indexTypeIn + 1);
127  break;
128  case EQ:
129  str = "eq" + std::to_string(indexTypeIn + 1);
130  break;
131  case INEQ_REL_ONLY:
132  str = "relOnlyIneq" + std::to_string(indexTypeIn + 1);
133  break;
134  case EQ_REL_ONLY:
135  str = "relOnlyEq" + std::to_string(indexTypeIn + 1);
136  break;
137  case INEQ_SQUASH:
138  str = "squashIneq" + std::to_string(indexTypeIn + 1);
139  break;
140  case AUX_EQ_REL_ONLY:
141  str = "auxRelOnlyEq" + std::to_string(indexTypeIn + 1);
142  break;
143  case OUTPUT:
144  str = "output" + std::to_string(indexTypeIn + 1);
145  break;
146  default:
147  str = "constraint" + std::to_string(indexTypeIn + 1);
148  break;
149  }
150  name = str;
151  }
152  }
153 
157  Constraint(const CONSTRAINT_TYPE typeIn, const unsigned indexOriginalIn, const unsigned indexTypeIn,
158  const unsigned indexConstantIn, const unsigned indexTypeConstantIn, const bool isConstantIn,
159  const bool isFeasibleIn, const double valueIn, const std::string& nameIn = ""):
160  name(nameIn),
163  isFeasible(isFeasibleIn), indexOriginal(indexOriginalIn), indexNonconstant(0), indexNonconstantUBP(0), indexConstant(indexConstantIn),
164  indexLinear(0), indexNonlinear(0), indexType(indexTypeIn), indexTypeNonconstant(0), indexTypeConstant(indexTypeConstantIn), nparticipatingVariables(0)
165  {
166  if (name == "") {
167  std::string str;
168  switch (typeIn) {
169  case OBJ:
170  str = "obj" + std::to_string(indexTypeIn + 1);
171  break;
172  case INEQ:
173  str = "ineq" + std::to_string(indexTypeIn + 1);
174  break;
175  case EQ:
176  str = "eq" + std::to_string(indexTypeIn + 1);
177  break;
178  case INEQ_REL_ONLY:
179  str = "relOnlyIneq" + std::to_string(indexTypeIn + 1);
180  break;
181  case EQ_REL_ONLY:
182  str = "relOnlyEq" + std::to_string(indexTypeIn + 1);
183  break;
184  case INEQ_SQUASH:
185  str = "squashIneq" + std::to_string(indexTypeIn + 1);
186  break;
187  case AUX_EQ_REL_ONLY:
188  str = "auxRelOnlyEq" + std::to_string(indexTypeIn + 1);
189  break;
190  case OUTPUT:
191  str = "output" + std::to_string(indexTypeIn + 1);
192  break;
193  default:
194  str = "constraint" + std::to_string(indexTypeIn + 1);
195  break;
196  }
197  name = str;
198  }
199  }
200 
201  Constraint(const Constraint&) = default;
202  Constraint& operator=(const Constraint& constraintIn) = default;
204  std::string name;
205  double constantValue;
207  std::vector<unsigned> participatingVariables;
216  bool isConstant;
217  bool isFeasible;
223  unsigned int indexOriginal;
224  unsigned int indexNonconstant;
225  unsigned int indexNonconstantUBP;
226  unsigned int indexConstant;
227  unsigned int indexLinear;
228  unsigned int indexNonlinear;
229  unsigned int indexType;
230  unsigned int indexTypeNonconstant;
231  unsigned int indexTypeConstant;
233 };
234 
235 
236 } // end namespace maingo
Definition: constraint.h:40
unsigned int indexTypeConstant
Definition: constraint.h:231
Definition: constraint.h:48
Definition: constraint.h:77
Definition: constraint.h:56
unsigned int indexOriginal
Definition: constraint.h:223
Definition: constraint.h:41
Definition: constraint.h:30
Definition: constraint.h:79
Definition: constraint.h:67
CONSTRAINT_CONVEXITY
Enum for representing the constraint convexity.
Definition: constraint.h:55
CONSTRAINT_TYPE
Enum for representing the constraint type.
Definition: constraint.h:39
Definition: constraint.h:31
CONSTRAINT_DEPENDENCY dependency
Definition: constraint.h:215
unsigned int indexType
Definition: constraint.h:229
unsigned int indexLinear
Definition: constraint.h:227
bool isConstant
Definition: constraint.h:216
Struct for storing information about constraints.
Definition: constraint.h:96
unsigned int indexConstant
Definition: constraint.h:226
unsigned int indexTypeNonconstant
Definition: constraint.h:230
Definition: constraint.h:82
Constraint()
Default conststructor.
Definition: constraint.h:102
bool isFeasible
Definition: constraint.h:217
Definition: constraint.h:46
CONSTRAINT_DEPENDENCY
Enum for representing the constraint dependency. Note that the dependency is increasing meaning that ...
Definition: constraint.h:76
Definition: constraint.h:58
Definition: constraint.h:29
Definition: constraint.h:42
unsigned int indexNonconstantUBP
Definition: constraint.h:225
std::vector< unsigned > participatingVariables
Definition: constraint.h:207
Definition: constraint.h:28
Definition: constraint.h:81
Definition: constraint.h:32
double constantValue
Definition: constraint.h:205
Definition: constraint.h:83
Definition: constraint.h:43
PROBLEM_STRUCTURE
Enum for representing the problem structure.
Definition: constraint.h:25
Constraint & operator=(const Constraint &constraintIn)=default
Definition: constraint.h:68
Constraint(const CONSTRAINT_TYPE typeIn, const unsigned indexOriginalIn, const unsigned indexTypeIn, const unsigned indexConstantIn, const unsigned indexTypeConstantIn, const bool isConstantIn, const bool isFeasibleIn, const double valueIn, const std::string &nameIn="")
Conststructor for constant constraints with a possible name.
Definition: constraint.h:157
Definition: constraint.h:44
Definition: constraint.h:26
namespace holding all essentials of MAiNGO
Definition: aleModel.h:25
CONSTRAINT_MONOTONICITY monotonicity
Definition: constraint.h:214
Definition: constraint.h:27
unsigned nparticipatingVariables
Definition: constraint.h:206
CONSTRAINT_CONVEXITY convexity
Definition: constraint.h:213
Definition: constraint.h:45
std::string name
Definition: constraint.h:204
Definition: constraint.h:78
Definition: constraint.h:66
CONSTRAINT_MONOTONICITY
Enum for representing the constraint monotonicity.
Definition: constraint.h:65
Definition: constraint.h:47
unsigned int indexNonconstant
Definition: constraint.h:224
Definition: constraint.h:57
unsigned int indexNonlinear
Definition: constraint.h:228
CONSTRAINT_TYPE type
Definition: constraint.h:212
Definition: constraint.h:80
Constraint(const CONSTRAINT_TYPE typeIn, const unsigned indexOriginalIn, const unsigned indexTypeIn, const unsigned indexNonconstantIn, const unsigned indexTypeNonconstantIn, const std::string &nameIn="")
Conststructor for non-constant constraints with a possible name.
Definition: constraint.h:111