Lines Matching defs:pivot

131     // When the lexicographic pivot rule is used, instead of the variables
718 // We only consider pivots where the pivot element is positive. Suppose no such
719 // pivot exists, i.e., some violated row has no positive coefficient for any
727 // We can preserve lexicopositivity by picking the pivot column with positive
728 // pivot element that makes the lexicographically smallest change to the sample
742 // rows, is lexicopositive after the pivot if it is so before. This is
747 // Consider a pivot where z_i replaces y_j in the basis. Recall the pivot
748 // transform for the tableau derived for SimplexBase::pivot:
750 // pivot col other col pivot col other col
751 // pivot row a b -> pivot row 1/a -b/a
754 // Similarly, a pivot results in B changing to B' and c to c'; the difference
756 // case for the pivot row, since it continues to represent the same unknown. The
789 pivot(row, *maybeColumn);
796 // A pivot causes the following change. (in the diagram the matrix elements
799 // pivot col big M col const col
800 // pivot row a p b
805 // pivot col big M col const col
806 // pivot row 1/a -p/a -b/a
809 // Let the sample value of the pivot row be s = pM + b before the pivot. Since
810 // the pivot row represents a violated constraint we know that s < 0.
812 // If the variable is a non-pivot column, its sample value is zero before and
813 // after the pivot.
815 // If the variable is the pivot column, then its sample value goes from 0 to
819 // If the variable is the pivot row, its sample value goes from s to 0, for a
822 // If the variable is a non-pivot row, its sample value changes from
834 // symbolically, as the pivot to be performed does not depend on the value
847 // Non-pivot column case.
855 // Non-pivot row case.
874 /// Find a pivot to change the sample value of the row in the specified
875 /// direction. The returned pivot row will involve `row` if and only if the
924 void SimplexBase::pivot(Pivot pair) { pivot(pair.row, pair.column); }
928 /// Let R be the pivot row unknown and let C be the pivot col unknown.
938 /// pivot col other col pivot col other col
939 /// pivot row a b -> pivot row 1/a -b/a
944 /// pivot col other col pivot col other col
945 /// pivot row a/p b/p -> pivot row p/a -b/a
948 /// The pivot row transform is accomplished be swapping a with the pivot row's
949 /// common denominator and negating the pivot row except for the pivot column
951 void SimplexBase::pivot(unsigned pivotRow, unsigned pivotCol) {
952 assert(pivotCol >= getNumFixedCols() && "Refusing to pivot invalid column");
957 // We need to negate the whole pivot row except for the pivot column.
981 // Add rather than subtract because the pivot row has been negated.
1002 pivot(*maybePivot);
1009 /// Find a row that can be used to pivot the column in the specified direction.
1014 /// restriction may be violated by the returned pivot. Usually, skipRow is set
1166 // This doesn't find a pivot row only if the column has zero
1171 // a pivot row will always be found if we have a constraint.
1186 // We try to find any pivot row for this column that preserves tableau
1190 // If no pivot row is found in either direction, then the unknown is
1191 // unbounded in both directions and we are free to perform any pivot at
1198 pivot(*maybeRow, column);
1201 pivot(*maybeRow, column);
1205 pivot(*row, column);
1216 // any pivot at all, i.e., any row with non-zero coefficient for the
1224 pivot(*row, column);
1278 pivot(u.pos, col);
1282 assert(u.orientation == Orientation::Column && "No pivot found!");
1347 // Keep trying to find a pivot for the row in the specified direction.
1349 // If findPivot returns a pivot involving the row itself, then the optimum
1353 pivot(*maybePivot);
1382 // If no pivot is returned, the constraint is unbounded in the specified
1386 pivot(*pivotRow, column);
1450 // If no downward pivot is returned, the constraint is unbounded below
1454 pivot(*pivotRow, column);