COPT

Initial setup

from pyoptinterface import copt

model = copt.Model()

You need to follow the instructions in Getting Started to set up the optimizer correctly.

If you want to manage the license of COPT manually, you can create a copt.Env object and pass it to the constructor of the copt.Model object, otherwise we will initialize an implicit global copt.Env object automatically and use it.

env = copt.Env()

model = copt.Model(env)

The capability of copt.Model

Supported constraints

Supported model attribute

Attribute

Get

Set

Name

❌

❌

ObjectiveSense

✅

✅

DualStatus

✅

❌

PrimalStatus

✅

❌

RawStatusString

✅

❌

TerminationStatus

✅

❌

BarrierIterations

✅

❌

DualObjectiveValue

✅

❌

NodeCount

✅

❌

NumberOfThreads

✅

✅

ObjectiveBound

✅

❌

ObjectiveValue

✅

❌

RelativeGap

✅

✅

Silent

✅

✅

SimplexIterations

✅

❌

SolverName

✅

❌

SolverVersion

✅

❌

SolveTimeSec

✅

❌

TimeLimitSec

✅

✅

Supported variable attribute

Attribute

Get

Set

Value

✅

❌

LowerBound

✅

✅

UpperBound

✅

✅

Domain

✅

✅

PrimalStart

✅

✅

Name

✅

✅

IISLowerBound

✅

❌

IISUpperBound

✅

❌

ReducedCost

✅

❌

Supported constraint attribute

Attribute

Get

Set

Name

✅

✅

Primal

✅

❌

Dual

✅

❌

IIS

✅

❌

Solver-specific operations

Parameter

For solver-specific parameters, we provide get_raw_parameter and set_raw_parameter methods to get and set the parameters.

model = copt.Model()

# get the value of the parameter
value = model.get_raw_parameter("TimeLimit")

# set the value of the parameter
model.set_raw_parameter("TimeLimit", 10.0)

Attribute

COPT supports attribute for the model. We provide model.get_raw_attribute(name:str) to get the value of attribute.

Information

COPT provides information for the model components. We provide methods to access the value of information.

  • Information of variable: model.get_variable_info(variable, name: str)

  • Information of constraint: model.get_constraint_info(constraint, name: str)

We also provide copt.COPT to contain all the constants in coptpy.COPT.

For number of variables (columns) in the problem:

cols = model.get_raw_attribute(copt.COPT.Attr.Cols)

For reduced cost of a variable:

rc = model.get_variable_info(variable, copt.COPT.Info.RedCost)

For upper bound of a constraint:

ub = model.get_constraint_info(constraint, copt.COPT.Info.UB)