Scippy

SoPlex

Sequential object-oriented simPlex

SPxWeightST Class Reference

Weighted start basis.Class SPxWeightST is an implementation of a SPxStarter for generating a Simplex starting basis. Using method setupWeights() it sets up arrays weight and coWeight, or equivalently rowWeight and colWeight. (rowWeight and colWeight are just pointers initialized to weight and coWeight according to the representation of SoPlex base passed to method generate().) More...

#include <spxweightst.h>

Public Member Functions

Construction / destruction
 SPxWeightST ()
 default constructor. More...
 
 SPxWeightST (const SPxWeightST &old)
 copy constructor More...
 
SPxWeightSToperator= (const SPxWeightST &rhs)
 assignment operator More...
 
virtual ~SPxWeightST ()
 destructor. More...
 
virtual SPxStarterclone () const
 clone function for polymorphism More...
 
Generation of a start basis
void generate (SPxSolver &base)
 generates start basis for loaded basis. More...
 
Debugging
virtual bool isConsistent () const
 consistency check. More...
 
- Public Member Functions inherited from SPxStarter
virtual const char * getName () const
 get name of starter. More...
 
 SPxStarter (const char *name)
 constructor More...
 
 SPxStarter (const SPxStarter &old)
 copy constructor More...
 
SPxStarteroperator= (const SPxStarter &rhs)
 assignment operator More...
 
virtual ~SPxStarter ()
 destructor. More...
 

Protected Member Functions

Protected helpers
virtual void setupWeights (SPxSolver &base)
 sets up variable weights. More...
 

Protected Attributes

Protected data
DataArray< RealrowWeight
 weight value for LP rows. More...
 
DataArray< RealcolWeight
 weight value for LP columns. More...
 
DataArray< bool > rowRight
 set variable to rhs?. More...
 
DataArray< bool > colUp
 set primal variable to upper bound. More...
 
- Protected Attributes inherited from SPxStarter
const char * m_name
 name of the starter More...
 

Private Member Functions

Private helpers
void setPrimalStatus (SPxBasis::Desc &, const SPxSolver &, const SPxId &)
 

Private Attributes

Private data
DataArray< int > forbidden
 
DataArray< Real > * weight
 
DataArray< Real > * coWeight
 

Detailed Description

Weighted start basis.

Class SPxWeightST is an implementation of a SPxStarter for generating a Simplex starting basis. Using method setupWeights() it sets up arrays weight and coWeight, or equivalently rowWeight and colWeight. (rowWeight and colWeight are just pointers initialized to weight and coWeight according to the representation of SoPlex base passed to method generate().)

The weight values are then used to setup a starting basis for the LP: vectors with low values are likely to become dual (i.e. basic for a column basis) and such with high values are likely to become primal (i.e. nonbasic for a column basis).

However, if a variable having an upper and lower bound is to become primal, there is still a choice for setting it either to its upper or lower bound. Members rowRight and colUp are used to determine where to set a primal variable. If rowRight[i] is set to a nonzero value, the right-hand side inequality is set tightly for the i 'th to become primal. Analogously, If colUp[j] is nonzero, the j 'th variable will be set to its upper bound if it becomes primal.

Definition at line 56 of file spxweightst.h.

Constructor & Destructor Documentation

◆ SPxWeightST() [1/2]

default constructor.

Definition at line 110 of file spxweightst.h.

References SPxWeightST::isConsistent().

Referenced by SPxWeightST::clone().

◆ SPxWeightST() [2/2]

SPxWeightST ( const SPxWeightST old)

copy constructor

Definition at line 118 of file spxweightst.h.

References SPxWeightST::colWeight, SPxWeightST::isConsistent(), SPxWeightST::rowWeight, and SPxWeightST::weight.

◆ ~SPxWeightST()

virtual ~SPxWeightST ( )
virtual

destructor.

Definition at line 175 of file spxweightst.h.

Member Function Documentation

◆ clone()

virtual SPxStarter* clone ( ) const
virtual

clone function for polymorphism

Implements SPxStarter.

Reimplemented in SPxVectorST, and SPxSumST.

Definition at line 181 of file spxweightst.h.

References SPxWeightST::generate(), SPxWeightST::isConsistent(), and SPxWeightST::SPxWeightST().

◆ generate()

◆ isConsistent()

◆ operator=()

◆ setPrimalStatus()

◆ setupWeights()

void setupWeights ( SPxSolver base)
protectedvirtual

sets up variable weights.

This method is called in order to setup the weights for all variables. It has been declared virtual in order to allow for derived classes to compute other weight values.

Todo:
The comments are wrong. The first is for dual simplex and the secound for primal one. Is anything else wrong? Also the values are nearly the same for both cases. Should this be ? Changed the values for r_fixed to 0 because of maros-r7. It is not clear why this makes a difference because all constraints in that instance are of equality type. Why is rowRight sometimes not set?

Reimplemented in SPxVectorST, and SPxSumST.

Definition at line 431 of file spxweightst.cpp.

References SPxWeightST::colUp, SPxLPBase< R >::colVector(), SPxWeightST::colWeight, SPxSolver::epsilon(), soplex::infinity, SPxLPBase< R >::lhs(), SPxLPBase< R >::lower(), VectorBase< R >::maxAbs(), SPxLPBase< R >::maxObj(), MSG_DEBUG, SPxLPBase< R >::nCols(), SPxLPBase< R >::nRows(), SPxSolver::rep(), SPxLPBase< R >::rhs(), SPxWeightST::rowRight, SPxLPBase< R >::rowVector(), SPxWeightST::rowWeight, soplex::spxAbs(), SPxSolver::type(), and SPxLPBase< R >::upper().

Referenced by SPxWeightST::generate(), and SPxVectorST::setupWeights().

Member Data Documentation

◆ colUp

DataArray< bool > colUp
protected

◆ colWeight

◆ coWeight

DataArray< Real >* coWeight
private

Definition at line 68 of file spxweightst.h.

Referenced by SPxWeightST::generate().

◆ forbidden

DataArray< int > forbidden
private

Definition at line 64 of file spxweightst.h.

Referenced by SPxWeightST::generate(), and SPxWeightST::operator=().

◆ rowRight

◆ rowWeight

◆ weight

DataArray< Real >* weight
private