python 解决线性规划问题 (深入浅出数据分析-第三章 题目)

题目:

有一个商家下个月要卖两种产品
总原料是 50000
A 产品卖出一只 利润是 5元
B 产品卖出一只 利润是 4元
现在原料(原料是 50000)只能一次生产 500 A产品或者 400 B 产品
生产A产品需要消耗 100 原料
生产B产品需要消耗 125 原料
由于时间问题只能一次生产 400只A产品,或者 300只 B 产品

求解

怎么样A B 产品 搭配收益最大化

由题意我们可以画出这个图形
在这里插入图片描述
我们需要拆解问题

5* (x1) + 4*(x2) = max
x1 <= 400
x2 <= 300
100*(x1) + 125*(x2) <= 50000

代码如下

import pulp
MyProbLP = pulp.LpProblem("LPProbDemo1", sense=pulp.LpMaximize)  # 求最大值
x1 = pulp.LpVariable('x1', lowBound=0, upBound=None, cat='Continuous') 
x2 = pulp.LpVariable('x2', lowBound=0, upBound=None, cat='Continuous') 
MyProbLP += 5*x1 + 4*x2 	# 设置目标函数
MyProbLP += (1*x1 + 0*x2 <= 400)  # 不等式约束
MyProbLP += (0*x1 + 1*x2 <= 300)  # 不等式约束
MyProbLP += (100*x1 + 125*x2 <= 50000)  # 不等式约束
# MyProbLP += (x1 + x2 + x3 == 7)  # 等式约束
MyProbLP.solve()  # youcans@xupt
print("Status:", pulp.LpStatus[MyProbLP.status]) # 输出求解状态
for v in MyProbLP.variables():  # youcans
    print(v.name, "=", v.varValue)  # 输出每个变量的最优值
print("Max F(x) = ", pulp.value(MyProbLP.objective))  #输出最优解的目标函数值

解出
如下
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值