| 1593 | } |
| 1594 | |
| 1595 | void HEkk::initialiseForSolve() { |
| 1596 | const HighsStatus return_status = initialiseSimplexLpBasisAndFactor(); |
| 1597 | assert(return_status == HighsStatus::kOk); |
| 1598 | assert(status_.has_basis); |
| 1599 | |
| 1600 | updateSimplexOptions(); |
| 1601 | initialiseSimplexLpRandomVectors(); |
| 1602 | initialisePartitionedRowwiseMatrix(); // Timed |
| 1603 | allocateWorkAndBaseArrays(); |
| 1604 | initialiseCost(SimplexAlgorithm::kPrimal, kSolvePhaseUnknown, false); |
| 1605 | initialiseBound(SimplexAlgorithm::kPrimal, kSolvePhaseUnknown, false); |
| 1606 | initialiseNonbasicValueAndMove(); |
| 1607 | computePrimal(); // Timed |
| 1608 | computeDual(); // Timed |
| 1609 | computeSimplexInfeasible(); // Timed |
| 1610 | computeDualObjectiveValue(); // Timed |
| 1611 | computePrimalObjectiveValue(); // Timed |
| 1612 | status_.initialised_for_solve = true; |
| 1613 | |
| 1614 | bool primal_feasible = info_.num_primal_infeasibilities == 0; |
| 1615 | bool dual_feasible = info_.num_dual_infeasibilities == 0; |
| 1616 | visited_basis_.clear(); |
| 1617 | visited_basis_.insert(basis_.hash); |
| 1618 | model_status_ = HighsModelStatus::kNotset; |
| 1619 | if (primal_feasible && dual_feasible) |
| 1620 | model_status_ = HighsModelStatus::kOptimal; |
| 1621 | } |
| 1622 | |
| 1623 | void HEkk::setSimplexOptions() { |
| 1624 | // Copy values of HighsOptions for the simplex solver |
nothing calls this directly
no test coverage detected