| 1735 | } |
| 1736 | |
| 1737 | void HEkkDual::improveChooseColumnRow(HVector* row_ep) { |
| 1738 | HighsLp& lp = ekk_instance_.lp_; |
| 1739 | const bool debug_price_report_on = false; |
| 1740 | HighsInt debug_price_report = kDebugReportOff; |
| 1741 | bool debug_rows_report = false; |
| 1742 | if (ekk_instance_.debug_iteration_report_) { |
| 1743 | if (debug_price_report_on) debug_price_report = kDebugReportAll; |
| 1744 | debug_rows_report = debug_price_report_on; |
| 1745 | if (debug_price_report != kDebugReportOff) |
| 1746 | printf("HEkkDual::chooseColumn Check iter = %d\n", |
| 1747 | (int)ekk_instance_.iteration_count_); |
| 1748 | } |
| 1749 | |
| 1750 | analysis->simplexTimerStart(Chuzc5Clock); |
| 1751 | dualRow.deleteFreemove(); |
| 1752 | analysis->simplexTimerStop(Chuzc5Clock); |
| 1753 | |
| 1754 | if (debug_rows_report) |
| 1755 | ekk_instance_.simplex_nla_.reportArray("Row e_p.0", lp.num_col_, row_ep, |
| 1756 | true); |
| 1757 | ekk_instance_.unitBtranIterativeRefinement(row_out, *row_ep); |
| 1758 | if (debug_rows_report) |
| 1759 | ekk_instance_.simplex_nla_.reportArray("Row e_p.1", lp.num_col_, row_ep, |
| 1760 | true); |
| 1761 | |
| 1762 | const bool quad_precision = true; |
| 1763 | ekk_instance_.tableauRowPrice(quad_precision, *row_ep, row_ap, |
| 1764 | debug_price_report); |
| 1765 | if (debug_rows_report) { |
| 1766 | ekk_instance_.simplex_nla_.reportArray("Row a_p", 0, &row_ap, true); |
| 1767 | ekk_instance_.simplex_nla_.reportArray("Row e_p", lp.num_col_, row_ep, |
| 1768 | true); |
| 1769 | } |
| 1770 | analysis->simplexTimerStart(Chuzc0Clock); |
| 1771 | dualRow.clear(); |
| 1772 | dualRow.workDelta = delta_primal; |
| 1773 | dualRow.createFreemove(row_ep); |
| 1774 | analysis->simplexTimerStop(Chuzc0Clock); |
| 1775 | // |
| 1776 | // Section 1: Pack row_ap and row_ep |
| 1777 | analysis->simplexTimerStart(Chuzc1Clock); |
| 1778 | // Pack row_ap into the packIndex/Value of HEkkDualRow |
| 1779 | dualRow.chooseMakepack(&row_ap, 0); |
| 1780 | // Pack row_ep into the packIndex/Value of HEkkDualRow |
| 1781 | dualRow.chooseMakepack(row_ep, solver_num_col); |
| 1782 | analysis->simplexTimerStop(Chuzc1Clock); |
| 1783 | } |
| 1784 | |
| 1785 | void HEkkDual::chooseColumnSlice(HVector* row_ep) { |
| 1786 | // Choose the index of a column to enter the basis (CHUZC) by |
nothing calls this directly
no test coverage detected