Minotaur 0.4.1
Docs for developers
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 Problem;
27class QuadHandler;
28class kPowHandler;
29class Solution;
30class UnivarQuadHandler;
31class YEqLFs;
32class YEqUCGs;
33class YEqVars;
34typedef CxUnivarHandler *CxUnivarHandlerPtr;
35typedef CGraph *CGraphPtr;
36typedef LinearHandler *LinearHandlerPtr;
37typedef QuadHandler *QuadHandlerPtr;
38typedef kPowHandler *kPowHandlerPtr;
39typedef UnivarQuadHandler *UnivarQuadHandlerPtr;
40typedef Solution *SolutionPtr;
41typedef const Solution *ConstSolutionPtr;
42
54 public:
57
59 Transformer(EnvPtr env, ProblemPtr oldp);
60
62 virtual ~Transformer();
63
65 virtual std::string getName() const = 0;
66
75 virtual SolutionPtr getSolOrig(ConstSolutionPtr sol, int &err) = 0;
76
85 virtual SolutionPtr getSolTrans(ConstSolutionPtr sol, int &err) = 0;
86
95 virtual void reformulate(ProblemPtr &newp, HandlerVector &handlers,
96 int &status) = 0;
97
98 protected:
101
104
107
110
113
116
119
122
125
131
137
143
145 const double zTol_;
146
154 bool allConsAssigned_(ProblemPtr p, HandlerVector &handlers);
155
166
173 void clearUnusedHandlers_(HandlerVector &handlers);
174
183
192
197 virtual void makeObjLin_();
198
200 void minObj_();
201
214 VariablePtr newVar_(VariablePtr iv, double d, ProblemPtr newp);
215
230
243
244 private:
245 static const std::string me_;
246};
247
249typedef const Transformer *ConstTransformerPtr;
250
251} // namespace Minotaur
252
253#endif
254
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
The base class linear function is of the form c'x.
Definition: LinearFunction.h:31
Definition: LinearHandler.h:60
Definition: Logger.h:37
Definition: Problem.h:74
‍Iterator for LinSqrMap
Definition: QuadHandler.h:63
Definition: Solution.h:30
Abstract base class for reformulating a problem so that handlers can be applied to it.
Definition: Transformer.h:53
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:103
YEqVars * yVars_
Storage for auxiliary variables defined by relations of the form .
Definition: Transformer.h:142
void clearUnusedHandlers_(HandlerVector &handlers)
Delete unused handlers.
Definition: Transformer.cpp:137
QuadHandlerPtr qHandler_
Handler for quadratic terms.
Definition: Transformer.h:118
void copyLinear_(ConstProblemPtr p, ProblemPtr newp)
Copy all the linear constraints of the problem into the new problem.
Definition: Transformer.cpp:158
void assignHandler_(CGraphPtr cg, ConstraintPtr c)
Assign an appropriate handler to a nonlinear constraint of the form .
Definition: Transformer.cpp:114
VariablePtr newVar_(VariablePtr iv, double d, ProblemPtr newp)
Find the auxiliary variable associated with or create a new one.
Definition: Transformer.cpp:251
EnvPtr env_
The pointer to environment.
Definition: Transformer.h:100
ProblemPtr p_
The original problem.
Definition: Transformer.h:112
YEqLFs * yLfs_
Storage for auxiliary variables defined by relations of the form .
Definition: Transformer.h:130
YEqUCGs * yUniExprs_
Storage for auxiliary variables defined by relations of the form .
Definition: Transformer.h:136
ProblemPtr newp_
The transformed problem.
Definition: Transformer.h:109
CxUnivarHandlerPtr uHandler_
Handler for univariate constraints.
Definition: Transformer.h:121
Transformer()
Default Constructor.
Definition: Transformer.cpp:48
kPowHandlerPtr kHandler_
Handler for y = x^k type constraints.
Definition: Transformer.h:115
virtual void makeObjLin_()
Definition: Transformer.cpp:206
LoggerPtr logger_
Logger.
Definition: Transformer.h:106
bool allConsAssigned_(ProblemPtr p, HandlerVector &handlers)
Check if all constraints in a problem have been assigned to a handler.
Definition: Transformer.cpp:85
void minObj_()
Convert a maximization objective into minimization.
virtual std::string getName() const =0
Get the name of this Transformer.
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:124
virtual ~Transformer()
Destroy.
Definition: Transformer.cpp:71
const double zTol_
Tolerance for checking if a value is zero.
Definition: Transformer.h:145
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:150
‍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.4 on Thu Apr 24 2025