python数学建模——线性规划:双下标求解利润问题

解题思路:

 

目标函数:

 max\ z=\sum_{i=1}^{4}c_{i}\sum_{j=1}^{3}x_{ij}

约束条件:

s.t.\left\{ \begin{aligned} \sum_{i=1}^{4}x_{ij}\leqslant w_{j},j=1,2,3\\ \sum_{i=1}^{4}x_{ij}\cdot b_{j}\leqslant v_{j},j=1,2,3\\ \sum_{j=1}^{3}x_{ij}\leqslant a_{i},i=1,2,3,4\\ \frac{\sum_{i=1}^{4}x_{i1}}{10}=\frac{\sum_{i=1}^{4}x_{i2}}{16}=\frac{\sum_{i=1}^{4}x_{i3}}{8}\\ x_{ij}\geqslant 0,i=1,2,3,4,j=1,2,3 \end{aligned} \right.

python实现:

from pulp import LpProblem, LpVariable, LpMaximize, lpSum, value
import numpy as np

a=np.array([18,15,23,12]) #货物质量
b=np.array([480,650,580,390]) #单位质量空间
c=np.array([3100,3800,3500,2850]) #利润
w=np.array([10,16,8]) #质量限制
v=np.array([6800,8700,5300]) #体积限制

#创建线性规划问题
prob=LpProblem('双下标优化',LpMaximize)

#创建决策变量
x=LpVariable.dicts('x',((i,j) for i in range(len(a)) for j in range(len(w))), lowBound=0)

#设置目标函数
prob+=lpSum(c[i]*x[(i,j)] for i in range(len(a)) for j in range(len(w)))

#添加约束条件
for j in range(len(w)):
    prob += lpSum(x[i,j] for i in range(len(a)))<=w[j]
for i in range(len(a)):
    prob += lpSum(x[i,j] for j in range(len(w)))<=a[i]
for j in range(len(w)):
    prob += lpSum(b[i]*x[(i,j)] for i in range(len(a)))<=v[j]

prob += lpSum(x[(i,0)] for i in range(len(a)))/10 == lpSum(x[(i,1)] for i in range(len(a)))/16
prob += lpSum(x[(i,0)] for i in range(len(a)))/10 == lpSum(x[(i,2)] for i in range(len(a)))/8

#求解问题
prob.solve()

#输出结果
if prob.status==1: #表示问题已求解
    print('最优解:')
    for i in range(len(a)):
        print(f"货物{i+1}:{value(sum(x[(i,j)] for j in range(len(w))))}吨")
    print('最大利润:')
    print(value(prob.objective))
else:
    print('优化未成功')

结果:

最优解:
货物1:0.0吨
货物2:15.0吨
货物3:15.947368吨
货物4:3.0526316吨
最大利润:
121515.78805999999

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值