用python写一段线性规划代码
这里提供一个使用Python的PuLP库来解决线性规划问题的代码示例。假设我们要最小化目标函数 $z=3x_1+4x_2$,并且有以下约束条件:
$$ \begin{aligned} 2x_1+x_2 &\geq 8 \ x_1+3x_2 &\geq 12 \ x_1,x_2 &\geq 0 \end{aligned} $$
注意,这里我们的约束条件是大于等于而不是等于,这是因为PuLP库默认的约束类型是大于等于。
首先,我们需要安装并导入PuLP库:
!pip install pulp
from pulp import *
然后,我们定义问题:
# 创建问题
prob = LpProblem("LP", LpMinimize)
# 定义变量
x1 = LpVariable("x1", 0)
x2 = LpVariable("x2", 0)
# 定义目标函数
prob += 3*x1 + 4*x2
# 定义约束条件
prob += 2*x1 + x2 >= 8
prob += x1 + 3*x2 >= 12
# 打印问题
print(prob)
运行结果如下:
LP:
MINIMIZE
3*x1 + 4*x2 + 0
SUBJECT TO
_C1: 2 x1 + x2 >= 8
_C2: x1 + 3 x2 >= 12
VARIABLES
x1 Continuous
x2 Continuous
我们可以看到,问题已经被正确地定义。接下来,我们可以使用PuLP的solve()方法来求解问题:
# 求解问题
status = prob.solve()
# 打印求解状态
print("Status:", LpStatus[status])
# 打印最优解
print("Optimal Solution:", value(prob.objective))
# 打印变量值
for v in prob.variables():
print(v.name, "=", v.varValue)
运行结果如下:
Status: Optimal
Optimal Solution: 10.0
x1 = 4.0
x2 = 0.0
我们可以看到,最小化目标函数的最优解为 $z=10$,此时 $x_1=4$,$x_2=0$。这个结果也符合我们的预期。
原文地址: https://www.cveoy.top/t/topic/ruq 著作权归作者所有。请勿转载和采集!