Loading...
Searching...
No Matches
SPxBasisBase< R >::Desc Class Reference Basis descriptor. More...
Detailed Descriptiontemplate<class R> class soplex::SPxBasisBase< R >::Desc Basis descriptor. Definition at line 115 of file spxbasis.h. Member Enumeration Documentation◆ Status
template<class R>
A basis is described by assigning a Status to all of the LP variables and covariables. This assignment is maintained by the basis Descriptor. Variables and covariables (slackvariables) may have a primal or dual Status. The first type specifies that a variable is set on a primal bound, while the latter type indicates a dual variable to be set on a bound. If a row variable has a primal status, say P_ON_UPPER, this means that the upper bound of the inequality is set to be tight. Hence, in this case the upper bound must not be infinity. Equivalently, if the status of a variable is dual, say D_ON_UPPER, it means that the dual variable corresponding to the upper bound inequality of this variable is set to 0. For a column basis, primal Statuses correspond to nonbasic variables, while dual ones are basic. This is reversed for a row basis. We will now reveal in more detail the significance of variable Statuses. Primal Variables Consider a range inequality \(l_r \le a^T x \le u_r\) or bounds on a variable \(l_c \le x_c \le u_c\). The following table reveals what is implied if the corresponding variable or covariable is assigned to a primal Status: \[\begin{array}{lcl} l_c \le x_c \le u_c & \mbox{Status}(x_i) & l_r \le a^T x \le u_r \\ \hline x_c = u_c < \infty & \mbox{P\_ON\_UPPER} & a^T x = u_r < \infty \\ x_c = l_c > -\infty & \mbox{P\_ON\_LOWER} & a^T x = l_r > -\infty \\ -\infty < l_c = x_c = u_c < \infty & \mbox{P\_FIXED} & -\infty < l_r = a^T x = u_r < \infty \\ -\infty = l_i < x_i=0 < u_i = \infty & \mbox{P\_FREE} & -\infty = l_r < a^T x = 0 < u_r = \infty \\ \end{array} \] Note that to determine whether a variable with Status stat is set to its upper bound, one can compute the test (-stat | -P_ON_UPPER). This will yield true even if the variable is fixed, i.e., sitting on both bounds at the same time. Dual Variables In principle for implementing the Simplex algorithm it would suffice to use only one dual Status. However, for performance reasons it is advisable to introduce various dual status types, reflecting the structure of the bounds. Given an upper bound \(u\) and a lower bound \(l\) of a constraint or variable, the following table indicates the setting of the dual Status of this variable. \[\begin{array}{cl} l \le ... \le u & \mbox{Status} \\ \hline -\infty < l \ne u < \infty & \mbox{D\_ON\_BOTH} \\ -\infty < l \ne u = \infty & \mbox{D\_ON\_UPPER} \\ -\infty = l \ne u < \infty & \mbox{D\_ON\_LOWER} \\ -\infty < l = u < \infty & \mbox{D\_FREE} \\ -\infty = l \ne u = \infty & \mbox{D\_UNDEFINED} \\ \end{array} \] Note that unbounded primal variables are reflected by an D_UNDEFINED dual variable, since no reduced costs exist for them. To facilitate the assignment of dual Statuses, class SPxBasisBase provides methods dualStatus(), dualColStatus() and dualRowStatus)(). Definition at line 196 of file spxbasis.h. Constructor & Destructor Documentation◆ Desc() [1/3]
template<class R>
Definition at line 328 of file spxbasis.h. Referenced by Desc(), and operator=(). ◆ Desc() [2/3]
template<class R>
◆ Desc() [3/3]Member Function Documentation◆ coDim()
template<class R>
◆ colStatus() [1/3]
template<class R>
Definition at line 266 of file spxbasis.h. References colstat. ◆ colStatus() [2/3]
template<class R>
◆ colStatus() [3/3]
template<class R>
returns the array of column Statuses. Definition at line 276 of file spxbasis.h. References colstat. ◆ coStatus() [1/3]
template<class R>
Definition at line 296 of file spxbasis.h. References costat. Referenced by SPxSolverBase< Real >::covarStatus(). ◆ coStatus() [2/3]
template<class R>
◆ coStatus() [3/3]
template<class R>
returns the array of covariable Statuses. Definition at line 306 of file spxbasis.h. References costat. ◆ dim()
template<class R>
◆ dump()
template<class R>
◆ isConsistent()
template<class R>
consistency check. ◆ nCols()
template<class R>
Definition at line 231 of file spxbasis.h. References colstat. ◆ nRows()
template<class R>
◆ operator=()◆ reSize()
template<class R>
resets dimensions. ◆ rowStatus() [1/3]
template<class R>
Definition at line 251 of file spxbasis.h. References rowstat. ◆ rowStatus() [2/3]
template<class R>
◆ rowStatus() [3/3]
template<class R>
◆ status() [1/3]
template<class R>
Definition at line 281 of file spxbasis.h. References stat. Referenced by SPxSolverBase< Real >::varStatus(). ◆ status() [2/3]
template<class R>
◆ status() [3/3]
template<class R>
Friends And Related Symbol Documentation◆ operator<<
template<class R>
template<class T>
References stat. Member Data Documentation◆ colstatstatus of columns. Definition at line 220 of file spxbasis.h. Referenced by colStatus(), colStatus(), colStatus(), and nCols(). ◆ costatcobasis' status. Definition at line 222 of file spxbasis.h. Referenced by coDim(), coStatus(), coStatus(), coStatus(), and Desc(). ◆ rowstatstatus of rows. Definition at line 219 of file spxbasis.h. Referenced by nRows(), rowStatus(), rowStatus(), and rowStatus(). ◆ SPxBasisBase< R >
template<class R>
Definition at line 210 of file spxbasis.h. ◆ statbasis' status. Definition at line 221 of file spxbasis.h. Referenced by Desc(), dim(), operator<<, status(), status(), and status().
|