Skip to content

Latest commit

 

History

History
241 lines (140 loc) · 5.77 KB

File metadata and controls

241 lines (140 loc) · 5.77 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Added

  • PIPSMILPSolver, providing the interface with the parallel interior-point solver PIPS-IPM++ (LP problems, Linux only), plus the pips_pars header-generator tool

Changed

Fixed

  • GRBMILPSolver::get_lb() returned minus infinity for a continuous problem that GUROBI solved without a branch-and-bound, OBJBOUND being undefined there: where the solve ended optimal, the optimal value is the bound

  • the callback of GRBMILPSolver read the solution into a buffer as long as the columns of the Block, while the model also has the auxiliary variables of the ranged constraints and of the quadratic terms and GUROBI writes all of them: the heap was corrupted past the end of the buffer, which then crashed inside GUROBI itself. It only showed with the integer variables on, the callback being called only in a MIP context

0.8.0 - 2025-12-12

Added

  • possibility of redirecting log stream into specific file in all *MILPSolvers

  • support for static Variable/Constraint to be contained in std::vector< std::vector > and multi_array< std::vector >

  • [big] add_mip_starts() in base class to provide multiple starting solution to the solver, then implemented in all *MILPSolver that support it

  • callback function in HiGHSMILPSolver

  • [big] has_var_direction() and get_var_direction() in all *MILPSolver

  • option in SCIPMILPSilver to retrieve dual values by disabling presolve operations

  • options to retrieve information during computation (callbacks)

  • function to evaluate dual values for quadratic constraint starting from slack values

  • tester for changes involving quadratic [FRow]Constraints and [FReal]Objective

  • [huge] *MILPSolver class handle [MI-]QP and [MI-]QCQP models

  • support new SMS++ Modifications (LinearFunctionModVarsAddd and DQuadFunctionModVarsAddd)

  • added write_[var/dual]_solution()

  • option IntSingleBound in the BlockSolverConfig of test_dual

Changed

  • include files *_defs.h and *_maps.h are now automatically created when needed by both cmake and makefile

  • using new un_any_thing_count_*()

  • adapted to new CMake / makefile organisation

  • upcasted integer parameter intThrowReducedCostException to base class MILPSolver

  • MILPSolver::set_par( double ) does nothing and it was not defined, but this meant that set_par( int ) was accidentally called in its stead

  • improved CPXMILPSolver::objective_function_modification: the new coefficients are obtained by adding modl->delta() to the old ones

  • improved query of variables bound in MILPSolver

Fixed

  • several pesky memory leaks

  • set_par( intMaxTime ) in GRBMILPSolver

  • writing of dual_values in the Block

  • error in SCIPMILPSolver::get_dual_solution()

  • issues in get_lb() and get_ub()

  • catastrophic blunder whereby the semantic of "the Objective of a Block is its own Objective plus the Objective of all the sub-Block, recursively" was not at all correctly implemented in *MILPSolver

  • several minor ones

0.7.1 - 2024-02-01

Added

  • Separation of user cuts and lazy constraints is now possible with SCIP

  • Support for modifying a quadratic objective function in SCIP.

0.7.0 - 2023-08-01

Added

  • HiGHS interface

0.6.0 - 2023-07-03

Added

  • Gurobi interface

0.5.2 - 2023-05-17

Added

  • Support for constant term in the objective function.
  • Support for all-important SCIP 8.0.3.

Fixed

  • Destroy the problem before constructing a new one in load_problem() (in SCIPMILPSolver and CPXMILPSolver).

0.5.1 - 2022-07-01

Added

  • Support to SCIP 8.0.0 and Cplex 22.1.
  • Separation of user cuts and lazy constraints.

Fixed

  • Invert the sign of the dual solution in CPXMILPSolver to follow the RowConstraint conventions.
  • Scan of ColVariable in CPXMILPSolver.
  • Blunder in bound changes in CPXMILPSolver.
  • Callback for Cplex versions prior to 12.10.

0.5.0 - 2021-12-08

Added

  • MPS support in tool and unit test.

  • set_par( idx_type , std::string && ).

Fixed

  • Bug in SCIPMILPSolver with fixed binary variables.

  • Block ownership check while scanning active Constraints.

  • SMS++ to CPLEX conversion of Inf values in RHS vector.

  • Variable type change handling.

0.4.0 - 2021-05-02

Added

  • Full support for CPLEX and SCIP parameters.

  • Support for dual solution and dual direction.

  • Tools.

Fixed

  • Too many individual fixes to list.

0.3.0 - 2020-09-16

Added

  • Support for concurrency.

0.2.0 - 2020-03-06

Added

  • SCIP interface.

Fixed

  • Minor bugs.

0.1.1 - 2020-02-10

Fixed

  • Minor fix in makefile support.

0.1.0 - 2020-01-30

Added

  • First test release.