COPT 6.5 is released

COPT 6.5 Highlights

COPT 6.5 comes with many changes, most importantly:
  • Greatly improved performance of the MIP solver.
  • Added callback functionality, expanding the usage scenarios of the solver.
  • Added support for general constraints (AND/OR/MAX/MIN/ABS/PWL) in the COPT Python API.
  • Enhanced stability of indicator and SOS constraints by improved underlying implementation.

COPT 6.5 Performance Overview

The latest release of Cardinal Optimizer (COPT 6.5) has greatly improved the performance of our MIP solver, and further improved the speed and stability of our LP solver and other solvers. In the Benchmarks for Optimization Software performed by Prof. Hans Mittelmann, COPT ranks #1 in five benchmarks and ranks #2 in another five. We are working hard to further improve the performance of each solver module, please stay tuned!

(based on results from Benchmarks for Optimization Software by Prof. Hans Mittelmann
Date: May 4, 2023)

For the problem class of mixed integer linear programs, which has many important real-world applications, the performance of COPT has been improving in each new version. The following figure shows the performance measurement results on the MIPLIB 2017 benchmark set, with the unsolved problems continuously decreasing and the speed-up continuously increasing.

Notes:

  1. "Unsolved" means the number of problems in the MIPLIB 2017 benchmark set that the respective version of COPT could not solve within the time limit of 2 hours.
  2. "Speed-up" means the relative speed of each updated version of COPT compared to V2.0.

COPT 6.5 new functionality: callbacks

A callback is an advanced control feature for MIP problems, which allows users to embed their own algorithms for specific problems. It supports obtaining intermediate information (such as incumbent solutions, LP-relaxation solutions, etc.) during the MIP solving process. Users can dynamically control the optimization process within a callback, e.g., by adding lazy constraints or user cuts, setting customized heuristic solutions, etc.

Take the Travelling Salesman Problem (TSP) as an example, where subtour elimination constraints are needed in the classical formulation, but cannot all be added to the initial model due to their exponential number. In this case, users can apply the callback functionality to retrieve the information of the current solution candidate when a MIP solution is found, check it for subtours, and add lazy constraints to eliminate the subtours interactively.

Travelling Salesman Problem (TSP): solution with subtours
Add lazy constraints during MIP optimization, finding the optimal path

Taking Python as an example, setting up the Callback function can be done as follows:

  1. Build a customized Callback class and inherit from CallbackBase class.
  2. Implement the CallbackBase.callback() function.
  3. Create a Callback instance and provide necessary information about the problem instance.
  4. Add the Callback instance by using the Model.setCallback() function.
Programming codes (partial) of callback implementation for the Traveling Salesman Problem (TSP)

For more information on how to apply callback in different APIs, please refer to the corresponding chapters in the COPT user guide and the description of each API function. Please visit Center For Operations Research And Intelligent Decision Making (CORIDM) to see the complete TSP case study. There are also sample codes in the "examples" directory of the COPT installation package (such as "cb_ex1.py" for Python API).

Support for general constraints in the Python API

The Python interface of COPT 6.5 adds support for general constraints (AND/OR/MAX/MIN/ABS/PWL). Users can now directly use the above general constraints in objectives or constraints of their models by calling the corresponding functions of the Model class.

For example, users can call Model.addGenConstrMax(y, [x1, x2, x3]) to add a constraint of the form y = max{x1, x2, x3} to the model. For more details, please refer to the Python API reference in the COPT user guide.

Enhanced stability of indicator and SOS constraints

The new underlying implementation of indicator and SOS constraints postpones the linearization of these structures until the bounds of the involved columns are small enough that the big-M coefficients used in the reformulation are reasonably small. Additionally, the indicator and SOS constraints are checked in their original form and enforced by branching and cutting planes.

While this resolves many of the numerical issues observed for previous version, the improved numerical stability may come at the price of longer runtimes. If numerical stability is less of a concern than performance, we encourage users to use big-M reformulations instead of indicator and SOS constraints or to set the parameters LinearizeIndicators and LinearizeSos to 1 to revert to the old indicator and SOS handling, respectively.

About Cardinal Optimizer (COPT)

COPT 6.5 can solve LP, MIP, (MI)SOCP, SDP, convex (MI)QP and convex (MI)QCP efficiently and robustly. In addition, COPT also provides advanced utilities and user-friendly features, mainly including:

  1. Analysis functionality for infeasible problems: the computation of IIS (Irreducible Inconsistent Subsystem), and FeasRelax (Feasibility Relaxations).
  2. Advanced control functionality for MIP problems: MIP start functionality, callbacks.
  3. An automatic tuner for optimization parameters.
  4. COPT Python API provides easy installation (via pip) and type hints, supports matrix modeling method, general constraints, etc.

COPT supports all major operating systems. Users can apply COPT from various programming languages and third-party modeling interfaces.

Platforms and OS Windows, MacOS, Linux (including ARM64 and Apple M1 platforms)
Programming languages interfaces C, Python, C++, C#, Java
Third-party interfaces Julia, AIMMS, AMPL, GAMS, Pyomo, PuLP, CVXPY

Apply now, upgrade now

COPT supports multiple deployment methods. In addition to PCs and servers, we also provide deployment methods such as floating licenses and computing clusters licenses, which are convenient for scenarios such as school labs and company production environments.

For existing users, please feel free to apply for a version upgrade. We sincerely invite you to raise any problems encountered during your use, and we will do our best to create a better user experience.

Visit our official website for the latest version of the personal trial. For a server, floating or computing cluster license, please contact coptsales@shanshu.ai.


COPT (Cardinal Optimizer) is a mathematical optimization solver for large-scale optimization problems. It is independently developed by Cardinal Operations and includes high-performance solvers for LP, MIP, SDP, (MI)SOCP, convex (MI)QP and convex (MI)QCP. The optimizer supports all major operating systems (64-bit), including Windows, Linux, and MacOS. It provides interfaces to Python, PuLP, Pyomo, C, C++, C#, Julia, Java, AIMMS, AMPL, GAMS and CVXPY. We also support ARM64 and Apple M1 platforms.

评论

此博客中的热门博文

COPT 5.0 is released