Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 0 additions & 16 deletions highs/lp_data/HighsOptions.h
Original file line number Diff line number Diff line change
Expand Up @@ -438,9 +438,7 @@ struct HighsOptionsStruct {
HighsInt presolve_rule_off;
bool presolve_rule_logging;
bool presolve_remove_slacks;
bool simplex_initial_condition_check;
bool no_unnecessary_rebuild_refactor;
double simplex_initial_condition_tolerance;
double rebuild_refactor_solution_error_tolerance;
double dual_steepest_edge_weight_error_tolerance;
double dual_steepest_edge_weight_log_error_threshold;
Expand Down Expand Up @@ -605,9 +603,7 @@ struct HighsOptionsStruct {
presolve_rule_off(0),
presolve_rule_logging(false),
presolve_remove_slacks(false),
simplex_initial_condition_check(false),
no_unnecessary_rebuild_refactor(false),
simplex_initial_condition_tolerance(0.0),
rebuild_refactor_solution_error_tolerance(0.0),
dual_steepest_edge_weight_error_tolerance(0.0),
dual_steepest_edge_weight_log_error_threshold(0.0),
Expand Down Expand Up @@ -1523,24 +1519,12 @@ class HighsOptions : public HighsOptionsStruct {
kSimplexUnscaledSolutionStrategyMax);
records.push_back(record_int);

record_bool =
new OptionRecordBool("simplex_initial_condition_check",
"Perform initial basis condition check in simplex",
advanced, &simplex_initial_condition_check, true);
records.push_back(record_bool);

record_bool = new OptionRecordBool(
"no_unnecessary_rebuild_refactor",
"No unnecessary refactorization on simplex rebuild", advanced,
&no_unnecessary_rebuild_refactor, true);
records.push_back(record_bool);

record_double = new OptionRecordDouble(
"simplex_initial_condition_tolerance",
"Tolerance on initial basis condition in simplex", advanced,
&simplex_initial_condition_tolerance, 1.0, 1e14, kHighsInf);
records.push_back(record_double);

record_double = new OptionRecordDouble(
"rebuild_refactor_solution_error_tolerance",
"Tolerance on solution error when considering refactorization on "
Expand Down
3 changes: 0 additions & 3 deletions highs/mip/HighsMipSolverData.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -940,9 +940,6 @@ void HighsMipSolverData::runSetup() {
domain.clearChangedCols();

lp.getLpSolver().setOptionValue("presolve", kHighsOffString);
// lp.getLpSolver().setOptionValue("dual_simplex_cost_perturbation_multiplier",
// 0.0); lp.getLpSolver().setOptionValue("parallel", kHighsOnString);
lp.getLpSolver().setOptionValue("simplex_initial_condition_check", false);

checkObjIntegrality();
rootlpsol.clear();
Expand Down
19 changes: 12 additions & 7 deletions highs/simplex/HEkk.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1723,13 +1723,18 @@ void HEkk::chooseSimplexStrategyThreads(const HighsOptions& options,
const HighsInt simplex_max_concurrency = options.simplex_max_concurrency;
HighsInt max_threads = highs::parallel::num_threads();

if (options.parallel == kHighsOnString &&
simplex_strategy == kSimplexStrategyDual) {
// The parallel strategy is on and the simplex strategy is dual so use
// PAMI if there are enough threads
if (max_threads >= kDualMultiMinConcurrency)
simplex_strategy = kSimplexStrategyDualMulti;
}
// Don't allow the parallel option to switch from
// kSimplexStrategyDual to kSimplexStrategyDualMulti so the MIP
// solver only ever uses serial simplex
//
// if (options.parallel == kHighsOnString &&
// simplex_strategy == kSimplexStrategyDual) {
// // The parallel strategy is on and the simplex strategy is dual so use
// // PAMI if there are enough threads
// if (max_threads >= kDualMultiMinConcurrency)
// simplex_strategy = kSimplexStrategyDualMulti;
// }

//
// If parallel strategies are used, the minimum concurrency will be
// set to be at least the minimum required for the strategy
Expand Down
Loading