python实现线性规划

线性规划是决策算法实现的重要工具之一,网上python实现线性规划算法的文章只有那个抄来抄去的水库问题,最初来源已不可知,我在运筹学书上随便找了两个例子进行了实现,亲测这位不知名大佬的代码真实有效,将我的例子贴出来供大家学习参考。
首先是初始化变量,注意,lowBound=0设定了变量下界后,并不需要再将大于零的约束条件加入规划。

    x1 = LpVariable("x1", lowBound=0)

输入目标函数和约束条件,这个print函数可以确认是否是自己需要计算的规划问题。注意输出结果在pulp这个包自带输出的一段文字中

    prob += x1-2*x2+x3 <= con[0]# 约束条件1
    prob += -4*x1+x2+2*x3 >= con[1]
    prob += -2*x1+x3 == con[2]
    print('确认线性规划是否输入正确:',prob)

python实现线性规划_第1张图片
之后就是主函数传入数据,获得结果。我的算例来自《运筹学第四版》清华大学出版社,第二章的两个例子,通过计算发现结果一致。
python实现线性规划_第2张图片
在这里插入图片描述
python实现线性规划_第3张图片

python实现线性规划_第4张图片
在这里插入图片描述
python实现线性规划_第5张图片
完整代码如下

from pulp import *
def getresult(c, con):
# 设置对象
    prob = LpProblem('myPro', LpMinimize)
# 设置三个变量,并设置变量最小取值
    x1 = LpVariable("x1", lowBound=0)
    x2 = LpVariable("x2", lowBound=0)
    x3 = LpVariable("x3", lowBound=0)
    X = [x1, x2, x3]
# 目标函数
    z = 0
    for i in range(len(X)):
        z += X[i]*c[i]
    prob += z
# 载入约束变量
    prob += x1-2*x2+x3 <= con[0]# 约束条件1
    prob += -4*x1+x2+2*x3 >= con[1]
    prob += -2*x1+x3 == con[2]
    print('确认线性规划是否输入正确:',prob)
# 求解
    status = prob.solve()
    print('\naim ending is ',value(prob.objective))  # 计算结果
    for i in prob.variables():
        print('\nanswer is ',i.varValue)
if __name__ == '__main__':
    c = [-3,1,1]
    con = [11,3,1]
    getresult(c,con)

github仓库在https://github.com/rivendelltom/decision-making-study

你可能感兴趣的:(决策)