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 ExpHandler;
29class PowHandler;
30class QuadHandler;
31class RecipHandler;
32class kPowHandler;
33class Solution;
34class UnivarQuadHandler;
35class YEqLFs;
36class YEqUCGs;
37class YEqVars;
38typedef CxUnivarHandler *CxUnivarHandlerPtr;
39typedef CGraph *CGraphPtr;
40typedef LinearHandler *LinearHandlerPtr;
41typedef PowHandler *PowHandlerPtr;
42typedef RecipHandler *RecipHandlerPtr;
43typedef LogHandler *LogHandlerPtr;
44typedef ExpHandler *ExpHandlerPtr;
45typedef QuadHandler *QuadHandlerPtr;
46typedef kPowHandler *kPowHandlerPtr;
47typedef UnivarQuadHandler *UnivarQuadHandlerPtr;
48typedef Solution *SolutionPtr;
49typedef const Solution *ConstSolutionPtr;
50
62 public:
65
67 Transformer(EnvPtr env, ProblemPtr oldp);
68
70 virtual ~Transformer();
71
73 virtual std::string getName() const = 0;
74
83 virtual SolutionPtr getSolOrig(ConstSolutionPtr sol, int &err) = 0;
84
93 virtual SolutionPtr getSolTrans(ConstSolutionPtr sol, int &err) = 0;
94
103 virtual void reformulate(ProblemPtr &newp, HandlerVector &handlers,
104 int &status) = 0;
105
106 protected:
109
112
115
118
123
126
129
132
135
138
141
144
150
156
162
164 const double zTol_;
165
173 bool allConsAssigned_(ProblemPtr p, HandlerVector &handlers);
174
185
192 void clearUnusedHandlers_(HandlerVector &handlers);
193
202
211
216 virtual void makeObjLin_();
217
219 void minObj_();
220
233 VariablePtr newVar_(VariablePtr iv, double d, ProblemPtr newp);
234
249
262
263 private:
264 static const std::string me_;
265};
266
268typedef const Transformer *ConstTransformerPtr;
269
270} // namespace Minotaur
271
272#endif
273
Declare the OpCodes used in Minotaur.
Declare important 'types' used in Minotaur.
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:61
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:111
YEqVars * yVars_
Storage for auxiliary variables defined by relations of the form .
Definition Transformer.h:161
void clearUnusedHandlers_(HandlerVector &handlers)
Delete unused handlers.
Definition Transformer.cpp:196
QuadHandlerPtr qHandler_
Handler for quadratic terms.
Definition Transformer.h:137
void copyLinear_(ConstProblemPtr p, ProblemPtr newp)
Copy all the linear constraints of the problem into the new problem.
Definition Transformer.cpp:217
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:310
EnvPtr env_
The pointer to environment.
Definition Transformer.h:108
ExpHandlerPtr expHandler_
Handler for Exponential Constraints.
Definition Transformer.h:117
ProblemPtr p_
The original problem.
Definition Transformer.h:131
YEqLFs * yLfs_
Storage for auxiliary variables defined by relations of the form .
Definition Transformer.h:149
YEqUCGs * yUniExprs_
Storage for auxiliary variables defined by relations of the form .
Definition Transformer.h:155
ProblemPtr newp_
The transformed problem.
Definition Transformer.h:128
CxUnivarHandlerPtr uHandler_
Handler for univariate constraints.
Definition Transformer.h:140
Transformer()
Default Constructor.
Definition Transformer.cpp:52
kPowHandlerPtr kHandler_
Handler for y = x^k type constraints.
Definition Transformer.h:134
PowHandlerPtr powHandler_
Handler for Power constraints.
Definition Transformer.h:120
virtual void makeObjLin_()
Definition Transformer.cpp:265
LoggerPtr logger_
Logger.
Definition Transformer.h:125
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:122
LogHandlerPtr logHandler_
Handler for Log Constraints.
Definition Transformer.h:114
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:143
virtual ~Transformer()
Destroy.
Definition Transformer.cpp:75
const double zTol_
Tolerance for checking if a value is zero.
Definition Transformer.h:164
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:209
‍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 ActiveNodeStore.h:20
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 Mon Jul 20 2026