Clp  1.16.11
ClpObjective.hpp
Go to the documentation of this file.
1 /* $Id: ClpObjective.hpp 1825 2011-11-20 16:02:57Z forrest $ */
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 //#############################################################################
11 class ClpSimplex;
12 class ClpModel;
13 
19 class ClpObjective {
20 
21 public:
22 
24 
25 
32  virtual double * gradient(const ClpSimplex * model,
33  const double * solution,
34  double & offset, bool refresh,
35  int includeLinear = 2) = 0;
38  virtual double reducedGradient(ClpSimplex * model, double * region,
39  bool useFeasibleCosts) = 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) = 0;
54  virtual double objectiveValue(const ClpSimplex * model, const double * solution) const = 0;
56  virtual void resize(int newNumberColumns) = 0;
58  virtual void deleteSome(int numberToDelete, const int * which) = 0;
60  virtual void reallyScale(const double * columnScale) = 0;
64  virtual int markNonlinear(char * which);
66  virtual void newXValues() {}
68 
69 
71 
72  ClpObjective();
74 
77 
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  return type_;
100  }
102  inline void setType(int value) {
103  type_ = value;
104  }
106  inline int activated() const {
107  return activated_;
108  }
110  inline void setActivated(int value) {
111  activated_ = value;
112  }
113 
115  inline double nonlinearOffset () const {
116  return offset_;
117  }
119 
120  //---------------------------------------------------------------------------
121 
122 protected:
124 
125  double offset_;
128  int type_;
132 };
133 
134 #endif
ClpSimplex
This solves LPs using the simplex method.
Definition: ClpSimplex.hpp:70
ClpObjective::setType
void setType(int value)
Sets type (above 63 is extra information)
Definition: ClpObjective.hpp:102
ClpObjective::resize
virtual void resize(int newNumberColumns)=0
Resize objective.
ClpObjective::stepLength
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...
ClpObjective::~ClpObjective
virtual ~ClpObjective()
Destructor.
ClpObjective::newXValues
virtual void newXValues()
Say we have new primal solution - so may need to recompute.
Definition: ClpObjective.hpp:66
ClpObjective::activated_
int activated_
Whether activated.
Definition: ClpObjective.hpp:130
ClpObjective
Objective Abstract Base Class.
Definition: ClpObjective.hpp:19
ClpObjective::offset_
double offset_
Value of non-linear part of objective.
Definition: ClpObjective.hpp:126
ClpModel
Definition: ClpModel.hpp:38
ClpObjective::setActivated
void setActivated(int value)
Set whether activated.
Definition: ClpObjective.hpp:110
ClpObjective::type_
int type_
Type of objective - linear is 1.
Definition: ClpObjective.hpp:128
ClpObjective::reducedGradient
virtual double reducedGradient(ClpSimplex *model, double *region, bool useFeasibleCosts)=0
Returns reduced gradient.Returns an offset (to be added to current one).
ClpObjective::nonlinearOffset
double nonlinearOffset() const
Objective offset.
Definition: ClpObjective.hpp:115
ClpObjective::clone
virtual ClpObjective * clone() const =0
Clone.
ClpObjective::activated
int activated() const
Whether activated.
Definition: ClpObjective.hpp:106
ClpObjective::ClpObjective
ClpObjective(const ClpObjective &)
Copy constructor.
ClpObjective::deleteSome
virtual void deleteSome(int numberToDelete, const int *which)=0
Delete columns in objective.
ClpObjective::ClpObjective
ClpObjective()
Default Constructor.
ClpObjective::operator=
ClpObjective & operator=(const ClpObjective &rhs)
Assignment operator.
ClpObjective::type
int type() const
Returns type (above 63 is extra information)
Definition: ClpObjective.hpp:98
ClpObjective::subsetClone
virtual ClpObjective * subsetClone(int numberColumns, const int *whichColumns) const
Subset clone.
ClpObjective::reallyScale
virtual void reallyScale(const double *columnScale)=0
Scale objective.
ClpObjective::gradient
virtual double * gradient(const ClpSimplex *model, const double *solution, double &offset, bool refresh, int includeLinear=2)=0
Returns gradient.
ClpObjective::markNonlinear
virtual int markNonlinear(char *which)
Given a zeroed array sets nonlinear columns to 1.
ClpObjective::objectiveValue
virtual double objectiveValue(const ClpSimplex *model, const double *solution) const =0
Return objective value (without any ClpModel offset) (model may be NULL)