14#ifndef MINOTAURLINEARFUNCTION_H
15#define MINOTAURLINEARFUNCTION_H
21 class QuadraticFunction;
24 typedef LinearFunction *LinearFunctionPtr;
25 typedef const LinearFunction *ConstLinearFunctionPtr;
26 typedef QuadraticFunction *QuadraticFunctionPtr;
27 typedef const QuadraticFunction *ConstQuadraticFunctionPtr;
47 VariableConstIterator vend,
double tol);
79 UIntVector variableaddress)
const;
93 double eval(
const std::vector<double> &x)
const;
100 double eval(
const double *x)
const;
108 void fillJac(
double *values,
int *error);
115 void getVars(VariableSet *vars);
150 void prepJac(
UInt s, VarSetConstIter vbeg, VarSetConstIter vend);
159 VariableGroupConstIterator
termsBegin()
const;
162 VariableGroupConstIterator
termsEnd()
const;
165 void write(std::ostream &out)
const;
Declare important 'types' used in Minotaur.
The base class linear function is of the form c'x.
Definition: LinearFunction.h:31
LinearFunctionPtr copyMult(const double c)
Definition: LinearFunction.cpp:342
void addTerm(ConstVariablePtr var, const double a)
Definition: LinearFunction.cpp:89
void removeVar(VariablePtr v, double val)
Remove a variable v from the function.
Definition: LinearFunction.cpp:274
void evalGradient(double *grad_f) const
Definition: LinearFunction.cpp:163
void minus(LinearFunctionPtr lf)
Definition: LinearFunction.cpp:78
QuadraticFunctionPtr square()
Square the function.
Definition: LinearFunction.cpp:251
LinearFunctionPtr copyMinus(ConstLinearFunctionPtr l1)
Definition: LinearFunction.cpp:312
void write(std::ostream &out) const
Writes the function to a stream.
Definition: LinearFunction.cpp:377
bool hasVar(ConstVariablePtr v) const
Check if function contains a variable.
Definition: LinearFunction.cpp:219
LinearFunctionPtr copyAdd(ConstLinearFunctionPtr l1)
Definition: LinearFunction.cpp:326
LinearFunctionPtr clone() const
Definition: LinearFunction.cpp:98
void incTerm(ConstVariablePtr var, const double a)
Definition: LinearFunction.cpp:135
size_t getNumTerms() const
Get the number of terms in this function.
Definition: LinearFunction.h:113
VariableGroupConstIterator termsBegin() const
Iterate over the terms in the linear function: begin.
Definition: LinearFunction.cpp:239
void computeBounds(double *l, double *u)
Get bounds based on lower and upperbounds of each variable.
Definition: LinearFunction.cpp:180
~LinearFunction()
Destroy.
Definition: LinearFunction.cpp:50
VariableGroupConstIterator termsEnd() const
Iterate over the terms in the linear function: end.
Definition: LinearFunction.cpp:245
double getWeight(ConstVariablePtr var) const
Definition: LinearFunction.cpp:209
LinearFunction()
Default constructor.
Definition: LinearFunction.cpp:20
double eval(const std::vector< double > &x) const
Definition: LinearFunction.cpp:147
void multiply(double d)
Multiply the linear function by a number.
Definition: LinearFunction.cpp:225
void clearAll()
Definition: LinearFunction.cpp:280
Definition: QuadraticFunction.h:38
Definition: Variable.h:31
Definition: ActiveNodeStore.h:20
std::map< ConstVariablePtr, double, CompareVariablePtr > VariableGroup
Variables should always be constant within a group.
Definition: Types.h:511
unsigned int UInt
Unsigned integer.
Definition: Types.h:30