CBC Changelog

20240724

  • Option acc:_all

    • Useful to disable all reformulations (acc:_all=2), or force linearization (acc:_all=0).

  • Option cvt:prod

    • Controls reformulation of binary products into logical constraints.

  • Faster input of quadratic expressions.

20240617

  • Multi-objective emulator

    • obj:multi=2 forces emulation, even if MO natively supported.

    • Fixed a bug in the objective degradation suffixes .objasbtol, .objreltol.

20240604

  • Presolve division by constant, resulting in fewer constraints

  • Fix no-solution case in multi-objective emulator

20240529

  • Multi-objective emulator

    • All flat MP solvers support multi-objective mode (obj:multi=1), either natively, or via emulation.

    • Suffixes .objpriority, .objweight, .objabstol, .objreltol.

    • [BREAKING] Default intuitive handling of .objweight, see option obj:multi:weight, even when natively supported.

20240429

  • [BREAKING] Merged report_times and timing; they are now aliases, set the value to 1 to have basic info, to 2 to have more detailed info.

20240425

  • Fixed reporting of feasible solutions if time limits are reached

20240320

  • SOS constraints.

    • Fixed handling of SOS2 constraints created by AMPL as reformulations of PL expressions (option pl_linearize 1, default; set to 0 to use MP linearization.)

    • Disallow repeated weights for SOS constraints (suffixes .sosno/.ref.)

  • Option report_times

  • Unused acc: options.

    • The constraint acceptance options acc:... for non-handled constraints are ignored (previously triggered error.)

20240115

  • Solve result codes.

    • List codes by running (solver) -!

    • [BREAKING] Standardized codes. Major changes:

      • 100-199 (solved?) means solution candidate provided, but can be suboptimal/infeasible

      • 300-349 means unbounded problem but feasible solution returned

      • 400-449 means limit/interrupt but feasible

    • [BREAKING] sol:chk:fail returns code 150 (solved?)

  • Compact solution check warnings

  • Fixed presolve of the power function #226.

20231117

  • MP update: fixed graceful exit on Ctrl-C from AMPL in Linux and fixed issue with reading text-format NL files

20231103

  • Improved translation of logical constraints: inlining of nested disjunctions and conjunctions; fewer auxiliary binary variables.

20231017

  • Fixed a bug in NL reader on Windows.

20230919

  • mp_options. Receive mp_options from AMPL (for all MP solvers). They are parsed before (solvername)_options.

  • Solution checking: relative tolerance sol:chk:feastolrel; options sol:chk:round, sol:chk:prec.

20230907

  • Updated to CBC library version 2.10.10

20230831

  • Solution checking, options sol:chk:* (experimental).

  • Preprocess And/Or constraints.

20230817

  • Fixed a bug causing repeated names for auxiliary variables and constraints.

  • Option values can be assigned without ‘=’.

  • Fixed a bug where equivalent conditional comparisons were not unified.

20230726

  • Fixed inequalities of integer expressions with non-integer constants, see test_int_non_int.mod.

20230713

  • Fixed how certain options are passed to the underlying CBC library

  • Fixed returning of constraint duals

20230616

  • Changes in MP.

20230424

  • Changes in the MP library: added variable names support and removed spurious starting solution

20230207

  • Changes in the MP library

20221228

  • Changes in the MP library

20221222

  • Changes in the MP library

20221211

  • Changes in MP: added the ==> else operator Implemented implication with ‘else’: constr1 ==> constr2 [else constr3]

  • Changes in MP: PLApproxRelTol, PLApproxDomain Parameters to control piecewise-linear approximation. cvt:plapprox:reltol default value changed from 1e-5 to 0.01.

20221208

  • First release of MP-based cbc driver