01 整数规划的 Python 代码,逻辑清晰、结构简单,挺适合刚接触运筹优化或者做数模竞赛的朋友。代码用的就是比较主流的求解库,像PuLP
,建模思路清楚,改成你自己的模型也方便。嗯,用来搞搞 01 背包或者资源分配问题,效率还不错。
Python 的数模代码里,这类01 整数规划算是比较基础但常用的,是你遇到只有 0 和 1 取值的选择类问题,比如:选不选、拿不拿、开不开之类的。有时候用贪心不靠谱,用整数规划就稳多了。
要是你还没接触过PulP,可以先看看基本语法:LpProblem
是建模用的,lpSum
用来表示加法目标函数,value
获取求解结果。像下面这样:
from pulp import *
prob = LpProblem("01Problem", LpMaximize)
x = LpVariable("x", 0, 1, LpBinary)
y = LpVariable("y", 0, 1, LpBinary)
prob += 3*x + 2*y
prob += x + 2*y <= 4
prob.solve()
print(value(x), value(y))
蛮推荐搭配下面几个链接一起看,尤其是那个优化整数规划求解方法,方法比较细,还配有示例。哦对,还有一个01 背包问题详解也挺不错,思路清晰。
如果你是搞数模的,可以多看看相关资源,比如matlab 数模入门教程和Python 实现线性规划模型,基本能把线性规划这块打牢。