SPxBoundFlippingRT Class Reference Bound flipping ratio test ("long step dual") for SoPlex.Class SPxBoundFlippingRT provides an implementation of the bound flipping ratio test as a derived class of SPxRatioTester. Dual step length is increased beyond some breakpoints and corresponding primal nonbasic variables are set to their other bound to handle the resulting dual infeasibility. More...
Inheritance diagram for SPxBoundFlippingRT:
![]()
Detailed DescriptionBound flipping ratio test ("long step dual") for SoPlex. Class SPxBoundFlippingRT provides an implementation of the bound flipping ratio test as a derived class of SPxRatioTester. Dual step length is increased beyond some breakpoints and corresponding primal nonbasic variables are set to their other bound to handle the resulting dual infeasibility. The implementation mostly follows the papers
See SPxRatioTester for a class documentation. Definition at line 51 of file spxboundflippingrt.h. Member Enumeration Documentation
enumerator to remember which vector we have been searching to find a breakpoint
Definition at line 58 of file spxboundflippingrt.h. Constructor & Destructor Documentationdefault constructor Definition at line 186 of file spxboundflippingrt.h. Referenced by SPxBoundFlippingRT::clone().
copy constructor Definition at line 197 of file spxboundflippingrt.h.
destructor Definition at line 222 of file spxboundflippingrt.h. Member Function Documentation
clone function for polymorphism Reimplemented from SPxFastRT. Definition at line 225 of file spxboundflippingrt.h. References SPxBoundFlippingRT::selectEnter(), SPxBoundFlippingRT::selectLeave(), SPxBoundFlippingRT::SPxBoundFlippingRT(), and SPxBoundFlippingRT::Breakpoint::val.
store all available pivots/breakpoints in an array (positive pivot search direction)
Definition at line 277 of file spxboundflippingrt.cpp. References SPxBoundFlippingRT::breakpoints, SPxFastRT::epsilon, SPxFastRT::fastDelta, and soplex::infinity. Referenced by SPxBoundFlippingRT::selectEnter(), and SPxBoundFlippingRT::selectLeave().
store all available pivots/breakpoints in an array (negative pivot search direction)
Definition at line 350 of file spxboundflippingrt.cpp. References SPxBoundFlippingRT::breakpoints, SPxFastRT::epsilon, SPxFastRT::fastDelta, and soplex::infinity. Referenced by SPxBoundFlippingRT::selectEnter(), and SPxBoundFlippingRT::selectLeave().
perform necessary bound flips to restore dual feasibility
Definition at line 33 of file spxboundflippingrt.cpp. References SSVectorBase< R >::add(), SPxBasis::baseId(), SPxSolver::basis(), SPxBoundFlippingRT::breakpoints, SSVectorBase< R >::clear(), SPxBasis::Desc::colStatus(), SPxSolver::COLUMN, SPxBoundFlippingRT::COPVEC, SPxSolver::coPvec(), SPxBasis::Desc::coStatus(), UpdateVector::delta(), SPxBasis::desc(), SPxSolver::dim(), SPxSolver::ENTER, SPxBoundFlippingRT::FVEC, SPxSolver::fVec(), soplex::infinity, SPxSolver::LEAVE, SPxLPBase< R >::lhs(), SPxLPBase< R >::lower(), SPxRatioTester::m_type, MSG_DEBUG, MSG_WARNING, SSVectorBase< R >::multAdd(), SPxLPBase< R >::number(), SPxBasis::Desc::P_ON_LOWER, SPxBasis::Desc::P_ON_UPPER, SPxBoundFlippingRT::PVEC, SPxSolver::pVec(), SSVectorBase< R >::reDim(), SPxSolver::rep(), SPxLPBase< R >::rhs(), SPxSolver::ROW, SPxBasis::Desc::rowStatus(), SSVectorBase< R >::setup(), SPxSolver::setup4coSolve2(), SPxSolver::setup4solve2(), SSVectorBase< R >::setValue(), soplex::spxAbs(), SPxSolver::spxout, SPxBasis::Desc::status(), SPxSolver::theCoLbound, SPxSolver::theCoPrhs, SPxSolver::theCoUbound, SPxSolver::theFrhs, SPxSolver::theLBbound, SPxSolver::theLbound, SPxSolver::theLCbound, SPxSolver::theLRbound, SPxRatioTester::thesolver, SPxSolver::theUBbound, SPxSolver::theUbound, SPxSolver::theUCbound, SPxSolver::theURbound, SPxSolver::updateNonbasicValue(), SPxBoundFlippingRT::updPrimRhs, SPxBoundFlippingRT::updPrimVec, SPxLPBase< R >::upper(), and SPxSolver::vector(). Referenced by SPxBoundFlippingRT::selectEnter(), and SPxBoundFlippingRT::selectLeave().
get values for entering index and perform shifts if necessary Definition at line 424 of file spxboundflippingrt.cpp. References SPxSolver::coId(), SPxSolver::coPvec(), SPxSolver::id(), SPxSolver::lcBound(), SPxSolver::lpBound(), SPxBoundFlippingRT::PVEC, SPxSolver::pVec(), SPxSolver::shiftLCbound(), SPxSolver::shiftLPbound(), SPxSolver::shiftUCbound(), SPxSolver::shiftUPbound(), soplex::spxAbs(), SPxSolver::theShift, SPxRatioTester::thesolver, SPxSolver::ucBound(), SPxSolver::upBound(), and SPxSolver::vector(). Referenced by SPxBoundFlippingRT::selectEnter(), and SPxBoundFlippingRT::selectLeave().
get values for leaving index and perform shifts if necessary Definition at line 500 of file spxboundflippingrt.cpp. References SPxBasis::baseId(), SPxBasis::Desc::D_ON_BOTH, SPxBasis::dualStatus(), SPxBoundFlippingRT::FVEC, SPxSolver::shiftLBbound(), SPxSolver::shiftUBbound(), soplex::spxAbs(), and SPxRatioTester::thesolver.
comparison method for breakpoints Definition at line 172 of file spxboundflippingrt.h. References soplex::spxAbs(), and SPxBoundFlippingRT::Breakpoint::val.
assignment operator Definition at line 208 of file spxboundflippingrt.h. References SPxBoundFlippingRT::enableBoundFlips, SPxBoundFlippingRT::enableRowBoundFlips, SPxBoundFlippingRT::flipPotential, and SPxFastRT::operator=(). determine entering row/column Reimplemented from SPxFastRT. Definition at line 546 of file spxboundflippingrt.cpp. References SPxSolver::basis(), SPxSolver::boundflips, SPxBoundFlippingRT::breakpoints, SSVectorBase< R >::clearIdx(), SPxBoundFlippingRT::collectBreakpointsMax(), SPxBoundFlippingRT::collectBreakpointsMin(), SPxBoundFlippingRT::COPVEC, SPxSolver::coPvec(), SPxRatioTester::delta, UpdateVector::delta(), SPxBoundFlippingRT::enableBoundFlips, SPxBoundFlippingRT::BreakpointCompare::entry, SPxFastRT::fastDelta, SPxBoundFlippingRT::flipAndUpdate(), SPxBoundFlippingRT::flipPotential, SPxSolver::fTest(), VectorBase< R >::get_const_ptr(), SPxBoundFlippingRT::getData(), SSVectorBase< R >::indexMem(), SPxSolver::instableLeave, SPxSolver::instableLeaveNum, SPxSolver::instableLeaveVal, SPxSolver::isBasic(), SPxSolver::isCoBasic(), SPxId::isValid(), SPxBasis::iteration(), SPxSolver::lcBound(), SPxSolver::LEAVE, SPxSolver::leaveCount, SPxLPBase< R >::lhs(), LONGSTEP_FREQ, SPxLPBase< R >::lower(), LOWSTAB, SPxSolver::lpBound(), SPxRatioTester::m_type, MAX_RELAX_COUNT, SPxFastRT::minStability(), MSG_DEBUG, SPxBoundFlippingRT::PVEC, SPxSolver::pVec(), SPxFastRT::relax(), SPxBoundFlippingRT::relax_count, SPxSolver::rep(), SPxFastRT::resetTols(), SPxLPBase< R >::rhs(), SPxSolver::ROW, SPxFastRT::selectEnter(), SSVectorBase< R >::size(), soplex::spxAbs(), soplex::SPxQuicksortPart(), SPxRatioTester::thesolver, SPxFastRT::tighten(), SPxSolver::ucBound(), SPxSolver::upBound(), SPxLPBase< R >::upper(), SSVectorBase< R >::values(), and SPxSolver::vector(). Referenced by SPxBoundFlippingRT::clone(). determine leaving row/column < pointer to values of current vector < pointer to update values of current vector < pointer to indices of current vector < number of nonzeros in update vector < pointer to lower bound/lhs of current vector < pointer to upper bound/rhs of current vector Reimplemented from SPxFastRT. Definition at line 888 of file spxboundflippingrt.cpp. References SPxBasis::baseId(), SPxSolver::basis(), SPxSolver::boundflips, SPxBoundFlippingRT::breakpoints, SPxBoundFlippingRT::collectBreakpointsMax(), SPxBoundFlippingRT::collectBreakpointsMin(), SPxSolver::COLUMN, SPxRatioTester::delta, UpdateVector::delta(), SPxBoundFlippingRT::enableBoundFlips, SPxBoundFlippingRT::enableRowBoundFlips, SPxSolver::ENTER, SPxSolver::enterCount, SPxBoundFlippingRT::BreakpointCompare::entry, SPxFastRT::fastDelta, SPxBoundFlippingRT::flipAndUpdate(), SPxBoundFlippingRT::flipPotential, SPxBoundFlippingRT::FVEC, SPxSolver::fVec(), VectorBase< R >::get_const_ptr(), SPxBoundFlippingRT::getData(), SSVectorBase< R >::indexMem(), SPxSolver::instableEnter, SPxSolver::instableEnterId, SPxSolver::instableEnterVal, SSVectorBase< R >::isSetup(), SPxId::isSPxColId(), SPxId::isSPxRowId(), SPxId::isValid(), SPxBasis::iteration(), SPxSolver::lbBound(), SPxLPBase< R >::lhs(), LONGSTEP_FREQ, SPxLPBase< R >::lower(), LOWSTAB, SPxRatioTester::m_type, MAX_RELAX_COUNT, SPxFastRT::minStability(), MSG_DEBUG, SPxLPBase< R >::number(), SPxFastRT::relax(), SPxBoundFlippingRT::relax_count, SPxSolver::rep(), SPxFastRT::resetTols(), SPxLPBase< R >::rhs(), SPxFastRT::selectLeave(), SSVectorBase< R >::size(), soplex::spxAbs(), soplex::SPxQuicksortPart(), SPxRatioTester::thesolver, SPxFastRT::tighten(), SPxSolver::ubBound(), SPxLPBase< R >::upper(), and SSVectorBase< R >::values(). Referenced by SPxBoundFlippingRT::clone().
Definition at line 245 of file spxboundflippingrt.h.
Definition at line 250 of file spxboundflippingrt.h. Referenced by SoPlex::setBoolParam(). Member Data Documentation
array of breakpoints Definition at line 105 of file spxboundflippingrt.h. Referenced by SPxBoundFlippingRT::collectBreakpointsMax(), SPxBoundFlippingRT::collectBreakpointsMin(), SPxBoundFlippingRT::flipAndUpdate(), SPxBoundFlippingRT::selectEnter(), and SPxBoundFlippingRT::selectLeave().
enable or disable long steps in BoundFlippingRT Definition at line 101 of file spxboundflippingrt.h. Referenced by SPxBoundFlippingRT::operator=(), SPxBoundFlippingRT::selectEnter(), and SPxBoundFlippingRT::selectLeave().
enable bound flips also for row representation Definition at line 102 of file spxboundflippingrt.h. Referenced by SPxBoundFlippingRT::operator=(), and SPxBoundFlippingRT::selectLeave().
tracks bound flip history and decides which ratio test to use Definition at line 103 of file spxboundflippingrt.h. Referenced by SPxBoundFlippingRT::operator=(), SPxBoundFlippingRT::selectEnter(), and SPxBoundFlippingRT::selectLeave().
count rounds of ratio test Definition at line 104 of file spxboundflippingrt.h. Referenced by SPxBoundFlippingRT::selectEnter(), and SPxBoundFlippingRT::selectLeave().
right hand side vector of additional system to be solved after the ratio test Definition at line 106 of file spxboundflippingrt.h. Referenced by SPxBoundFlippingRT::flipAndUpdate().
allocation of memory for additional solution vector Definition at line 107 of file spxboundflippingrt.h. Referenced by SPxBoundFlippingRT::flipAndUpdate(). |