COPT (Cardinal Optimizer) is a mathematical optimization solver for large-scale optimization problems. It includes high-performance solvers for LP, MIP, SDP, (MI)SOCP, convex/nonconvex (MI)QP, convex/nonconvex (MI)QCP and exponential cone programming.
The optimizer supports all major operating systems (64-bit), including Windows, Linux, and MacOS. It provides interfaces to Julia, Python, PuLP, Pyomo, Fortran, C, C++, C#, Java, AIMMS, AMPL, GAMS and CVXPY.
If you don't have a valid COPT 8.0 license yet, please apply for free personal license from COPT application page.
Full COPT documentation is available here.
If you used COPT in your research work, please mention us in your publication. For example:
- We used COPT [1] in our project.
- To solve the integer problem, we used Cardinal Optimizer [1].
with the following entry in the Reference section:
[1] D. Ge, Q. Huangfu, Z. Wang, J. Wu. and Y. Ye. Cardinal Optimizer (COPT) user guide. https://guide.coap.online/copt/en-doc, 2022.
The corresponding BiBTeX citation is:
@misc{copt,
author={Dongdong Ge and Qi Huangfu and Zizhuo Wang and Jian Wu and Yinyu Ye},
title={Cardinal {O}ptimizer {(COPT)} user guide},
howpublished={https://guide.coap.online/copt/en-doc},
year=2022
}
The latest COPT 8.0 patch release is COPT 8.0.5.
Download links for supported platforms are:
Windows
We recommend
the Installer,
but you can use the zip package too.
macOS (Universal)
We recommend
the Installer,
but you can use the tar.gz package too.
Linux
Please use the tar.gz package
Linux (ARM64)
Please use the tar.gz package
COPT 8.0.5
==========
Improved numerical stability for LP problems.
Improved logging and enhanced thread safety for solving on compute cluster servers.
Added error handling for range constraint expressions in Python.
Fixed an issue when solving infeasible QP models.
Fixed an issue with empty names when writing feasibility and IIS files.
Fixed issues related to solving status in remote connections and multi-objective problems.
Updated public examples with new solving status.
Updated documentation.
Important Notice:
Several issues were identified in version 8.0.4 and have been addressed in version 8.0.5.
Users running version 8.0.4 are strongly encouraged to upgrade to version 8.0.5.
COPT 8.0.4
==========
Introduced new solving status for LP and MIP problems.
Added error messages to the COPT logs when loading GPU drivers.
Added new attributes for the numerical ranges of LP and QP problems.
Added double parameter QMatrixTol for Q matrix coefficient tolerance.
Improved logs for the COPT-Pyomo interface.
Improved numerical stability for QP problems.
Improved performance for computing dual farkas and rays.
Fixed a numerical issue in an LP presolve routine.
Fixed a threading issue related to callbacks in the compute cluster service.
Fixed an issue when reading fixed binaries in an MPS file.
Fixed an issue in sensitivity analysis for LP problems with no explicit constraints.
Fixed issues in MIP presolve routines.
Fixed public C and Python examples.
Fixed some issues when solving on the compute cluster service.
Updated documentation.
Support for Python 3.7 on PyPI is officially discontinued.
COPT 8.0.3
==========
Introduced an NLP callback interface in both C++ and Python to solve NL problems.
Added integer parameter ConcurrentLpMode to enable concurrent LP methods on GPU.
Added support for assignment via slicing or views of Python NdArray.
Added dot product and prod() support to C++, C# and Python NdArray.
Added OS and CPU information to COPT logs.
Fixed an issue in the dual method of SDP solver.
Fixed an issue where the PDLP method may stop at 0 iterations.
Fixed an issue about solving maxmization problem in SDP solver.
Fixed issues about the starting point and linear system in GPU barrier solver.
Fixed a bug where Python addConstr methods may fail to run if a previous call resulted in an error.
Fixed a bug introduced in version 8.0.2, where license error messages are overwritten.
Fixed other bugs and issues.
Updated documentation.
Breaking Changes:
Using GPUMode (>0) on a machine without a GPU will now report an error, instead of silently falling back to CPU mode.
When the integer parameter BarOrder is specified, COPT runs the corresponding algorithm regardless of performance.
Indexing operator of Python NdArray now return scalar instead of a 0-d array, if resulting array contains only one element.
Sum() with no arguments in C++, C# and Python NdArray now return scalar, instead of 0-d array.
Deprecated:
PuLP is removed from the COPT package, as official support is already available.
Support for Python 3.7 on PyPI will be discontinued in the next release.
Note that PyPI is a non-commercial, community-maintained package repository.
COPT 8.0.2
==========
Added CPU affinity and support for binding memory to NUMA nodes on Linux systems.
Improved barrier solver with GPU-acceleration.
Improved performance for MIP IIS.
Improved MIP heuristics and presolve.
Revised logs when computing farkas or ray.
Added integer parameter MipRepair to set level for repairing MIP solution in case of numerical issues.
Added integer parameter MipNlpIterLimit to set iteration limit for solving NLP problems within MIP solver.
Added integer parameter ReqSensitivity to specify whether to compute sensitivity analysis information.
Fixed an issue with SDP solver.
Fixed an issue related to the username in licensing.
Fixed an issue with matrix multiplication in the COPT Python API.
Fixed a remote connection issue affecting certain Linux versions.
Fixed other bugs and issues.
Updated documentation.
COPT 8.0.1
==========
Added integer parameter PreRootHeurLevel for setting level of pre-root heuristics.
Improved performance of first-order solver.
Improved performance of SOCP solver.
Fixed bugs and issues.
Updated documentation.
COPT 8.0.0
==========
Introduced global nonconvex (MI)QCQP solver.
Added integer parameter LogLevel for configuring solver logs.
Changed the Python matrix modeling API to own implementation.
Improved performance and fixed numerous bugs.
Updated documentation and added public C++ example of facility problem.
Support for Python 2.7 and 3.6 is officially discontinued.
Major components introduced in previous releases:
Parallelized optimization solvers:
COPT MIP solver
COPT LP barrier solver
COPT LP simplex solver
COPT ExpCone solver
COPT SDP solver
COPT (MI)SOCP solver
COPT convex (MI)QP solver
COPT convex (MI)QCP solver
COPT LP/ExpCone/SDP/SOCP/QP/QCP solver with GPU-acceleration
Utilities:
COPT callback functionality
COPT multi-objective functionality
COPT IIS for infeasible problems
COPT Feas-Relax utility
COPT Sensitivity analysis
COPT Tuner
Modeling interfaces:
Object-oriented: Python, C++, C#, Java
Third-party : Julia, AIMMS, AMPL, GAMS, PuLP, Pyomo, CVXPY
C interfaces which work with matrices and vectors
Licensing and remote services:
COPT personal license
COPT server license
COPT floating token server
COPT cluster server
COPT web license service
Supported platforms and OS:
Windows: x86
Linux : x86 and arm64
MacOSX : x86 and arm64