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

Method improveChooseColumnRow

highs/simplex/HEkkDual.cpp:1737–1783  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1735}
1736
1737void 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
1785void HEkkDual::chooseColumnSlice(HVector* row_ep) {
1786 // Choose the index of a column to enter the basis (CHUZC) by

Callers

nothing calls this directly

Calls 9

simplexTimerStartMethod · 0.80
deleteFreemoveMethod · 0.80
simplexTimerStopMethod · 0.80
reportArrayMethod · 0.80
tableauRowPriceMethod · 0.80
createFreemoveMethod · 0.80
chooseMakepackMethod · 0.80
clearMethod · 0.45

Tested by

no test coverage detected