|
Minotaur 0.4.1
Docs for developers
|
PolynomialFunction represents functions of the form 

#include <PolynomialFunction.h>


Public Member Functions | |
| PolynomialFunction () | |
| Default constructor. | |
| PolynomialFunction (CGraphPtr cg) | |
| Expand polynomial from a computational graph. | |
| ~PolynomialFunction () | |
| Destroy. | |
| PolyFunPtr | clone () const |
| Make a clone. | |
| void | add (ConstMonomialFunPtr m) |
| Add a monomial m to this polynomial. The monomial is first cloned. | |
| NonlinearFunctionPtr | cloneWithVars (VariableConstIterator vbeg, int *err) const |
| Make a clone using new variables. | |
| void | createCG () |
| double | eval (const double *x, int *error) |
| Evaluate the function at a given point x. | |
| void | evalGradient (const double *x, double *grad_f, int *error) |
| Evaluate and add gradient at a given point. | |
| void | evalHessian (const double mult, const double *x, const LTHessStor *stor, double *values, int *error) |
| Evaluate and add hessian at a given point. | |
| void | fillHessStor (LTHessStor *stor) |
| Fill sparsity of hessian into hessian storage. | |
| void | fillJac (const double *x, double *values, int *error) |
| Evaluate and add gradient at a given point to the jacobian. | |
| void | finalHessStor (const LTHessStor *stor) |
| Finalize hessian preparation. | |
| void | getVars (VariableSet *) |
| Get variables used in this function. | |
| double | getConstant () |
| Get the constant term. | |
| FunctionType | getType () const |
| Return type of function. | |
| bool | isEmpty () const |
| Return true if the constant is 0 and there are no terms. | |
| void | multiply (ConstLinearFunctionPtr lf, double c) |
| Multiply with (lf + c), where lf is a linear function. | |
| void | multiply (double c) |
| Multiply with c, a constant. | |
| void | prepJac (VarSetConstIter vb, VarSetConstIter ve) |
| Prepare for evaluating sparse jacobian. | |
| void | recCG_ (const CNode *cnode, double *c, MonomialVector *terms) |
| void | recCGMult_ (MonomialVector *t1, MonomialVector *t2, double c1, double c2, MonomialVector *terms, double *c) |
| double | removeConstant () |
| If the polynomial has a constant term, return it, and remove it from the polynomial. | |
| void | removeLinear (LinearFunctionPtr lf) |
| void | removeQuadratic (QuadraticFunctionPtr qf) |
| MonomialConstIter | termsBegin () |
| Get an iterator to the first monomial. | |
| MonomialConstIter | termsEnd () |
| Get an iterator to the last monomial. | |
| void | write (std::ostream &out) const |
| Display. | |
| void | add (const double c) |
| Add a constant. | |
| void | add (ConstLinearFunctionPtr lf) |
| Add a linear function. | |
| void | add (ConstQuadraticFunctionPtr qf) |
| Add a quadratic. | |
| void | add (ConstPolyFunPtr p) |
| Add a polynomial to the polynomial. | |
| void | multiply (ConstQuadraticFunctionPtr qf) |
| Multiply with a quadratic. | |
| void | multiply (ConstPolyFunPtr p2) |
| Multiply with a polynomial. | |
| PolyFunPtr | copyAdd (ConstPolyFunPtr p2) const |
| Add two polynomials. Creates a new polynomial. | |
| PolyFunPtr | copyMinus (ConstPolyFunPtr p2) |
| create a copy of this polynomial and subtract from it a given polynomial | |
| PolyFunPtr | copyMult (double c) |
| Multiply a polynomial with constant. | |
| PolyFunPtr | copyMult (ConstLinearFunctionPtr l2) const |
| Multiply a linear function and polynomial function. | |
| PolyFunPtr | copyMult (ConstQuadraticFunctionPtr q2) const |
| Multiply a polynomial with quadratic. | |
| PolyFunPtr | copyMult (ConstPolyFunPtr p2) const |
| Multiply a polynomial with constant. | |
Public Member Functions inherited from Minotaur::NonlinearFunction | |
| NonlinearFunction () | |
| Default constructor. | |
| virtual | ~NonlinearFunction () |
| Destroy. | |
| virtual void | addConst (const double d, int &err) |
| Add a constant to the function. | |
| virtual void | sqrRoot (int &err) |
| Change the nonlinear function to its square-root. | |
| virtual void | computeBounds (double *lb, double *ub, int *error) |
| Calculate upper and lower bounds on the function using bounds of the variables. | |
| virtual std::string | getNlString (int *err) |
| Return a string in AMPL's .nl format (postfix notation) of this nonlinear function. | |
| virtual double | getFixVarOffset (VariablePtr, double) |
| If a variable is fixed at a given value and removed, what is the constant (offset) needed to be added. | |
| virtual bool | hasVar (ConstVariablePtr v) const |
| Check if function contains a variable. | |
| virtual bool | isSumOfSquares () const |
| Check if the function is a sum of square terms. | |
| virtual size_t | numVars () |
| Return the number of variables in this function. | |
| virtual void | removeVar (VariablePtr, double) |
| Remove a variable v from the function after fixing it to value val. | |
| virtual void | subst (VariablePtr, VariablePtr, double) |
| Substitute a variable with another. | |
| virtual NonlinearFunctionPtr | getPersp (VariablePtr z, double eps, int *err) const |
| Take perspective of this function with respect to a given variable. | |
| virtual void | varBoundMods (double, double, VarBoundModVector &, SolveStatus *) |
| Tighten variables based on function bounds. | |
| virtual VariableSet::iterator | varsBegin () |
| First iterator for variables. | |
| virtual VariableSet::iterator | varsEnd () |
| Last iterator for variables. | |
Protected Member Functions | |
| void | clear_ () |
| Clear/reset all terms. Polynomial becomes 0. | |
Protected Attributes | |
| double | cb_ |
| Additional constant. | |
| CGraphPtr | cg_ |
| If the polynomial is constructed from a CGraph, we keep a pointer. | |
| const double | eTol_ |
| Tolerance. | |
| MonomialVector | terms_ |
| Each monomial term. | |
Protected Attributes inherited from Minotaur::NonlinearFunction | |
| VariableSet | vars_ |
| A set of variables used in this function. | |
PolynomialFunction represents functions of the form 

| void PolynomialFunction::add | ( | const double | c | ) |
Add a constant.
Add a monomial to this polynomial. The monomial is copied. The user can change the monomial later wihout affecting the polynomial. This function is dangerous because it operates on the raw pointer of the polynomial and not the shared pointer. The user must ensure that it is not null.
|
virtual |
Make a clone using new variables.
| [in] | vbeg | it points to the variable id 0. vbeg+k points to variable id k, where k>=0. |
| [out] | err | must be nonzero if function wasn't cloned. |
Implements Minotaur::NonlinearFunction.
| void PolynomialFunction::createCG | ( | ) |
Create a cgraph representing this polynomial and save it as a private member. Useful for solving using native derivatives.
|
virtual |
Evaluate the function at a given point x.
| [in] | x | The size of the array x must exceed the highest index of the variables used in the function. |
| [out] | *error | It should be set a positive value if there is error encountered while evaluating. Leave undisturbed otherwise. |
Implements Minotaur::NonlinearFunction.
|
virtual |
Evaluate and add gradient at a given point.
| [in] | x | The size of the array x must exceed the highest index of the variables used in the function. |
| [out] | grad_f | The values of grad_f are incremented with the gradient of this function at x. The array grad_f is dense. |
| [out] | error | It should be set a positive value if there is error encountered while evaluating. Leave undisturbed otherwise. |
Implements Minotaur::NonlinearFunction.
|
virtual |
Evaluate and add hessian at a given point.
| [in] | mult | Multiplier for this objective/constraint function |
| [in] | x | The point where we need the hessian. |
| [in] | stor | The Hessian storage information. |
| [out] | values | The Hessian values to which we add Hessian of this function. |
| [out] | error | We set it to nonzero if any errors are encountered. Do not change it otherwise. |
Implements Minotaur::NonlinearFunction.
|
virtual |
Fill sparsity of hessian into hessian storage.
| [in,out] | stor | We add variables into stor->cols |
Implements Minotaur::NonlinearFunction.
|
virtual |
Evaluate and add gradient at a given point to the jacobian.
| [in] | x | The size of the array x must exceed the highest index of the variables used in the function. |
| [out] | values | The values of jacobian are incremented with the gradient of this function at x. 'values' only contains nonzeros of jacobian. The indices (or offsets) where this nonlinear function should put in the values should be calculated in the prepJac function. |
| [out] | error | It should be set a zero value if there is error encountered while evaluating. Leave undisturbed otherwise. |
Implements Minotaur::NonlinearFunction.
|
virtual |
Finalize hessian preparation.
| [in] | stor | contains the sparsity pattern of hessian of lagrangian. The nonlinear function should save offsets or make other preparation to evaluate hessian. |
Implements Minotaur::NonlinearFunction.
|
virtual |
Return type of function.
Reimplemented from Minotaur::NonlinearFunction.
|
virtual |
Get variables used in this function.
| [in] | vars | A set of variable-pointers into which variables are to be inserted. |
Implements Minotaur::NonlinearFunction.
|
virtual |
Multiply with c, a constant.
Implements Minotaur::NonlinearFunction.
|
virtual |
Prepare for evaluating sparse jacobian.
All the variables that are in this function can occur in one or more of linear, quadratic and nonlinear functions. All variables that occur in the whole function can be accessed by iterating between vbeg and vend. This function is used to find the offset for variables that occur in the nonlinear function.
Implements Minotaur::NonlinearFunction.
| void PolynomialFunction::removeLinear | ( | LinearFunctionPtr | lf | ) |
If the polynomial has a linear function, add it to 'lf', and remove it from the polynomial. If lf is empty and polynomial has linear terms, new space is allocated.
| void PolynomialFunction::removeQuadratic | ( | QuadraticFunctionPtr | qf | ) |
If the polynomial has a quadratic function, add it to 'qf', and remove it from the polynomial. If qf is NULL and polynomial has quadratic terms, new space is allocated.
|
virtual |
Display.
Reimplemented from Minotaur::NonlinearFunction.