Minotaur 0.4.1
Docs for developers
Loading...
Searching...
No Matches
Transformer.h
Go to the documentation of this file.
1//
2// Minotaur -- It's only 1/2 bull
3//
4// (C)opyright 2008 - 2025 The Minotaur Team.
5//
6
13#ifndef MINOTAURTRANSFORMER_H
14#define MINOTAURTRANSFORMER_H
15
16#include "OpCode.h"
17#include "Types.h"
18
19namespace Minotaur {
20class CxUnivarHandler;
21class CGraph;
22class CNode;
23class Environment;
24class Engine;
25class LinearHandler;
26class LogHandler;
27class Problem;
28class AbsHandler;
29class ExpHandler;
30class PowHandler;
31class QuadHandler;
32class RecipHandler;
33class kPowHandler;
34class Solution;
35class UnivarQuadHandler;
36class YEqLFs;
37class YEqUCGs;
38class YEqVars;
39typedef CxUnivarHandler *CxUnivarHandlerPtr;
40typedef CGraph *CGraphPtr;
41typedef LinearHandler *LinearHandlerPtr;
42typedef PowHandler *PowHandlerPtr;
43typedef AbsHandler *AbsHandlerPtr;
44typedef RecipHandler *RecipHandlerPtr;
45typedef LogHandler *LogHandlerPtr;
46typedef ExpHandler *ExpHandlerPtr;
47typedef QuadHandler *QuadHandlerPtr;
48typedef kPowHandler *kPowHandlerPtr;
49typedef UnivarQuadHandler *UnivarQuadHandlerPtr;
50typedef Solution *SolutionPtr;
51typedef const Solution *ConstSolutionPtr;
52
64 public:
67
69 Transformer(EnvPtr env, ProblemPtr oldp);
70
72 virtual ~Transformer();
73
75 virtual std::string getName() const = 0;
76
85 virtual SolutionPtr getSolOrig(ConstSolutionPtr sol, int &err) = 0;
86
95 virtual SolutionPtr getSolTrans(ConstSolutionPtr sol, int &err) = 0;
96
105 virtual void reformulate(ProblemPtr &newp, HandlerVector &handlers,
106 int &status) = 0;
107
108 protected:
115
118
121
126
129
132
135
138
141
144
147
153
159
165std::map<VariablePtr, VariablePtr> absVarCache_; // vl -> existing t = |vl|
167 const double zTol_;
168
176 bool allConsAssigned_(ProblemPtr p, HandlerVector &handlers);
177
188
195 void clearUnusedHandlers_(HandlerVector &handlers);
196
205
214
219 virtual void makeObjLin_();
220
222 void minObj_();
223
236 VariablePtr newVar_(VariablePtr iv, double d, ProblemPtr newp);
237
252
265
266
267 private:
268 static const std::string me_;
269};
270
272typedef const Transformer *ConstTransformerPtr;
273
274} // namespace Minotaur
275
276#endif
277
Declare the OpCodes used in Minotaur.
Declare important 'types' used in Minotaur.
Definition AbsHandler.h:50
Definition CGraph.h:33
The Constraint class is used to manage a constraint.
Definition Constraint.h:61
Definition CxUnivarHandler.h:141
Definition Environment.h:28
Definition ExpHandler.h:31
The base class linear function is of the form c'x.
Definition LinearFunction.h:31
Definition LinearHandler.h:60
Definition LogHandler.h:31
Definition Logger.h:37
Definition PowHandler.h:30
Definition Problem.h:74
‍Iterator for LinSqrMap
Definition QuadHandler.h:63
Definition RecipHandler.h:30
Definition Solution.h:30
Abstract base class for reformulating a problem so that handlers can be applied to it.
Definition Transformer.h:63
virtual SolutionPtr getSolTrans(ConstSolutionPtr sol, int &err)=0
Translate the solution of originial problem into that of reformulated problem.
LinearHandlerPtr lHandler_
Handler for linear constraints and variables.
Definition Transformer.h:114
YEqVars * yVars_
Storage for auxiliary variables defined by relations of the form .
Definition Transformer.h:164
void clearUnusedHandlers_(HandlerVector &handlers)
Delete unused handlers.
Definition Transformer.cpp:200
QuadHandlerPtr qHandler_
Handler for quadratic terms.
Definition Transformer.h:140
void copyLinear_(ConstProblemPtr p, ProblemPtr newp)
Copy all the linear constraints of the problem into the new problem.
Definition Transformer.cpp:221
void assignHandler_(CGraphPtr cg, ConstraintPtr c)
Assign an appropriate handler to a nonlinear constraint of the form .
Definition Transformer.cpp:118
VariablePtr newVar_(VariablePtr iv, double d, ProblemPtr newp)
Find the auxiliary variable associated with or create a new one.
Definition Transformer.cpp:314
EnvPtr env_
The pointer to environment.
Definition Transformer.h:110
ExpHandlerPtr expHandler_
Handler for Exponential Constraints.
Definition Transformer.h:120
ProblemPtr p_
The original problem.
Definition Transformer.h:134
YEqLFs * yLfs_
Storage for auxiliary variables defined by relations of the form .
Definition Transformer.h:152
YEqUCGs * yUniExprs_
Storage for auxiliary variables defined by relations of the form .
Definition Transformer.h:158
ProblemPtr newp_
The transformed problem.
Definition Transformer.h:131
CxUnivarHandlerPtr uHandler_
Handler for univariate constraints.
Definition Transformer.h:143
Transformer()
Default Constructor.
Definition Transformer.cpp:52
AbsHandlerPtr absHandler_
Handler for absolute value constraint.
Definition Transformer.h:112
kPowHandlerPtr kHandler_
Handler for y = x^k type constraints.
Definition Transformer.h:137
PowHandlerPtr powHandler_
Handler for Power constraints.
Definition Transformer.h:123
virtual void makeObjLin_()
Definition Transformer.cpp:269
LoggerPtr logger_
Logger.
Definition Transformer.h:128
bool allConsAssigned_(ProblemPtr p, HandlerVector &handlers)
Check if all constraints in a problem have been assigned to a handler.
Definition Transformer.cpp:89
void minObj_()
Convert a maximization objective into minimization.
virtual std::string getName() const =0
Get the name of this Transformer.
RecipHandlerPtr recipHandler_
handler for y=1/x constraint
Definition Transformer.h:125
LogHandlerPtr logHandler_
Handler for Log Constraints.
Definition Transformer.h:117
virtual SolutionPtr getSolOrig(ConstSolutionPtr sol, int &err)=0
Translate the solution of reformulated problem into that of original problem.
UnivarQuadHandlerPtr uqHandler_
Handler for univariate quadratic constraints.
Definition Transformer.h:146
virtual ~Transformer()
Destroy.
Definition Transformer.cpp:75
const double zTol_
Tolerance for checking if a value is zero.
Definition Transformer.h:167
virtual void reformulate(ProblemPtr &newp, HandlerVector &handlers, int &status)=0
Perform the reformulation, and assign handlers.
void copyVars_(ConstProblemPtr p, ProblemPtr newp)
Copy all the linear constraints of the problem into the new problem.
Definition Transformer.cpp:213
‍Iterator for LinBivar
Definition UnivarQuadHandler.h:71
Definition Variable.h:31
Definition YEqLFs.h:24
Definition YEqUCGs.h:25
Definition YEqVars.h:24
‍Iterator for LinkPowMap
Definition kPowHandler.h:55
Definition AbsHandler.h:19
QuadHandler * QuadHandlerPtr
Shared pointer to QuadHandler.
Definition QuadHandler.h:770
CxUnivarHandler * CxUnivarHandlerPtr
Shared pointer to CxUnivarHandler.
Definition CxUnivarHandler.h:269
kPowHandler * kPowHandlerPtr
Shared pointer to kPowHandler.
Definition kPowHandler.h:634
UnivarQuadHandler * UnivarQuadHandlerPtr
Shared pointer to UnivarQuadHandler.
Definition QuadTransformer.h:29

Minotaur source code documented by Doxygen 1.9.8 on Tue Aug 11 2026