Skip to content

Commit

Permalink
Updated FEATURES.md and docs/src/options/definitions.md
Browse files Browse the repository at this point in the history
  • Loading branch information
jajhall committed Jan 9, 2025
1 parent b6a528e commit f1d72f3
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 16 deletions.
5 changes: 5 additions & 0 deletions FEATURES.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,9 @@ Added basis solve methods to highspy

Added methods to get primal/dual ray and dual unboundedness direction to highspy

When a presolved LP has model status kUnknown, rather than returning this to the user, it performs postsolve and then uses the basis to solve the original LP

Fixed bug in presolve when pointers stored in HighsMatrixSlice get invalidated when the coefficient matrix is reallocated (e.g. when non-zeros are added in HPresolve::addToMatrix)

Primal and dual residual tolerances - applied following IPM or PDLP solution - now documented as options

2 changes: 1 addition & 1 deletion app/RunHighs.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ int main(int argc, char** argv) {
// call this first so that printHighsVersionCopyright uses reporting
// settings defined in any options file.
highs.passOptions(loaded_options);
// highs.writeOptions("Options.md");
highs.writeOptions("Options.md");

// Load the model from model_file
HighsStatus read_status = highs.readModel(model_file);
Expand Down
30 changes: 29 additions & 1 deletion docs/src/options/definitions.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,18 @@
- Range: [1e-12, inf]
- Default: 1e-08

## primal\_residual\_tolerance
- Primal residual tolerance
- Type: double
- Range: [1e-10, inf]
- Default: 1e-07

## dual\_residual\_tolerance
- Dual residual tolerance
- Type: double
- Range: [1e-10, inf]
- Default: 1e-07

## objective\_bound
- Objective bound for termination of the dual simplex solver
- Type: double
Expand Down Expand Up @@ -198,6 +210,16 @@
- Type: boolean
- Default: "false"

## write\_presolved\_model\_file
- Write presolved model file
- Type: string
- Default: ""

## write\_presolved\_model\_to\_file
- Write the presolved model to a file
- Type: boolean
- Default: "false"

## mip\_detect\_symmetry
- Whether MIP symmetry should be detected
- Type: boolean
Expand All @@ -220,6 +242,12 @@
- Range: {0, 2147483647}
- Default: 2147483647

## mip\_max\_start\_nodes
- MIP solver max number of nodes when completing a partial MIP start
- Type: integer
- Range: {0, 2147483647}
- Default: 500

## mip\_improving\_solution\_save
- Whether improving MIP solutions should be saved
- Type: boolean
Expand Down Expand Up @@ -354,7 +382,7 @@
- Default: 4000

## blend\_multi\_objectives
- Blend multiple objectives or apply lexicographically
- Blend multiple objectives or apply lexicographically: Default = true
- Type: boolean
- Default: "true"

28 changes: 14 additions & 14 deletions src/lp_data/HighsOptions.h
Original file line number Diff line number Diff line change
Expand Up @@ -299,6 +299,8 @@ struct HighsOptionsStruct {
double primal_feasibility_tolerance;
double dual_feasibility_tolerance;
double ipm_optimality_tolerance;
double primal_residual_tolerance;
double dual_residual_tolerance;
double objective_bound;
double objective_target;
HighsInt threads;
Expand Down Expand Up @@ -390,8 +392,6 @@ struct HighsOptionsStruct {
bool less_infeasible_DSE_choose_row;
bool use_original_HFactor_logic;
bool run_centring;
double primal_residual_tolerance;
double dual_residual_tolerance;
HighsInt max_centring_steps;
double centring_ratio_tolerance;

Expand Down Expand Up @@ -452,6 +452,8 @@ struct HighsOptionsStruct {
primal_feasibility_tolerance(0.0),
dual_feasibility_tolerance(0.0),
ipm_optimality_tolerance(0.0),
primal_residual_tolerance(0.0),
dual_residual_tolerance(0.0),
objective_bound(0.0),
objective_target(0.0),
threads(0),
Expand Down Expand Up @@ -528,8 +530,6 @@ struct HighsOptionsStruct {
less_infeasible_DSE_choose_row(false),
use_original_HFactor_logic(false),
run_centring(false),
primal_residual_tolerance(0.0),
dual_residual_tolerance(0.0),
max_centring_steps(0),
centring_ratio_tolerance(0.0),
icrash(false),
Expand Down Expand Up @@ -707,6 +707,16 @@ class HighsOptions : public HighsOptionsStruct {
&ipm_optimality_tolerance, 1e-12, 1e-8, kHighsInf);
records.push_back(record_double);

record_double = new OptionRecordDouble(
"primal_residual_tolerance", "Primal residual tolerance", advanced,
&primal_residual_tolerance, 1e-10, 1e-7, kHighsInf);
records.push_back(record_double);

record_double = new OptionRecordDouble(
"dual_residual_tolerance", "Dual residual tolerance", advanced,
&dual_residual_tolerance, 1e-10, 1e-7, kHighsInf);
records.push_back(record_double);

record_double = new OptionRecordDouble(
"objective_bound",
"Objective bound for termination of the dual simplex solver", advanced,
Expand Down Expand Up @@ -1399,16 +1409,6 @@ class HighsOptions : public HighsOptionsStruct {
advanced, &centring_ratio_tolerance, 0, 100, kHighsInf);
records.push_back(record_double);

record_double = new OptionRecordDouble(
"primal_residual_tolerance", "Primal residual tolerance", advanced,
&primal_residual_tolerance, 1e-10, 1e-7, kHighsInf);
records.push_back(record_double);

record_double = new OptionRecordDouble(
"dual_residual_tolerance", "Dual residual tolerance", advanced,
&dual_residual_tolerance, 1e-10, 1e-7, kHighsInf);
records.push_back(record_double);

// Set up the log_options aliases
log_options.clear();
log_options.log_stream =
Expand Down

0 comments on commit f1d72f3

Please sign in to comment.