SMT-RAT
24.02
Toolbox for Strategic and Parallel Satisfiability-Modulo-Theories Solving
|
#include <Tableau.h>
Data Structures | |
class | Iterator |
struct | LearnedBound |
Public Member Functions | |
Tableau (ModuleInput::iterator _defaultBoundPosition) | |
~Tableau () | |
void | setSize (size_t _expectedHeight, size_t _expectedWidth, size_t _expectedNumberOfBounds) |
size_t | size () const |
void | setBlandsRuleStart (size_t _start) |
const std::vector< Variable< T1, T2 > * > & | rows () const |
const std::vector< Variable< T1, T2 > * > & | columns () const |
const carl::FastMap< carl::Variable, Variable< T1, T2 > * > & | originalVars () const |
const carl::FastPointerMap< typename Poly::PolyType, Variable< T1, T2 > * > & | slackVars () const |
const T1 & | currentDelta () const |
const carl::FastMap< FormulaT, std::vector< const Bound< T1, T2 > * > * > & | constraintToBound () const |
carl::FastMap< FormulaT, std::vector< const Bound< T1, T2 > * > * > & | rConstraintToBound () |
size_t | numberOfPivotingSteps () const |
void | resetNumberOfPivotingSteps () |
carl::FastPointerMap< Variable< T1, T2 >, LearnedBound > & | rLearnedLowerBounds () |
carl::FastPointerMap< Variable< T1, T2 >, LearnedBound > & | rLearnedUpperBounds () |
void | resetTheta () |
std::vector< typename carl::FastPointerMap< Variable< T1, T2 >, LearnedBound >::iterator > & | rNewLearnedBounds () |
bool | entryIsPositive (const TableauEntry< T1, T2 > &_entry) const |
bool | entryIsNegative (const TableauEntry< T1, T2 > &_entry) const |
auto | defaultBoundPosition () const |
bool | isActive (const Variable< T1, T2 > &_var) const |
EntryID | newTableauEntry (const T2 &_content) |
void | removeEntry (EntryID _entryID) |
Variable< T1, T2 > * | getVariable (const Poly &_lhs, T1 &_factor, T1 &_boundValue) |
Variable< T1, T2 > * | getObjectiveVariable (const Poly &_lhs) |
std::pair< const Bound< T1, T2 > *, bool > | newBound (const FormulaT &_constraint) |
void | removeBound (const FormulaT &_constraint) |
void | activateBound (const Bound< T1, T2 > *_bound, const FormulaT &_formula) |
void | deleteVariable (Variable< T1, T2 > *_variable, bool _optimizationVar=false) |
Variable< T1, T2 > * | newNonbasicVariable (const typename Poly::PolyType *_poly, bool _isInteger) |
Variable< T1, T2 > * | newBasicVariable (const typename Poly::PolyType *_poly, bool _isInteger) |
void | activateBasicVar (Variable< T1, T2 > *_var) |
g More... | |
void | deactivateBasicVar (Variable< T1, T2 > *_var) |
void | storeAssignment () |
void | resetAssignment () |
RationalAssignment | getRationalAssignment () const |
void | adaptDelta (const Variable< T1, T2 > &_variable, bool _upperBound, T1 &_minDelta) const |
void | compressRows () |
bool | usedBlandsRule () |
Returns true, if the next pivoting element is selected by blands rule. More... | |
bool | hasMultilineConflict () |
std::vector< const Bound< T1, T2 > * > | getMultilineConflict () |
std::pair< EntryID, bool > | nextPivotingElement () |
Value< T1 > | violationSum () |
Method to compute the sum of derivations to the closest bounds. More... | |
Value< T1 > | dViolationSum (const Variable< T1, T2 > *nVar, const Value< T1 > &update) |
Computes the change in the violation sum when an the update value is added to the assignment of the nonbassi variable nVar. More... | |
Value< T1 > | get_dVioSum () |
Used as assertion-function to check the progress of the tableau. More... | |
std::map< Value< T1 >, Value< T1 > > | compute_dVio (const std::vector< std::pair< Value< T1 >, Variable< T1, T2 > * > > &candidates, const Variable< T1, T2 > &nVar, bool positive) |
Updated Method to computed dVio more efficienlty. More... | |
std::pair< EntryID, bool > | nextPivotingElementInfeasibilities () |
Method for next pivoting element according to "Simplex with Sum of Infeasibilities for SMT" by Tim King and Clark Barrett. More... | |
void | computeLeavingCandidates (const std::size_t i, std::vector< std::pair< Value< T1 >, Variable< T1, T2 > * > > &leaving_candidates) |
Helper method to compute leavind candidates used in nextPivotingElementInfeasibilities. More... | |
void | updateNonbasicVariable (EntryID _pivotingElement) |
Updates a nonbasic variable by the assignment stored in mpTheta and triggers updates of depending basic variables. More... | |
void | updateNonbasicVariable (EntryID _pivotingElement, Value< T1 > update) |
Updates a nonbasic variable by the given assignment and triggers updates of depending basic variables. More... | |
std::pair< EntryID, bool > | hasConflict () |
Checks if a conflicting pair exists. More... | |
void | printEntries () |
std::vector< T2 > | getInfeasibilityRow () |
Method to compute the infeasibility row to the current tableau. More... | |
void | setInfeasibilityRow () |
Method to set the initital infeasibility row to avoid recomputation in every round. More... | |
std::pair< EntryID, bool > | optimizeIndependentNonbasics (const Variable< T1, T2 > &_objective) |
std::pair< EntryID, bool > | nextPivotingElementForOptimizing (const Variable< T1, T2 > &_objective) |
std::pair< EntryID, bool > | nextZeroPivotingElementForOptimizing (const Variable< T1, T2 > &_objective) const |
EntryID | isSuitable (const Variable< T1, T2 > &_basicVar, bool _forIncreasingAssignment) const |
EntryID | isSuitableConflictDetection (const Variable< T1, T2 > &_basicVar, bool _forIncreasingAssignment) const |
Checks if the basic variable is pivotable. More... | |
bool | betterEntry (EntryID _isBetter, EntryID _than) const |
std::vector< const Bound< T1, T2 > * > | getConflict (EntryID _rowEntry) const |
std::vector< std::vector< const Bound< T1, T2 > * > > | getConflictsFrom (EntryID _rowEntry) const |
void | updateBasicAssignments (size_t _column, const Value< T1 > &_change) |
Variable< T1, T2 > * | pivot (EntryID _pivotingElement, bool _optimizing=false) |
void | update (bool _downwards, EntryID _pivotingElement, std::vector< Iterator > &_pivotingRowLeftSide, std::vector< Iterator > &_pivotingRowRightSide, bool _optimizing=false) |
Updates the tableau according to the new values in the pivoting row containing the given pivoting element. More... | |
void | addToEntry (const T2 &_toAdd, Iterator &_horiIter, bool _horiIterLeftFromVertIter, Iterator &_vertIter, bool _vertIterBelowHoriIter) |
Adds the given value to the entry being at the position (i,j), where i is the vertical position of the given horizontal iterator and j is the horizontal position of the given vertical iterator. More... | |
void | rowRefinement (Variable< T1, T2 > *_basicVar) |
Tries to refine the supremum and infimum of the given basic variable. More... | |
size_t | boundedVariables (const Variable< T1, T2 > &_var, size_t _stopCriterium=0) const |
size_t | unboundedVariables (const Variable< T1, T2 > &_var, size_t _stopCriterium=0) const |
size_t | checkCorrectness () const |
bool | rowCorrect (size_t _rowNumber) const |
bool | isConflicting () const |
const Poly::PolyType * | gomoryCut (const T2 &_ass, Variable< T1, T2 > *_rowVar) |
Creates a constraint referring to Gomory Cuts, if possible. More... | |
size_t | getNumberOfEntries (Variable< T1, T2 > *_rowVar) |
void | collect_premises (const Variable< T1, T2 > *_rowVar, FormulasT &premises) const |
Collects the premises for branch and bound and stores them in premises. More... | |
void | printHeap (std::ostream &_out=std::cout, int _maxEntryLength=30, const std::string _init="") const |
void | printEntry (EntryID _entry, std::ostream &_out=std::cout, int _maxEntryLength=20) const |
void | printVariables (bool _allBounds=true, std::ostream &_out=std::cout, const std::string _init="") const |
void | printLearnedBounds (const std::string _init="", std::ostream &_out=std::cout) const |
void | printLearnedBound (const Variable< T1, T2 > &_var, const LearnedBound &_learnedBound, const std::string _init="", std::ostream &_out=std::cout) const |
void | print (EntryID _pivotingElement=LAST_ENTRY_ID, std::ostream &_out=std::cout, const std::string _init="", bool _friendlyNames=true, bool _withZeroColumns=false) const |
Private Attributes | |
bool | mRowsCompressed |
size_t | mWidth |
size_t | mPivotingSteps |
size_t | mMaxPivotsWithoutBlandsRule |
size_t | mVarIDCounter |
ModuleInput::iterator | mDefaultBoundPosition |
std::stack< EntryID > | mUnusedIDs |
carl::IDPool | mVariableIdAllocator |
Id allocator for the variables. More... | |
std::vector< Variable< T1, T2 > * > | mRows |
std::vector< Variable< T1, T2 > * > | mColumns |
std::list< std::list< std::pair< Variable< T1, T2 > *, T2 > > > | mNonActiveBasics |
std::vector< TableauEntry< T1, T2 > > * | mpEntries |
std::vector< Variable< T1, T2 > * > | mConflictingRows |
Value< T1 > * | mpTheta |
bool | onlyUpdate = false |
T1 | mCurDelta |
carl::FastMap< carl::Variable, Variable< T1, T2 > * > | mOriginalVars |
carl::FastPointerMap< typename Poly::PolyType, Variable< T1, T2 > * > | mSlackVars |
carl::FastMap< FormulaT, std::vector< const Bound< T1, T2 > * > * > | mConstraintToBound |
carl::FastPointerMap< Variable< T1, T2 >, LearnedBound > | mLearnedLowerBounds |
carl::FastPointerMap< Variable< T1, T2 >, LearnedBound > | mLearnedUpperBounds |
std::vector< typename carl::FastPointerMap< Variable< T1, T2 >, LearnedBound >::iterator > | mNewLearnedBounds |
Value< T1 > | mOldVioSum = Value<T1>(-1) |
Value< T1 > | mOld_dVioSum = Value<T1>(1) |
std::vector< T2 > | mInfeasibilityRow |
std::size_t | mFullCandidateSearch = 3 |
smtrat::lra::Tableau< Settings, T1, T2 >::Tableau | ( | ModuleInput::iterator | _defaultBoundPosition | ) |
_defaultBoundPosition |
smtrat::lra::Tableau< Settings, T1, T2 >::~Tableau | ( | ) |
void smtrat::lra::Tableau< Settings, T1, T2 >::activateBasicVar | ( | Variable< T1, T2 > * | _var | ) |
g
_var |
void smtrat::lra::Tableau< Settings, T1, T2 >::activateBound | ( | const Bound< T1, T2 > * | _bound, |
const FormulaT & | _formula | ||
) |
_bound | |
_formula |
void smtrat::lra::Tableau< Settings, T1, T2 >::adaptDelta | ( | const Variable< T1, T2 > & | _variable, |
bool | _upperBound, | ||
T1 & | _minDelta | ||
) | const |
void smtrat::lra::Tableau< Settings, T1, T2 >::addToEntry | ( | const T2 & | _toAdd, |
Iterator & | _horiIter, | ||
bool | _horiIterLeftFromVertIter, | ||
Iterator & | _vertIter, | ||
bool | _vertIterBelowHoriIter | ||
) |
Adds the given value to the entry being at the position (i,j), where i is the vertical position of the given horizontal iterator and j is the horizontal position of the given vertical iterator.
Note, that the entry might not exist, if its current value is 0. Then the horizontal iterator is located horizontally before or after the entry to change and the vertical iterator is located vertically before or after the entry to add.
_toAdd | The value to add to the content of the entry specified by the given iterators and their relative position to each other. |
_horiIter | The iterator moving horizontally and, hence, giving the vertical position of the entry to add the given value to. |
_horiIterLeftFromVertIter | true, if the horizontally moving iterator is left from or equal to the horizontal position of the iterator moving vertically, and, hence, left from or equal to the position of the entry to add the given value to; false, it is right or equal to this position. |
_vertIter | The iterator moving vertically and, hence, giving the horizontal position of the entry to add the given value to. |
_vertIterBelowHoriIter | true, if the vertically moving iterator is below or exactly at the vertical position of the iterator moving horizontally, and, hence, below or exactly at the position of the entry to add the given value to; false, it is above or equal to this position. @sideeffect If the entry existed (!=0) and is removed because of becoming 0, the iterators are set according to the given relative positioning. |
bool smtrat::lra::Tableau< Settings, T1, T2 >::betterEntry | ( | EntryID | _isBetter, |
EntryID | _than | ||
) | const |
_isBetter | |
_than |
size_t smtrat::lra::Tableau< Settings, T1, T2 >::boundedVariables | ( | const Variable< T1, T2 > & | _var, |
size_t | _stopCriterium = 0 |
||
) | const |
_var | |
_stopCriterium |
size_t smtrat::lra::Tableau< Settings, T1, T2 >::checkCorrectness | ( | ) | const |
void smtrat::lra::Tableau< Settings, T1, T2 >::collect_premises | ( | const Variable< T1, T2 > * | _rowVar, |
FormulasT & | premises | ||
) | const |
Collects the premises for branch and bound and stores them in premises.
_rowVar | |
premises |
|
inline |
void smtrat::lra::Tableau< Settings, T1, T2 >::compressRows | ( | ) |
std::map<Value<T1>, Value<T1> > smtrat::lra::Tableau< Settings, T1, T2 >::compute_dVio | ( | const std::vector< std::pair< Value< T1 >, Variable< T1, T2 > * > > & | candidates, |
const Variable< T1, T2 > & | nVar, | ||
bool | positive | ||
) |
Updated Method to computed dVio more efficienlty.
For this the fact is used, that VioSum is piecewise linear (the proof can be found in the SoI paper).
candidates | Update candidates, IMPORTANT: Must be sorted with an stabloe sorting algorithm |
nVar | The updated nonbasic variable |
positive | Whether the positve or negative update values are checked |
void smtrat::lra::Tableau< Settings, T1, T2 >::computeLeavingCandidates | ( | const std::size_t | i, |
std::vector< std::pair< Value< T1 >, Variable< T1, T2 > * > > & | leaving_candidates | ||
) |
Helper method to compute leavind candidates used in nextPivotingElementInfeasibilities.
Computes for every non-basic variable the breaking points. Updates from non-basic vars of 0 are omitted to prevent loops.
i | : Index if entering (nonbasic ) variable. |
leaving_candidates | : Used as storage object for update candidates. |
|
inline |
|
inline |
void smtrat::lra::Tableau< Settings, T1, T2 >::deactivateBasicVar | ( | Variable< T1, T2 > * | _var | ) |
_var |
|
inline |
void smtrat::lra::Tableau< Settings, T1, T2 >::deleteVariable | ( | Variable< T1, T2 > * | _variable, |
bool | _optimizationVar = false |
||
) |
_variable |
Value<T1> smtrat::lra::Tableau< Settings, T1, T2 >::dViolationSum | ( | const Variable< T1, T2 > * | nVar, |
const Value< T1 > & | update | ||
) |
Computes the change in the violation sum when an the update value is added to the assignment of the nonbassi variable nVar.
nVar | variable to be updated |
update | Update value |
|
inline |
|
inline |
|
inline |
std::vector< const Bound<T1, T2>* > smtrat::lra::Tableau< Settings, T1, T2 >::getConflict | ( | EntryID | _rowEntry | ) | const |
_rowEntry |
std::vector< std::vector< const Bound<T1, T2>* > > smtrat::lra::Tableau< Settings, T1, T2 >::getConflictsFrom | ( | EntryID | _rowEntry | ) | const |
_rowEntry |
std::vector<T2> smtrat::lra::Tableau< Settings, T1, T2 >::getInfeasibilityRow | ( | ) |
Method to compute the infeasibility row to the current tableau.
std::vector< const Bound<T1, T2>* > smtrat::lra::Tableau< Settings, T1, T2 >::getMultilineConflict | ( | ) |
size_t smtrat::lra::Tableau< Settings, T1, T2 >::getNumberOfEntries | ( | Variable< T1, T2 > * | _rowVar | ) |
_rowVar |
Variable<T1,T2>* smtrat::lra::Tableau< Settings, T1, T2 >::getObjectiveVariable | ( | const Poly & | _lhs | ) |
RationalAssignment smtrat::lra::Tableau< Settings, T1, T2 >::getRationalAssignment | ( | ) | const |
Variable<T1,T2>* smtrat::lra::Tableau< Settings, T1, T2 >::getVariable | ( | const Poly & | _lhs, |
T1 & | _factor, | ||
T1 & | _boundValue | ||
) |
const Poly::PolyType* smtrat::lra::Tableau< Settings, T1, T2 >::gomoryCut | ( | const T2 & | _ass, |
Variable< T1, T2 > * | _rowVar | ||
) |
Creates a constraint referring to Gomory Cuts, if possible.
_ass | |
_rowVar |
std::pair<EntryID,bool> smtrat::lra::Tableau< Settings, T1, T2 >::hasConflict | ( | ) |
Checks if a conflicting pair exists.
In a conflict is found, the cell and false is returned. If not, LAST_ENTRY_ID and true is returned.
bool smtrat::lra::Tableau< Settings, T1, T2 >::hasMultilineConflict | ( | ) |
|
inline |
bool smtrat::lra::Tableau< Settings, T1, T2 >::isConflicting | ( | ) | const |
EntryID smtrat::lra::Tableau< Settings, T1, T2 >::isSuitable | ( | const Variable< T1, T2 > & | _basicVar, |
bool | _forIncreasingAssignment | ||
) | const |
_basicVar | |
_forIncreasingAssignment |
EntryID smtrat::lra::Tableau< Settings, T1, T2 >::isSuitableConflictDetection | ( | const Variable< T1, T2 > & | _basicVar, |
bool | _forIncreasingAssignment | ||
) | const |
Checks if the basic variable is pivotable.
Returns LAST_ENTRY_ID as EntryID if a conflict was found. In difference to isSuitable returns this function an EntryID as soon as the EntryID bestEntry is unequal to LAST_ENTRY_ID. The assertions are still checked.
_basicVar | |
_forIncreasingAssignment |
Variable<T1, T2>* smtrat::lra::Tableau< Settings, T1, T2 >::newBasicVariable | ( | const typename Poly::PolyType * | _poly, |
bool | _isInteger | ||
) |
_poly | |
_originalVars | |
_isInteger |
std::pair<const Bound<T1,T2>*, bool> smtrat::lra::Tableau< Settings, T1, T2 >::newBound | ( | const FormulaT & | _constraint | ) |
_constraint |
Variable<T1, T2>* smtrat::lra::Tableau< Settings, T1, T2 >::newNonbasicVariable | ( | const typename Poly::PolyType * | _poly, |
bool | _isInteger | ||
) |
_poly | |
_isInteger |
EntryID smtrat::lra::Tableau< Settings, T1, T2 >::newTableauEntry | ( | const T2 & | _content | ) |
_content |
std::pair<EntryID, bool> smtrat::lra::Tableau< Settings, T1, T2 >::nextPivotingElement | ( | ) |
std::pair<EntryID,bool> smtrat::lra::Tableau< Settings, T1, T2 >::nextPivotingElementForOptimizing | ( | const Variable< T1, T2 > & | _objective | ) |
std::pair<EntryID, bool> smtrat::lra::Tableau< Settings, T1, T2 >::nextPivotingElementInfeasibilities | ( | ) |
Method for next pivoting element according to "Simplex with Sum of Infeasibilities for SMT" by Tim King and Clark Barrett.
Herefore, one counts the vialation of every bound and searches for elements who minimize the violation sum of the next iteration.
std::pair<EntryID,bool> smtrat::lra::Tableau< Settings, T1, T2 >::nextZeroPivotingElementForOptimizing | ( | const Variable< T1, T2 > & | _objective | ) | const |
|
inline |
std::pair<EntryID,bool> smtrat::lra::Tableau< Settings, T1, T2 >::optimizeIndependentNonbasics | ( | const Variable< T1, T2 > & | _objective | ) |
_objective |
|
inline |
Variable<T1, T2>* smtrat::lra::Tableau< Settings, T1, T2 >::pivot | ( | EntryID | _pivotingElement, |
bool | _optimizing = false |
||
) |
_pivotingElement | |
updateAssignments |
void smtrat::lra::Tableau< Settings, T1, T2 >::print | ( | EntryID | _pivotingElement = LAST_ENTRY_ID , |
std::ostream & | _out = std::cout , |
||
const std::string | _init = "" , |
||
bool | _friendlyNames = true , |
||
bool | _withZeroColumns = false |
||
) | const |
_pivotingElement | |
_out | |
_init | |
_friendlyNames | |
_withZeroColumns |
|
inline |
void smtrat::lra::Tableau< Settings, T1, T2 >::printEntry | ( | EntryID | _entry, |
std::ostream & | _out = std::cout , |
||
int | _maxEntryLength = 20 |
||
) | const |
_entry | |
_out | |
_maxEntryLength |
void smtrat::lra::Tableau< Settings, T1, T2 >::printHeap | ( | std::ostream & | _out = std::cout , |
int | _maxEntryLength = 30 , |
||
const std::string | _init = "" |
||
) | const |
_out | |
_maxEntryLength | |
_init |
void smtrat::lra::Tableau< Settings, T1, T2 >::printLearnedBound | ( | const Variable< T1, T2 > & | _var, |
const LearnedBound & | _learnedBound, | ||
const std::string | _init = "" , |
||
std::ostream & | _out = std::cout |
||
) | const |
_var | |
_learnedBound | |
_init | |
_out |
void smtrat::lra::Tableau< Settings, T1, T2 >::printLearnedBounds | ( | const std::string | _init = "" , |
std::ostream & | _out = std::cout |
||
) | const |
_init | |
_out |
void smtrat::lra::Tableau< Settings, T1, T2 >::printVariables | ( | bool | _allBounds = true , |
std::ostream & | _out = std::cout , |
||
const std::string | _init = "" |
||
) | const |
_allBounds | |
_out | |
_init |
|
inline |
void smtrat::lra::Tableau< Settings, T1, T2 >::removeBound | ( | const FormulaT & | _constraint | ) |
void smtrat::lra::Tableau< Settings, T1, T2 >::removeEntry | ( | EntryID | _entryID | ) |
_entryID |
void smtrat::lra::Tableau< Settings, T1, T2 >::resetAssignment | ( | ) |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
bool smtrat::lra::Tableau< Settings, T1, T2 >::rowCorrect | ( | size_t | _rowNumber | ) | const |
_rowNumber |
void smtrat::lra::Tableau< Settings, T1, T2 >::rowRefinement | ( | Variable< T1, T2 > * | _basicVar | ) |
Tries to refine the supremum and infimum of the given basic variable.
_basicVar | The basic variable for which to refine the supremum and infimum. |
|
inline |
|
inline |
void smtrat::lra::Tableau< Settings, T1, T2 >::setInfeasibilityRow | ( | ) |
Method to set the initital infeasibility row to avoid recomputation in every round.
|
inline |
|
inline |
|
inline |
void smtrat::lra::Tableau< Settings, T1, T2 >::storeAssignment | ( | ) |
size_t smtrat::lra::Tableau< Settings, T1, T2 >::unboundedVariables | ( | const Variable< T1, T2 > & | _var, |
size_t | _stopCriterium = 0 |
||
) | const |
_var | |
_stopCriterium |
void smtrat::lra::Tableau< Settings, T1, T2 >::update | ( | bool | _downwards, |
EntryID | _pivotingElement, | ||
std::vector< Iterator > & | _pivotingRowLeftSide, | ||
std::vector< Iterator > & | _pivotingRowRightSide, | ||
bool | _optimizing = false |
||
) |
Updates the tableau according to the new values in the pivoting row containing the given pivoting element.
The updating is applied from the pivoting row downwards, if the given flag _downwards is true, and upwards, otherwise.
_downwards | The flag indicating whether to update the tableau downwards or upwards starting from the pivoting row. |
_pivotingElement | The id of the current pivoting element. |
_pivotingRowLeftSide | For every element in the pivoting row, which is positioned left of the pivoting element, this vector contains an iterator. The closer the element is to the pivoting element, the smaller is the iterator's index in the vector. |
_pivotingRowRightSide | For every element in the pivoting row, which is positioned right of the pivoting element, this vector contains an iterator. The closer the element is to the pivoting element, the smaller is the iterator's index in the vector. |
_updateAssignments | If true, the assignments of all variables will be updated after pivoting. |
void smtrat::lra::Tableau< Settings, T1, T2 >::updateBasicAssignments | ( | size_t | _column, |
const Value< T1 > & | _change | ||
) |
_column | |
_change |
void smtrat::lra::Tableau< Settings, T1, T2 >::updateNonbasicVariable | ( | EntryID | _pivotingElement | ) |
Updates a nonbasic variable by the assignment stored in mpTheta and triggers updates of depending basic variables.
_pivotingElement | Element in the row of the nonbasic variable |
void smtrat::lra::Tableau< Settings, T1, T2 >::updateNonbasicVariable | ( | EntryID | _pivotingElement, |
Value< T1 > | update | ||
) |
Updates a nonbasic variable by the given assignment and triggers updates of depending basic variables.
_pivotingElement | Element in the row of the nonbasic variable |
update | Update Value of non-basic var |
bool smtrat::lra::Tableau< Settings, T1, T2 >::usedBlandsRule | ( | ) |
Returns true, if the next pivoting element is selected by blands rule.
Value<T1> smtrat::lra::Tableau< Settings, T1, T2 >::violationSum | ( | ) |
Method to compute the sum of derivations to the closest bounds.
|
private |
|
private |
|
private |
|
mutableprivate |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |