00001
00002
00003
00004 #ifndef ClpAmplObjective_H
00005 #define ClpAmplObjective_H
00006
00007 #include "ClpObjective.hpp"
00008 #include "CoinPackedMatrix.hpp"
00009
00010
00011
00016 class ClpAmplObjective : public ClpObjective {
00017
00018 public:
00019
00021
00022
00029 virtual double * gradient(const ClpSimplex * model,
00030 const double * solution, double & offset,bool refresh,
00031 int includeLinear=2);
00033
00035 virtual double reducedGradient(ClpSimplex * model, double * region,
00036 bool useFeasibleCosts);
00043 virtual double stepLength(ClpSimplex * model,
00044 const double * solution,
00045 const double * change,
00046 double maximumTheta,
00047 double & currentObj,
00048 double & predictedObj,
00049 double & thetaObj);
00051 virtual double objectiveValue(const ClpSimplex * model, const double * solution) const ;
00052 virtual void resize(int newNumberColumns) ;
00054 virtual void deleteSome(int numberToDelete, const int * which) ;
00056 virtual void reallyScale(const double * columnScale) ;
00060 virtual int markNonlinear(char * which);
00061
00063 virtual void newXValues() ;
00065
00066
00068
00069
00070 ClpAmplObjective();
00071
00073 ClpAmplObjective(void * amplInfo);
00074
00077 ClpAmplObjective(const ClpAmplObjective & rhs);
00078
00080 ClpAmplObjective & operator=(const ClpAmplObjective& rhs);
00081
00083 virtual ~ClpAmplObjective ();
00084
00086 virtual ClpObjective * clone() const;
00087
00089
00090
00091
00092 double * linearObjective() const;
00094
00095
00096
00097 private:
00100 double offset_;
00102 void * amplObjective_;
00104 double * objective_;
00106 double * gradient_;
00108 };
00109
00110 #endif