Clp trunk
ClpObjective.hpp
Go to the documentation of this file.
00001 /* $Id$ */
00002 // Copyright (C) 2002, International Business Machines
00003 // Corporation and others.  All Rights Reserved.
00004 // This code is licensed under the terms of the Eclipse Public License (EPL).
00005 
00006 #ifndef ClpObjective_H
00007 #define ClpObjective_H
00008 
00009 
00010 //#############################################################################
00011 class ClpSimplex;
00012 class ClpModel;
00013 
00019 class ClpObjective  {
00020 
00021 public:
00022 
00024 
00025 
00032      virtual double * gradient(const ClpSimplex * model,
00033                                const double * solution,
00034                                double & offset, bool refresh,
00035                                int includeLinear = 2) = 0;
00038      virtual double reducedGradient(ClpSimplex * model, double * region,
00039                                     bool useFeasibleCosts) = 0;
00046      virtual double stepLength(ClpSimplex * model,
00047                                const double * solution,
00048                                const double * change,
00049                                double maximumTheta,
00050                                double & currentObj,
00051                                double & predictedObj,
00052                                double & thetaObj) = 0;
00054      virtual double objectiveValue(const ClpSimplex * model, const double * solution) const = 0;
00056      virtual void resize(int newNumberColumns) = 0;
00058      virtual void deleteSome(int numberToDelete, const int * which) = 0;
00060      virtual void reallyScale(const double * columnScale) = 0;
00064      virtual int markNonlinear(char * which);
00066      virtual void newXValues() {}
00068 
00069 
00071 
00072 
00073      ClpObjective();
00074 
00076      ClpObjective(const ClpObjective &);
00077 
00079      ClpObjective & operator=(const ClpObjective& rhs);
00080 
00082      virtual ~ClpObjective ();
00083 
00085      virtual ClpObjective * clone() const = 0;
00090      virtual ClpObjective * subsetClone (int numberColumns,
00091                                          const int * whichColumns) const;
00092 
00094 
00096 
00097 
00098      inline int type() {
00099           return type_;
00100      }
00102      inline int activated() const {
00103           return activated_;
00104      }
00106      inline void setActivated(int value) {
00107           activated_ = value;
00108      }
00109 
00111      inline double nonlinearOffset () const {
00112           return offset_;
00113      }
00115 
00116      //---------------------------------------------------------------------------
00117 
00118 protected:
00120 
00121 
00122      double offset_;
00124      int type_;
00126      int activated_;
00128 };
00129 
00130 #endif
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Defines