DyLP 1.10.4
Loading...
Searching...
No Matches
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
23
25
26#define DYLP_INTERNAL
27extern "C" {
28#include "dylp.h"
29}
30
31
32
45
46{ public:
47
56
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
193
197
201
205 (int ns, int na, char *&sStat, char *&aStat, char *&cStat) ;
206
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
233 dyphase_enum phase_ ;
234
235 char *constraintStatus_ ;
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
std::vector< XferEntry > XferVec
A ‘diff’ between two OsiDylpWarmStartBasis objects.
virtual OsiDylpWarmStartBasisDiff & operator=(const OsiDylpWarmStartBasisDiff &rhs)
Assignment.
virtual CoinWarmStartDiff * clone() const
‘Virtual constructor’
virtual ~OsiDylpWarmStartBasisDiff()
Destructor.
The dylp warm start class.
OsiDylpWarmStartBasis(const CoinWarmStartBasis &cwsb)
Construct an OsiDylpWarmStartBasis from a CoinWarmStartBasis.
void setPhase(dyphase_enum phase)
Set the lp phase for this basis.
CoinWarmStart * clone() const
‘Virtual constructor’
Status getConStatus(int i) const
Return the status of the specified constraint.
void assignBasisStatus(int ns, int na, char *&sStat, char *&aStat, char *&cStat)
Assign the status vectors to be the warm start information.
int numberActiveConstraints() const
Return the number of active constraints.
const char * getConstraintStatus() const
const overload for getConstraintStatus()
char * getConstraintStatus()
Return the status array for constraints.
void setSize(int ns, int na)
Set basis capacity; existing basis is discarded.
void setConStatus(int i, Status st)
Set the status of the specified constraint.
void deleteRows(int number, const int *which)
Delete a set of rows from the basis.
virtual void mergeBasis(const CoinWarmStartBasis *src, const XferVec *xferRows, const XferVec *xferCols)
Merge entries from a source basis into this basis.
OsiDylpWarmStartBasis()
Default constructor (empty object)
void compressRows(int tgtCnt, const int *tgts)
Delete a set of rows from the basis.
void resize(int numRows, int numCols)
Set basis capacity; existing basis is maintained.
void applyDiff(const CoinWarmStartDiff *const cwsdDiff)
Apply diff to this basis.
void assignBasisStatus(int ns, int na, char *&sStat, char *&aStat)
Assign the status vectors to be the warm start information.
CoinWarmStartDiff * generateDiff(const CoinWarmStart *const oldCWS) const
Generate a ‘diff’ that can convert oldBasis to this basis.
OsiDylpWarmStartBasis & operator=(const OsiDylpWarmStartBasis &rhs)
Assignment.
dyphase_enum getPhase() const
Get the lp phase for this basis.
OsiDylpWarmStartBasis(int ns, int na, const char *sStat, const char *aStat, const char *cStat=0)
Constructs a warm start object with the specified status arrays.
OsiDylpWarmStartBasis(const OsiDylpWarmStartBasis &ws)
Copy constructor.
void print() const
Prints in readable format (for debug)
void checkBasis(CoinMessageHandler *msghandler=NULL) const
Performs basis consistency checks (for debug)
~OsiDylpWarmStartBasis()
Destructor.
dyphase_enum
Definition dylp.h:212