数学建模学习-线性规划实战1

题目

某厂生产三种产品 I,II,III。每种产品要经过 A、B两道工序加工。设该厂有两种规格的设备能完成 A 工序,它们以A1、A2表示;有三种规格的设备能完成 B 工序,它们以B1、B2、B3表示。产品 I 可在 A、B任何一种规格设备上加工。产品 II 可在任何规格的 A 设备上加工,但完成 B 工序时,只能在B1设备上加工;产品 III 只能在A2与B2设备上加工。已知在各种机床设备的单件工时,原材料费,产品销售价格,各种设备有效台时以及满负荷操作时机床设备的费用如表 2,求安排最优的生产计划,使该厂利润最大。

在这里插入图片描述

思路

满负荷是指所有设备都在运行时 所以要通过满负荷费用/有效时 算出来单价
在这里插入图片描述
假设x件产品分别用了多少的A设备和B设备

目标函数 z = (1.25-0.25)(x1+x2)+(2-0.35)x8+(2.8-0.5)x9–(300/6000)(5x1+10x6) - (321/10000)(7x2+9x7+12x9) -(250/4000)(6x3+8x8) - (783/7000)(4x4+11x9) - (200/4000)7x5=0.75x1+0.7753x2+0.375x30.447x4-0.35x5-0.5x6-0.2889x7+1.15x8+0.684x9

因为需要两道加工工序,所以对于每一样产品使用A设备的数量要与使用B设备的数量相等
所以产生约束条件

{ 5 x 1 + 10 x 6 < = 6000 7 x 2 + 9 x 7 + 12 x 9 < = 10000 6 x 3 + 8 x 8 < = 4000 4 x 4 + 11 x 9 < = 7000 7 x 5 < = 4000 x i > = 0 \begin{cases} 5x_1 + 10 x_6 < =6000\\ 7x_2 + 9x_7 + 12x_9 <= 10000\\ 6x_3 + 8x_8 <= 4000\\ 4x_4 + 11x_9 <= 7000\\ 7x_5 <= 4000\\ x_i >=0 \end{cases} 5x1+10x6<=60007x2+9x7+12x9<=100006x3+8x8<=40004x4+11x9<=70007x5<=4000xi>=0
又因为加工时 AB设备对应的总工时相等 所以有另一个约束条件
{ x 1 + x 2 = x 3 + x 4 + x 5 x 6 + x 7 = x 8 \begin{cases} x_1 + x_2 = x_3 + x_4 + x_5\\ x_6 + x_7 = x_8\\ \end{cases} {x1+x2=x3+x4+x5x6+x7=x8

求解

模型为:max z = (1.25-0.25)(x1+x2)+(2-0.35)x8+(2.8-0.5)x9–(300/6000)(5x1+10x6) - (321/10000)(7x2+9x7+12x9) -(250/4000)(6x3+8x8) - (783/7000)(4x4+11x9) - (200/4000)7x5
{ 5 x 1 + 10 x 6 < = 6000 7 x 2 + 9 x 7 + 12 x 9 < = 10000 6 x 3 + 8 x 8 < = 4000 4 x 4 + 11 x 9 < = 7000 7 x 5 < = 4000 x 1 + x 2 = x 3 + x 4 + x 5 x 6 + x 7 = x 8 x i > = 0 \begin{cases} 5x_1 + 10 x_6 < =6000\\ 7x_2 + 9x_7 + 12x_9 <= 10000\\ 6x_3 + 8x_8 <= 4000\\ 4x_4 + 11x_9 <= 7000\\ 7x_5 <= 4000\\ x_1 + x_2 = x_3 + x_4 + x_5\\ x_6 + x_7 = x_8\\ x_i >=0 \end{cases} 5x1+10x6<=60007x2+9x7+12x9<=100006x3+8x8<=40004x4+11x9<=70007x5<=4000x1+x2=x3+x4+x5x6+x7=x8xi>=0

所以根据线性规划函数 可得出代码为

clc, clear
f=[0.75,0.7753,-0.375,-0.447,-0.35,-0.5,-0.2889,1.15,0.684];
f = -f; %换成最小值
a=[5,0,0,0,0,10,0,0,0;
0,7,0,0,0,0,9,0,12;
0,0,6,0,0,0,0,8,0;
0,0,0,4,0,0,0,0,11;
0,0,0,0,7,0,0,0,0];
b = [6000,10000,4000,7000,4000];
aeq = [1,1,-1,-1,-1,0,0,0,0;
    0,0,0,0,0,1,1,-1,0];
beq = [0;0];
lb = zeros(9,1);
[x,y] = linprog(f,a,b,aeq,beq,lb,[]);
x, y = -y

运行结果

x =

   1.0e+03 *

    1.2000
    0.2300
         0
    0.8586
    0.5714
         0
    0.5000
    0.5000
    0.3241


y =

   1.1468e+03

又因为只能是整数 所以

最优解为x1=1200,x2=230,x3=0,x4=859,x5=571,x6=0,x7=500,x8=500,x9=324.
最大利润 z=1146元

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值