DyLP  1.10.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
OsiDylpWarmStartBasis.hpp
Go to the documentation of this file.
1 #ifndef OsiDylpWarmStartBasis_H
2 #define OsiDylpWarmStartBasis_H
3 
17 /*
18  sccs: @(#)OsiDylpWarmStartBasis.hpp 1.5 09/16/04
19  cvs: $Id: OsiDylpWarmStartBasis.hpp 1408 2009-10-04 10:27:59Z stefan $
20 */
21 
22 #include "CoinWarmStartBasis.hpp"
23 
24 class CoinMessageHandler;
25 
26 #define DYLP_INTERNAL
27 extern "C" {
28 #include "dylp.h"
29 }
30 
31 
32 
45 
46 { public:
47 
56 
59  int numberActiveConstraints() const ;
60 
61 
64  inline Status getConStatus (int i) const
65 
66  { const int st = (constraintStatus_[i>>2] >> ((i&3)<<1)) & 3 ;
67  return (static_cast<CoinWarmStartBasis::Status>(st)) ; }
68 
69 
72  inline void setConStatus (int i, Status st)
73 
74  { char &st_byte = constraintStatus_[i>>2] ;
75  st_byte = static_cast<char>(st_byte & ~(3 << ((i&3)<<1))) ;
76  st_byte = static_cast<char>(st_byte | (st << ((i&3)<<1))) ; }
77 
78 
81  inline char *getConstraintStatus () { return (constraintStatus_) ; }
82 
89  inline const char *getConstraintStatus () const
90 
91  { return (constraintStatus_) ; }
92 
93 
96  inline void setPhase (dyphase_enum phase) { phase_ = phase ; }
97 
100  inline dyphase_enum getPhase () const { return (phase_) ; }
101 
103 
106 
109  CoinWarmStartDiff *generateDiff (const CoinWarmStart *const oldCWS) const ;
110 
113  void applyDiff (const CoinWarmStartDiff *const cwsdDiff) ;
114 
116 
119 
122  void setSize (int ns, int na) ;
123 
126  void resize (int numRows, int numCols) ;
127 
140  void compressRows (int tgtCnt, const int *tgts) ;
141 
149  void deleteRows (int number, const int *which) ;
150 
164  virtual void mergeBasis(const CoinWarmStartBasis *src,
165  const XferVec *xferRows,
166  const XferVec *xferCols) ;
167 
169 
172 
176 
179  OsiDylpWarmStartBasis (int ns, int na, const char *sStat,
180  const char *aStat, const char *cStat = 0) ;
181 
185 
189 
192  CoinWarmStart *clone () const ;
193 
197 
201 
204  void assignBasisStatus
205  (int ns, int na, char *&sStat, char *&aStat, char *&cStat) ;
206 
209  void assignBasisStatus
210  (int ns, int na, char *&sStat, char *&aStat) ;
211 
212 
214 
217 
220  void print () const ;
221 
224  void checkBasis (CoinMessageHandler* msghandler = NULL) const ;
225 
227 
228  private:
229 
232 
234 
236 
238 
239 } ;
240 
241 
242 
267 { public:
268 
270  virtual CoinWarmStartDiff *clone() const
272  return (dynamic_cast<CoinWarmStartDiff *>(odwsbd)) ; }
273 
275  virtual
277 
280  { delete[] condiffNdxs_ ;
281  delete[] condiffVals_ ; }
282 
283  private:
284 
286  (const CoinWarmStart *const oldCWS) const ;
288  (const CoinWarmStartDiff *const diff) ;
289 
291  OsiDylpWarmStartBasisDiff (int sze, const unsigned int *const diffNdxs,
292  const unsigned int *const diffVals,
293  const CoinWarmStartBasisDiff *const cwsbd) ;
294 
298  consze_(0),
299  condiffNdxs_(0),
300  condiffVals_(0)
301  { /* intentionally left blank */ }
302 
310 
311  /* Data members */
312 
314  int consze_ ;
315 
318  unsigned int *condiffNdxs_ ;
319 
322  unsigned int *condiffVals_ ;
323 
324 } ;
325 
326 
327 
328 #endif // OsiDylpWarmStartBasis_H
int consze_
Number of entries (and allocated capacity), in units of int.
char * constraintStatus_
vector of constraint status information
dyphase_enum phase_
dylp phase
OsiDylpWarmStartBasis()
Default constructor (empty object)
void compressRows(int tgtCnt, const int *tgts)
Delete a set of rows from the basis.
unsigned int * condiffNdxs_
Array of diff indices for constraint status.
unsigned int * condiffVals_
Array of diff values for constraint status.
~OsiDylpWarmStartBasis()
Destructor.
dyphase_enum getPhase() const
Get the lp phase for this basis.
OsiDylpWarmStartBasis & operator=(const OsiDylpWarmStartBasis &rhs)
Assignment.
A `diff&#39; between two OsiDylpWarmStartBasis objects.
virtual OsiDylpWarmStartBasisDiff & operator=(const OsiDylpWarmStartBasisDiff &rhs)
Assignment.
void checkBasis(CoinMessageHandler *msghandler=NULL) const
Performs basis consistency checks (for debug)
int numberActiveConstraints() const
Return the number of active constraints.
void setConStatus(int i, Status st)
Set the status of the specified constraint.
The default COIN simplex (basis-oriented) warm start class.
Base class for message handling.
CoinWarmStartDiff * generateDiff(const CoinWarmStart *const oldCWS) const
Generate a `diff&#39; that can convert oldBasis to this basis.
A `diff&#39; between two CoinWarmStartBasis objects.
void resize(int numRows, int numCols)
Set basis capacity; existing basis is maintained.
void deleteRows(int number, const int *which)
Delete a set of rows from the basis.
Status getConStatus(int i) const
Return the status of the specified constraint.
void setPhase(dyphase_enum phase)
Set the lp phase for this basis.
virtual ~OsiDylpWarmStartBasisDiff()
Destructor.
virtual CoinWarmStartDiff * clone() const
`Virtual constructor&#39;
void print() const
Prints in readable format (for debug)
const char * getConstraintStatus() const
const overload for getConstraintStatus()
dyphase_enum
Definition: dylp.h:212
The dylp warm start class.
OsiDylpWarmStartBasisDiff()
Default constructor.
Abstract base class for warm start `diff&#39; objects.
std::vector< XferEntry > XferVec
Transfer vector for mergeBasis(const CoinWarmStartBasis*,const XferVec*,const XferVec*) ...
Status
Enum for status of variables.
void assignBasisStatus(int ns, int na, char *&sStat, char *&aStat, char *&cStat)
Assign the status vectors to be the warm start information.
void setSize(int ns, int na)
Set basis capacity; existing basis is discarded.
char * getConstraintStatus()
Return the status array for constraints.
Abstract base class for warm start information.
virtual void mergeBasis(const CoinWarmStartBasis *src, const XferVec *xferRows, const XferVec *xferCols)
Merge entries from a source basis into this basis.
CoinWarmStart * clone() const
`Virtual constructor&#39;
void applyDiff(const CoinWarmStartDiff *const cwsdDiff)
Apply diff to this basis.