Cbc  2.10.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ClpObjective.hpp
Go to the documentation of this file.
1 /* $Id: ClpObjective.hpp 2385 2019-01-06 19:43:06Z unxusr $ */
2 // Copyright (C) 2002, International Business Machines
3 // Corporation and others. All Rights Reserved.
4 // This code is licensed under the terms of the Eclipse Public License (EPL).
5 
6 #ifndef ClpObjective_H
7 #define ClpObjective_H
8 
9 //#############################################################################
10 class ClpSimplex;
11 class ClpModel;
12 
18 class ClpObjective {
19 
20 public:
22 
23 
30  virtual double *gradient(const ClpSimplex *model,
31  const double *solution,
32  double &offset, bool refresh,
33  int includeLinear = 2)
34  = 0;
37  virtual double reducedGradient(ClpSimplex *model, double *region,
38  bool useFeasibleCosts)
39  = 0;
46  virtual double stepLength(ClpSimplex *model,
47  const double *solution,
48  const double *change,
49  double maximumTheta,
50  double &currentObj,
51  double &predictedObj,
52  double &thetaObj)
53  = 0;
55  virtual double objectiveValue(const ClpSimplex *model, const double *solution) const = 0;
57  virtual void resize(int newNumberColumns) = 0;
59  virtual void deleteSome(int numberToDelete, const int *which) = 0;
61  virtual void reallyScale(const double *columnScale) = 0;
65  virtual int markNonlinear(char *which);
67  virtual void newXValues() {}
69 
71 
72  ClpObjective();
74 
76  ClpObjective(const ClpObjective &);
77 
79  ClpObjective &operator=(const ClpObjective &rhs);
80 
82  virtual ~ClpObjective();
83 
85  virtual ClpObjective *clone() const = 0;
90  virtual ClpObjective *subsetClone(int numberColumns,
91  const int *whichColumns) const;
92 
94 
96 
97  inline int type() const
99  {
100  return type_;
101  }
103  inline void setType(int value)
104  {
105  type_ = value;
106  }
108  inline int activated() const
109  {
110  return activated_;
111  }
113  inline void setActivated(int value)
114  {
115  activated_ = value;
116  }
117 
119  inline double nonlinearOffset() const
120  {
121  return offset_;
122  }
124 
125  //---------------------------------------------------------------------------
126 
127 protected:
129 
130  double offset_;
133  int type_;
137 };
138 
139 #endif
140 
141 /* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
142 */
ClpObjective & operator=(const ClpObjective &rhs)
Assignment operator.
virtual void resize(int newNumberColumns)=0
Resize objective.
virtual ClpObjective * subsetClone(int numberColumns, const int *whichColumns) const
Subset clone.
ClpObjective()
Default Constructor.
virtual void newXValues()
Say we have new primal solution - so may need to recompute.
void setActivated(int value)
Set whether activated.
double offset_
Value of non-linear part of objective.
Objective Abstract Base Class.
virtual ~ClpObjective()
Destructor.
virtual double reducedGradient(ClpSimplex *model, double *region, bool useFeasibleCosts)=0
Returns reduced gradient.Returns an offset (to be added to current one).
virtual double stepLength(ClpSimplex *model, const double *solution, const double *change, double maximumTheta, double &currentObj, double &predictedObj, double &thetaObj)=0
Returns step length which gives minimum of objective for solution + theta * change vector up to maxim...
int activated_
Whether activated.
This solves LPs using the simplex method.
Definition: ClpSimplex.hpp:106
void setType(int value)
Sets type (above 63 is extra information)
int type() const
Returns type (above 63 is extra information)
virtual void deleteSome(int numberToDelete, const int *which)=0
Delete columns in objective.
virtual ClpObjective * clone() const =0
Clone.
virtual double objectiveValue(const ClpSimplex *model, const double *solution) const =0
Return objective value (without any ClpModel offset) (model may be NULL)
virtual void reallyScale(const double *columnScale)=0
Scale objective.
double nonlinearOffset() const
Objective offset.
int activated() const
Whether activated.
virtual double * gradient(const ClpSimplex *model, const double *solution, double &offset, bool refresh, int includeLinear=2)=0
Returns gradient.
virtual int markNonlinear(char *which)
Given a zeroed array sets nonlinear columns to 1.
int type_
Type of objective - linear is 1.