← 返回模型库
MODEL / 优化

整数 / 0-1 规划

决策量必须是整数或只能取 0/1 的离散问题:选址、指派、排班、装箱、是否启用某条产线。

核心公式

\max\ \mathbf{c}^{\top}\mathbf{x}\quad \text{s.t.}\ \mathbf{A}\mathbf{x}\le\mathbf{b},\ \mathbf{x}\in\mathbb{Z}^{n}\ \text{或}\ \mathbf{x}\in\{0,1\}^{n}

Python 最小示例

下载 .py 文件 ↓

依赖见代码开头;示例在自己的 Python 环境运行,页面不执行代码。用于理解方法,正式参赛请补齐数据检验与误差分析。

Python · 整数 / 0-1 规划
# 依赖: scipy >= 1.9
import numpy as np
from scipy.optimize import LinearConstraint, Bounds, milp

# 最大化 -> 目标取负;下面是一个 0-1 背包式问题
c = np.array([-8.0, -11.0])
A = np.array([[5.0, 7.0], [1.0, 0.0], [0.0, 1.0]])
con = LinearConstraint(A, -np.inf, np.array([40.0, 5.0, 4.0]))

res = milp(c=c, constraints=[con], integrality=np.ones(2), bounds=Bounds(0, 1))
assert res.success, res.message
print(f'最优值={-res.fun:.4f} 最优解={np.round(res.x)}')

用它研究过哪些问题?

浏览赛题库 →
国赛 · 2023B

多波束测线问题

由换能器开角与海水深度推导条带覆盖宽度,设计满足重叠率要求的测线间距与布设方案。

优化几何覆盖问题
1 个关联模型拆解这道题 →