栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

用scipy求解线性规划问题

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用scipy求解线性规划问题

C np.asarray([2,3,-5]) #目标函数系数 A np.asarray([[-2,5,-1],[1,3,1]])#不等式左边系数 注意 的式子要转化为 的式子 故前面2,-5,1要加负号 B np.asarray([-10,12]) #不等式右边的数 Aeq np.asarray([[1,1,1]])#等式左边系数 这里是两个方括号 因为要写为一维行矩阵 列表默认的是按列排 Beq np.asarray([7])# 等式右边的数 res optimize.linprog(-C,A,B,Aeq,Beq)#调用optimize类里面的linprog方法计算最小值 算最大值要写-c 返回结果给res print(res) print( 最大值的相反数为 {} .format(res.fun)) print( 最大值参数取 {} .format(res.x))

结果展示

用pulp包求解
############用pulp求解#############
import pulp
#目标函数系数
z [2,3,-5]
a [[2,-5,1],[-1,-3,-1]] #不等式约束的系数 全部写成 ,或者全部写成 注意符号
b [10,-12]
aeq [[1,1,1]]
beq [7]
#确定最大化最小化 最大化用LPMaximize 最小化用LPMinimize
m pulp.LpProblem(sense pulp.LpMaximize)
#定义三个变量放到变量列表中
x [pulp.LpVariable(f x{i} ,lowBound 0)for i in [1,2,3]]
#定义目标函数 lpDot可以将两个列表的对应位相乘再加
m pulp.lpDot(z,x)#结果为z[1]*x[1] z[2]*x[2] z[3]*x[3]
#设置不等式约束
for i in range(len(a)):
 m (pulp.lpDot(a[i],x) b[i])
#设置等式约束
for i in range(len(aeq)):
 m (pulp.lpDot(aeq[i],x) beq[i])
m.solve()
print(m)
print( 参数 {} .format([pulp.value(var)for var in x]))
print(f 取值为:{pulp.value(m.objective)} )

结果展示

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/267183.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号