13#ifndef MINOTAURNONLINEARFUNCTION_H
14#define MINOTAURNONLINEARFUNCTION_H
21 class NonlinearFunction;
23 typedef NonlinearFunction *NonlinearFunctionPtr;
24 typedef VarBoundMod *VarBoundModPtr;
25 typedef std::vector<VarBoundModPtr> VarBoundModVector;
26 typedef VarBoundModVector::iterator VarBoundModIter;
50 virtual void addConst(
const double d,
int &err);
76 virtual void computeBounds(
double *lb,
double *ub,
int *error);
87 virtual double eval(
const double *x,
int *error) = 0;
137 virtual void fillJac(
const double *x,
double *values,
int *error) = 0;
167 assert(!
"implment me!");
216 virtual void prepJac(VarSetConstIter vbeg, VarSetConstIter vend) = 0;
221 assert(!
"implement me!");
228 assert(!
"implement me!");
264 VarBoundModVector & ,
282 virtual void write(std::ostream &out)
const;
Declare important 'types' used in Minotaur.
Base class for nonlinear functions.
Definition: NonlinearFunction.h:31
virtual void prepJac(VarSetConstIter vbeg, VarSetConstIter vend)=0
Prepare for evaluating sparse jacobian.
virtual void varBoundMods(double, double, VarBoundModVector &, SolveStatus *)
Tighten variables based on function bounds.
Definition: NonlinearFunction.h:263
virtual size_t numVars()
Return the number of variables in this function.
Definition: NonlinearFunction.h:205
virtual bool isSumOfSquares() const
Check if the function is a sum of square terms.
Definition: NonlinearFunction.h:195
virtual void computeBounds(double *lb, double *ub, int *error)
Calculate upper and lower bounds on the function using bounds of the variables.
Definition: NonlinearFunction.cpp:40
virtual void removeVar(VariablePtr, double)
Remove a variable v from the function after fixing it to value val.
Definition: NonlinearFunction.h:219
virtual VariableSet::iterator varsBegin()
First iterator for variables.
Definition: NonlinearFunction.h:272
virtual NonlinearFunctionPtr cloneWithVars(VariableConstIterator vbeg, int *err) const =0
Make a clone using new variables.
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...
Definition: NonlinearFunction.h:165
virtual void addConst(const double d, int &err)
Add a constant to the function.
Definition: NonlinearFunction.cpp:34
virtual void write(std::ostream &out) const
Display the nonlinear function.
Definition: NonlinearFunction.cpp:81
virtual bool hasVar(ConstVariablePtr v) const
Check if function contains a variable.
Definition: NonlinearFunction.cpp:60
virtual void multiply(double c)=0
Multiply by a constant.
virtual double eval(const double *x, int *error)=0
Evaluate the function at a given point x.
virtual VariableSet::iterator varsEnd()
Last iterator for variables.
Definition: NonlinearFunction.h:279
virtual NonlinearFunctionPtr getPersp(VariablePtr z, double eps, int *err) const
Take perspective of this function with respect to a given variable.
Definition: NonlinearFunction.cpp:66
virtual void subst(VariablePtr, VariablePtr, double)
Substitute a variable with another.
Definition: NonlinearFunction.h:225
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.
virtual void fillHessStor(LTHessStor *stor)=0
Fill sparsity of hessian into hessian storage.
virtual void getVars(VariableSet *vars)=0
Get variables used in this function.
virtual ~NonlinearFunction()
Destroy.
Definition: NonlinearFunction.cpp:28
virtual void finalHessStor(const LTHessStor *stor)=0
Finalize hessian preparation.
VariableSet vars_
A set of variables used in this function.
Definition: NonlinearFunction.h:286
virtual void fillJac(const double *x, double *values, int *error)=0
Evaluate and add gradient at a given point to the jacobian.
virtual std::string getNlString(int *err)
Return a string in AMPL's .nl format (postfix notation) of this nonlinear function.
Definition: NonlinearFunction.cpp:48
NonlinearFunction()
Default constructor.
Definition: NonlinearFunction.cpp:21
virtual void sqrRoot(int &err)
Change the nonlinear function to its square-root.
Definition: NonlinearFunction.cpp:75
virtual void evalGradient(const double *x, double *grad_f, int *error)=0
Evaluate and add gradient at a given point.
virtual FunctionType getType() const
Return the type of function: polynomial, ...
Definition: NonlinearFunction.cpp:54
Definition: Variable.h:31
Definition: ActiveNodeStore.h:20
FunctionType
Different types of functions in Minotaur.
Definition: Types.h:65
SolveStatus
Different states an algorithm like branch-and-bound can be in.
Definition: Types.h:158
Definition: HessianOfLag.h:21