精品食用油生成优化模型.docx
《精品食用油生成优化模型.docx》由会员分享,可在线阅读,更多相关《精品食用油生成优化模型.docx(16页珍藏版)》请在冰点文库上搜索。
精品食用油生成优化模型
食用油生成优化模型
摘要
食用油是人们生活必需的消费品,是提供人体热能和必需脂肪酸,促进脂溶性维生素吸收的重要食物.随着中国经济的飞速发展,人民生活水平的大幅度提高,人们对食用油的质量要求不断提升。
而粮油市场的逐步开放,更使食用油行业的发展呈现出勃勃生机,成为中国的朝阳行业,市场前景广阔。
在现有的技术上如何的在保证食用油质量的前提下投资食用油产业,以获得更高的利润成为了食用油投资者们所关心的话题。
对于问题一,是经典的最优化问题,通过了解题意找到约束条件和目标函数,建立最优化模型,并通过LINGO对其进行求解,求得该食用油加工厂的最高利润为856427.5元.并通过表格的形式求出各个月各种油的储存量、购买量和耗用量情况。
对于问题二,在问题一相同的约束条件下,各个月的原料油价格发生一定增幅的变化,同通过结合问题一的约束条件和问题二的特殊情况,建立了价格变动最优化模型。
并通过建立的模型,使用LINGO分别求出增幅为1,2…,19,20的情况下最高利润的变动情况,和详细的每个月每种油储存量、购买量和耗用量的变动情况,再通过得出的数据建立图表详细而形象的分析增幅的变化对每个月每种油储存量、购买量和耗用量的影响。
关键词:
最优化问题、增幅、储存量、购买量、耗用量
1问题重述
食品加工业中使用的一种食用油(成品油),是将几种粗油(原料油)经过精炼然后加以混合而成的.原料油有两大类共5种:
植物油2种,分别记为V1和V2;非植物油3种,记为O1、O2和O3.各种原料油均从市场采购,从目前(一月份)到六月份的未来半年内,原料油的市场预测价格(元/吨)如表1.成品油售价1800元/吨。
植物油和非植物油需要在不同的生产线上精炼.植物油生产线每个月最多可精炼植物油200吨,非植物油生产线每个月最多可精炼非植物油250吨,假设精练过程的重量损失忽略不计。
精炼费用为:
植物油270元,非植物油310元。
每种原料油最多可存贮1000吨备用.存贮费为每吨每月50元。
成品油和经过精练的原料油不能存贮。
对成品油限定其硬度在3~6之间。
各种原料油的硬度如表2。
假设精炼过程中原料油的硬度不变,且成品油的硬度是线性地混合。
目前这五种原料油各存有500吨,要求在6月底仍然保持同样的存贮。
(1)根据表1原料油价格的预测,编制逐月各种原料油的采购量、耗用量及贮存量计划,使这半年内公司获得最大利润.
(2)考虑原料油价格上涨对利润的影响.若市场预测原料油的价格变化为:
2月份植物油价上升x%,非植物油价上升2x%,3月份植物油价上升2x%,非植物油价上升4x%,其余月份保持这种线性的上升势头。
试对x从1到20的各种情况,就方案的变化及对总利润的影响,作全面讨论.
表1
原料油
月份
V1V2O1O2O3
一
二
三
四
五
六
122001250
9001350
表2
原料油
V1V2O1O2O3
硬度
8.86.12。
04.25.0
2模型假设
1.假设该工厂的生成运营方式是购买进的直接加工月末剩余时在储存;
2.每个月的储存费用在月末时支付;
3.假设未来六个月市场稳定,成品油售价均为1800元/吨;
4.5种类型油可以按任意比例混合;
5.假设原料油在储存期间质量不变;
6.假设每月的成品油都被客户所消费,没有成品油剩余;
3符号说明
(小标i,j分别表示第i个月和第j种油)
bij
采购价格
Pij
采购量
Mij
耗用量
Sij
储存量
Rj
油的硬度
Bi
第i个月的采购总价
4问题分析
4。
1问题背景分析:
食用油是人们生活必需的消费品,是提供人体热能和必需脂肪酸,促进脂溶性维生素吸收的重要食物。
随着中国经济的飞速发展,人民生活水平的大幅度提高,人们对食用油的质量要求不断提升。
而粮油市场的逐步开放,更使食用油行业的发展呈现出勃勃生机,成为中国的朝阳行业,市场前景广阔.中国的食用油生产加工产业,已经在若干技术上,达到了国际水平,中国食用油行业的技术创新能力位居世界前列.
在现有的技术上如何的在保证食用油质量的前提下投资食用油产业,以获得更高的利润成为了食用油投资者们所关心的话题.
4.2问题一的分析:
通过对问题的分析了解到问题属于最优化问题,最优化问题必然涉及约束条件和目标函数,对于该题的目标函数为:
确定每个月各种原料油的采购量、耗用量及贮存量计划,使这半年内公司获得最大利润。
其对应的约束条件为:
一、该食用油加工厂技术与设备的限制分别为:
植物油生产线每个月最多可精炼植物油200吨,非植物油生产线每个月最多可精炼非植物油250吨;
每种原料油最多可存贮1000吨备用。
二、成品油的质量标准限制:
成品油限定其硬度在3~6之间。
三、其他的约束。
每个月储存油量与上一个月的关系;
非负约束;
初始储存量和最后储存量的约束.
根据上面的目标函数和约束条件,建立最优化模型,最后通过LINGO对其进行求解。
4。
3问题二的分析:
对于问题二考虑在问题一的基础上原料油价格的变化。
由于问题二改变的
只是每个月原料油的价格所以第二问的约束条件没有改变,为了更加普遍的表述第二问,我们将对原模型的目标函数进行修改引入价格改变幅度因素。
通过建立的模型,找价格变化幅度区间内的部分值代入模型,求解出在不同的价格变化幅度下原料油的购买量,储存量和耗用量的变化情况。
既总利润的变化情况,并通过建立图表对其数据进行根据形象的分析和统计并找出其中的规律。
5模型建立与求解
5.1建立最优化模型:
根据题目所给的信息,设bij为第i个月第j种油的采购价格,Bi为第i个月的采购总价格,Pij为第i个月第j种油的采购量,Mij为第i个月第j种油的耗用量,Sij为第i个月第j种油的储存量,Rj为第j种油的硬度(i={1—6月},j={V1,V2,O1,O2,O3}).
根据题意该工厂希望在未来的六个月里盈利最高因此其目标函数为:
目标函数中,第i个月的采购总价为:
通过题目可知其约束条件为:
一、该食用油加工厂技术与设备的限制:
该加工厂植物油生产线每个月最多可精炼植物油200吨,非植物油生产线每个月最多可精炼非植物油250吨,则有:
Mi1+Mi2≤200,Mi3+Mi4+Mi5≤250;
该加工厂每种原料油最多可存贮1000吨备用,则有:
Sij≤1000.
二、成品有的质量标准限制:
成品有的硬度要保障在3-6间,则有:
三、其他的约束有:
每个月储存油量与上一个月的关系:
每种原料油每个月的储存油量为上一个月的储存量加上购买量减去耗用量,则有:
Sij=Si—1j+Pij—Mij(i≥2);
非负约束:
Sij,Pij,Mij≥0;
初始储存量和最后储存量的约束:
开始时每种油量存储的油量为500,因此第一个月的储存量为:
S1j=S1j+500—M1j;
第六个月时要求每种油的储存量为500,因此有:
S6j=500;
综上所述建立最优化模型如下:
此时
(1)
根据所建立的模型,用LINGO对模型进行求解(代码见附录:
“模型1”)求该食用油加工厂得6个月的最高利润为:
856427。
5元,其每个月每种原料油的购买量、储存量、耗用量见下表(表1—表3)。
表1:
每个月每种原料油的购买量表
原料油
月份
V1
V2
O1
O2
O3
一
0
0
0
0
0
二
0
0
0
629。
255
0
三
0
0
0
0
309.8175
四
0
518.736
0
0
0
五
564.8663
0
0
0
0
六
116。
3978
0
0
560。
9275
0
从表1中我们可看到O1六个月的都没有购买,造成这样的原因是O1相对于其他种类的油来说每个月的价格都较为贵。
而在一月份每种油的购买量都为0这是因为原仓库里还每种油还储存有500吨的缘故。
其他各种油都是在其最低的价格时买入.
表2:
每个月每种原料油的储存量表
原料油
月份
V1
V2
O1
O2
O3
一
340.7407
459.2593
500
250
500
二
181。
4815
418.5185
500
629。
255
500
三
22.22222
377。
7778
500
379.255
809。
8175
四
4。
573015
714.163
500
379。
255
559。
8175
五
542.8615
540.7407
500
189.0725
500
六
500
500
500
500
500
从表2中我们看到O1在1-6月份都没有被使用,其他各种油都有一定的使用和购买情况.
表3:
每个月每种原料油的耗用量表
原料油
月份
V1
V2
O1
O2
O3
一
159.2593
40。
74074
0
250
0
二
159。
2593
40.74074
0
250
0
三
159.2593
40。
74074
0
250
0
四
17。
64921
182.3508
0
0
250
五
26。
57778
173.4222
0
190.1825
59。
81748
六
116.3978
0
0
560。
9275
0
从表3看,在1—3月份V1,V2,O2的使用量保持一致,在4—6月份由于每种油的价格变动情况所以对原料油的选择有所不同。
5.2价格变动最优化模型:
由题可知,第二问中改变的因素为每个月的原料油价格有所上涨,这样的话并不影响该题的约束条件,所以我们依然可以使用模型一的约束条件,但是目标函数有所变动。
根据题意,可得以下目标函数:
此时的第i个月的采购总价为:
结合模型一,可知价格变动的优化模型为:
此时:
(2)
为了便于计算我们选取x={1,2,…,19,20}∈N+,使用LINGO编程(代码见附录:
“模型2")求得x取不同值的情况下最多可得利润变化如下表(表4)。
表4:
不同x的情况下最多可得利润变化表
x
最优收入情况
x
最优收入情况
x
最优收入情况
0
7
225485。
2
14
—66074。
07
1
969222。
2
8
136848。
1
15
-70574.07
2
839018。
5
9
72411.85
16
-75074。
07
3
708814.8
10
19240。
74
17
—79574。
07
4
578611。
1
11
-5425.897
18
—84074。
07
5
450907。
4
12
-30092.59
19
-88574。
07
6
337796.3
13
—49574.07
20
-93074。
07
在表中可以看到当x≥11时该厂出现亏本,为了更形象的观察利润的变化情况,根据上表的数据做出利润变化图如下(图1)。
图1:
不同x的情况下最多可得利润变化图
在图中可以看到,在x≤11时利润的下降趋势较大,在x≥11时利润的下降趋势随着x的变化越来越缓慢,逐渐的接近-101324.1元。
进一步考虑到在不同的x下每个月的存储量、采购量和耗用量的变化情况,根据统计的数据做出下图(图2-图4:
完整图见附件:
“食用油加工厂各表。
xlsx")。
图2:
每个月储存量的变化图
从图2中随着x的变化可以看到当x变化是对O1的影响较少,其它的各种油随着x的增长总体呈增长趋势。
图3:
每个月采购量的变化图
从图3中可以看到,在一月时除了O1外,其他各种原料油都随着x的增大而呈递增趋势,而四月分无论x为何值各种油的购买量都没0,在六月的时候除了O1外,其他各种原料油都随着x的增大而呈递减趋势。
图4:
每个月耗用量的变化图
从图4中可以看到每种油的耗用量呈一种互补状态,这是由于题目中成品油的硬度约束为3—6之间,对与硬度大于区间的原料油要加入小于区间的原料油才能符合成品油的标准。
参考文献
[1]何坚勇。
最优化方法[M]。
北京:
清华大学出版社,2007
附录
模型1:
model:
sets:
!
定义变量;
!
kind表示5种原料油,R表示每种油的硬度;
kind/1..5/:
R;
!
month表示6个月,monthZ表示每个月的盈利额,monthR表示每个月食用油的硬度;
month/1..6/:
monthZ,monthR;
!
P表示采购量,M表示耗用量,S表示储存量,B表示采购价格;
links(month,kind):
P,M,S,B;
endsets
data:
R=8.86.12.04。
25。
0;
B=
122001250
9001350;
enddata
!
约束条件;
@for(month(i):
M(i,1)+M(i,2)〈=200);
@for(month(i):
M(i,3)+M(i,4)+M(i,5)〈=250);
@for(kind(j):
S(1,j)=P(1,j)+500—M(1,j));
@for(links(i,j)|i#ge#2:
@for(kind(j):
S(i,j)=P(i,j)+S(i—1,j)-M(i,j)));
@for(links(i,j):
S(i,j)<=1000);
@for(links(i,j):
S(i,j)〉=0);
@for(month(i):
monthR(i)=@sum(kind(j):
R(j)*M(i,j))/@sum(kind(j):
M(i,j)));!
求每个月的食用油硬度;
@for(month(i):
monthR(i)>=3);
@for(month(i):
monthR(i)〈=6);
@for(kind(j):
S(6,j)=500);
!
求每个月的利润;
@for(month(i):
monthZ(i)=1800*@sum(kind(j):
M(i,j))—270*(M(i,1)+M(i,2))-310*(M(i,3)+M(i,4)+M(i,5))—50*@sum(kind(j):
S(i,j))-@sum(kind(j):
B(i,j)*P(i,j)));
@for(month(i):
@free(monthZ(i)));
!
目标函数;
max=@sum(month(i):
monthZ(i));
end
模型2:
model:
sets:
!
定义变量;
!
kind表示5种原料油,R表示每种油的硬度;
kind/1..5/:
R;
!
month表示6个月,monthZ表示每个月的盈利额,monthR表示每个月食用油的硬度;
month/1.。
6/:
monthZ,monthR;
!
P表示采购量,M表示耗用量,S表示储存量,B表示采购价格;
links(month,kind):
P,M,S,B;
endsets
data:
!
x为价格变动系数;
x=?
;
R=8.86。
12。
04。
25。
0;
B=
122001250
9001350;
enddata
!
约束条件;
@for(month(i):
M(i,1)+M(i,2)<=200);
@for(month(i):
M(i,3)+M(i,4)+M(i,5)<=250);
@for(kind(j):
S(1,j)=P(1,j)+500-M(1,j));
@for(links(i,j)|i#ge#2:
@for(kind(j):
S(i,j)=P(i,j)+S(i-1,j)-M(i,j)));
@for(links(i,j):
S(i,j)〈=1000);
@for(links(i,j):
S(i,j)〉=0);
@for(month(i):
monthR(i)=@sum(kind(j):
R(j)*M(i,j))/@sum(kind(j):
M(i,j)));!
求每个月的食用油硬度;
@for(month(i):
monthR(i)〉=3);
@for(month(i):
monthR(i)〈=6);
@for(kind(j):
S(6,j)=500);
!
求每个月的利润;
@for(month(i):
monthZ(i)=1800*@sum(kind(j):
M(i,j))-270*(M(i,1)+M(i,2))—310*(M(i,3)+M(i,4)+M(i,5))—50*@sum(kind(j):
S(i,j))—@sum(kind(j)|j#le#2:
P(i,j)*B(i,j)*(1+(i-1)*x/100))-@sum(kind(j)|j#ge#3:
P(i,j)*B(i,j)*(1+2*(i-1)*x/100)));
@for(month(i):
@free(monthZ(i)));
!
目标函数;
max=@sum(month(i):
monthZ(i));
end