线性规划(数学建模)

问题简介

有限的条件下,最大的收益。
例:在这里插入图片描述
线性规划问题,我们首先就是需要将文字内容转变为数学表达式,如下图:
在这里插入图片描述
当得到这一组公式之后,我们也就是得到了一个线性规划模型,然后通过这个模型我们求出最大值或者最小值即可。
“线性”意味着所有变量都是一次方。
适合的题目:“怎样安排”,“尽量多少”,“最多(少)”,“利润最大”,“最合理”等词。

matlab求解

Linprog函数
有一点需要注意,这个函数只能求的是目标函数的最小值。那么我们如果题目是要求最大值的话,那应该怎么办?
只需求这个数的相反数的最小值,也就是说,如果我们要求y最大,只需要求出-y最小即可。
同时他还不能求约束条件<=号,与前面的解决方法相同,加负号然后变号即可。
函数:[x,fval] = linprog(f, A, b, Aeq, beq, lb, ub)
f:目标函数的系数列向量
就比如我们的例题中给出的目标函数是明显不符合要求的,所以我们需要将他转换为下图:
在这里插入图片描述
转换为这种形式,才能是列向量。
A, b:不等式约束条件的变量系数矩阵和常数项矩阵。
Aeq,beq:等式约束条件的系数矩阵和常数矩阵。
lb,ub:决策变量的最小取值和最大取值。
x:返回最优解的变量取解范围。
fval:返回目标函数的最优值。
在没有某个约束条件时可以用“[]”代替。

代码

在这里插入图片描述

结果

在这里插入图片描述
可以得出x1=4,x2=2,可使y最大为220。

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
好的,我可以帮你生成5道线性规划数学问题,并给出过程和MATLAB代码。 问题1:生产计划问题 某工厂生产两种产品A和B,每个月的总产量不超过10000件。产品A每件利润为200元,产品B每件利润为300元。生产一件A需要耗费1小时,B需要耗费2小时。每月生产A的最大时间为600小时,B的最大时间为800小时。现在需要求出每月的最大利润。 过程: 设每月生产A和B的数量分别为x1和x2,则有以下约束条件: - x1 + x2 <= 10000 - 1x1 + 2x2 <= 1200 - x1 <= 600 - x2 <= 800 最大化目标函数:200x1 + 300x2 MATLAB代码: ``` f = [-200, -300]; A = [1, 1; 1, 2; 1, 0; 0, 1]; b = [10000; 1200; 600; 800]; lb = [0; 0]; [x, fval] = linprog(f, A, b, [], [], lb); disp(x); disp(fval); ``` 问题2:制造成本问题 某公司生产5种产品,每种产品的成本不同。现在有1000元的总生产成本,每种产品的售价为p1=10元,p2=20元,p3=30元,p4=40元,p5=50元。现在需要求出每种产品的最大产量。 过程: 设生产p1到p5的数量分别为x1到x5,则有以下约束条件: - c1x1 + c2x2 + c3x3 + c4x4 + c5x5 <= 1000 - x1p1 + x2p2 + x3p3 + x4p4 + x5p5 >= f 其中,c1到c5分别为p1到p5的成本,f为利润。 最大化目标函数:x1 + x2 + x3 + x4 + x5 MATLAB代码: ``` f = [-1, -1, -1, -1, -1]; A = [10, 0, 0, 0, 0; 0, 20, 0, 0, 0; 0, 0, 30, 0, 0; 0, 0, 0, 40, 0; 0, 0, 0, 0, 50; -10, -20, -30, -40, -50]; b = [inf; inf; inf; inf; inf; -1000]; lb = [0; 0; 0; 0; 0]; [x, fval] = linprog(f, A, b, [], [], lb); disp(x); disp(fval); ``` 问题3:生产调度问题 某工厂有两个生产车间A和B,需要生产3种产品C1,C2和C3。每个车间每天的生产时间不同。车间A每天能生产10小时,车间B每天能生产6小时。每件C1的成本为100元,C2的成本为200元,C3的成本为300元。每件C1的售价为150元,C2的售价为250元,C3的售价为350元。现在需要求出每天的最大利润。 过程: 设车间A和B分别生产C1、C2和C3的数量分别为x1A,x2A,x3A,x1B,x2B,x3B,则有以下约束条件: - x1A + x2A + x3A <= 10 - x1B + x2B + x3B <= 6 - 100x1A + 200x2A + 300x3A + 100x1B + 200x2B + 300x3B <= f - 150x1A + 250x2A + 350x3A + 150x1B + 250x2B + 350x3B >= f 其中,f为利润。 最大化目标函数:50x1A + 50x2A + 50x3A + 150x1B + 50x2B + 50x3B MATLAB代码: ``` f = [-50, -50, -50, -150, -50, -50]; A = [1, 0, 0, 1, 0, 0; 0, 1, 0, 0, 1, 0; 0, 0, 1, 0, 0, 1; 100, 200, 300, 100, 200, 300; -150, -250, -350, -150, -250, -350]; b = [10; 6; inf; -inf; -1000]; lb = [0; 0; 0; 0; 0; 0]; [x, fval] = linprog(f, A, b, [], [], lb); disp(x); disp(fval); ``` 问题4:采购问题 某公司需要购买两种原料A和B,每种原料的价格不同。需要购买的总量为1000单位,且A和B的总量比为3:2。现在需要求出最小的采购成本。 过程: 设购买A和B的数量分别为x1和x2,则有以下约束条件: - x1 + x2 = 1000 - x1 / x2 = 3 / 2 最小化目标函数:p1x1 + p2x2 MATLAB代码: ``` f = [p1, p2]; A = [1, 1; 3/2, -1]; b = [1000; 0]; lb = [0; 0]; [x, fval] = linprog(f, A, b, [], [], lb); disp(x); disp(fval); ``` 问题5:财务规划问题 某公司需要进行财务规划,需要决定投资多少资金到三个项目中。每个项目的投资收益率不同,且总投资金额不超过100万元。现在需要求出最大的投资收益。 过程: 设投资项目1到3的金额分别为x1到x3,则有以下约束条件: - x1 + x2 + x3 <= 100 最大化目标函数:r1x1 + r2x2 + r3x3 MATLAB代码: ``` f = [-r1, -r2, -r3]; A = [1, 1, 1]; b = [100]; lb = [0; 0; 0]; [x, fval] = linprog(f, A, b, [], [], lb); disp(x); disp(fval); ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

每天一道题

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值