文章目录
一、题目
某机床厂生产甲、乙两种机床,每台销售后的利润分别为 4000 元与 3000 元。甲机床需用 A、B 机器加工,加工时间分别为每台 2 小时和 1 小时;生产乙机床需用 A、B、C 三种机器加工,加工时间为每台各一小时。若每天可用于加工的机器时数分别为 A 机器 10 小时、B 机器 8 小时和C 机器 7 小时,问该厂应生产甲、乙机床各几台,才能使总利润最大?
三、分析
首先你要把问题当作数学问题来思考,暂时请不要考虑代码。我们设该厂生产 x1 台甲机床和 x2 乙机床时总利润最大。
根据题目我们所得关系如下:
1)z = 4x1 + 3x2
就是我们要求的总利润
2) 每天可用于加工的机器时数分别为 A 机器 10 小时、B 机器 8 小时和C 机器 7 小时可得到关系是分别为:
2x1+x2<10 x1+x2<8 x2<7
3) 最后一点还得保证:x1,x2>0
建模就如此简单,根据题目,我们得出对应的数学方程即可。
我们在这里把变量 x1 , x2 称之为决策变量,z = 4x1 + 3x2叫做目标函数,第二步和第三步的式子叫做约束条件。
你是不是有这样一个疑问?为什么这个是线性规划模型?不是非线性呢?请把你的回答写到评论区,我看看你们怎么的理解。
四、matlab解题
1)语法
我们使用linprog函数,这是专门解决线性规划问题的,我们来看一看该函数的语法:
具体含义是什么呢?似乎你还看不懂这个,因此我用中文来说一下我们主要用到的部分:
x = linprog(f,A,b) 求解 min f'*x 约束条件为 A*x ≤ b. x = linprog(f,A,b,Aeq,beq) 求解上述问题,但是增加了约束条件,即将: Aeq*x = beq. 如果没有等式存在可以用:A = [] and b = [] x = linprog(f,A,b,Aeq,beq,lb,ub) 定义变量x的下界lb和上街ub,使得x始终在该范围内,即lb ≤ x ≤ ub。若没有约束条件,则设: Aeq = [] and beq = []
2)数学思维
我们的数学公式拿下来看看,看着我们对比着写代码:
目标函数:
max z = 4x1 + 3x2
约束条件:
2x1+x2<10 x1+x2<8 x2<7 x1,x2>0
做个线性规划图(高中数学知识了哈)
从数学角度,我们已经求出最优解x1和x2分别为2,6
3)matlab解题
强调: 在这里我需要说明的是,求解max=cx在matlab中就是min=-cx,记住有个负号!
因此matlab代码:
clc clear all c=[4 3];%用目标函数系数来确定 a=[2 1;1 1;0 1];%约束条件左边约束 b=[10;8;7];%约束条件右边系数 aeq=[];%没有等式约束,因此aeq,beq都为空 beq=[]; lb=[0;0];%下限为0 ub=[inf;inf];%没有上限,因为只限制了x>0 [x,fval]=linprog(-c,a,b,aeq,beq,lb,ub); x %获取对应x1,x2 %或者你直接fval取绝对值也是一样 best=c*x%计算最优值
运行结果:
x分别为2和6,我们带入式子得到z=2*4+3+6=8+18=26。x参数就是最优解所对应值的意思。
fval=26也能验证我们结果为26.fval参数就是最优解的意思。
因此最优解为26了。
4)练习题
求解该线性规划对应的最大值z以及x1,x2,x3
五、你的任务提交
请你认真读题思考!再看我分析,自己再去写代码,把练习题的解析写成一篇博客,然后点击提交任务,提交你写的这篇解题博客链接。
为什么我要求你也些一篇跟我一样的文章?当你自己写一篇文章的时候,你一定会大有收获,自己写出来的时候,你一定是真的动过脑子,亲手敲过代码(我不希望你是复制粘贴我的)
如何写博客?
1-
2-
3)
4)添加标题
5)标题取名
写完你的练习题博客后来这里提交:
把你的这篇练习题博客链接提交确定: