github google/or-tools v9.8

latest release: v9.9
5 months ago

Platforms

  • Add Python 3.12 support.
  • Add Ubuntu 23.10 support.

Dependencies

  • abseil-cpp 20230802.1.
  • Protobuf v25.0.
  • re2 2023-11-01.
  • SCIP v804.

Linear Solver

  • Port ModelBuilder to .Net.
  • Rename LogCallback to MbLogCallback to avoid collision with SAT LogCallback.
  • Extend ModelBuilder API:
    • Add indicator constraints.
    • Add hinting support.
    • Add model cloning.

Math Opt

  • Deep rework.

Routing

  • Add ROUTING_OPTIMAL status.
  • Make RoutingModel non copyable nor movable.
  • Fix some infinite loop in local search operators.
  • Add a PickupDeliveryPosition internal struct.
  • Add IsPickup() and IsDelivery() methods.

SAT

  • Reduce memory footprint for large model.
  • Improved scheduling search.
  • add packing_precedences_lns.
  • optimize and fix feasibility jump.
  • optimize linear presolve and better presolve logging.
  • Improve presolve for int_abs, int_mod, int_prod and lin_max.
  • Improve Panda support
  • Few bug fix.

Troubleshoot for Distro Maintainers

issue re2::StringPiece

$SRC_DIR/ortools/lp_data/lp_parser.cc: In function 'absl::lts_20230802::StatusOr<operations_research::glop::ParsedConstraint> operations_research::glop::ParseConstraint(absl::lts_20230802::string_view)':
$SRC_DIR/ortools/lp_data/lp_parser.cc:365:20: error: cannot convert 'absl::lts_20230802::string_view*' {aka 'std::basic_string_view<char>*'} to 'operations_research::glop::{anonymous}::StringPiece*' {aka 're2::StringPiece*'}
  365 |       ConsumeToken(&constraint, &consumed_name, &consumed_coeff);
      |                    ^~~~~~~~~~~
      |                    |
      |                    absl::lts_20230802::string_view* {aka std::basic_string_view<char>*}

answer: You need to bump re2 to at least 2023-06-01 (re2::StringPiece become an alias to absl::string_view)
src: google/re2@49d776b

issue operator<<

$PREFIX/include/absl/log/internal/log_message.h:289:17: error: no match for 'operator<<' (operand types are 'std::ostream' {aka 'std::basic_ostream<char>'} and 'const operations_research::sat::CpSolverResponse')
  289 |   view.stream() << log_internal::NullGuard<T>().Guard(v);
      |   ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

answer: You need to bump Protobuf to at least v23.3 (protobuf depends on abseil-cpp)

issue absl::int128

$SRC_DIR/ortools/sat/cuts.cc:79:36: error: no matching function for call to 'StrCat(const char [13], const absl::lts_20230802::int128&, const char [2])'
   79 |   std::string result = absl::StrCat("CutData rhs=", rhs, "\n");
      |                        ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~

answer: : You need to bump abseil-cpp to at least 20230802.1 (abseil-cpp will provide a int128::toString())
src: abseil/abseil-cpp@34eb767

What's Changed

New Contributors

Full Changelog: v9.7...v9.8

Don't miss a new or-tools release

NewReleases is sending notifications on new releases.