Added int64_t mip_total_lp_iterations
to HighsCallbackDataOut
and modified accessor function
Highs::writeSolution
and Highs::writeBasis
now being done via HighsIO
logging, so can be redirected to logging callback.
Introduced const double kHighsUndefined
as value of undefined values in a user solution. It's equal to kHighsInf
Added Highs::setSolution(const HighsInt num_entries, const HighsInt* index, const double* value);
to allow a sparse primal solution to be defined. When a MIP is solved to do this, the value of (new) option mip_max_start_nodes
is used for mip_max_nodes
to avoid excessive cost
Added options write_presolved_model_to_file
and write_presolved_model_file
so that presolved model can be written via a command line option
Added Highs::feasibilityRelaxation
to solve the problem of minimizing a (possibly weighted) sum of (allowable) infeasibilities in an LP/MIP.
Added Python utility examples/plot_highs_log.py
(due to @Thell) to visualise progress of the MIP solver.
Added minimal documentation of solvers and how simplex variants can be run
Methods receiving matrix data where only small values are explicit zeros (so removed internally) are now silent and return HighsStatus::kOk
(since internal matrix is exact)
Now multiplying by pre-computed reciprocals rather than performing divisions in loops in simplex solver: LP performance improvement ~2.5%
Primal and dual residuals after IPM and cuPDLP-C are checked, and corrections applied to row solution and column duals
Highs::passModelName
added to allow name to be given to the incumbent model
Memory leaks in cuPDLP-C fixed
Bug fixed in MIP presolve