13#ifndef MINOTAURQUADRATICFUNCTION_H
14#define MINOTAURQUADRATICFUNCTION_H
26 class QuadraticFunction;
27 class PolynomialFunction;
29 typedef QuadraticFunction* QuadraticFunctionPtr;
30 typedef const QuadraticFunction* ConstQuadraticFunctionPtr;
31 typedef PolynomialFunction* PolyFunPtr;
32 typedef const LinearFunction* ConstLinearFunctionPtr;
33 typedef LinearFunction* LinearFunctionPtr;
34 typedef std::vector<QuadraticFunctionPtr> QfVector;
62 VariableConstIterator vbeg );
69 VariableConstIterator vend);
109 void incTerm(ConstVariablePair vp,
const double weight);
189 VariablePairGroupConstIterator
begin()
const {
return(terms_.begin()); }
192 VariablePairGroupConstIterator
end()
const {
return(terms_.end()); }
198 double getWeight(ConstVariablePair & vp) ;
222 double eval(
const std::vector<double> &x)
const;
229 double eval(
const double *x)
const;
270 std::vector<double> &grad_f);
273 void evalHessian(
const double mult,
const double *x,
274 const LTHessStor *stor,
double *values ,
int *error);
293 void prepJac(VarSetConstIter vbeg, VarSetConstIter vend);
301 void fillJac(
const double *x,
double *values,
int *error);
317 void getVars(VariableSet *vars);
329 VarIntMapConstIterator
varsBegin()
const;
332 VarIntMapConstIterator
varsEnd()
const;
335 void write(std::ostream &s)
const;
Declare important 'types' used in Minotaur.
Declare the class VarBoundMod. It is used to save modifications in a bound of a variable....
The base class linear function is of the form c'x.
Definition: LinearFunction.h:31
Base class for nonlinear functions.
Definition: NonlinearFunction.h:31
PolynomialFunction represents functions of the form , where is a MonomialFunction.
Definition: PolynomialFunction.h:160
Definition: QuadraticFunction.h:38
void add(ConstQuadraticFunctionPtr q2)
Definition: QuadraticFunction.cpp:1007
bool hasVar(ConstVariablePtr v) const
Check if function contains a variable.
Definition: QuadraticFunction.cpp:651
QuadraticFunctionPtr copyMult(double c) const
Multiply a quadratic function with a constant.
Definition: QuadraticFunction.cpp:1084
void write(std::ostream &s) const
Display the quadratic function.
Definition: QuadraticFunction.cpp:1035
void prepJac(VarSetConstIter vbeg, VarSetConstIter vend)
Stores Jacobian values, offset and indices in different arrays.
Definition: QuadraticFunction.cpp:781
double getWeight(ConstVariablePair &vp)
Definition: QuadraticFunction.cpp:627
UInt getNumBilTerms() const
Get the number of bilinear terms in the expression.
Definition: QuadraticFunction.cpp:603
void removeVar(VariablePtr v, double val, LinearFunctionPtr lf)
Definition: QuadraticFunction.cpp:657
QuadraticFunctionPtr cloneWithVars(VariableConstIterator vbeg) const
Definition: QuadraticFunction.cpp:118
UInt getNumTerms() const
Get the number of terms in this expression.
Definition: QuadraticFunction.cpp:586
void evalHessian(const double mult, const double *x, const LTHessStor *stor, double *values, int *error)
Evaluate the summation of multiplier and hessian of constraints.
Definition: QuadraticFunction.cpp:429
QuadraticFunctionPtr clone() const
Definition: QuadraticFunction.cpp:109
VarCountConstMap * getVarMap() const
void operator*=(const double c);
Definition: QuadraticFunction.cpp:621
void evalGradient(const double *x, double *grad_f)
Definition: QuadraticFunction.cpp:300
void prepHess()
Stores hessian matrix values, row and column indices in arrays.
Definition: QuadraticFunction.cpp:810
void fillJac(const double *x, double *values, int *error)
Fills the value of jacobian of a function in an array.
Definition: QuadraticFunction.cpp:504
VariablePairGroupConstIterator begin() const
Constant Iterators to visit all the quadratic terms: begin.
Definition: QuadraticFunction.h:189
double getFixVarOffset(VariablePtr v, double val)
Definition: QuadraticFunction.cpp:984
void bndsquadterms_2(double *l, double *u, VariablePtr v, VariablePtr v2)
Finds bound of quadratic term having v and excluding contribution of v2.
Definition: QuadraticFunction.cpp:206
void bndsquadterms(double *l, double *u, VariablePtr v)
Finds bound of quadratic term having v variable.
Definition: QuadraticFunction.cpp:178
void subst(VariablePtr out, VariablePtr in, double rat)
Definition: QuadraticFunction.cpp:935
void getVars(VariableSet *vars)
Get the variables in the variable set from the variable frequency map.
Definition: QuadraticFunction.cpp:517
void incTerm(ConstVariablePair vp, const double weight)
Definition: QuadraticFunction.cpp:546
VariablePairGroupConstIterator end() const
Constant Iterators to visit all the quadratic terms: end.
Definition: QuadraticFunction.h:192
void addTerm(VariablePair vp, const double weight)
Definition: QuadraticFunction.cpp:526
UInt getNumVars() const
Get the number of variables in this expression.
Definition: QuadraticFunction.cpp:615
~QuadraticFunction()
Destroy.
Definition: QuadraticFunction.cpp:96
Convexity isConvex()
Definition: QuadraticFunction.cpp:405
void multiply(double c)
Multiply by a constant. If constant is zero, all terms are removed.
Definition: QuadraticFunction.cpp:1018
VarIntMapConstIterator varsEnd() const
Iterate over the variables in the quadratic function: end.
Definition: QuadraticFunction.cpp:1001
QfVector findSubgraphs()
Definition: QuadraticFunction.cpp:326
void computeBounds(double *l, double *u)
Compute bounds for using in Presolver.
Definition: QuadraticFunction.cpp:151
bool isZero() const
Definition: QuadraticFunction.h:323
double eval(const std::vector< double > &x) const
Definition: QuadraticFunction.cpp:130
UInt getNumSqTerms() const
Get the number of square terms in the expression.
Definition: QuadraticFunction.cpp:591
VarIntMapConstIterator varsBegin() const
Iterate over the variables in the quadratic function: begin.
Definition: QuadraticFunction.cpp:995
QuadraticFunctionPtr copyMinus(ConstQuadraticFunctionPtr q2) const
Definition: QuadraticFunction.cpp:1050
int getFreq(ConstVariablePtr v1)
Get the number of times variable v1 occurs in quadratic terms.
Definition: QuadraticFunction.cpp:645
QuadraticFunction()
Default constructor.
Definition: QuadraticFunction.cpp:35
QuadraticFunctionPtr copyAdd(ConstQuadraticFunctionPtr q2) const
Definition: QuadraticFunction.cpp:1067
Definition: Variable.h:31
Definition: ActiveNodeStore.h:20
std::pair< ConstVariablePtr, ConstVariablePtr > VariablePair
Pairs of variables are used in quadratic functions.
Definition: Types.h:517
std::map< ConstVariablePtr, double, CompareVariablePtr > VariableGroup
Variables should always be constant within a group.
Definition: Types.h:511
std::map< ConstVariablePair, double, CompareVariablePair > VariablePairGroup
Again, Variables should always be constant within a group.
Definition: Types.h:526
unsigned int UInt
Unsigned integer.
Definition: Types.h:30
Convexity
Convexity of a function or a constraint.
Definition: Types.h:244
Definition: HessianOfLag.h:21