Cbc  2.10.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AbcWarmStart.hpp
Go to the documentation of this file.
1 /* $Id: AbcWarmStart.hpp 2385 2019-01-06 19:43:06Z unxusr $ */
8 #ifndef AbcWarmStart_H
9 #define AbcWarmStart_H
10 #include "AbcCommon.hpp"
11 #include "CoinWarmStartBasis.hpp"
12 // could test using ClpSimplex (or for fans)
13 #define CLP_WARMSTART
14 #ifdef CLP_WARMSTART
15 #include "ClpSimplex.hpp"
16 #define AbcSimplex ClpSimplex
17 #else
18 #include "AbcSimplex.hpp"
19 #endif
20 class AbcWarmStart;
21 //#############################################################################
23 public:
25  void createBasis0();
27  void createBasis12();
29  void createBasis34();
31  void deleteBasis(AbcWarmStart *basis);
35 
40  AbcWarmStartOrganizer(AbcSimplex *model = NULL);
41 
44 
46  virtual ~AbcWarmStartOrganizer();
47 
52 
53 protected:
67 };
68 
74 class AbcWarmStart : public virtual CoinWarmStartBasis {
75 public:
78 
84  virtual void setSize(int ns, int na);
85 
94  virtual void resize(int newNumberRows, int newNumberColumns);
95 
112  virtual void compressRows(int tgtCnt, const int *tgts);
113 
125  virtual void deleteRows(int rawTgtCnt, const int *rawTgts);
126 
137  virtual void deleteColumns(int number, const int *which);
139  inline void setModel(AbcSimplex *model)
140  {
141  model_ = model;
142  }
144  inline AbcSimplex *model() const
145  {
146  return model_;
147  }
149  void createBasis0(const AbcSimplex *model);
151  void createBasis12(const AbcSimplex *model);
153  void createBasis34(const AbcSimplex *model);
157 
163  AbcWarmStart();
164 
174  AbcWarmStart(AbcSimplex *model, int type);
175 
177  AbcWarmStart(const AbcWarmStart &ws);
178 
180  virtual CoinWarmStart *clone() const
181  {
182  return new AbcWarmStart(*this);
183  }
184 
186  virtual ~AbcWarmStart();
187 
190  virtual AbcWarmStart &operator=(const AbcWarmStart &rhs);
191 
207  virtual void assignBasisStatus(int ns, int na, char *&sStat, char *&aStat);
209 
210 protected:
235  int stamp_;
242 };
243 #endif
244 
245 /* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
246 */
void setModel(AbcSimplex *model)
Set model.
AbcWarmStart * firstBasis_
Pointer to first basis.
virtual AbcWarmStartOrganizer & operator=(const AbcWarmStartOrganizer &rhs)
Assignment.
AbcSimplex * model() const
Get model.
virtual void compressRows(int tgtCnt, const int *tgts)
Delete a set of rows from the basis.
void createBasis12()
Create Basis type 1,2.
virtual void assignBasisStatus(int ns, int na, char *&sStat, char *&aStat)
Assign the status vectors to be the warm start information.
virtual void deleteRows(int rawTgtCnt, const int *rawTgts)
Delete a set of rows from the basis.
virtual void resize(int newNumberRows, int newNumberColumns)
Set basis capacity; existing basis is maintained.
The default COIN simplex (basis-oriented) warm start class.
int numberBases_
Number of bases.
void createBasis0()
Create Basis type 0.
AbcWarmStart * previousBasis_
Pointer to previous basis.
int typeExtraInformation_
Type of basis (always status arrays) 0 - as CoinWarmStartBasis 1,2 - plus factor order as shorts or ...
char * extraInformation_
The extra information.
AbcSimplex * model_
Pointer to AbcSimplex (can only be applied to that)
void createBasis12(const AbcSimplex *model)
Create Basis type 12.
virtual ~AbcWarmStartOrganizer()
Destructor.
int stamp_
Sequence stamp for deletion.
virtual void setSize(int ns, int na)
Set basis capacity; existing basis is discarded.
AbcWarmStart * lastBasis_
Pointer to last basis.
virtual AbcWarmStart & operator=(const AbcWarmStart &rhs)
Assignment.
int numberValidRows_
Number of valid rows (rest should have slacks) Check to see if weights are OK for these rows and then...
int sizeBases_
Size of bases (extra)
AbcWarmStart * nextBasis_
Pointer to next basis.
void createBasis0(const AbcSimplex *model)
Create Basis type 0.
virtual ~AbcWarmStart()
Destructor.
As CoinWarmStartBasis but with alternatives (Also uses Clp status meaning for slacks) ...
AbcSimplex * model_
Pointer back to AbcSimplex (can only be applied to that)
virtual CoinWarmStart * clone() const
`Virtual constructor'
virtual void deleteColumns(int number, const int *which)
Delete a set of columns from the basis.
void createBasis34()
Create Basis type 3,4.
AbcWarmStartOrganizer(AbcSimplex *model=NULL)
Default constructor.
Abstract base class for warm start information.
void createBasis34(const AbcSimplex *model)
Create Basis type 34.
void deleteBasis(AbcWarmStart *basis)
delete basis
AbcWarmStart()
Default constructor.
int lengthExtraInformation_
Length of extra information in bytes.
AbcWarmStartOrganizer * organizer_
Pointer back to AbcWarmStartOrganizer for organization.