Introduction to Cardinal Optimizer

Cardinal Optimizer is a high-performance mathematical programming solver for efficiently solving large-scale optimization problem. This documentation provides basic introduction to the Cardinal Optimizer, including:

We suggest that all users to read the first two sections carefully before using the Cardinal Optimizer.

Once the installation and license setup are done, we recommend users who want to do a quick experiment on the Cardinal Optimizer to read the COPT Interactive Shell chapter for details. Users who already have preferred programming language can select from available Application Programming Interfaces (APIs), including:

Overview

Cardinal Optimizer supports solving Linear Programming (LP) problems, Second-Order-Cone Programming (SOCP) problems, Convex Quadratic Programming (QP) problems, Convex Quadratically Constrained Programming (QCP) problems, Semidefinite Programming problems (SDP) and Mixed Integer Programming (MIP) problems, which include Mixed Integer Linear Programming (MILP), Mixed Integer Second-Order-Cone Programming (MISOCP), Mixed Integer Convex Quadratic Programming (MIQP), Mixed Integer Convex Quadratically Constrained Programming (MIQCP).

We will support more problem types in the future. The supported problem types and available algorithms are summarized in Table 1

Table 1 Supported problem types and available algorithms

Problem type

Available algorithms

Linear Programming (LP)

Dual simplex; Barrier

Second-Order-Cone Programming (SOCP)

Barrier

Convex Quadratic Programming (QP)

Barrier

Convex Quadratically Constrained Programming (QCP)

Barrier

Semidefinite Programming (SDP)

Barrier; ADMM

Mixed Integer Linear Programming (MILP)

Branch-and-Cut

Mixed Integer Second-Order-Cone Programming (MISOCP)

Branch-and-Cut

Mixed Integer Convex Quadratic Programming (MIQP)

Branch-and-Cut

Mixed Integer Convex Quadratically Constrained Programming (MIQCP)

Branch-and-Cut

Cardinal Optimizer supports all major 64-bit operating systems including Windows, Linux (including ARM64 platform) and MacOS (including ARM64 platform), and currently provides programming interfaces shown below:

  • C interface

  • C++ interface

  • C# interface

  • Java interface

  • Python interface

  • AMPL interface

  • AIMMS interface

  • Pyomo interface

  • PuLP interface

  • CVXPY interface

  • GAMS interface

  • Julia interface

We are going to develop more programming interfaces to suit various needs of users and situations.

Licenses

Now, we provides 4 types of license, which are Personal License, Server License, Floating License, and Cluster License. They are listed in table below (Table 2) :

Table 2 License Type

License Type

Detail

Personal License

It is tied to personal computers by username. Only approved user can run COPT on his devices. No limitations on CPU cores and threads.

Server License

It is tied to a single server computer by its hardware info (MAC and CPUID). An arbitrary number of users and programs can run COPT simultaneously. No limitations on CPU cores as well.

Floating License

It is tied to a server machine running COPT floating token service, by its hardware info (MAC and CPUID). Any COPT floating client connected to server can borrow and use the floating license, thus run one process for optimization jobs simultaneously. The token number is max number of clients who can use floating licenses simultaneously.

Cluster License

It is tied to a server machine running COPT compute cluster service, by its hardware info (MAC and CPUID). Any COPT compute cluster client connected to server can offload optimization computations. That is, clients are allowed to do modelling locally, execute optimization jobs remotely, and then obtain results interactively. Although server can have multiple clients connected, each connection must run optimization jobs sequentially. No limitations on CPU cores.

How to Cite

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, 2023.

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=2023
}

Contact Information

Cardinal Optimizer is developed by Cardinal Operations, users who want any further help can contact us using information provided in Table 4

Table 3 Contact information

Type

Information

Description

Website

https://www.shanshu.ai/

Phone

400-680-5680

Email

coptsales@shanshu.ai

business support

Email

coptsupport@shanshu.ai

technical support