目录
1. 安装Pulp
conda install --channel https://conda.anaconda.org/conda-forge pulp
注:如果直接使用 conda install pulp 或是 pip install pulp 总是出现如下错误,使用以上操作可以成功安装。(借鉴自:https://blog.csdn.net/winter_python/article/details/108085295)
2. 基础操作
2.1 样例
import pulp
MyProbLP = pulp.LpProblem("LPProbDemo1", sense=pulp.LpMaximize)
x1 = pulp.LpVariable('x1', lowBound=0, upBound=7, cat='Continuous')
x2 = pulp.LpVariable('x2', lowBound=0, upBound=7, cat='Continuous')
x3 = pulp.LpVariable('x3', lowBound=0, upBound=7, cat='Continuous')
MyProbLP += 2*x1 + 3*x2 - 5*x3 # 设置目标函数
MyProbLP += (2*x1 - 5*x2 + x3 >= 10) # 不等式约束
MyProbLP += (x1 + 3*x2 + x3 <= 12) # 不等式约束
MyProbLP += (x1 + x2 + x3 == 7) # 等式约束
MyProbLP.solve()
print("Status:", pulp.LpStatus[MyProbLP.status]) # 输出求解状态
for v in MyProbLP.variables():
print(v.name, "=", v.varValue) # 输出每个变量的最优值
print("F(x) = ", pulp.value(MyProbLP.objective)) #输出最优解的目标函数值
#= 关注 Youcans,分享原创系列 https://blog.csdn.net/youcans =
(样例借鉴自:https://blog.csdn.net/guolindonggld/article/details/89950877)
2.2 设置优化方向
- 最大化
MyProbLP = pulp.LpProblem("LPProbDemo1", sense=pulp.LpMaximize)
- 最小化
MyProbLP = pulp.LpProblem("LPProbDemo1", sense=pulp.LpMinimize)
2.3 写入目标函数
MyProbLP += 2*x1 + 3*x2 - 5*x3 # 设置目标函数
2.4 变量设置:01变量
x = LpVariable("x",cat='Binary')
2.5 变量设置:整数变量
x = LpVariable("x",cat='Integer')
2.6 变量设置:连续变量
x = pulp.LpVariable('x', cat='Continuous')
2.7 变量设置:变量上下限
x = pulp.LpVariable('x', lowBound=0, upBound=7, cat='Continuous')
2.8 写入不等式约束
MyProbLP += (x1 + 3*x2 + x3 <= 12) # 不等式约束
2.9 写入等式约束
MyProbLP += (x1 + x2 + x3 == 7) # 等式约束