可变成本问题
某公司生产A、B、C共3种产品,售价分别是12元、7元和6元。生产1件这些产品的技术服务、直接劳动、材料的消耗以及这些资源的限量如表所示。
产品\项目 |
技术服务(h) |
直接劳动(h) |
材料(kg) |
售价(¥/件) |
A |
1 |
10 |
3 |
12 |
B |
2 |
4 |
2 |
7 |
C |
1 |
5 |
1 |
6 |
现有量 |
100 |
700 |
400 |
另外生产成本是产量的非线性函数,如下表。如何安排每种产品的产量,使得利润最大。
产品A 产量(件) |
成本 (元/件) |
0-40 |
10 |
41-100 |
9 |
101-150 |
8 |
150以上 |
7 |
产品B 产量(件) |
成本 (元/件) |
0-50 |
6 |
51-100 |
4 |
100以上 |
3 |
产品C 产量(件) |
成本 (元/件) |
0-100 |
5 |
100以上 |
4 |
【问题分析】
生产中,利润=收入-成本,收入=销量×单价,成本=产量×单位成本,只不过这里成本是产量的阶梯函数(折扣函数)。
【问题假设】
- 三类产品的产量都等于销售量;
- 产量为0时,销售量也为0,成本为0,利润也会为0;
- 三类产品的产量,都是按整数计件;
【符号说明】
- xi 分别表示A、B、C三类产品的产量(销售量),i=1,2,3;
- L 总利润;
- R 总收入;
- C 总成本。
- Ci 分别表示A、B、C三种产品的总生产成本;i=1,2,3;
【建立模型】
总利润 L=R-C
总收入
生产成本
其中产品A的生产成本为
产品B的生产成本为
产品C的生产成本为
产量的资源约束
变量约束
【数学模型】
max L=R-C
lingo程序
max=R-C; R=12*x1+7*x2+6*x3; C=c1+c2+c3; c1=@if(x1#le#40,10*x1,@if(41#ge#x1#and#x1#le#100,9*x1, @if(x1#le#150#and#x1#ge#101,8*x1,7*x1))); c2=@if(x2#le#50,6*x2,@if(51#ge#x2#and#x2#le#100,4*x2,3*x2)); c3=@if(x3#le#100,5*x3,4*x3); x1+2*x2+x3<100; 10*x1+4*x2+5*X3<700; 3*x1+2*x2+x3<400; @gin(x1);@gin(x2);@gin(x3);
c1=@if(x1#le#40,10*x1, @if(41#ge#x1#and#x1#le#100,9*x1, @if(x1#ge#101#and#x1#ge#150,8*x1,7*x1)));
翻译为matlab条件循环语句,为
>> if x1<=40 c1=10*x1; elseif (x1>=41)&(x1<=100) c1=9*x1; elseif (x1>=101)&(x1<=150) c1=8*x1; else c1=7*x1; end