IBM Decision Optimization CPLEX Modeling for Python (DOcplex)
raw JSON → 2.32.264 verified Fri May 01 auth: no python
DOcplex is a modeling library for mathematical optimization, providing a Python API to IBM ILOG CPLEX and CP Optimizer solvers. Current version 2.32.264 supports linear, mixed-integer, and constraint programming. Release cadence is quarterly.
pip install docplex Common errors
error docplex.util.environment.DOcplexException: Model has no solution ↓
cause Solver failed to find a feasible solution or model is infeasible.
fix
Check model constraints for conflicts or use
mdl.refine_conflict() to diagnose infeasibility. error ImportError: cannot import name 'Model' from 'docplex' ↓
cause Incorrect import path; Model is in `docplex.mp.model`.
fix
Use
from docplex.mp.model import Model instead of from docplex import Model. error NameError: name 'IntegerVarType' is not defined ↓
cause Deprecated import removed in newer versions.
fix
Use
model.integer_var() or model.binary_var() directly, not IntegerVarType. Warnings
breaking In DOcplex 2.10+, the `CpoModel.solve()` returns a `CpoSolveResult` instead of a tuple. Code relying on tuple unpacking will break. ↓
fix Access result attributes directly (e.g., `sol.get_objective_value()`) rather than unpacking.
deprecated `docplex.mp.vartype` (e.g., `IntegerVarType`) is deprecated in favor of using `docplex.mp.model.Model.integer_var()` directly. ↓
fix Use model methods like `model.integer_var()`, `model.binary_var()`, and `model.continuous_var()` instead.
gotcha DOcplex requires a CPLEX license to solve locally (free for academic users with IBM Academic Initiative). Without a local CPLEX installation or cloud subscription, `solve()` will raise a `DOcplexException`. ↓
fix Install CPLEX (e.g., `pip install cplex`) and set up license, or use IBM Decision Optimization on Cloud (set `url` and `key` in `Model.solve()`).
Imports
- Model wrong
from docplex import Modelcorrectfrom docplex.mp.model import Model - CpoModel wrong
from docplex import CpoModelcorrectfrom docplex.cp.model import CpoModel
Quickstart
from docplex.mp.model import Model
mdl = Model(name='example')
x = mdl.integer_var(name='x')
y = mdl.integer_var(name='y')
mdl.add_constraint(x + y <= 10)
mdl.maximize(x + 2*y)
solution = mdl.solve()
if solution:
print(f'x = {x.solution_value}, y = {y.solution_value}')