source: trunk/Clp/src/ClpLinearObjective.hpp @ 1370

Last change on this file since 1370 was 1370, checked in by forrest, 10 years ago

add ids

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 2.9 KB
Line 
1/* $Id: ClpLinearObjective.hpp 1370 2009-06-04 09:37:13Z forrest $ */
2// Copyright (C) 2003, International Business Machines
3// Corporation and others.  All Rights Reserved.
4#ifndef ClpLinearObjective_H
5#define ClpLinearObjective_H
6
7#include "ClpObjective.hpp"
8
9//#############################################################################
10
11/** Linear Objective Class
12
13*/
14
15class ClpLinearObjective : public ClpObjective {
16 
17public:
18 
19  ///@name Stuff
20  //@{
21 
22  /** Returns gradient.  If Linear then solution may be NULL,
23      also returns an offset (to be added to current one)
24      If refresh is false then uses last solution
25      Uses model for scaling
26      includeLinear 0 - no, 1 as is, 2 as feasible
27  */
28  virtual double * gradient(const ClpSimplex * model,
29                            const double * solution, double & offset,bool refresh,
30                            int includeLinear=2);
31  /** Returns reduced gradient.Returns an offset (to be added to current one).
32  */
33  virtual double reducedGradient(ClpSimplex * model, double * region,
34                                 bool useFeasibleCosts);
35  /** Returns step length which gives minimum of objective for
36      solution + theta * change vector up to maximum theta.
37
38      arrays are numberColumns+numberRows
39      Also sets current objective, predicted and at maximumTheta
40  */
41  virtual double stepLength(ClpSimplex * model,
42                            const double * solution,
43                            const double * change,
44                            double maximumTheta,
45                            double & currentObj,
46                            double & predictedObj,
47                            double & thetaObj);
48  /// Return objective value (without any ClpModel offset) (model may be NULL)
49  virtual double objectiveValue(const ClpSimplex * model, const double * solution) const ;
50  /// Resize objective
51  virtual void resize(int newNumberColumns) ; 
52  /// Delete columns in  objective
53  virtual void deleteSome(int numberToDelete, const int * which) ; 
54  /// Scale objective
55  virtual void reallyScale(const double * columnScale) ;
56 
57  //@}
58 
59 
60  ///@name Constructors and destructors
61  //@{
62  /// Default Constructor
63  ClpLinearObjective(); 
64 
65  /// Constructor from objective
66  ClpLinearObjective(const double * objective, int numberColumns); 
67 
68  /// Copy constructor
69  ClpLinearObjective(const ClpLinearObjective &);
70  /** Subset constructor.  Duplicates are allowed
71      and order is as given.
72  */
73  ClpLinearObjective (const ClpLinearObjective &rhs,int numberColumns, 
74                                      const int * whichColumns) ;
75 
76  /// Assignment operator
77  ClpLinearObjective & operator=(const ClpLinearObjective& rhs);
78 
79  /// Destructor
80  virtual ~ClpLinearObjective ();
81
82  /// Clone
83  virtual ClpObjective * clone() const;
84  /** Subset clone.  Duplicates are allowed
85      and order is as given.
86  */
87  virtual ClpObjective * subsetClone (int numberColumns, 
88                                      const int * whichColumns) const;
89 
90  //@}
91
92  //---------------------------------------------------------------------------
93 
94private:
95  ///@name Private member data
96  /// Objective
97  double * objective_;
98  /// number of columns
99  int numberColumns_;
100  //@}
101};
102
103#endif
Note: See TracBrowser for help on using the repository browser.