Go to the documentation of this file.00001
00002
00003
00004 #ifndef ClpObjective_H
00005 #define ClpObjective_H
00006
00007
00008
00009 class ClpSimplex;
00010 class ClpModel;
00011
00017 class ClpObjective {
00018
00019 public:
00020
00022
00023
00030 virtual double * gradient(const ClpSimplex * model,
00031 const double * solution,
00032 double & offset,bool refresh,
00033 int includeLinear=2)=0;
00036 virtual double reducedGradient(ClpSimplex * model, double * region,
00037 bool useFeasibleCosts)=0;
00044 virtual double stepLength(ClpSimplex * model,
00045 const double * solution,
00046 const double * change,
00047 double maximumTheta,
00048 double & currentObj,
00049 double & predictedObj,
00050 double & thetaObj)=0;
00052 virtual double objectiveValue(const ClpSimplex * model, const double * solution) const = 0;
00054 virtual void resize(int newNumberColumns) = 0;
00056 virtual void deleteSome(int numberToDelete, const int * which) = 0;
00058 virtual void reallyScale(const double * columnScale) =0;
00062 virtual int markNonlinear(char * which);
00064 virtual void newXValues() {}
00066
00067
00069
00070
00071 ClpObjective();
00072
00074 ClpObjective(const ClpObjective &);
00075
00077 ClpObjective & operator=(const ClpObjective& rhs);
00078
00080 virtual ~ClpObjective ();
00081
00083 virtual ClpObjective * clone() const = 0;
00088 virtual ClpObjective * subsetClone (int numberColumns,
00089 const int * whichColumns) const;
00090
00092
00094
00095
00096 inline int type()
00097 { return type_;}
00099 inline int activated() const
00100 {return activated_;}
00102 inline void setActivated(int value)
00103 {activated_=value;}
00104
00106 inline double nonlinearOffset () const
00107 { return offset_;}
00109
00110
00111
00112 protected:
00114
00115
00116 double offset_;
00118 int type_;
00120 int activated_;
00122 };
00123
00124 #endif