00001
00002
00003
00004 #ifndef ClpLinearObjective_H
00005 #define ClpLinearObjective_H
00006
00007 #include "ClpObjective.hpp"
00008
00009
00010
00015 class ClpLinearObjective : public ClpObjective {
00016
00017 public:
00018
00020
00021
00026 virtual double * gradient(const ClpSimplex * model,
00027 const double * solution, double & offset, bool refresh,
00028 int includeLinear = 2);
00031 virtual double reducedGradient(ClpSimplex * model, double * region,
00032 bool useFeasibleCosts);
00039 virtual double stepLength(ClpSimplex * model,
00040 const double * solution,
00041 const double * change,
00042 double maximumTheta,
00043 double & currentObj,
00044 double & predictedObj,
00045 double & thetaObj);
00047 virtual double objectiveValue(const ClpSimplex * model, const double * solution) const ;
00049 virtual void resize(int newNumberColumns) ;
00051 virtual void deleteSome(int numberToDelete, const int * which) ;
00053 virtual void reallyScale(const double * columnScale) ;
00054
00056
00057
00059
00060
00061 ClpLinearObjective();
00062
00064 ClpLinearObjective(const double * objective, int numberColumns);
00065
00067 ClpLinearObjective(const ClpLinearObjective &);
00071 ClpLinearObjective (const ClpLinearObjective &rhs, int numberColumns,
00072 const int * whichColumns) ;
00073
00075 ClpLinearObjective & operator=(const ClpLinearObjective& rhs);
00076
00078 virtual ~ClpLinearObjective ();
00079
00081 virtual ClpObjective * clone() const;
00085 virtual ClpObjective * subsetClone (int numberColumns,
00086 const int * whichColumns) const;
00087
00089
00090
00091
00092 private:
00095 double * objective_;
00097 int numberColumns_;
00099 };
00100
00101 #endif