Minotaur 0.4.1
Docs for developers
LinearFunction.h
Go to the documentation of this file.
1//
2// Minotaur -- It's only 1/2 bull
3//
4// (C)opyright 2008 - 2025 The Minotaur Team.
5//
6
14#ifndef MINOTAURLINEARFUNCTION_H
15#define MINOTAURLINEARFUNCTION_H
16
17#include "Types.h"
18
19namespace Minotaur {
20 class LinearFunction;
21 class QuadraticFunction;
22 class Variable;
23
24 typedef LinearFunction *LinearFunctionPtr;
25 typedef const LinearFunction *ConstLinearFunctionPtr;
26 typedef QuadraticFunction *QuadraticFunctionPtr;
27 typedef const QuadraticFunction *ConstQuadraticFunctionPtr;
28
29
32 public:
35
40 LinearFunction(const double tol);
41
46 LinearFunction(double *a, VariableConstIterator vbeg,
47 VariableConstIterator vend, double tol);
48
49
52
53 void add(LinearFunctionPtr lf);
54
55 void add(ConstLinearFunctionPtr lf);
56
63 void addTerm(ConstVariablePtr var, const double a);
64
68 void clearAll();
69
75
76 LinearFunctionPtr cloneWithVars(VariableConstIterator vbeg) const;
77
78 LinearFunctionPtr cloneWithVarsPermute(VariableConstIterator vbeg,
79 UIntVector variableaddress) const;
80
86 void computeBounds(double *l, double *u);
87
93 double eval(const std::vector<double> &x) const;
94
100 double eval(const double *x) const;
101
106 void evalGradient(double *grad_f) const;
107
108 void fillJac(double *values, int *error);
109
110 double getFixVarOffset(VariablePtr v, double val);
111
113 size_t getNumTerms() const { return (terms_.size()); }
114
115 void getVars(VariableSet *vars);
116
122 double getWeight(ConstVariablePtr var) const;
123
130 bool hasVar(ConstVariablePtr v) const;
131
137 void incTerm(ConstVariablePtr var, const double a);
138
142 void minus(LinearFunctionPtr lf);
143
144 //void mult(LinearFunctionPtr lf);
145
147
148 void multiply(double d);
149
150 void prepJac(UInt s, VarSetConstIter vbeg, VarSetConstIter vend);
151
153 void removeVar(VariablePtr v, double val);
154
157
159 VariableGroupConstIterator termsBegin() const;
160
162 VariableGroupConstIterator termsEnd() const;
163
165 void write(std::ostream &out) const;
166
167
173
179
184 LinearFunctionPtr copyMult(const double c);
185
191
192 private:
197 bool hasChanged_;
198
200 DoubleVector off_;
201
206 VariableGroup terms_;
207
209 double tol_;
210
213
215 LinearFunction &operator=(const LinearFunction &l);
216 };
217} //namespace Minotaur
218#endif
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

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