MCPcopy Create free account
hub / github.com/ERGO-Code/HiGHS / majorRollback

Method majorRollback

highs/simplex/HEkkDualMulti.cpp:935–961  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

933}
934
935void HEkkDual::majorRollback() {
936 for (HighsInt iFn = multi_nFinish - 1; iFn >= 0; iFn--) {
937 MFinish* finish = &multi_finish[iFn];
938
939 // 1. Roll back pivot
940 ekk_instance_.basis_.nonbasicMove_[finish->variable_in] = finish->move_in;
941 ekk_instance_.basis_.nonbasicFlag_[finish->variable_in] = 1;
942 ekk_instance_.basis_.nonbasicMove_[finish->variable_out] = 0;
943 ekk_instance_.basis_.nonbasicFlag_[finish->variable_out] = 0;
944 ekk_instance_.basis_.basicIndex_[finish->row_out] = finish->variable_out;
945
946 // 2. Roll back matrix
947 ekk_instance_.updateMatrix(finish->variable_out, finish->variable_in);
948
949 // 3. Roll back flips
950 for (HighsInt var : finish->flipList) {
951 ekk_instance_.flipBound(var);
952 }
953
954 // 4. Roll back cost
955 ekk_instance_.info_.workShift_[finish->variable_in] = 0;
956 ekk_instance_.info_.workShift_[finish->variable_out] = finish->shiftOut;
957
958 // 5. The iteration count
959 ekk_instance_.iteration_count_--;
960 }
961}
962
963bool HEkkDual::checkNonUnitWeightError(std::string message) const {
964 bool error_found = false;

Callers

nothing calls this directly

Calls 2

updateMatrixMethod · 0.80
flipBoundMethod · 0.80

Tested by

no test coverage detected