| 78 | } |
| 79 | |
| 80 | void HEkkDualRow::choosePossible() { |
| 81 | /** |
| 82 | * Determine the possible variables - candidates for CHUZC |
| 83 | * TODO: Check with Qi what this is doing |
| 84 | */ |
| 85 | const double Ta = ekk_instance_.info_.update_count < 10 ? 1e-9 |
| 86 | : ekk_instance_.info_.update_count < 20 ? 3e-8 |
| 87 | : 1e-6; |
| 88 | const double Td = ekk_instance_.options_->dual_feasibility_tolerance; |
| 89 | const HighsInt move_out = workDelta < 0 ? -1 : 1; |
| 90 | workTheta = kHighsInf; |
| 91 | workCount = 0; |
| 92 | |
| 93 | for (HighsInt i = 0; i < packCount; i++) { |
| 94 | const HighsInt iCol = packIndex[i]; |
| 95 | const HighsInt move = workMove[iCol]; |
| 96 | const double alpha = packValue[i] * move_out * move; |
| 97 | if (alpha > Ta) { |
| 98 | workData[workCount++] = make_pair(iCol, alpha); |
| 99 | const double relax = workDual[iCol] * move + Td; |
| 100 | if (workTheta * alpha > relax) workTheta = relax / alpha; |
| 101 | } |
| 102 | } |
| 103 | } |
| 104 | |
| 105 | void HEkkDualRow::chooseJoinpack(const HEkkDualRow* otherRow) { |
| 106 | /** |
no outgoing calls
no test coverage detected