|
Minotaur 0.4.1
Docs for developers
|
Abstract base class for reformulating a problem so that handlers can be applied to it. More...
#include <Transformer.h>


Public Member Functions | |
| Transformer () | |
| Default Constructor. | |
| Transformer (EnvPtr env, ProblemPtr oldp) | |
| Constructor. | |
| virtual | ~Transformer () |
| Destroy. | |
| 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. | |
| virtual SolutionPtr | getSolTrans (ConstSolutionPtr sol, int &err)=0 |
| Translate the solution of originial problem into that of reformulated problem. | |
| virtual void | reformulate (ProblemPtr &newp, HandlerVector &handlers, int &status)=0 |
| Perform the reformulation, and assign handlers. | |
Protected Member Functions | |
| bool | allConsAssigned_ (ProblemPtr p, HandlerVector &handlers) |
| Check if all constraints in a problem have been assigned to a handler. | |
| void | assignHandler_ (CGraphPtr cg, ConstraintPtr c) |
Assign an appropriate handler to a nonlinear constraint of the form ![]() | |
| void | clearUnusedHandlers_ (HandlerVector &handlers) |
| Delete unused handlers. | |
| void | copyLinear_ (ConstProblemPtr p, ProblemPtr newp) |
| Copy all the linear constraints of the problem into the new problem. | |
| void | copyVars_ (ConstProblemPtr p, ProblemPtr newp) |
| Copy all the linear constraints of the problem into the new problem. | |
| virtual void | makeObjLin_ () |
| void | minObj_ () |
| Convert a maximization objective into minimization. | |
| VariablePtr | newVar_ (VariablePtr iv, double d, ProblemPtr newp) |
Find the auxiliary variable associated with ![]() | |
| VariablePtr | newVar_ (LinearFunctionPtr lf, double d, ProblemPtr newp) |
Find the auxiliary variable associated with ![]() | |
| VariablePtr | newVar_ (CGraphPtr cg, ProblemPtr newp) |
Find the auxiliary variable associated with ![]() | |
Protected Attributes | |
| EnvPtr | env_ |
| The pointer to environment. | |
| LinearHandlerPtr | lHandler_ |
| Handler for linear constraints and variables. | |
| LoggerPtr | logger_ |
| Logger. | |
| ProblemPtr | newp_ |
| The transformed problem. | |
| ProblemPtr | p_ |
| The original problem. | |
| kPowHandlerPtr | kHandler_ |
| Handler for y = x^k type constraints. | |
| QuadHandlerPtr | qHandler_ |
| Handler for quadratic terms. | |
| CxUnivarHandlerPtr | uHandler_ |
| Handler for univariate constraints. | |
| UnivarQuadHandlerPtr | uqHandler_ |
| Handler for univariate quadratic constraints. | |
| YEqLFs * | yLfs_ |
Storage for auxiliary variables defined by relations of the form ![]() | |
| YEqUCGs * | yUniExprs_ |
Storage for auxiliary variables defined by relations of the form ![]() | |
| YEqVars * | yVars_ |
Storage for auxiliary variables defined by relations of the form ![]() | |
| const double | zTol_ |
| Tolerance for checking if a value is zero. | |
Abstract base class for reformulating a problem so that handlers can be applied to it.
A transformer will create a new problem equivalent to a given problem by spliting constraints, adding new variables etc. The end result is a problem whose each constraint can be handled by a specific handler. This class has some abstract virtual methods that must be implemented by a derived class. Other commonly used functions are implemented here.
|
protected |
Check if all constraints in a problem have been assigned to a handler.
| [in] | p | Problem whose constraints need to be checked. |
|
protected |
Assign an appropriate handler to a nonlinear constraint of the form 
| [in] | cg | A nonlinear function which is be replaced by the auxiliary variable. |
| [in] | c | The nonlinear constraint ![]() |
|
protected |
Delete unused handlers.
| [in/out] | handlers. Contains pointers to each handler. Unused ones are removed from the vector. |
|
protected |
Copy all the linear constraints of the problem into the new problem.
| [in] | p | Input problem |
| [in] | newp | The transformed problem to which new constraints are added. |
|
protected |
Copy all the linear constraints of the problem into the new problem.
| [in] | p | Input problem |
| [in] | newp | The transformed problem to which new constraints are added. |
|
pure virtual |
Get the name of this Transformer.
Implemented in Minotaur::QuadTransformer, Minotaur::SimpleTransformer, and Minotaur::TransPoly.
|
pure virtual |
Translate the solution of reformulated problem into that of original problem.
| [in] | sol | Solution of the reformulated problem. |
| [out] | err | Zero if no error is encountered, nonzero otherwise. |
Implemented in Minotaur::QuadTransformer, Minotaur::SimpleTransformer, and Minotaur::TransPoly.
|
pure virtual |
Translate the solution of originial problem into that of reformulated problem.
| [in] | sol | Solution of the original problem. |
| [out] | err | Zero if no error is encountered, nonzero otherwise. |
Implemented in Minotaur::QuadTransformer, Minotaur::SimpleTransformer, and Minotaur::TransPoly.
|
protectedvirtual |
Converts the new Problem newp_ into one with a linear objective by adding a new variable if necessary.
|
protected |
Find the auxiliary variable associated with 
| [in] | The | nonlinear function. |
| [in] | newp | The transformed problem to which the new constraint should be added, in case this constraint is not found. |

|
protected |
Find the auxiliary variable associated with 
| [in/out] | lf The linear function ![]() | |
| [in] | d | The value ![]() |
| [in] | newp | The transformed problem to which the new constraint should be added, in case this constraint is not found. |

|
protected |
Find the auxiliary variable associated with 
| [in] | iv | The variable ![]() |
| [in] | d | The value ![]() |
| [in] | newp | The transformed problem to which the new constraint should be added, in case this constraint is not found. |

|
pure virtual |
Perform the reformulation, and assign handlers.
| [out] | newp | The new, reformulated problem. |
| [out] | handlers | A vector of handlers used to reformulate the problem. |
| [out] | status | Zero if reformulated successfully. Nonzero otherwise. |
Implemented in Minotaur::QuadTransformer, Minotaur::SimpleTransformer, and Minotaur::TransPoly.