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 QuadHandler;
29class kPowHandler;
30class Solution;
31class UnivarQuadHandler;
32class YEqLFs;
33class YEqUCGs;
34class YEqVars;
35typedef CxUnivarHandler *CxUnivarHandlerPtr;
36typedef CGraph *CGraphPtr;
37typedef LinearHandler *LinearHandlerPtr;
38typedef LogHandler *LogHandlerPtr;
39typedef QuadHandler *QuadHandlerPtr;
40typedef kPowHandler *kPowHandlerPtr;
41typedef UnivarQuadHandler *UnivarQuadHandlerPtr;
42typedef Solution *SolutionPtr;
43typedef const Solution *ConstSolutionPtr;
44
56 public:
59
61 Transformer(EnvPtr env, ProblemPtr oldp);
62
64 virtual ~Transformer();
65
67 virtual std::string getName() const = 0;
68
77 virtual SolutionPtr getSolOrig(ConstSolutionPtr sol, int &err) = 0;
78
87 virtual SolutionPtr getSolTrans(ConstSolutionPtr sol, int &err) = 0;
88
97 virtual void reformulate(ProblemPtr &newp, HandlerVector &handlers,
98 int &status) = 0;
99
100 protected:
103
106
109
112
115
118
121
124
127
130
136
142
148
150 const double zTol_;
151
159 bool allConsAssigned_(ProblemPtr p, HandlerVector &handlers);
160
171
178 void clearUnusedHandlers_(HandlerVector &handlers);
179
188
197
202 virtual void makeObjLin_();
203
205 void minObj_();
206
219 VariablePtr newVar_(VariablePtr iv, double d, ProblemPtr newp);
220
235
248
249 private:
250 static const std::string me_;
251};
252
254typedef const Transformer *ConstTransformerPtr;
255
256} // namespace Minotaur
257
258#endif
259
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 LogHandler.h:31
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:55
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:105
YEqVars * yVars_
Storage for auxiliary variables defined by relations of the form .
Definition Transformer.h:147
void clearUnusedHandlers_(HandlerVector &handlers)
Delete unused handlers.
Definition Transformer.cpp:147
QuadHandlerPtr qHandler_
Handler for quadratic terms.
Definition Transformer.h:123
void copyLinear_(ConstProblemPtr p, ProblemPtr newp)
Copy all the linear constraints of the problem into the new problem.
Definition Transformer.cpp:168
void assignHandler_(CGraphPtr cg, ConstraintPtr c)
Assign an appropriate handler to a nonlinear constraint of the form .
Definition Transformer.cpp:115
VariablePtr newVar_(VariablePtr iv, double d, ProblemPtr newp)
Find the auxiliary variable associated with or create a new one.
Definition Transformer.cpp:261
EnvPtr env_
The pointer to environment.
Definition Transformer.h:102
ProblemPtr p_
The original problem.
Definition Transformer.h:117
YEqLFs * yLfs_
Storage for auxiliary variables defined by relations of the form .
Definition Transformer.h:135
YEqUCGs * yUniExprs_
Storage for auxiliary variables defined by relations of the form .
Definition Transformer.h:141
ProblemPtr newp_
The transformed problem.
Definition Transformer.h:114
CxUnivarHandlerPtr uHandler_
Handler for univariate constraints.
Definition Transformer.h:126
Transformer()
Default Constructor.
Definition Transformer.cpp:49
kPowHandlerPtr kHandler_
Handler for y = x^k type constraints.
Definition Transformer.h:120
virtual void makeObjLin_()
Definition Transformer.cpp:216
LoggerPtr logger_
Logger.
Definition Transformer.h:111
bool allConsAssigned_(ProblemPtr p, HandlerVector &handlers)
Check if all constraints in a problem have been assigned to a handler.
Definition Transformer.cpp:86
void minObj_()
Convert a maximization objective into minimization.
virtual std::string getName() const =0
Get the name of this Transformer.
LogHandlerPtr logHandler_
Handle for Log Constraints.
Definition Transformer.h:108
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:129
virtual ~Transformer()
Destroy.
Definition Transformer.cpp:72
const double zTol_
Tolerance for checking if a value is zero.
Definition Transformer.h:150
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:160
‍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 Sat Jan 10 2026