ERGO-Code / HiGHS

Linear optimization software
MIT License
940 stars 174 forks source link

Support for HiGHS in Spine and HiGHS.jl #660

Closed DillonJ closed 2 years ago

DillonJ commented 2 years ago

Hello everyone, from the Spine Project!

As part of the Spine project (https://github.com/Spine-project), we have developed an open source framework for energy systems modelling. It consits of two main elements, one is a workflow and data management toolbox that is useful for defining, managing, manipulating and visualising the data needed for and produced by any kind of model. We call this Spine Toolbox (https://github.com/Spine-project/Spine-Toolbox). The second is a flexible energy systems model that has been specifically designed from the ground up to better address the modelling challenges of the energy transition (e.g. flexible stochastics, temporal structures, co-optimised short-term and long-term decisions, sector coupling, new technologies). We call this modelling system SpineOpt (https://github.com/Spine-project/SpineOpt.jl). It's a modelling system implemented in Julia. To make the link with the SpineToolbox data, we developed a very powerful Julia package called SpineInterface.jl (https://github.com/Spine-project/SpineInterface.jl) that cleverly uses metaprogramming to give you access to your objects and data within Julia to make parameterising and efficient updating of models incredibly easy.

Anyway - all of this needs solvers and I have been working on testing HiGHS on some of my SpineOpt models which are generally MIP models. The results so far are really encouraging. We are super excited by the potential of HiGHS and the possibility of finally having a performant solver to compliment what we have done in Spine. I'd really like to congratulate you all on what you've managed to achieve so far!

One thing we found we needed was to be able to set a termination mip_gap the equivalent of CPX_PARAM_EPGAP in CPLEX. @lgottwald very kindly implemented this feature in https://github.com/ERGO-Code/HiGHS/pull/647.

We are using HiGHS through HiGHS.jl (https://github.com/jump-dev/HiGHS.jl) and I was discussing with the kind folk there, the process of getting support for the latest master. In https://github.com/jump-dev/HiGHS.jl/issues/75 I am informed, that quite reasonably, the intention is to support tagged releases of HiGHS in HiGHS.jl. So, I am wondering if it would be possible, in the near future, to tag a release so we can access recent developments?

As pointed out to me in https://github.com/jump-dev/HiGHS.jl/issues/75 another option I have is to use custom binaries. I have tried to complile the latest master in windows using CodeBlocks MinGW and Cmake but I am getting compilation errors for some of the build targets. I am wondering where I might get some help either resolving these or accessing the latest binaries?

Many thanks in advance.

DillonJ commented 2 years ago

Regarding compilation - the following seem to have compiled correctly - is this sufficient?

libbasiclu.dll libhighs.dll libipx.dll

The other build targets failed. Here is the build log. I would be very grateful if someone can provide any insights into what I'm doing wrong.

||=== Build: all in HIGHS (compiler: GNU GCC Compiler) ===|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\basiclu_kernel.cc||In member function 'virtual void ipx::BasicLuKernel::_Factorize(ipx::Int, const Int*, const Int*, const Int*, const double*, double, bool, ipx::SparseMatrix*, ipx::SparseMatrix*, std::vector<int>*, std::vector<int>*, std::vector<int>*)':|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\basiclu_kernel.cc|65|warning: unused variable 'num_dropped' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\basiclu_wrapper.cc||In member function 'virtual void ipx::BasicLu::_GetFactors(ipx::SparseMatrix*, ipx::SparseMatrix*, ipx::Int*, ipx::Int*, std::vector<int>*)':|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\basiclu_wrapper.cc|110|warning: unused variable 'num_dropped' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\basis.cc||In member function 'void ipx::Basis::SetToSlackBasis()':|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\basis.cc|74|warning: unused variable 'err' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\basis.cc||In member function 'void ipx::Basis::ConstructBasisFromWeights(const double*, ipx::Info*)':|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\basis.cc|355|warning: unused variable 'm' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\basis.cc|356|warning: unused variable 'n' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\basis.cc||In member function 'void ipx::Basis::CrashBasis(const double*)':|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\basis.cc|524|warning: comparison of integer expressions of different signedness: 'ipx::Int' {aka 'int'} and 'std::vector<int>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\basis.cc|509|warning: unused variable 'm' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\crossover.cc||In member function 'void ipx::Crossover::PushAll(ipx::Basis*, ipx::Vector&, ipx::Vector&, ipx::Vector&, const double*, ipx::Info*)':|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\crossover.cc|30|warning: comparison of integer expressions of different signedness: 'ipx::Int' {aka 'int'} and 'std::vector<int>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\crossover.cc||In member function 'void ipx::Crossover::PushPrimal(ipx::Basis*, ipx::Vector&, const std::vector<int>&, const bool*, ipx::Info*)':|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\crossover.cc|114|warning: comparison of integer expressions of different signedness: 'ipx::Int' {aka 'int'} and 'std::vector<int>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\crossover.cc||In member function 'void ipx::Crossover::PushDual(ipx::Basis*, ipx::Vector&, ipx::Vector&, const std::vector<int>&, const int*, ipx::Info*)':|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\crossover.cc|251|warning: comparison of integer expressions of different signedness: 'ipx::Int' {aka 'int'} and 'std::vector<int>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\crossover.cc||In member function 'void ipx::Crossover::PushDual(ipx::Basis*, ipx::Vector&, ipx::Vector&, const std::vector<int>&, const Vector&, ipx::Info*)':|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\crossover.cc|347|warning: comparison of integer expressions of different signedness: 'ipx::Int' {aka 'int'} and 'std::vector<int>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\forrest_tomlin.cc||In member function 'void ipx::ForrestTomlin::ComputeSpike(ipx::Int, const Int*, const double*)':|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\forrest_tomlin.cc|319|warning: unused variable 'nz' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\forrest_tomlin.cc||In member function 'void ipx::ForrestTomlin::ComputeEta(ipx::Int)':|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\forrest_tomlin.cc|351|warning: unused variable 'nz' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\guess_basis.cc||In function 'void ipx::ProcessRemaining(const ipx::Control&, const ipx::Model&, const double*, std::vector<int>*, ipx::Int*, int*)':|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\guess_basis.cc|188|warning: comparison of integer expressions of different signedness: 'ipx::Int' {aka 'int'} and 'std::vector<int>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\ipm.cc||In member function 'void ipx::IPM::StepSizes(const ipx::IPM::Step&)':|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\ipm.cc|359|warning: unused variable 'mu' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\iterate.cc||In member function 'void ipx::Iterate::ResidualsFromDropping(double*, double*) const':|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\iterate.cc|405|warning: enumeration value 'FREE' not handled in switch [-Wswitch]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\iterate.cc|405|warning: enumeration value 'FIXED' not handled in switch [-Wswitch]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\iterate.cc|405|warning: enumeration value 'IMPLIED_LB' not handled in switch [-Wswitch]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\iterate.cc|405|warning: enumeration value 'IMPLIED_UB' not handled in switch [-Wswitch]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\iterate.cc|405|warning: enumeration value 'IMPLIED_EQ' not handled in switch [-Wswitch]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\iterate.cc||In member function 'void ipx::Iterate::assert_consistency()':|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\iterate.cc|447|warning: unused variable 'lb' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\iterate.cc|448|warning: unused variable 'ub' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\lp_solver.cc||In member function 'void ipx::LpSolver::RunCrossover()':|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\lp_solver.cc|579|warning: comparison of integer expressions of different signedness: 'ipx::Int' {aka 'int'} and 'std::vector<int>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\model.cc||In member function 'void ipx::Model::PresolveStartingPoint(const double*, const double*, const double*, const double*, ipx::Vector&, ipx::Vector&, ipx::Vector&) const':|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\model.cc|109|warning: unused variable 'm' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\model.cc|110|warning: unused variable 'n' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\model.cc||In member function 'void ipx::Model::PostsolveInteriorSolution(const Vector&, const Vector&, const Vector&, const Vector&, const Vector&, const Vector&, double*, double*, double*, double*, double*, double*, double*) const':|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\model.cc|221|warning: unused variable 'm' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\model.cc|222|warning: unused variable 'n' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\model.cc||In member function 'void ipx::Model::EvaluateInteriorSolution(const Vector&, const Vector&, const Vector&, const Vector&, const Vector&, const Vector&, ipx::Info*) const':|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\model.cc|265|warning: unused variable 'm' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\model.cc|266|warning: unused variable 'n' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\model.cc||In member function 'void ipx::Model::PostsolveBasicSolution(const Vector&, const Vector&, const Vector&, const std::vector<int>&, double*, double*, double*, double*) const':|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\model.cc|362|warning: unused variable 'm' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\model.cc|363|warning: unused variable 'n' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\model.cc||In member function 'void ipx::Model::EvaluateBasicSolution(const Vector&, const Vector&, const Vector&, const std::vector<int>&, ipx::Info*) const':|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\model.cc|396|warning: unused variable 'm' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\model.cc|397|warning: unused variable 'n' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\model.cc||In member function 'void ipx::Model::PostsolveBasis(const std::vector<int>&, ipx::Int*, ipx::Int*) const':|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\model.cc|456|warning: unused variable 'm' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\model.cc|457|warning: unused variable 'n' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\model.cc||In member function 'void ipx::Model::DualizeBasicSolution(const Vector&, const Vector&, const Vector&, const Vector&, ipx::Vector&, ipx::Vector&, ipx::Vector&) const':|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\model.cc|1060|warning: comparison of integer expressions of different signedness: 'ipx::Int' {aka 'int'} and 'std::vector<int>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\model.cc|1070|warning: comparison of integer expressions of different signedness: 'ipx::Int' {aka 'int'} and 'std::vector<int>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\model.cc||In member function 'void ipx::Model::DualizeBackBasicSolution(const Vector&, const Vector&, const Vector&, ipx::Vector&, ipx::Vector&, ipx::Vector&, ipx::Vector&) const':|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\model.cc|1308|warning: unused variable 'm' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\model.cc||In member function 'void ipx::Model::DualizeBackBasis(const std::vector<int>&, std::vector<int>&, std::vector<int>&) const':|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\model.cc|1338|warning: unused variable 'm' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\model.cc||In function 'double ipx::PrimalInfeasibility(const ipx::Model&, const Vector&)':|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\model.cc|1432|warning: comparison of integer expressions of different signedness: 'ipx::Int' {aka 'int'} and 'std::size_t' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\model.cc||In function 'double ipx::DualInfeasibility(const ipx::Model&, const Vector&, const Vector&)':|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\model.cc|1447|warning: comparison of integer expressions of different signedness: 'ipx::Int' {aka 'int'} and 'std::size_t' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\model.cc||In function 'double ipx::PrimalResidual(const ipx::Model&, const Vector&)':|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\model.cc|1462|warning: comparison of integer expressions of different signedness: 'ipx::Int' {aka 'int'} and 'std::size_t' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\model.cc||In function 'double ipx::DualResidual(const ipx::Model&, const Vector&, const Vector&)':|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\model.cc|1476|warning: comparison of integer expressions of different signedness: 'ipx::Int' {aka 'int'} and 'std::size_t' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\sparse_matrix.cc||In function 'void ipx::MultiplyAdd(const ipx::SparseMatrix&, const Vector&, double, ipx::Vector&, char)':|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\sparse_matrix.cc|195|warning: unused variable 'm' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\sparse_matrix.cc||In function 'void ipx::AddNormalProduct(const ipx::SparseMatrix&, const double*, const Vector&, ipx::Vector&)':|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\sparse_matrix.cc|212|warning: unused variable 'm' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\splitted_normal_matrix.cc||In member function 'void ipx::SplittedNormalMatrix::Prepare(const ipx::Basis&, const double*)':|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\splitted_normal_matrix.cc|48|warning: comparison of integer expressions of different signedness: 'ipx::Int' {aka 'int'} and 'std::vector<int>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\starting_basis.cc||In function 'void ipx::PostprocessDependencies(ipx::Iterate*, ipx::Basis*, ipx::Info*)':|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\starting_basis.cc|60|warning: unused variable 'zl' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\starting_basis.cc|61|warning: unused variable 'zu' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\symbolic_invert.cc||In function 'std::vector<int> ipx::Matching(const ipx::Model&, const std::vector<int>&)':|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\symbolic_invert.cc|35|warning: unused variable 'matched' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\symbolic_invert.cc|44|warning: unused variable 'matched' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\utils.cc||In function 'double ipx::Dot(const Vector&, const Vector&)':|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\utils.cc|41|warning: comparison of integer expressions of different signedness: 'ipx::Int' {aka 'int'} and 'std::size_t' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\utils.cc||In function 'ipx::Int ipx::FindMaxAbs(const Vector&)':|
C:\Workspace\Spine\HiGHS\src\ipm\ipx\src\utils.cc|49|warning: comparison of integer expressions of different signedness: 'ipx::Int' {aka 'int'} and 'std::size_t' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\io\FilereaderLp.cpp||In member function 'virtual FilereaderRetcode FilereaderLp::readModelFromFile(const HighsOptions&, std::__cxx11::string, HighsModel&)':|
C:\Workspace\Spine\HiGHS\src\io\FilereaderLp.cpp|59|warning: comparison of integer expressions of different signedness: 'HighsInt' {aka 'int'} and 'std::vector<std::shared_ptr<Variable> >::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\io\HMPSIO.cpp||In function 'HighsStatus writeMps(const HighsLogOptions&, std::__cxx11::string, std::__cxx11::string, const HighsInt&, const HighsInt&, const HighsInt&, const ObjSense&, const double&, const std::vector<double>&, const std::vector<double>&, const std::vector<double>&, const std::vector<double>&, const std::vector<double>&, const std::vector<int>&, const std::vector<int>&, const std::vector<double>&, const std::vector<int>&, const std::vector<int>&, const std::vector<double>&, const std::vector<HighsVarType|
C:\Workspace\Spine\HiGHS\src\io\HMPSIO.cpp|890|warning: unused variable 'hessian_num_nz' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\io\HMPSIO.cpp||In function 'FilereaderRetcode readMps(const HighsLogOptions&, std::__cxx11::string, HighsInt, HighsInt, HighsInt&, HighsInt&, ObjSense&, double&, std::vector<int>&, std::vector<int>&, std::vector<double>&, std::vector<double>&, std::vector<double>&, std::vector<double>&, std::vector<double>&, std::vector<double>&, std::vector<HighsVarType>&, std::vector<std::__cxx11::basic_string<char> >&, std::vector<std::__cxx11::basic_string<char> >&, HighsInt&, std::vector<int>&, std::vector<int>&, std::vector<double>|
C:\Workspace\Spine\HiGHS\src\io\HMPSIO.cpp|385|warning: 'has_diagonal' may be used uninitialized in this function [-Wmaybe-uninitialized]|
C:\Workspace\Spine\HiGHS\src\io\HMpsFF.cpp||In member function 'free_format_parser::HMpsFF::Parsekey free_format_parser::HMpsFF::parseHessian(const HighsLogOptions&, std::ifstream&, free_format_parser::HMpsFF::Parsekey)':|
C:\Workspace\Spine\HiGHS\src\io\HMpsFF.cpp|1310|warning: unused variable 'start' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\io\HMpsFF.cpp|1310|warning: unused variable 'end' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\io\HMpsFF.cpp|1311|warning: unused variable 'coeff' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\parallel\HighsTaskExecutor.h|139|warning: comparison of integer expressions of different signedness: 'long int' and 'std::vector<std::unique_ptr<HighsSplitDeque, highs::cache_aligned::Deleter> >::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\lp_data\Highs.cpp||In member function 'HighsStatus Highs::getReducedRow(HighsInt, double*, HighsInt*, HighsInt*, const double*)':|
C:\Workspace\Spine\HiGHS\src\lp_data\Highs.cpp|1300|warning: unused variable 'return_status' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\lp_data\Highs.cpp||In member function 'HighsStatus Highs::getReducedColumn(HighsInt, double*, HighsInt*, HighsInt*)':|
C:\Workspace\Spine\HiGHS\src\lp_data\Highs.cpp|1355|warning: unused variable 'return_status' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\lp_data\Highs.cpp||In member function 'HighsStatus Highs::setSolution(const HighsSolution&)':|
C:\Workspace\Spine\HiGHS\src\lp_data\Highs.cpp|1390|warning: comparison of integer expressions of different signedness: 'std::vector<double>::size_type' {aka 'long long unsigned int'} and 'HighsInt' {aka 'int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\lp_data\Highs.cpp|1408|warning: comparison of integer expressions of different signedness: 'std::vector<double>::size_type' {aka 'long long unsigned int'} and 'HighsInt' {aka 'int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\lp_data\Highs.cpp||In member function 'HighsStatus Highs::changeColsIntegrality(HighsInt, const HighsInt*, const HighsVarType*)':|
C:\Workspace\Spine\HiGHS\src\lp_data\Highs.cpp|1618|warning: unused variable 'create_ok' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\lp_data\Highs.cpp||In member function 'HighsStatus Highs::changeColsCost(HighsInt, const HighsInt*, const double*)':|
C:\Workspace\Spine\HiGHS\src\lp_data\Highs.cpp|1680|warning: unused variable 'create_ok' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\lp_data\Highs.cpp||In member function 'HighsStatus Highs::changeColsBounds(HighsInt, const HighsInt*, const double*, const double*)':|
C:\Workspace\Spine\HiGHS\src\lp_data\Highs.cpp|1751|warning: unused variable 'create_ok' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\lp_data\Highs.cpp||In member function 'HighsStatus Highs::changeRowsBounds(HighsInt, const HighsInt*, const double*, const double*)':|
C:\Workspace\Spine\HiGHS\src\lp_data\Highs.cpp|1824|warning: unused variable 'create_ok' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\lp_data\Highs.cpp||In member function 'HighsStatus Highs::callSolveLp(HighsLp&, std::__cxx11::string)':|
C:\Workspace\Spine\HiGHS\src\lp_data\Highs.cpp|2281|warning: unused variable 'call_status' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\lp_data\Highs.cpp||In member function 'HighsStatus Highs::callSolveQp()':|
C:\Workspace\Spine\HiGHS\src\lp_data\Highs.cpp|2340|warning: comparison of integer expressions of different signedness: 'HighsInt' {aka 'int'} and 'std::vector<double>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\lp_data\Highs.cpp||In member function 'HighsStatus Highs::callSolveMip()':|
C:\Workspace\Spine\HiGHS\src\lp_data\Highs.cpp|2450|warning: unused variable 'solver_solution_size' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\lp_data\Highs.cpp|2490|warning: unused variable 'mip_max_infeasibility' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\lp_data\Highs.cpp||In member function 'HighsStatus Highs::returnFromRun(HighsStatus)':|
C:\Workspace\Spine\HiGHS\src\lp_data\Highs.cpp|2734|warning: unused variable 'have_info' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsInfoDebug.cpp||In function 'HighsDebugStatus debugInfo(const HighsOptions&, const HighsLp&, const HighsBasis&, const HighsSolution&, const HighsInfo&, HighsModelStatus)':|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsInfoDebug.cpp|27|warning: unused variable 'have_info' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsInfoDebug.cpp|30|warning: unused variable 'have_basis' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsInterface.cpp||In member function 'HighsStatus Highs::changeIntegralityInterface(HighsIndexCollection&, const HighsVarType*)':|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsInterface.cpp|547|warning: unused variable 'return_status' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsInterface.cpp|548|warning: unused variable 'call_status' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsInterface.cpp||In member function 'HighsStatus Highs::changeColBoundsInterface(HighsIndexCollection&, const double*, const double*)':|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsInterface.cpp|612|warning: unused variable 'call_status' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsInterface.cpp||In member function 'HighsStatus Highs::changeRowBoundsInterface(HighsIndexCollection&, const double*, const double*)':|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsInterface.cpp|656|warning: unused variable 'call_status' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsInterface.cpp||In member function 'HighsStatus Highs::getBasicVariablesInterface(HighsInt*)':|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsInterface.cpp|1009|warning: unused variable 'ekk_lp' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsInterface.cpp||In member function 'HighsStatus Highs::basisSolveInterface(const std::vector<double>&, double*, HighsInt*, HighsInt*, bool)':|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsInterface.cpp|1057|warning: unused variable 'num_col' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsInterface.cpp|1070|warning: unused variable 'scale' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsLp.cpp||In member function 'bool HighsLp::dimensionsOk(std::__cxx11::string) const':|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsLp.cpp|113|warning: unused variable 'col_upper_size' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsLp.cpp|114|warning: unused variable 'matrix_start_size' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsLp.cpp|155|warning: unused variable 'row_upper_size' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsLpUtils.cpp||In function 'void scaleLp(const HighsOptions&, HighsLp&)':|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsLpUtils.cpp|466|warning: unused variable 'allow_cost_scaling' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsLpUtils.cpp||In function 'bool maxValueScaleMatrix(const HighsOptions&, HighsLp&, HighsInt)':|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsLpUtils.cpp|871|warning: unused variable 'simplex_scale_strategy' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsLpUtils.cpp||In function 'void deleteLpCols(HighsLp&, const HighsIndexCollection&)':|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsLpUtils.cpp|1080|warning: unused variable 'call_status' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsLpUtils.cpp||In function 'void deleteLpRows(HighsLp&, const HighsIndexCollection&)':|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsLpUtils.cpp|1129|warning: unused variable 'call_status' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsLpUtils.cpp||In function 'void deleteScale(std::vector<double>&, const HighsIndexCollection&)':|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsLpUtils.cpp|1179|warning: unused variable 'return_status' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsLpUtils.cpp||In function 'HighsStatus readSolutionFile(std::__cxx11::string, const HighsOptions&, const HighsLp&, HighsBasis&, HighsSolution&, HighsInt)':|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsLpUtils.cpp|1728|warning: unused variable 'status' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsLpUtils.cpp||In function 'void checkLpSolutionFeasibility(const HighsOptions&, const HighsLp&, const HighsSolution&)':|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsLpUtils.cpp|1824|warning: unused variable 'integer_infeasibility' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsLpUtils.cpp||In function 'void removeRowsOfCountOne(const HighsLogOptions&, HighsLp&)':|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsLpUtils.cpp|2334|warning: unused variable 'original_num_nz' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsLpUtils.cpp|2335|warning: unused variable 'original_num_row' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsRanging.cpp||In function 'HighsStatus getRangingData(HighsRanging&, HighsLpSolverObject&)':|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsRanging.cpp|231|warning: unused variable 'numerator' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsRanging.cpp|95|warning: unused variable 'col_scale' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsRanging.cpp|96|warning: unused variable 'row_scale' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsSolution.cpp||In function 'void getVariableKktFailures(double, double, double, double, double, double, HighsBasisStatus*, double&, double&, double&)':|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsSolution.cpp|329|warning: unused variable 'middle' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsSolution.cpp||In function 'HighsStatus ipxSolutionToHighsSolution(const HighsOptions&, const HighsLp&, const std::vector<double>&, const std::vector<char>&, HighsInt, HighsInt, const std::vector<double>&, const std::vector<double>&, const std::vector<double>&, const std::vector<double>&, const std::vector<double>&, HighsModelStatus, HighsSolution&)':|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsSolution.cpp|486|warning: unused variable 'lower' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsSolution.cpp|487|warning: unused variable 'upper' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsSolution.cpp|560|warning: unused variable 'residual' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsSolve.cpp||In function 'HighsStatus solveLp(HighsLpSolverObject&, std::__cxx11::string)':|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsSolve.cpp|57|warning: unused variable 'imprecise_solution' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsSolve.cpp||In function 'HighsStatus solveUnconstrainedLp(const HighsOptions&, const HighsLp&, HighsModelStatus&, HighsInfo&, HighsSolution&, HighsBasis&)':|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsSolve.cpp|177|warning: unused variable 'infeasible' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsSolve.cpp|178|warning: unused variable 'unbounded' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsOptions.cpp||In function 'void highsOpenLogFile(HighsLogOptions&, std::vector<OptionRecord*>&, std::__cxx11::string)':|
C:\Workspace\Spine\HiGHS\src\lp_data\HighsOptions.cpp|26|warning: unused variable 'status' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.h||In member function 'HighsMatrixColoring::u32 HighsMatrixColoring::color(double)':|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.h|46|warning: unused variable 'color' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.h||In member function 'HighsMatrixColoring::u32 HighsMatrixColoring::color(double)':|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.h|46|warning: unused variable 'color' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\mip\HighsMipSolverData.cpp||In member function 'void HighsMipSolverData::runSetup()':|
C:\Workspace\Spine\HiGHS\src\mip\HighsMipSolverData.cpp|352|warning: enumeration value 'kSemiContinuous' not handled in switch [-Wswitch]|
C:\Workspace\Spine\HiGHS\src\mip\HighsMipSolverData.cpp|352|warning: enumeration value 'kSemiInteger' not handled in switch [-Wswitch]|
C:\Workspace\Spine\HiGHS\src\mip\HighsMipSolverData.cpp||In member function 'void HighsMipSolverData::evaluateRootNode()':|
C:\Workspace\Spine\HiGHS\src\mip\HighsMipSolverData.cpp|1215|warning: unused variable 'oldLimit' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.h||In member function 'HighsMatrixColoring::u32 HighsMatrixColoring::color(double)':|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.h|46|warning: unused variable 'color' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\mip\HighsDomain.cpp||In member function 'void HighsDomain::ConflictPoolPropagation::conflictAdded(HighsInt)':|
C:\Workspace\Spine\HiGHS\src\mip\HighsDomain.cpp|155|warning: unused variable 'col' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\mip\HighsDomain.cpp||In member function 'void HighsDomain::ConflictPoolPropagation::updateActivityLbChange(HighsInt, double, double)':|
C:\Workspace\Spine\HiGHS\src\mip\HighsDomain.cpp|236|warning: unused variable 'conflictEntries' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\mip\HighsDomain.cpp||In member function 'void HighsDomain::ConflictPoolPropagation::updateActivityUbChange(HighsInt, double, double)':|
C:\Workspace\Spine\HiGHS\src\mip\HighsDomain.cpp|257|warning: unused variable 'conflictEntries' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\mip\HighsDomain.cpp||In member function 'void HighsDomain::ConflictPoolPropagation::propagateConflict(HighsInt)':|
C:\Workspace\Spine\HiGHS\src\mip\HighsDomain.cpp|296|warning: unused variable 'latestactive' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\mip\HighsDomain.cpp||In member function 'void HighsDomain::setDomainChangeStack(const std::vector<HighsDomainChange>&, const std::vector<int>&)':|
C:\Workspace\Spine\HiGHS\src\mip\HighsDomain.cpp|1528|warning: unused variable 'nextBranchPos' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\mip\HighsDomain.cpp||In member function 'bool HighsDomain::ConflictSet::explainInfeasibility()':|
C:\Workspace\Spine\HiGHS\src\mip\HighsDomain.cpp|2197|warning: unused variable 'ub' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\mip\HighsDomain.cpp|2202|warning: unused variable 'lb' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\mip\HighsDomain.cpp||In member function 'HighsInt HighsDomain::ConflictSet::resolveDepth(std::set<int>&, HighsInt, HighsInt, HighsInt, bool)':|
C:\Workspace\Spine\HiGHS\src\mip\HighsDomain.cpp|2737|warning: comparison of integer expressions of different signedness: 'HighsInt' {aka 'int'} and 'std::vector<int>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\mip\HighsDomain.cpp||In member function 'HighsInt HighsDomain::ConflictSet::computeCuts(HighsInt, HighsConflictPool&)':|
C:\Workspace\Spine\HiGHS\src\mip\HighsDomain.cpp|2777|warning: comparison of integer expressions of different signedness: 'HighsInt' {aka 'int'} and 'std::vector<int>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.h||In member function 'HighsMatrixColoring::u32 HighsMatrixColoring::color(double)':|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.h|46|warning: unused variable 'color' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\mip\HighsLpRelaxation.cpp||In member function 'void HighsLpRelaxation::performAging(bool)':|
C:\Workspace\Spine\HiGHS\src\mip\HighsLpRelaxation.cpp|352|warning: unused variable 'st' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\mip\HighsLpRelaxation.cpp|362|warning: comparison of integer expressions of different signedness: 'HighsInt' {aka 'int'} and 'size_t' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.h||In member function 'HighsMatrixColoring::u32 HighsMatrixColoring::color(double)':|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.h|46|warning: unused variable 'color' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.h||In member function 'HighsMatrixColoring::u32 HighsMatrixColoring::color(double)':|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.h|46|warning: unused variable 'color' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\mip\HighsTableauSeparator.cpp||In member function 'virtual void HighsTableauSeparator::separateLpSolution(HighsLpRelaxation&, HighsLpAggregator&, HighsTransformedLp&, HighsCutPool&)':|
C:\Workspace\Spine\HiGHS\src\mip\HighsTableauSeparator.cpp|122|warning: unused variable 'numCuts' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.h||In member function 'HighsMatrixColoring::u32 HighsMatrixColoring::color(double)':|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.h|46|warning: unused variable 'color' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.h||In member function 'HighsMatrixColoring::u32 HighsMatrixColoring::color(double)':|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.h|46|warning: unused variable 'color' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.h||In member function 'HighsMatrixColoring::u32 HighsMatrixColoring::color(double)':|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.h|46|warning: unused variable 'color' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\mip\HighsCutGeneration.cpp||In member function 'bool HighsCutGeneration::determineCover(bool)':|
C:\Workspace\Spine\HiGHS\src\mip\HighsCutGeneration.cpp|63|warning: unused variable 'nodequeue' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.h||In member function 'HighsMatrixColoring::u32 HighsMatrixColoring::color(double)':|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.h|46|warning: unused variable 'color' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\mip\HighsSearch.cpp||In member function 'void HighsSearch::openNodesToQueue(HighsNodeQueue&)':|
C:\Workspace\Spine\HiGHS\src\mip\HighsSearch.cpp|856|warning: comparison of integer expressions of different signedness: 'std::vector<HighsBasisStatus>::size_type' {aka 'long long unsigned int'} and 'HighsInt' {aka 'int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\mip\HighsSearch.cpp||In member function 'void HighsSearch::installNode(HighsNodeQueue::OpenNode&&)':|
C:\Workspace\Spine\HiGHS\src\mip\HighsSearch.cpp|916|warning: unused variable 'branchpos' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\mip\HighsSearch.cpp||In member function 'bool HighsSearch::backtrackUntilDepth(HighsInt)':|
C:\Workspace\Spine\HiGHS\src\mip\HighsSearch.cpp|1757|warning: comparison of integer expressions of different signedness: 'std::vector<HighsBasisStatus>::size_type' {aka 'long long unsigned int'} and 'const HighsInt' {aka 'const int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.h||In member function 'HighsMatrixColoring::u32 HighsMatrixColoring::color(double)':|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.h|46|warning: unused variable 'color' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.h||In member function 'HighsMatrixColoring::u32 HighsMatrixColoring::color(double)':|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.h|46|warning: unused variable 'color' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\mip\HighsCliqueTable.cpp||In member function 'void HighsCliqueTable::processInfeasibleVertices(HighsDomain&)':|
C:\Workspace\Spine\HiGHS\src\mip\HighsCliqueTable.cpp|1580|warning: unused variable 'initSize' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\mip\HighsCliqueTable.cpp||In member function 'void HighsCliqueTable::addImplications(HighsDomain&, HighsInt, HighsInt)':|
C:\Workspace\Spine\HiGHS\src\mip\HighsCliqueTable.cpp|1805|warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long long unsigned int'} and 'HighsInt' {aka 'int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\mip\HighsCliqueTable.cpp||In member function 'void HighsCliqueTable::runCliqueMerging(HighsDomain&)':|
C:\Workspace\Spine\HiGHS\src\mip\HighsCliqueTable.cpp|2160|warning: comparison of integer expressions of different signedness: 'HighsInt' {aka 'int'} and 'std::vector<HighsCliqueTable::CliqueVar>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.h||In member function 'HighsMatrixColoring::u32 HighsMatrixColoring::color(double)':|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.h|46|warning: unused variable 'color' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.h||In member function 'HighsMatrixColoring::u32 HighsMatrixColoring::color(double)':|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.h|46|warning: unused variable 'color' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.h||In member function 'HighsMatrixColoring::u32 HighsMatrixColoring::color(double)':|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.h|46|warning: unused variable 'color' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\mip\HighsPrimalHeuristics.cpp||In member function 'void HighsPrimalHeuristics::RINS(const std::vector<double>&)':|
C:\Workspace\Spine\HiGHS\src\mip\HighsPrimalHeuristics.cpp|625|warning: unused variable 'oldNumBranched' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.h||In member function 'HighsMatrixColoring::u32 HighsMatrixColoring::color(double)':|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.h|46|warning: unused variable 'color' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.h||In member function 'HighsMatrixColoring::u32 HighsMatrixColoring::color(double)':|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.h|46|warning: unused variable 'color' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.h||In member function 'HighsMatrixColoring::u32 HighsMatrixColoring::color(double)':|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.h|46|warning: unused variable 'color' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\model\HighsHessianUtils.cpp||In function 'HighsStatus extractTriangularHessian(const HighsOptions&, HighsHessian&)':|
C:\Workspace\Spine\HiGHS\src\model\HighsHessianUtils.cpp|228|warning: unused variable 'diagonal_value' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\model\HighsHessianUtils.cpp||In function 'void triangularToSquareHessian(const HighsHessian&, std::vector<int>&, std::vector<int>&, std::vector<double>&)':|
C:\Workspace\Spine\HiGHS\src\model\HighsHessianUtils.cpp|278|warning: unused variable 'iRow' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\parallel\HighsTaskExecutor.h|139|warning: comparison of integer expressions of different signedness: 'long int' and 'std::vector<std::unique_ptr<HighsSplitDeque, highs::cache_aligned::Deleter> >::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\presolve\ICrashX.cpp||In function 'bool callCrossover(const HighsLp&, const HighsOptions&, HighsSolution&, HighsBasis&)':|
C:\Workspace\Spine\HiGHS\src\presolve\ICrashX.cpp|72|warning: comparison of integer expressions of different signedness: 'std::vector<double>::size_type' {aka 'long long unsigned int'} and 'ipx::Int' {aka 'int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\presolve\ICrashX.cpp|73|warning: comparison of integer expressions of different signedness: 'std::vector<double>::size_type' {aka 'long long unsigned int'} and 'ipx::Int' {aka 'int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\presolve\HighsPostsolveStack.cpp||In member function 'void presolve::HighsPostsolveStack::DuplicateColumn::undo(const HighsOptions&, HighsSolution&, HighsBasis&)':|
C:\Workspace\Spine\HiGHS\src\presolve\HighsPostsolveStack.cpp|560|warning: enumeration value 'kBasic' not handled in switch [-Wswitch]|
C:\Workspace\Spine\HiGHS\src\presolve\HighsPostsolveStack.cpp|560|warning: enumeration value 'kNonbasic' not handled in switch [-Wswitch]|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.h||In member function 'HighsMatrixColoring::u32 HighsMatrixColoring::color(double)':|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.h|46|warning: unused variable 'color' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.cpp|43|warning: unused variable 'oldCellStart' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.cpp||In member function 'std::shared_ptr<const StabilizerOrbits> HighsSymmetries::computeStabilizerOrbits(const HighsDomain&)':|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.cpp|180|warning: unused variable 'prevBounds' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.cpp||In member function 'HighsInt StabilizerOrbits::orbitalFixing(HighsDomain&) const':|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.cpp|302|warning: comparison of integer expressions of different signedness: 'std::vector<HighsDomainChange>::size_type' {aka 'long long unsigned int'} and 'HighsInt' {aka 'int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.cpp|277|warning: unused variable 'fixVal' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.cpp|266|warning: unused variable 'containsNonBin' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.cpp||In member function 'bool HighsSymmetryDetection::updateCellMembership(HighsInt, HighsInt, bool)':|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.cpp|815|warning: unused variable 'oldCellStart' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.cpp||In member function 'bool HighsSymmetryDetection::splitCell(HighsInt, HighsInt)':|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.cpp|850|warning: comparison of integer expressions of different signedness: 'HighsInt' {aka 'int'} and 'std::vector<unsigned int>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.cpp|853|warning: comparison of integer expressions of different signedness: 'HighsInt' {aka 'int'} and 'std::vector<unsigned int>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.cpp|859|warning: comparison of integer expressions of different signedness: 'HighsInt' {aka 'int'} and 'std::vector<unsigned int>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.cpp|860|warning: comparison of integer expressions of different signedness: 'HighsInt' {aka 'int'} and 'std::vector<unsigned int>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.cpp|861|warning: comparison of integer expressions of different signedness: 'HighsInt' {aka 'int'} and 'std::vector<unsigned int>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.cpp||In member function 'HighsSymmetryDetection::ComponentData HighsSymmetryDetection::computeComponentData(const HighsSymmetries&)':|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.cpp|1493|warning: unused variable 'numComponents' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.cpp||In member function 'bool HighsSymmetryDetection::isFullOrbitope(const HighsSymmetryDetection::ComponentData&, HighsInt, HighsSymmetries&)':|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.cpp|1568|warning: unused variable 'orbitopeIndex' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.cpp||In member function 'void HighsSymmetryDetection::run(HighsSymmetries&)':|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.cpp|1703|warning: comparison of integer expressions of different signedness: 'HighsInt' {aka 'int'} and 'std::vector<unsigned int>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.cpp|1704|warning: comparison of integer expressions of different signedness: 'HighsInt' {aka 'int'} and 'std::vector<unsigned int>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.cpp|1705|warning: comparison of integer expressions of different signedness: 'HighsInt' {aka 'int'} and 'std::vector<unsigned int>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.cpp|1732|warning: comparison of integer expressions of different signedness: 'HighsInt' {aka 'int'} and 'std::vector<unsigned int>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.cpp|1759|warning: comparison of integer expressions of different signedness: 'HighsInt' {aka 'int'} and 'std::vector<unsigned int>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.cpp|1797|warning: unused variable 'success' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.h||In member function 'HighsMatrixColoring::u32 HighsMatrixColoring::color(double)':|
C:\Workspace\Spine\HiGHS\src\presolve\HighsSymmetry.h|46|warning: unused variable 'color' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\qpsolver\basis.cpp||In constructor 'Basis::Basis(Runtime&, std::vector<int>, std::vector<BasisStatus>, std::vector<int>)':|
C:\Workspace\Spine\HiGHS\src\qpsolver\basis.cpp|12|warning: comparison of integer expressions of different signedness: 'HighsInt' {aka 'int'} and 'std::vector<int>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\qpsolver\basis.cpp||In member function 'Vector& Basis::Ztprod(const Vector&, Vector&, bool, HighsInt)':|
C:\Workspace\Spine\HiGHS\src\qpsolver\basis.cpp|274|warning: comparison of integer expressions of different signedness: 'HighsInt' {aka 'int'} and 'std::vector<int>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\qpsolver\dantzigpricing.hpp||In member function 'HighsInt DantzigPricing::chooseconstrainttodrop(const Vector&)':|
C:\Workspace\Spine\HiGHS\src\qpsolver\dantzigpricing.hpp|23|warning: comparison of integer expressions of different signedness: 'HighsInt' {aka 'int'} and 'std::vector<int>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\qpsolver\devexharrispricing.hpp||In member function 'HighsInt DevexHarrisPricing::chooseconstrainttodrop(const Vector&)':|
C:\Workspace\Spine\HiGHS\src\qpsolver\devexharrispricing.hpp|23|warning: comparison of integer expressions of different signedness: 'HighsInt' {aka 'int'} and 'std::vector<int>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\qpsolver\devexpricing.hpp||In member function 'HighsInt DevexPricing::chooseconstrainttodrop(const Vector&)':|
C:\Workspace\Spine\HiGHS\src\qpsolver\devexpricing.hpp|25|warning: comparison of integer expressions of different signedness: 'HighsInt' {aka 'int'} and 'std::vector<int>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\qpsolver\feasibility_highs.hpp||In function 'void computestartingpoint(Runtime&, CrashSolution*&)':|
C:\Workspace\Spine\HiGHS\src\qpsolver\feasibility_highs.hpp|64|warning: comparison of integer expressions of different signedness: 'HighsInt' {aka 'int'} and 'std::vector<HighsBasisStatus>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\qpsolver\feasibility_highs.hpp|79|warning: comparison of integer expressions of different signedness: 'HighsInt' {aka 'int'} and 'std::vector<HighsBasisStatus>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\qpsolver\steepestedgepricing.hpp||In member function 'HighsInt SteepestEdgePricing::chooseconstrainttodrop(const Vector&)':|
C:\Workspace\Spine\HiGHS\src\qpsolver\steepestedgepricing.hpp|23|warning: comparison of integer expressions of different signedness: 'HighsInt' {aka 'int'} and 'std::vector<int>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\qpsolver\solver.cpp||In function 'void tidyup(Vector&, Vector&, Basis&, Runtime&)':|
C:\Workspace\Spine\HiGHS\src\qpsolver\solver.cpp|51|warning: comparison of integer expressions of different signedness: 'unsigned int' and 'HighsInt' {aka 'int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\qpsolver\solver.cpp||In member function 'void Solver::solve(const Vector&, const Vector&, Basis&)':|
C:\Workspace\Spine\HiGHS\src\qpsolver\solver.cpp|251|warning: unused variable 'denominator' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\parallel\HighsTaskExecutor.h|139|warning: comparison of integer expressions of different signedness: 'long int' and 'std::vector<std::unique_ptr<HighsSplitDeque, highs::cache_aligned::Deleter> >::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\simplex\HEkk.cpp||In member function 'HighsStatus HEkk::dualise()':|
C:\Workspace\Spine\HiGHS\src\simplex\HEkk.cpp|621|warning: unused variable 'lower' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\simplex\HEkk.cpp|679|warning: comparison of integer expressions of different signedness: 'HighsInt' {aka 'int'} and 'std::vector<int>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\simplex\HEkk.cpp|697|warning: comparison of integer expressions of different signedness: 'HighsInt' {aka 'int'} and 'std::vector<int>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\simplex\HEkk.cpp||In member function 'HighsStatus HEkk::undualise()':|
C:\Workspace\Spine\HiGHS\src\simplex\HEkk.cpp|805|warning: unused variable 'cost' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\simplex\HEkk.cpp|772|warning: unused variable 'dual_work_dual' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\simplex\HEkk.cpp|773|warning: unused variable 'primal_work_value' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\simplex\HEkk.cpp|785|warning: unused variable 'inf' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\simplex\HEkk.cpp||In member function 'HighsStatus HEkk::setBasis()':|
C:\Workspace\Spine\HiGHS\src\simplex\HEkk.cpp|1201|warning: unused variable 'num_tot' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\simplex\HEkk.cpp||In member function 'HighsStatus HEkk::setBasis(const HighsBasis&)':|
C:\Workspace\Spine\HiGHS\src\simplex\HEkk.cpp|1267|warning: unused variable 'num_tot' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\simplex\HEkk.cpp||In member function 'void HEkk::handleRankDeficiency()':|
C:\Workspace\Spine\HiGHS\src\simplex\HEkk.cpp|1636|warning: unused variable 'col_with_no_pivot' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\simplex\HEkk.cpp||In member function 'void HEkk::initialiseForSolve()':|
C:\Workspace\Spine\HiGHS\src\simplex\HEkk.cpp|1687|warning: unused variable 'return_status' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\simplex\HEkk.cpp||In member function 'void HEkk::initialiseCost(SimplexAlgorithm, HighsInt, bool)':|
C:\Workspace\Spine\HiGHS\src\simplex\HEkk.cpp|2392|warning: unused variable 'previous_cost' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\simplex\HEkk.cpp||In member function 'double HEkk::factorSolveError()':|
C:\Workspace\Spine\HiGHS\src\simplex\HEkk.cpp|3860|warning: comparison of integer expressions of different signedness: 'HighsInt' {aka 'int'} and 'std::vector<double>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\simplex\HEkk.cpp|3864|warning: comparison of integer expressions of different signedness: 'HighsInt' {aka 'int'} and 'std::vector<double>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\simplex\HEkk.cpp|3887|warning: comparison of integer expressions of different signedness: 'HighsInt' {aka 'int'} and 'std::vector<double>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\simplex\HEkk.cpp|3892|warning: comparison of integer expressions of different signedness: 'HighsInt' {aka 'int'} and 'std::vector<double>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\simplex\HEkkPrimal.cpp||In member function 'void HEkkPrimal::rebuild()':|
C:\Workspace\Spine\HiGHS\src\simplex\HEkkPrimal.cpp|681|warning: unused variable 'correct_primal_ok' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\simplex\HEkkPrimal.cpp||In member function 'void HEkkPrimal::chuzc()':|
C:\Workspace\Spine\HiGHS\src\simplex\HEkkPrimal.cpp|880|warning: unused variable 'measure_error' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\simplex\HEkkPrimal.cpp||In member function 'void HEkkPrimal::getBasicPrimalInfeasibility()':|
C:\Workspace\Spine\HiGHS\src\simplex\HEkkPrimal.cpp|2503|warning: unused variable 'num_primal_infeasibility_ok' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\parallel\HighsTaskExecutor.h|139|warning: comparison of integer expressions of different signedness: 'long int' and 'std::vector<std::unique_ptr<HighsSplitDeque, highs::cache_aligned::Deleter> >::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\simplex\HEkkDual.cpp||In member function 'void HEkkDual::initSlice(HighsInt)':|
C:\Workspace\Spine\HiGHS\src\simplex\HEkkDual.cpp|506|warning: unused variable 'Aindex' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\simplex\HEkkDual.cpp|507|warning: unused variable 'Avalue' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\simplex\HEkkDual.cpp||In member function 'void HEkkDual::shiftBack(HighsInt)':|
C:\Workspace\Spine\HiGHS\src\simplex\HEkkDual.cpp|2236|warning: unused variable 'shift' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\simplex\HEkkDual.cpp||In member function 'void HEkkDual::assessPhase1Optimality()':|
C:\Workspace\Spine\HiGHS\src\simplex\HEkkDual.cpp|2381|warning: unused variable 'model_status' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\simplex\HEkkDualRow.cpp||In member function 'bool HEkkDualRow::chooseFinalWorkGroupHeap()':|
C:\Workspace\Spine\HiGHS\src\simplex\HEkkDualRow.cpp|490|warning: unused variable 'alt_workGroup_size' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\simplex\HEkkDualRow.cpp||In member function 'HighsInt HEkkDualRow::debugChooseColumnInfeasibilities() const':|
C:\Workspace\Spine\HiGHS\src\simplex\HEkkDualRow.cpp|670|warning: unused variable 'delta' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\simplex\HEkkDualRow.cpp|661|warning: unused variable 'move_out' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\parallel\HighsTaskExecutor.h|139|warning: comparison of integer expressions of different signedness: 'long int' and 'std::vector<std::unique_ptr<HighsSplitDeque, highs::cache_aligned::Deleter> >::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\parallel\HighsTaskExecutor.h|139|warning: comparison of integer expressions of different signedness: 'long int' and 'std::vector<std::unique_ptr<HighsSplitDeque, highs::cache_aligned::Deleter> >::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\parallel\HighsTaskExecutor.h|139|warning: comparison of integer expressions of different signedness: 'long int' and 'std::vector<std::unique_ptr<HighsSplitDeque, highs::cache_aligned::Deleter> >::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\simplex\HSimplexNla.cpp||In member function 'void HSimplexNla::applyBasisMatrixRowScale(HVector&) const':|
C:\Workspace\Spine\HiGHS\src\simplex\HSimplexNla.cpp|213|warning: unused variable 'col_scale' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\simplex\HSimplexNla.cpp||In member function 'void HSimplexNla::reportVector(std::__cxx11::string, HighsInt, std::vector<double>, std::vector<int>, bool) const':|
C:\Workspace\Spine\HiGHS\src\simplex\HSimplexNla.cpp|318|warning: unused variable 'num_row' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\simplex\HSimplexNla.cpp||In member function 'void HSimplexNla::reportPackValue(std::__cxx11::string, const HVector*, bool) const':|
C:\Workspace\Spine\HiGHS\src\simplex\HSimplexNla.cpp|366|warning: unused variable 'num_row' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\simplex\HSimplexNlaDebug.cpp||In member function 'HighsDebugStatus HSimplexNla::debugCheckInvert(std::__cxx11::string, HighsInt) const':|
C:\Workspace\Spine\HiGHS\src\simplex\HSimplexNlaDebug.cpp|144|warning: unused variable 'report_level' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\simplex\HSimplexNlaDebug.cpp||In member function 'HighsDebugStatus HSimplexNla::debugReportInvertSolutionError(bool, const HVector&, const HVector&, HVector&, bool) const':|
C:\Workspace\Spine\HiGHS\src\simplex\HSimplexNlaDebug.cpp|315|warning: unused variable 'options' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\simplex\HSimplexNlaFreeze.cpp||In member function 'void HSimplexNla::frozenBasisClearAllUpdate()':|
C:\Workspace\Spine\HiGHS\src\simplex\HSimplexNlaFreeze.cpp|47|warning: comparison of integer expressions of different signedness: 'HighsInt' {aka 'int'} and 'std::vector<FrozenBasis>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\simplex\HSimplexNlaFreeze.cpp||In member function 'bool HSimplexNla::frozenBasisIdValid(HighsInt) const':|
C:\Workspace\Spine\HiGHS\src\simplex\HSimplexNlaFreeze.cpp|54|warning: comparison of integer expressions of different signedness: 'const HighsInt' {aka 'const int'} and 'std::vector<FrozenBasis>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\util\HFactor.cpp||In member function 'void HFactor::buildHandleRankDeficiency()':|
C:\Workspace\Spine\HiGHS\src\util\HFactor.cpp|1144|warning: unused variable 'basic_index_rank_deficiency' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\util\HFactor.cpp||In member function 'void HFactor::buildMarkSingC()':|
C:\Workspace\Spine\HiGHS\src\util\HFactor.cpp|1237|warning: unused variable 'basic_index_rank_deficiency' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\util\HFactorExtend.cpp||In member function 'void HFactor::addRows(const HighsSparseMatrix*)':|
C:\Workspace\Spine\HiGHS\src\util\HFactorExtend.cpp|51|warning: unused variable 'iVar' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\util\HFactorRefactor.cpp||In member function 'HighsInt HFactor::rebuild(HighsTimerClock*)':|
C:\Workspace\Spine\HiGHS\src\util\HFactorRefactor.cpp|82|warning: unused variable 'count' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\util\HFactorRefactor.cpp|228|warning: unused variable 'pivot_type' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\util\HFactorUtils.cpp||In member function 'void HFactor::reportLu(HighsInt, bool) const':|
C:\Workspace\Spine\HiGHS\src\util\HFactorUtils.cpp|56|warning: comparison of integer expressions of different signedness: 'HighsInt' {aka 'int'} and 'std::vector<int>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\util\HighsMatrixUtils.cpp||In function 'HighsStatus assessMatrix(const HighsLogOptions&, std::__cxx11::string, HighsInt, HighsInt, bool, std::vector<int>&, std::vector<int>&, std::vector<int>&, std::vector<double>&, double, double)':|
C:\Workspace\Spine\HiGHS\src\util\HighsMatrixUtils.cpp|85|warning: unused variable 'next_start' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\util\HighsMatrixUtils.cpp||In function 'HighsStatus assessMatrixDimensions(HighsInt, bool, const std::vector<int>&, const std::vector<int>&, const std::vector<int>&, const std::vector<double>&)':|
C:\Workspace\Spine\HiGHS\src\util\HighsMatrixUtils.cpp|291|warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long long unsigned int'} and 'int' [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\util\HighsMatrixUtils.cpp|293|warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long long unsigned int'} and 'int' [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\util\HighsMatrixUtils.cpp|302|warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long long unsigned int'} and 'HighsInt' {aka 'int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\util\HighsMatrixUtils.cpp|302|warning: comparison of integer expressions of different signedness: 'std::vector<double>::size_type' {aka 'long long unsigned int'} and 'HighsInt' {aka 'int'} [-Wsign-compare]|
C:\Workspace\Spine\HiGHS\src\util\HighsSparseMatrix.cpp||In member function 'void HighsSparseMatrix::ensureRowwise()':|
C:\Workspace\Spine\HiGHS\src\util\HighsSparseMatrix.cpp|158|warning: unused variable 'empty_matrix' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\util\HighsSparseMatrix.cpp||In member function 'void HighsSparseMatrix::addCols(HighsSparseMatrix, const int8_t*)':|
C:\Workspace\Spine\HiGHS\src\util\HighsSparseMatrix.cpp|263|warning: unused variable 'num_row' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\util\HighsSparseMatrix.cpp||In member function 'void HighsSparseMatrix::createSlice(const HighsSparseMatrix&, HighsInt, HighsInt)':|
C:\Workspace\Spine\HiGHS\src\util\HighsSparseMatrix.cpp|837|warning: unused variable 'num_col' [-Wunused-variable]|
C:\Workspace\Spine\HiGHS\src\util\HighsSparseMatrix.cpp|839|warning: unused variable 'num_nz' [-Wunused-variable]|
CMakeFiles\highs.dir\objects.a(RunHighs.cpp.obj)RunHighs.cpp|| undefined reference to `highsLogUser(HighsLogOptions const&, HighsLogType, char const*, ...)'|
CMakeFiles\highs.dir\objects.a(RunHighs.cpp.obj)RunHighs.cpp|| undefined reference to `HighsSparseMatrix::numNz() const'|
CMakeFiles\highs.dir\objects.a(RunHighs.cpp.obj)RunHighs.cpp|| undefined reference to `HighsHessian::numNz() const'|
CMakeFiles\highs.dir\objects.a(RunHighs.cpp.obj)RunHighs.cpp|| undefined reference to `highsLogDev(HighsLogOptions const&, HighsLogType, char const*, ...)'|
CMakeFiles\highs.dir\objects.a(RunHighs.cpp.obj)RunHighs.cpp|| undefined reference to `highsLogDev(HighsLogOptions const&, HighsLogType, char const*, ...)'|
CMakeFiles\highs.dir\objects.a(RunHighs.cpp.obj)RunHighs.cpp|| undefined reference to `highsLogDev(HighsLogOptions const&, HighsLogType, char const*, ...)'|
CMakeFiles\highs.dir\objects.a(RunHighs.cpp.obj)RunHighs.cpp|| undefined reference to `highsLogDev(HighsLogOptions const&, HighsLogType, char const*, ...)'|
CMakeFiles\highs.dir\objects.a(RunHighs.cpp.obj)RunHighs.cpp|| undefined reference to `highsLogDev(HighsLogOptions const&, HighsLogType, char const*, ...)'|
CMakeFiles\highs.dir\objects.a(RunHighs.cpp.obj)RunHighs.cpp|| undefined reference to `highsLogUser(HighsLogOptions const&, HighsLogType, char const*, ...)'|
CMakeFiles\highs.dir\objects.a(RunHighs.cpp.obj)RunHighs.cpp|| undefined reference to `highsLogUser(HighsLogOptions const&, HighsLogType, char const*, ...)'|
CMakeFiles\highs.dir\objects.a(RunHighs.cpp.obj)RunHighs.cpp|| undefined reference to `highsLogUser(HighsLogOptions const&, HighsLogType, char const*, ...)'|
CMakeFiles\highs.dir\objects.a(RunHighs.cpp.obj)RunHighs.cpp|| undefined reference to `highsLogUser(HighsLogOptions const&, HighsLogType, char const*, ...)'|
CMakeFiles\highs.dir\objects.a(RunHighs.cpp.obj)RunHighs.cpp|| undefined reference to `highsLogUser(HighsLogOptions const&, HighsLogType, char const*, ...)'|
CMakeFiles\highs.dir\objects.a(RunHighs.cpp.obj)RunHighs.cpp|| more undefined references to `highsLogUser(HighsLogOptions const&, HighsLogType, char const*, ...)' follow|
CMakeFiles\highs.dir\objects.a(RunHighs.cpp.obj)RunHighs.cpp|| undefined reference to `highsLogDev(HighsLogOptions const&, HighsLogType, char const*, ...)'|
CMakeFiles\highs.dir\objects.a(RunHighs.cpp.obj)RunHighs.cpp|| undefined reference to `highsLogDev(HighsLogOptions const&, HighsLogType, char const*, ...)'|
CMakeFiles\highs.dir\objects.a(RunHighs.cpp.obj)RunHighs.cpp|| undefined reference to `highsLogDev(HighsLogOptions const&, HighsLogType, char const*, ...)'|
CMakeFiles\highs.dir\objects.a(RunHighs.cpp.obj)RunHighs.cpp|| undefined reference to `highsLogDev(HighsLogOptions const&, HighsLogType, char const*, ...)'|
CMakeFiles\highs.dir\objects.a(RunHighs.cpp.obj)RunHighs.cpp|| undefined reference to `trim(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'|
CMakeFiles\highs.dir\objects.a(RunHighs.cpp.obj)RunHighs.cpp|| undefined reference to `setLocalOptionValue(HighsLogOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, HighsLogOptions&, std::vector<OptionRecord*, std::allocator<OptionRecord*> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'|
CMakeFiles\highs.dir\objects.a(RunHighs.cpp.obj)RunHighs.cpp|| undefined reference to `setLocalOptionValue(HighsLogOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, HighsLogOptions&, std::vector<OptionRecord*, std::allocator<OptionRecord*> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'|
CMakeFiles\highs.dir\objects.a(RunHighs.cpp.obj)RunHighs.cpp|| undefined reference to `setLocalOptionValue(HighsLogOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, HighsLogOptions&, std::vector<OptionRecord*, std::allocator<OptionRecord*> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'|
CMakeFiles\highs.dir\objects.a(RunHighs.cpp.obj)RunHighs.cpp|| undefined reference to `setLocalOptionValue(HighsLogOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<OptionRecord*, std::allocator<OptionRecord*> >&, double)'|
CMakeFiles\highs.dir\objects.a(RunHighs.cpp.obj)RunHighs.cpp|| undefined reference to `loadOptionsFromFile(HighsLogOptions const&, HighsOptions&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'|
CMakeFiles\highs.dir\objects.a(RunHighs.cpp.obj)RunHighs.cpp|| undefined reference to `setLocalOptionValue(HighsLogOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, HighsLogOptions&, std::vector<OptionRecord*, std::allocator<OptionRecord*> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'|
CMakeFiles\highs.dir\objects.a(RunHighs.cpp.obj)RunHighs.cpp|| undefined reference to `setLocalOptionValue(HighsLogOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<OptionRecord*, std::allocator<OptionRecord*> >&, bool)'|
CMakeFiles\highs.dir\objects.a(RunHighs.cpp.obj)RunHighs.cpp|| undefined reference to `setLocalOptionValue(HighsLogOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<OptionRecord*, std::allocator<OptionRecord*> >&, int)'|
CMakeFiles\highs.dir\objects.a(RunHighs.cpp.obj)RunHighs.cpp|| undefined reference to `setLocalOptionValue(HighsLogOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, HighsLogOptions&, std::vector<OptionRecord*, std::allocator<OptionRecord*> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'|
CMakeFiles\highs.dir\objects.a(RunHighs.cpp.obj)RunHighs.cpp|| undefined reference to `highsLogUser(HighsLogOptions const&, HighsLogType, char const*, ...)'|
CMakeFiles\highs.dir\objects.a(RunHighs.cpp.obj)RunHighs.cpp|| undefined reference to `highsLogUser(HighsLogOptions const&, HighsLogType, char const*, ...)'|
CMakeFiles\highs.dir\objects.a(RunHighs.cpp.obj)RunHighs.cpp:(.text.startup+0x30)||undefined reference to `Highs::Highs()'|
CMakeFiles\highs.dir\objects.a(RunHighs.cpp.obj)RunHighs.cpp:(.text.startup+0x157)||undefined reference to `HighsOptions::setLogOptions()'|
CMakeFiles\highs.dir\objects.a(RunHighs.cpp.obj)RunHighs.cpp:(.text.startup+0x1a4)||undefined reference to `Highs::passOptions(HighsOptions const&)'|
CMakeFiles\highs.dir\objects.a(RunHighs.cpp.obj)RunHighs.cpp:(.text.startup+0x1de)||undefined reference to `Highs::readModel(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'|
CMakeFiles\highs.dir\objects.a(RunHighs.cpp.obj)RunHighs.cpp:(.text.startup+0x21c)||undefined reference to `Highs::run()'|
CMakeFiles\highs.dir\objects.a(RunHighs.cpp.obj)RunHighs.cpp:(.text.startup+0x2b2)||undefined reference to `Highs::openLogFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'|
CMakeFiles\highs.dir\objects.a(RunHighs.cpp.obj)RunHighs.cpp:(.text.startup+0x31b)||undefined reference to `Highs::writeSolution(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int)'|
CMakeFiles\highs.dir\objects.a(RunHighs.cpp.obj)RunHighs.cpp:(.text.startup+0x33f)||undefined reference to `Highs::getRanging()'|
CMakeFiles\highs.dir\objects.a(RunHighs.cpp.obj)RunHighs.cpp:(.rdata$.refptr._ZTV17PresolveComponent[.refptr._ZTV17PresolveComponent]+0x0)||undefined reference to `vtable for PresolveComponent'|
.\||error: ld returned 1 exit status|
 [app\CMakeFiles\highs.dir\build.make|102|bin/highs.exe] Error 1|
 [CMakeFiles\Makefile2|169|app/CMakeFiles/highs.dir/all] Error 2|
 [C:\Workspace\Spine\HiGHS\build\Makefile|165|all] Error 2|
||=== Build failed: 43 error(s), 236 warning(s) (2 minute(s), 55 second(s)) ===|
mckib2 commented 2 years ago

xref: https://github.com/ERGO-Code/HiGHS/issues/625

MinGW has issues, but using MSVC works

DillonJ commented 2 years ago

Thanks for that @mckib2 - it looks like it's being worked on?

Regarding a tagged release - what are the team's thoughts on this? Specifically, in relation to the next one and generally, regarding when tagged releases might be expected in the future. This is just so I can determine whether I should invest more effort in compiling and using the binaries myself.

Thanks again.

mckib2 commented 2 years ago

Thanks for that @mckib2 - it looks like it's being worked on?

Looks like it's been assigned, but doesn't hurt to pop in and comment there

Regarding a tagged release - what are the team's thoughts on this?

Another xref: https://github.com/ERGO-Code/HiGHS/issues/595 I have not heard of any expected release schedule, for scipy we pin to specific commits (not necessarily releases) we've tested against and try to do it often. I find that HiGHS HEAD is usually pretty safe and has all the latest bug fixes and improvements

DillonJ commented 2 years ago

Hi folks,

So I've managed to compile the binaries of latest master and solve a SpineOpt model with HiGHS using a mip_gap_limit of 0.05.

The model solves in 333 seconds. For information, the same model solves in CPLEX in 7 seconds.

Edit: Also for information, Cbc takes 1600 seconds to solve the same model.

Some feedback:

Console output is below.

Presolving model
41897 rows, 45762 cols, 112903 nonzeros
27785 rows, 31340 cols, 104477 nonzeros
26240 rows, 21490 cols, 91534 nonzeros
19072 rows, 14327 cols, 60162 nonzeros
15601 rows, 10857 cols, 51537 nonzeros
14827 rows, 10085 cols, 49972 nonzeros

Solving MIP model with:
14827 rows
10085 cols (123 binary, 6 integer, 0 implied int., 9956 continuous)
49972 nonzeros

( 0.2s) Starting symmetry detection
( 0.2s) No symmetry present

Solving root node LP relaxation

Nodes      |    B&B Tree     |            Objective Bounds              |  Dynamic Constraints |       Work
Proc. InQueue |  Leaves   Expl. | BestBound       BestSol              Gap |   Cuts   InLp Confl. | LpIters     Time

0       0         0   0.00%   317354.722645   inf                  inf        0      0      0      9882     2.1s
R       0       0         0   0.00%   317354.722645   87055250.04333    99.64%     1412     28      0      9920     3.0s
0       0         0   0.00%   354508.057075   87055250.04333    99.59%     2292    150      0     10300     8.4s
0       0         0   0.00%   354512.623653   87055250.04333    99.59%     2500    145      0     10483    13.4s
L       0       0         0   0.00%   354639.770291   394923.906047     10.20%     2551     92      0     10587    24.0s
L       0       0         0   0.00%   354675.442445   393988.413247      9.98%     1179     43      0     12051    36.9s
4       0         1  12.50%   354675.442445   393988.413247      9.98%     1182     43      1     37045    74.8s
5       0         2  25.00%   354675.442445   393988.413247      9.98%     1190     43      1     37797    80.4s
T       5       0         2  25.00%   354675.442445   391541.983933      9.42%     1190     43      3     37797   112.5s
B      15       0         3  25.05%   354675.442445   390788.235503      9.24%     1192     43      7     49279   113.2s
B      15       0         3  25.05%   354675.442445   389895.897447      9.03%     1193     43      7     49279   113.6s
B      15       0         3  25.05%   354675.442445   388901.867322      8.80%     1194     43      7     49279   113.9s
B      15       0         3  25.05%   354675.442445   387965.167551      8.58%     1197     43     38     49279   115.0s
B      15       0         3  25.05%   354675.442445   386552.822539      8.25%     1198     43     38     49279   115.4s
B      15       0         3  25.05%   354675.442445   386187.9834        8.16%     1201     43     38     49279   116.5s
B      15       0         3  25.05%   354675.442445   385922.601899      8.10%     1202     43     38     49279   116.8s
16       0         4  25.10%   354675.442445   385922.601899      8.10%     1228     43     69     52255   125.7s
T      16       0         4  25.10%   354675.442445   385678.664449      8.04%     1267     43     79     52255   140.9s
B      19       0         5  25.12%   354675.442445   385550.176343      8.01%     1300     43     79     58973   153.5s
20       0         6  25.15%   354675.442445   385550.176343      8.01%     1328     43     79     67421   161.2s

Nodes      |    B&B Tree     |            Objective Bounds              |  Dynamic Constraints |       Work
Proc. InQueue |  Leaves   Expl. | BestBound       BestSol              Gap |   Cuts   InLp Confl. | LpIters     Time

24       0         8  25.17%   354675.442445   385550.176343      8.01%     1362     43     79     71643   174.1s
26       0         9  25.18%   354675.442445   385550.176343      8.01%     1396     43     83     73132   182.2s
28       0        10  25.19%   354675.442445   385550.176343      8.01%     1422     43     83     75368   190.1s
30       0        11  25.19%   354675.442445   385550.176343      8.01%     1449     43     85     78036   198.8s
51       5        19  25.19%   354675.442445   385550.176343      8.01%     1463     43     85     79329   204.0s
81      10        29  25.19%   354675.442445   385550.176343      8.01%     1473     43     85     80282   209.3s
93      10        35  25.19%   354675.442445   385550.176343      8.01%     1489     43     85     81326   214.6s
B      96      11        37  25.19%   354675.442445   385550.176343      8.01%     1500     43     85     81552   218.2s
97      11        38  25.19%   354675.442445   385550.176343      8.01%     1521     43     85     86612   225.8s
98      12        39  25.19%   354675.442445   385550.176343      8.01%     1543     43     87     91350   234.6s
99      12        40  25.19%   354675.442445   385550.176343      8.01%     1565     43     90     95990   243.3s
B      99      12        40  25.19%   354675.442445   385531.983607      8.00%     1593     43    166     95990   254.6s
108      22        42  28.34%   354675.442445   385531.983607      8.00%     1160     49    167    110697   282.9s
117      22        46  34.01%   354675.442445   385531.983607      8.00%     1167     49    171    112210   292.1s
135      22        52  34.16%   354675.442445   385531.983607      8.00%     1177     49    196    112955   297.4s
149      22        59  34.16%   354675.442445   385531.983607      8.00%     1186     49    196    113418   302.5s
163      22        66  34.16%   354675.442445   385531.983607      8.00%     1196     49    200    114213   307.6s
179      22        74  34.16%   354675.442445   385531.983607      8.00%     1207     49    200    115711   313.2s
193      22        81  34.16%   354675.442445   385531.983607      8.00%     1217     49    229    117114   318.7s

Solving report
Status            Target for objective reached
Primal bound      385531.983607
Dual bound        368152.652709
Solution status   feasible
385531.983607 (objective)
6.4915184339e-11 (bound viol.)
2.9721644363e-16 (int. viol.)
2.05545802601e-10 (row viol.)
Timing            324.11 (total)
0.20 (presolve)
0.00 (postsolve)
Nodes             206
LP iterations     118756 (total)
86113 (strong br.)
806 (separation)
6324 (heuristics)
333.420238 seconds (15.53 M allocations: 921.664 MiB, 0.14% gc time, 0.03% compilation time)
odow commented 2 years ago

What is termination_status(model)? It looks like it might be MOI.OBJECTIVE_LIMIT which would correspond to https://github.com/ERGO-Code/HiGHS/blob/3f4f492660bbd9f0a7253717a4223ae48ef85d32/src/lp_data/HConst.h#L163

I think most solvers regard "optimal" to mean "optimal given the tolerances specified by the user" so this might be worth a change in HiGHS.

odow commented 2 years ago

The model solves in 333 seconds. For information, the same model solves in CPLEX in 7 seconds. Edit: Also for information, Cbc takes 1600 seconds to solve the same model.

Very nice! To beat Cbc is quite an achievement. It looks like the lower bound is found quite quickly, so perhaps CPLEX is using a good heuristic to find a primal feasible solution.

DillonJ commented 2 years ago

What is termination_status(model)? It looks like it might be MOI.OBJECTIVE_LIMIT which would correspond to

https://github.com/ERGO-Code/HiGHS/blob/3f4f492660bbd9f0a7253717a4223ae48ef85d32/src/lp_data/HConst.h#L163

I think most solvers regard "optimal" to mean "optimal given the tolerances specified by the user" so this might be worth a change in HiGHS.

Interesting @odow :

julia> termination_status(m)
OTHER_ERROR::TerminationStatusCode = 24
jajhall commented 2 years ago

The model solves in 333 seconds. For information, the same model solves in CPLEX in 7 seconds.

Edit: Also for information, Cbc takes 1600 seconds to solve the same model.

It's no surprise that we're significantly faster than Cbc. It's a shame we're not closer to the performance of CPLEX, but the next version of HiGHS should have rather better performance than v1.1.1.

Some feedback:

* It would be nice if the mip_gap of the final solution was displayed along with the primal and dual objective values. Of course it can be calculated easily but it's always nice to see the `mip_gap` of the solution.

Indeed, I've just been looking at HiGHS with positive mip_gap_limit, and though that it would be good to see the final value of mip_gap

* I am using HiGHS in SpineOpt via HiGHS.jl and `termination_status(m) == MOI.OPTIMAL` is evaluating to false with the solution above. When terminating on mip_gap, CPLEX, for example, returns MOI.OPTIMAL as the termination status. I'm not sure if this is an issue with HiGHS.jl not being in sync with the latest master or if HiGHS should be returning a different termination status.

Thanks. I see that Gurobi also reports the solution as optimal, quoting the MIPGap value as a tolerance, when the MIP gap is positive, but less than MIPGap. We should do the same.

lgottwald commented 2 years ago

what is the solution value that cplex termiantes with? From the HiGHS log it rather seems like HiGHS could already have terminated with the primal solution found after ~115s if the dual bound was already high enough.

lgottwald commented 2 years ago

Also, for further speedup, if the mip_gap is expected by users to be a tolerance on optimality rather than a stopping criterion, I would exploit those tolerances in the search and discard all nodes with a lower bound that is within the gap tolerances of the current primal bound directly. Right now the mip_gap_limit option does not alter the behavior of the solver up to the point where it causes the solver to stop.

lgottwald commented 2 years ago

Also would it be possible to send me the instance as an MPS file? I would like to look into how the different interpretations of the gap would affect performance and behavior on the instance.

DillonJ commented 2 years ago

Very interesting @lgottwald - it never ocurred to me that mip_gap_limit could also influence the search. I will try and get an MPS file of the model to you asap and also post the CPLEX result

lgottwald commented 2 years ago

So in #666 I applied the changes to the mip gap options. Now there are the options mip_rel_gap and mip_abs_gap which are both treated as tolerances for concluding optimality. The solving time of the model you sent me goes down to 41 seconds on my machine when I set the options mip_rel_gap to 0.05. The solving report concludes optimality with 0% gap and reports the dual bound equal to the upper_bound. It does however specify the tolerances for the gap and the dual bound to indicate that they could differ by the tolerance value from the exact values. The tolerance on the dual bound is computed by the primal bound times the value of mip_rel_gap or by the value of mip_abs_gap, whichever is larger.

lgottwald commented 2 years ago

Also default values of mip_rel_gap and mip_abs_gap are set to 1e-4 and 1e-6 respectively, which is similar to the default value used by gurobi.