Scippy

SoPlex

Sequential object-oriented simPlex

LPColSetBase< R > Class Template Reference

Set of LP columns.Class LPColSetBase implements a set of LPColBase%s. Unless for memory limitations, any number of LPColBases may be added to an LPColSetBase. Single or multiple LPColBases may be added to an LPColSetBase, where each method add() comes with two different signatures. One with and one without a parameter, used for returning the DataKeys assigned to the new LPColBases by the set. See DataKey for a more detailed description of the concept of keys. For the concept of renumbering LPColBases within an LPColSetBase after removal of some LPColBases, see DataSet. More...

#include <lpcolsetbase.h>

Inheritance diagram for LPColSetBase< R >:

Public Member Functions

Inquiry
int num () const
 Returns the number of LPColBases currently in LPColSetBase. More...
 
int max () const
 Returns maximum number of LPColBases currently fitting into LPColSetBase. More...
 
const VectorBase< R > & maxObj () const
 
VectorBase< R > & maxObj_w ()
 Returns vector of objective values w.r.t. maximization. More...
 
const R & maxObj (int i) const
 
R & maxObj_w (int i)
 Returns objective value (w.r.t. maximization) of i 'th LPColBase in LPColSetBase. More...
 
const R & maxObj (const DataKey &k) const
 
R & maxObj_w (const DataKey &k)
 Returns objective value (w.r.t. maximization) of LPColBase with DataKey k in LPColSetBase. More...
 
const VectorBase< R > & lower () const
 
VectorBase< R > & lower_w ()
 Returns vector of lower bound values. More...
 
const R & lower (int i) const
 
R & lower_w (int i)
 Returns lower bound of i 'th LPColBase in LPColSetBase. More...
 
const R & lower (const DataKey &k) const
 
R & lower_w (const DataKey &k)
 Returns lower bound of LPColBase with DataKey k in LPColSetBase. More...
 
const VectorBase< R > & upper () const
 
VectorBase< R > & upper_w ()
 Returns vector of upper bound values. More...
 
const R & upper (int i) const
 
R & upper_w (int i)
 Returns upper bound of i 'th LPColBase in LPColSetBase. More...
 
const R & upper (const DataKey &k) const
 
R & upper_w (const DataKey &k)
 Returns upper bound of LPColBase with DataKey k in LPColSetBase. More...
 
SVectorBase< R > & colVector_w (int i)
 
const SVectorBase< R > & colVector (int i) const
 Returns colVector of i 'th LPColBase in LPColSetBase. More...
 
SVectorBase< R > & colVector_w (const DataKey &k)
 Returns writeable colVector of LPColBase with DataKey k in LPColSetBase. More...
 
const SVectorBase< R > & colVector (const DataKey &k) const
 Returns colVector of LPColBase with DataKey k in LPColSetBase. More...
 
DataKey key (int i) const
 Returns DataKey of i 'th LPColBase in LPColSetBase. More...
 
int number (const DataKey &k) const
 Returns number of LPColBase with DataKey k in LPColSetBase. More...
 
bool has (const DataKey &k) const
 Does DataKey k belong to LPColSetBase ? More...
 
Extension

All extension methods come with two signatures, one of which providing a parameter to return the assigned DataKey(s). See DataSet for a more detailed description. All extension methods are designed to automatically reallocate memory if required.

void add (const LPColBase< R > &pcol)
 
void add (DataKey &pkey, const LPColBase< R > &pcol)
 Adds p pcol to LPColSetBase. More...
 
void add (const R &pobj, const R &plower, const SVectorBase< R > &pcolVector, const R &pupper)
 
void add (DataKey &newkey, const R &obj, const R &newlower, const SVectorBase< R > &newcolVector, const R &newupper)
 Adds LPColBase consisting of objective value obj, lower bound lower, column vector colVector and upper bound upper to LPColSetBase. More...
 
template<class S >
void add (const S *obj, const S *lowerValue, const S *colValues, const int *colIndices, int colSize, const S *upperValue)
 Adds LPColBase consisting of left hand side lhs, column vector colVector, and right hand side rhs to LPColSetBase. More...
 
template<class S >
void add (DataKey &newkey, const S *objValue, const S *lowerValue, const S *colValues, const int *colIndices, int colSize, const S *upperValue)
 Adds LPColBase consisting of left hand side lhs, column vector colVector, and right hand side rhs to LPColSetBase, with DataKey key. More...
 
void add (const LPColSetBase< R > &newset)
 
void add (DataKey keys[], const LPColSetBase< R > &newset)
 Adds all LPColBases of set to LPColSetBase. More...
 
void xtend (int n, int newmax)
 Extends column n to fit newmax nonzeros. More...
 
void xtend (const DataKey &pkey, int pnewmax)
 Extends column with DataKey key to fit newmax nonzeros. More...
 
void add2 (const DataKey &k, int n, const int idx[], const R val[])
 
void add2 (int i, int n, const int idx[], const R val[])
 Adds n nonzero (idx, val)-pairs to i 'th colVector. More...
 
template<class S >
void add2 (int i, int n, const int idx[], const S val[])
 Adds n nonzero (idx, val)-pairs to i 'th colVector. More...
 
SVectorBase< R > & create (int pnonzeros=0, const R &pobj=1, const R &plw=0, const R &pupp=1)
 
SVectorBase< R > & create (DataKey &newkey, int nonzeros=0, const R &obj=1, const R &newlow=0, const R &newup=1)
 Creates new LPColBase with specified arguments and returns a reference to its column vector. More...
 
Shrinking

See DataSet for a description of the renumbering of the remaining LPColBases in a LPColSetBase after the call of a removal method.

void remove (int i)
 Removes i 'th LPColBase. More...
 
void remove (const DataKey &k)
 Removes LPColBase with DataKey k. More...
 
void remove (int perm[])
 Removes multiple elements. More...
 
void remove (const int nums[], int n)
 Removes LPColBases with numbers nums, where n is the length of the array nums. More...
 
void remove (const int nums[], int n, int *perm)
 Removes LPColBases with numbers nums, where n is the length of the array nums, and stores the index permutation in array perm. More...
 
void clear ()
 Removes all LPColBases from the set. More...
 
Memory Management

See SVSet for a description of the memory management methods.

void reMax (int newmax=0)
 Reallocates memory to be able to store newmax LPColBases. More...
 
int memSize () const
 Returns used nonzero memory. More...
 
int memMax () const
 Returns length of nonzero memory. More...
 
void memRemax (int newmax)
 Resets length of nonzero memory. More...
 
void memPack ()
 Garbage collection in nonzero memory. More...
 
Miscellaneous
bool isConsistent () const
 Checks consistency. More...
 
Constructors / Destructors
 LPColSetBase (int pmax=-1, int pmemmax=-1)
 Default constructor. More...
 
LPColSetBase< R > & operator= (const LPColSetBase< R > &rs)
 Assignment operator. More...
 
template<class S >
LPColSetBase< R > & operator= (const LPColSetBase< S > &rs)
 Assignment operator. More...
 
 LPColSetBase (const LPColSetBase< R > &rs)
 Copy constructor. More...
 
template<class S >
 LPColSetBase (const LPColSetBase< S > &rs)
 Copy constructor. More...
 
virtual ~LPColSetBase ()
 Destructor. More...
 

Protected Member Functions

Protected helpers
const SVSetBase< R > * colSet () const
 Returns the complete SVSetBase. More...
 
- Protected Member Functions inherited from SVSetBase< R >
void add (const SVectorBase< R > &svec)
 Adds svec to the set. More...
 
void add (DataKey &nkey, const SVectorBase< R > &svec)
 Adds svec to SVSetBase. More...
 
template<class S >
void add (DataKey &nkey, const S *rowValues, const int *rowIndices, int rowSize)
 Adds svec to SVSetBase. More...
 
void add (const SVectorBase< R > svec[], int n)
 Adds all n SVectorBases in the array svec to the set. More...
 
void add (DataKey nkey[], const SVectorBase< R > svec[], int n)
 Adds n SVectorBases to SVSetBase. More...
 
template<class S >
void add (const SVSetBase< S > &pset)
 Adds all SVectorBases in pset to SVSetBase. More...
 
template<class S >
void add (DataKey nkey[], const SVSetBase< S > &pset)
 Adds all SVectorBases of pset to SVSetBase. More...
 
SVectorBase< R > * create (int idxmax=0)
 Creates new SVectorBase in set. More...
 
SVectorBase< R > * create (DataKey &nkey, int idxmax=-1)
 Creates new SVectorBase in set. More...
 
void xtend (SVectorBase< R > &svec, int newmax)
 Extends svec to fit newmax nonzeros. More...
 
void add2 (SVectorBase< R > &svec, int idx, R val)
 Adds nonzero (idx, val) to svec of this SVSetBase. More...
 
void add2 (SVectorBase< R > &svec, int n, const int idx[], const R val[])
 Adds n nonzeros to svec of this SVSetBase. More...
 
template<class S >
void add2 (SVectorBase< R > &svec, int n, const int idx[], const S val[])
 Adds n nonzeros to svec of this SVSetBase. More...
 
void remove (const DataKey &removekey)
 Removes the vector with key removekey from the set. More...
 
void remove (int removenum)
 Removes the vector with number removenum from the set. More...
 
void remove (const SVectorBase< R > *svec)
 Removes one SVectorBase from set. More...
 
void remove (int perm[])
 Removes multiple elements. More...
 
void remove (const DataKey keys[], int n)
 Removes n SVectorBases from set. More...
 
void remove (const int nums[], int n)
 Removes n SVectorBases from set. More...
 
void remove (const DataKey keys[], int n, int *perm)
 
void remove (const int nums[], int n, int *perm)
 
void clear (int minNewSize=-1)
 Removes all SVectorBases from set. More...
 
SVectorBase< R > & operator[] (int n)
 Gets SVectorBase by number, writeable. More...
 
const SVectorBase< R > & operator[] (int n) const
 Gets SVectorBase by number. More...
 
SVectorBase< R > & operator[] (const DataKey &k)
 Gets SVectorBase by DataKey, writeable. More...
 
const SVectorBase< R > & operator[] (const DataKey &k) const
 Gets SVectorBase by DataKey. More...
 
int num () const
 Current number of SVectorBases. More...
 
int max () const
 Current maximum number of SVectorBases. More...
 
DataKey key (int n) const
 Gets DataKey of vector number. More...
 
DataKey key (const SVectorBase< R > *svec) const
 Gets DataKey of SVectorBase. More...
 
int number (const DataKey &k) const
 Gets vector number of DataKey. More...
 
int number (const SVectorBase< R > *svec) const
 Gets vector number of SVectorBase. More...
 
bool has (const DataKey &k) const
 True iff SVSetBase contains a SVectorBase for DataKey k. More...
 
bool has (int n) const
 True iff SVSetBase contains a SVectorBase for vector number n. More...
 
bool has (const SVectorBase< R > *svec) const
 Is an SVectorBase in the set? More...
 
int memSize () const
 Used nonzero memory. More...
 
int memMax () const
 Length of nonzero memory. More...
 
void memRemax (int newmax)
 Reset length of nonzero memory. More...
 
void memPack ()
 Garbage collection in nonzero memory. More...
 
void reMax (int newmax=0)
 Resets maximum number of SVectorBases. More...
 
bool isConsistent () const
 Consistency check. More...
 
 SVSetBase (int pmax=-1, int pmemmax=-1, double pfac=1.1, double pmemFac=1.2)
 Default constructor. More...
 
virtual ~SVSetBase ()
 Destructor. More...
 
SVSetBase< R > & operator= (const SVSetBase< R > &rhs)
 Assignment operator. More...
 
template<class S >
SVSetBase< R > & operator= (const SVSetBase< S > &rhs)
 Assignment operator. More...
 
 SVSetBase (const SVSetBase< R > &old)
 Copy constructor. More...
 
template<class S >
 SVSetBase (const SVSetBase< S > &old)
 Copy constructor. More...
 
- Protected Member Functions inherited from ClassArray< Nonzero< R > >
Nonzero< R > & operator[] (int n)
 Reference to n 'th element. More...
 
const Nonzero< R > & operator[] (int n) const
 Reference to n 'th const element. More...
 
Nonzero< R > & last ()
 Reference to last element. More...
 
const Nonzero< R > & last () const
 Reference to last const element. More...
 
Nonzero< R > * get_ptr ()
 Gets a C pointer to the data. More...
 
const Nonzero< R > * get_const_ptr () const
 Gets a const C pointer to the data. More...
 
void append (const Nonzero< R > &t)
 Appends element t. More...
 
void append (int n, const Nonzero< R > t[])
 Appends n elements from t. More...
 
void append (const ClassArray< Nonzero< R > > &t)
 Appends all elements from t. More...
 
void insert (int i, int n)
 Inserts n uninitialized elements before i 'th element. More...
 
void insert (int i, int n, const Nonzero< R > t[])
 Inserts n elements from t before i 'the element. More...
 
void insert (int i, const ClassArray< Nonzero< R > > &t)
 Inserts all elements from t before i 'th element. More...
 
void remove (int n=0, int m=1)
 Removes m elements starting at n. More...
 
void removeLast (int m=1)
 Removes m last elements. More...
 
void clear ()
 Removes all elements. More...
 
int size () const
 Returns number of elements. More...
 
void reSize (int newsize)
 Resets size to newsize. More...
 
int max () const
 Returns maximum number of elements. More...
 
ptrdiff_t reMax (int newMax=1, int newSize=-1)
 Resets maximum number of elements. More...
 
ClassArrayoperator= (const ClassArray &rhs)
 Assignment operator. More...
 
bool isConsistent () const
 Consistency check. More...
 
 ClassArray (const ClassArray &old)
 Copy constructor. More...
 
 ClassArray (int p_size=0, int p_max=0, double p_fac=1.2)
 Default constructor. More...
 
virtual ~ClassArray ()
 Destructor. More...
 

Private Attributes

Data
DVectorBase< R > low
 vector of lower bounds. More...
 
DVectorBase< R > up
 vector of upper bounds. More...
 
DVectorBase< R > object
 vector of objective coefficients. More...
 

Friends

template<class S >
class LPColSetBase
 

Additional Inherited Members

- Protected Attributes inherited from ClassArray< Nonzero< R > >
int thesize
 number of used elements in array data More...
 
int themax
 the length of array data and More...
 
Nonzero< R > * data
 the array of elements More...
 
double memFactor
 memory extension factor. More...
 

Detailed Description

template<class R>
class soplex::LPColSetBase< R >

Set of LP columns.

Class LPColSetBase implements a set of LPColBase%s. Unless for memory limitations, any number of LPColBases may be added to an LPColSetBase. Single or multiple LPColBases may be added to an LPColSetBase, where each method add() comes with two different signatures. One with and one without a parameter, used for returning the DataKeys assigned to the new LPColBases by the set. See DataKey for a more detailed description of the concept of keys. For the concept of renumbering LPColBases within an LPColSetBase after removal of some LPColBases, see DataSet.

See also
DataSet, DataKey

Definition at line 43 of file lpcolsetbase.h.

Constructor & Destructor Documentation

LPColSetBase ( int  pmax = -1,
int  pmemmax = -1 
)
explicit

Default constructor.

The user can specify the initial maximum number of columns max and the initial maximum number of nonzero entries memmax. If these parameters are omitted, a default size is used. However, one can add an arbitrary number of columns to the LPColSetBase, which may result in automated memory realllocation.

Definition at line 569 of file lpcolsetbase.h.

LPColSetBase ( const LPColSetBase< R > &  rs)

Copy constructor.

Definition at line 609 of file lpcolsetbase.h.

LPColSetBase ( const LPColSetBase< S > &  rs)

Copy constructor.

Definition at line 620 of file lpcolsetbase.h.

virtual ~LPColSetBase ( )
virtual

Destructor.

Definition at line 630 of file lpcolsetbase.h.

Member Function Documentation

void add ( DataKey pkey,
const LPColBase< R > &  pcol 
)

Adds p pcol to LPColSetBase.

Definition at line 260 of file lpcolsetbase.h.

void add ( const R &  pobj,
const R &  plower,
const SVectorBase< R > &  pcolVector,
const R &  pupper 
)

Definition at line 266 of file lpcolsetbase.h.

void add ( DataKey newkey,
const R &  obj,
const R &  newlower,
const SVectorBase< R > &  newcolVector,
const R &  newupper 
)

Adds LPColBase consisting of objective value obj, lower bound lower, column vector colVector and upper bound upper to LPColSetBase.

Definition at line 273 of file lpcolsetbase.h.

void add ( const S *  obj,
const S *  lowerValue,
const S *  colValues,
const int *  colIndices,
int  colSize,
const S *  upperValue 
)

Adds LPColBase consisting of left hand side lhs, column vector colVector, and right hand side rhs to LPColSetBase.

Definition at line 291 of file lpcolsetbase.h.

void add ( DataKey newkey,
const S *  objValue,
const S *  lowerValue,
const S *  colValues,
const int *  colIndices,
int  colSize,
const S *  upperValue 
)

Adds LPColBase consisting of left hand side lhs, column vector colVector, and right hand side rhs to LPColSetBase, with DataKey key.

Definition at line 300 of file lpcolsetbase.h.

void add ( const LPColSetBase< R > &  newset)

Definition at line 317 of file lpcolsetbase.h.

void add ( DataKey  keys[],
const LPColSetBase< R > &  newset 
)

Adds all LPColBases of set to LPColSetBase.

Definition at line 339 of file lpcolsetbase.h.

void add2 ( const DataKey k,
int  n,
const int  idx[],
const R  val[] 
)
void add2 ( int  i,
int  n,
const int  idx[],
const R  val[] 
)

Adds n nonzero (idx, val)-pairs to i 'th colVector.

Definition at line 368 of file lpcolsetbase.h.

void add2 ( int  i,
int  n,
const int  idx[],
const S  val[] 
)

Adds n nonzero (idx, val)-pairs to i 'th colVector.

Definition at line 375 of file lpcolsetbase.h.

void clear ( )

Removes all LPColBases from the set.

Definition at line 485 of file lpcolsetbase.h.

Referenced by SoPlex::_transformEquality(), and SPxLPBase< Real >::clear().

const SVSetBase<R>* colSet ( ) const
protected

Returns the complete SVSetBase.

Definition at line 66 of file lpcolsetbase.h.

Referenced by SPxEquiliSC::scale(), and SPxGeometSC::scale().

const SVectorBase<R>& colVector ( int  i) const
const SVectorBase<R>& colVector ( const DataKey k) const

Returns colVector of LPColBase with DataKey k in LPColSetBase.

Definition at line 218 of file lpcolsetbase.h.

SVectorBase<R>& colVector_w ( int  i)
SVectorBase<R>& colVector_w ( const DataKey k)

Returns writeable colVector of LPColBase with DataKey k in LPColSetBase.

Definition at line 212 of file lpcolsetbase.h.

SVectorBase<R>& create ( int  pnonzeros = 0,
const R &  pobj = 1,
const R &  plw = 0,
const R &  pupp = 1 
)

Definition at line 381 of file lpcolsetbase.h.

Referenced by LPColSetBase< Real >::create().

SVectorBase<R>& create ( DataKey newkey,
int  nonzeros = 0,
const R &  obj = 1,
const R &  newlow = 0,
const R &  newup = 1 
)

Creates new LPColBase with specified arguments and returns a reference to its column vector.

Definition at line 388 of file lpcolsetbase.h.

bool has ( const DataKey k) const

Does DataKey k belong to LPColSetBase ?

Definition at line 236 of file lpcolsetbase.h.

bool isConsistent ( ) const
DataKey key ( int  i) const
const R& lower ( int  i) const

Definition at line 140 of file lpcolsetbase.h.

const R& lower ( const DataKey k) const

Definition at line 152 of file lpcolsetbase.h.

VectorBase<R>& lower_w ( )
R& lower_w ( int  i)

Returns lower bound of i 'th LPColBase in LPColSetBase.

Definition at line 146 of file lpcolsetbase.h.

R& lower_w ( const DataKey k)

Returns lower bound of LPColBase with DataKey k in LPColSetBase.

Definition at line 158 of file lpcolsetbase.h.

int max ( ) const

Returns maximum number of LPColBases currently fitting into LPColSetBase.

Definition at line 86 of file lpcolsetbase.h.

Referenced by LPColSetBase< Real >::reMax().

const VectorBase<R>& maxObj ( ) const
const R& maxObj ( int  i) const

Definition at line 104 of file lpcolsetbase.h.

const R& maxObj ( const DataKey k) const

Definition at line 116 of file lpcolsetbase.h.

R& maxObj_w ( int  i)

Returns objective value (w.r.t. maximization) of i 'th LPColBase in LPColSetBase.

Definition at line 110 of file lpcolsetbase.h.

R& maxObj_w ( const DataKey k)

Returns objective value (w.r.t. maximization) of LPColBase with DataKey k in LPColSetBase.

Definition at line 122 of file lpcolsetbase.h.

int memMax ( ) const

Returns length of nonzero memory.

Definition at line 517 of file lpcolsetbase.h.

Referenced by SPxLPBase< Real >::added2Set().

void memPack ( )

Garbage collection in nonzero memory.

Definition at line 529 of file lpcolsetbase.h.

void memRemax ( int  newmax)

Resets length of nonzero memory.

Definition at line 523 of file lpcolsetbase.h.

Referenced by SPxLPBase< Real >::addCols(), and SPxLPBase< R >::readMPS().

int memSize ( ) const

Returns used nonzero memory.

Definition at line 511 of file lpcolsetbase.h.

LPColSetBase<R>& operator= ( const LPColSetBase< R > &  rs)

Assignment operator.

Definition at line 576 of file lpcolsetbase.h.

Referenced by SPxLPBase< Real >::operator=().

LPColSetBase<R>& operator= ( const LPColSetBase< S > &  rs)

Assignment operator.

Definition at line 593 of file lpcolsetbase.h.

void reMax ( int  newmax = 0)

Reallocates memory to be able to store newmax LPColBases.

Definition at line 502 of file lpcolsetbase.h.

Referenced by SPxLPBase< R >::readMPS().

void remove ( int  i)

Removes i 'th LPColBase.

Definition at line 416 of file lpcolsetbase.h.

Referenced by SPxLPBase< Real >::doRemoveCol(), and SPxLPBase< Real >::doRemoveCols().

void remove ( const DataKey k)

Removes LPColBase with DataKey k.

Definition at line 428 of file lpcolsetbase.h.

void remove ( int  perm[])

Removes multiple elements.

Definition at line 434 of file lpcolsetbase.h.

void remove ( const int  nums[],
int  n 
)

Removes LPColBases with numbers nums, where n is the length of the array nums.

Definition at line 456 of file lpcolsetbase.h.

void remove ( const int  nums[],
int  n,
int *  perm 
)

Removes LPColBases with numbers nums, where n is the length of the array nums, and stores the index permutation in array perm.

Definition at line 463 of file lpcolsetbase.h.

const R& upper ( int  i) const

Definition at line 176 of file lpcolsetbase.h.

const R& upper ( const DataKey k) const

Definition at line 188 of file lpcolsetbase.h.

VectorBase<R>& upper_w ( )
R& upper_w ( int  i)

Returns upper bound of i 'th LPColBase in LPColSetBase.

Definition at line 182 of file lpcolsetbase.h.

R& upper_w ( const DataKey k)

Returns upper bound of LPColBase with DataKey k in LPColSetBase.

Definition at line 194 of file lpcolsetbase.h.

void xtend ( int  n,
int  newmax 
)

Extends column n to fit newmax nonzeros.

Definition at line 350 of file lpcolsetbase.h.

Referenced by SPxLPBase< Real >::addRows(), and SPxLPBase< Real >::doAddRows().

void xtend ( const DataKey pkey,
int  pnewmax 
)

Extends column with DataKey key to fit newmax nonzeros.

Definition at line 356 of file lpcolsetbase.h.

Friends And Related Function Documentation

friend class LPColSetBase
friend

Definition at line 45 of file lpcolsetbase.h.

Member Data Documentation

DVectorBase<R> low
private

vector of lower bounds.

Definition at line 53 of file lpcolsetbase.h.

Referenced by LPColSetBase< Real >::lower(), LPColSetBase< Real >::lower_w(), and LPColSetBase< Real >::operator=().

DVectorBase<R> object
private

vector of objective coefficients.

Definition at line 55 of file lpcolsetbase.h.

Referenced by LPColSetBase< Real >::maxObj(), LPColSetBase< Real >::maxObj_w(), and LPColSetBase< Real >::operator=().

DVectorBase<R> up
private

vector of upper bounds.

Definition at line 54 of file lpcolsetbase.h.

Referenced by LPColSetBase< Real >::operator=(), LPColSetBase< Real >::upper(), and LPColSetBase< Real >::upper_w().