Minotaur 0.4.1
Docs for developers
Public Member Functions | List of all members
Minotaur::MonomialFunction Class Reference

MonomialFunction represents functions of the form of the form $\prod_ia_ix_i^{b_i}$ where $a_i \in \mathbb{R}, b_i
\in \mathbb{N}$. More...

#include <PolynomialFunction.h>

Inheritance diagram for Minotaur::MonomialFunction:
Inheritance graph
[legend]
Collaboration diagram for Minotaur::MonomialFunction:
Collaboration graph
[legend]

Public Member Functions

 MonomialFunction ()
 Default constructor.
 
 MonomialFunction (double c)
 A constant monomial.
 
 MonomialFunction (double c, ConstVariablePtr v, UInt p)
 Constructor with a single variable, a multiplier, and a power.
 
 ~MonomialFunction ()
 Destroy.
 
MonomialFunPtr clone () const
 Create a full copy.
 
NonlinearFunctionPtr cloneWithVars (VariableConstIterator vbeg, int *err) const
 
double eval (const double *x, int *error)
 Evaluate the function at a given point x. More...
 
double eval (const DoubleVector &x, int *error)
 
void evalGradient (const double *x, double *grad_f, int *error)
 Evaluate and add gradient at a given point. More...
 
void evalHessian (const double, const double *, const LTHessStor *, double *, int *)
 Evaluate and add hessian at a given point. More...
 
CNodefillCG (CGraphPtr cg)
 
void fillJac (const double *, double *, int *)
 Evaluate and add gradient at a given point to the jacobian. More...
 
void fillHessStor (LTHessStor *)
 Fill sparsity of hessian into hessian storage. More...
 
void finalHessStor (const LTHessStor *)
 Finalize hessian preparation. More...
 
double getCoeff () const
 
int getDegree () const
 Get the degree, sum of all powers.
 
const VarIntMap * getTerms () const
 Monomial terms.
 
void getVars (VariableSet *)
 Get variables used in this function. More...
 
void multiply (double coeff, ConstVariablePtr v, int p)
 Multiply with a variable raised to power.
 
void multiply (ConstMonomialFunPtr m2)
 Multiply with another monomial.
 
void multiply (double c)
 Multiply a constant. More...
 
void prepJac (VarSetConstIter, VarSetConstIter)
 Prepare for evaluating sparse jacobian. More...
 
VarIntMapConstIterator termsBegin ()
 Iterator for the first term.
 
VarIntMapConstIterator termsEnd ()
 Iterator at the end of the terms.
 
void toPower (int k)
 Raise the monomial to power k.
 
void write (std::ostream &out) const
 Display. More...
 
void operator*= (double c)
 Multiply a constant.
 
void operator*= (ConstMonomialFunPtr m2)
 Multiply a monomial.
 
- 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. More...
 
virtual void sqrRoot (int &err)
 Change the nonlinear function to its square-root. More...
 
virtual NonlinearFunctionPtr cloneWithVars (VariableConstIterator vbeg, int *err) const =0
 Make a clone using new variables. More...
 
virtual void computeBounds (double *lb, double *ub, int *error)
 Calculate upper and lower bounds on the function using bounds of the variables. More...
 
virtual double eval (const double *x, int *error)=0
 Evaluate the function at a given point x. More...
 
virtual void evalGradient (const double *x, double *grad_f, int *error)=0
 Evaluate and add gradient at a given point. More...
 
virtual void evalHessian (const double mult, const double *x, const LTHessStor *stor, double *values, int *error)=0
 Evaluate and add hessian at a given point. More...
 
virtual void fillHessStor (LTHessStor *stor)=0
 Fill sparsity of hessian into hessian storage. More...
 
virtual void fillJac (const double *x, double *values, int *error)=0
 Evaluate and add gradient at a given point to the jacobian. More...
 
virtual void finalHessStor (const LTHessStor *stor)=0
 Finalize hessian preparation. More...
 
virtual std::string getNlString (int *err)
 Return a string in AMPL's .nl format (postfix notation) of this nonlinear function. More...
 
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. More...
 
virtual FunctionType getType () const
 Return the type of function: polynomial, ... More...
 
virtual void getVars (VariableSet *vars)=0
 Get variables used in this function. More...
 
virtual bool hasVar (ConstVariablePtr v) const
 Check if function contains a variable. More...
 
virtual bool isSumOfSquares () const
 Check if the function is a sum of square terms. More...
 
virtual void multiply (double c)=0
 Multiply by a constant. More...
 
virtual size_t numVars ()
 Return the number of variables in this function.
 
virtual void prepJac (VarSetConstIter vbeg, VarSetConstIter vend)=0
 Prepare for evaluating sparse jacobian. More...
 
virtual void removeVar (VariablePtr, double)
 Remove a variable v from the function after fixing it to value val. More...
 
virtual void subst (VariablePtr, VariablePtr, double)
 Substitute a variable with another. More...
 
virtual NonlinearFunctionPtr getPersp (VariablePtr z, double eps, int *err) const
 Take perspective of this function with respect to a given variable. More...
 
virtual void varBoundMods (double, double, VarBoundModVector &, SolveStatus *)
 Tighten variables based on function bounds. More...
 
virtual VariableSet::iterator varsBegin ()
 First iterator for variables. More...
 
virtual VariableSet::iterator varsEnd ()
 Last iterator for variables. More...
 
virtual void write (std::ostream &out) const
 Display the nonlinear function. More...
 

Additional Inherited Members

- Protected Attributes inherited from Minotaur::NonlinearFunction
VariableSet vars_
 A set of variables used in this function.
 

Detailed Description

MonomialFunction represents functions of the form of the form $\prod_ia_ix_i^{b_i}$ where $a_i \in \mathbb{R}, b_i
\in \mathbb{N}$.

Member Function Documentation

◆ cloneWithVars()

NonlinearFunctionPtr MonomialFunction::cloneWithVars ( VariableConstIterator  vbeg,
int *  err 
) const
virtual

Make a clone using new variables. vbeg points to the variable id 0. vbeg+k points to variable id k, where k>=0.

Implements Minotaur::NonlinearFunction.

◆ eval()

double MonomialFunction::eval ( const double *  x,
int *  error 
)
virtual

Evaluate the function at a given point x.

Parameters
[in]xThe size of the array x must exceed the highest index of the variables used in the function.
[out]*errorIt should be set a positive value if there is error encountered while evaluating. Leave undisturbed otherwise.
Returns
The value of function of x.

Implements Minotaur::NonlinearFunction.

◆ evalGradient()

void MonomialFunction::evalGradient ( const double *  x,
double *  grad_f,
int *  error 
)
virtual

Evaluate and add gradient at a given point.

Parameters
[in]xThe size of the array x must exceed the highest index of the variables used in the function.
[out]grad_fThe values of grad_f are incremented with the gradient of this function at x. The array grad_f is dense.
[out]errorIt should be set a positive value if there is error encountered while evaluating. Leave undisturbed otherwise.

Implements Minotaur::NonlinearFunction.

◆ evalHessian()

void Minotaur::MonomialFunction::evalHessian ( const double  mult,
const double *  x,
const LTHessStor stor,
double *  values,
int *  error 
)
inlinevirtual

Evaluate and add hessian at a given point.

Parameters
[in]multMultiplier for this objective/constraint function
[in]xThe point where we need the hessian.
[in]storThe Hessian storage information.
[out]valuesThe Hessian values to which we add Hessian of this function.
[out]errorWe set it to nonzero if any errors are encountered. Do not change it otherwise.

Implements Minotaur::NonlinearFunction.

◆ fillCG()

CNode * MonomialFunction::fillCG ( CGraphPtr  cg)

Populate the cgraph with a subgraph representing this monomial and return the root node of this subgraph.

◆ fillHessStor()

void Minotaur::MonomialFunction::fillHessStor ( LTHessStor stor)
inlinevirtual

Fill sparsity of hessian into hessian storage.

Parameters
[in,out]storWe add variables into stor->cols

Implements Minotaur::NonlinearFunction.

◆ fillJac()

void Minotaur::MonomialFunction::fillJac ( const double *  x,
double *  values,
int *  error 
)
inlinevirtual

Evaluate and add gradient at a given point to the jacobian.

Parameters
[in]xThe size of the array x must exceed the highest index of the variables used in the function.
[out]valuesThe 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]errorIt should be set a zero value if there is error encountered while evaluating. Leave undisturbed otherwise.

Implements Minotaur::NonlinearFunction.

◆ finalHessStor()

void Minotaur::MonomialFunction::finalHessStor ( const LTHessStor stor)
inlinevirtual

Finalize hessian preparation.

Parameters
[in]storcontains the sparsity pattern of hessian of lagrangian. The nonlinear function should save offsets or make other preparation to evaluate hessian.

Implements Minotaur::NonlinearFunction.

◆ getVars()

void Minotaur::MonomialFunction::getVars ( VariableSet *  vars)
inlinevirtual

Get variables used in this function.

Parameters
[in]varsA set of variable-pointers into which variables are to be inserted.

Implements Minotaur::NonlinearFunction.

◆ multiply()

void MonomialFunction::multiply ( double  c)
virtual

Multiply a constant.

Implements Minotaur::NonlinearFunction.

◆ prepJac()

void Minotaur::MonomialFunction::prepJac ( VarSetConstIter  vbeg,
VarSetConstIter  vend 
)
inlinevirtual

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.

◆ write()

void MonomialFunction::write ( std::ostream &  out) const
virtual

Display.

Reimplemented from Minotaur::NonlinearFunction.


The documentation for this class was generated from the following files:

Minotaur source code documented by Doxygen 1.9.4 on Thu Apr 24 2025