关于食品加工的模型
摘要:本文以企业获得最大利润为研究对象,利润主要由生产产品的成本和销售额两个因素决定的,所以在求解过程中以企业获得的利润为目标函数建立动态规划模型,并结合Lingo软件,通过解的最大值来为决定最佳采购及加工方案,在问题一的求解中,企业的成本由所采购的原料油数量、采购时的价格及存储费用决定;企业的销售额是由每月加工的成品油数量和成品油价格决定。而每月的加工量和销售量受存储量、存储费用、最大能生产的原油量及六月份的库存等多方面的限制。由此分析,以每月五种原料油的采购量及加工量为自变量,以1~6月份所获得的最大利润为目标函数,将问题转化为动态规划的模型,通过建立动态规划方程组使问题得到简化及用lingo软件求解,解得最大利润的最优解为47.67857万元。问题二考虑了未来市场价格的变化,只要在问题一的基础上增加价格变化量x由小到大变化时的约束方程,再用lingo软件求出对应的最大利润值并将数据模拟出图形,总结出最大利润随着x的值变化的规律,得到原料油的采购与加工的全面方案。在求解模型的过程中我们主要利用了lingo软件。
关键字:最大利润 成本 销售额 目标函数 线性规划 0-1规划
一问题重述
一项食品加工,为将几种粗油精炼,然后加以混合成为成品油。原料油有两大类,共5种:植物没2种,分别记作V1和V2;非植物油3种,记为O1、O2和O3。各种原料油均从市场采购。现在(一月份)和未来半年中,市场价格(元/吨)如下表所示: 月份 油 一 二 三 四 五 六
成品油售价1500元/吨。植物油和非植物油要在不同的生产线精炼。每个月最多可精炼植物油200吨,非植物油250吨。精炼过程中没有重量损失。精炼费用可以忽略。每种原料油最多可存贮1000吨备用。存贮费为每吨每月50元。成品油和经过精炼的原料油不能存贮。对
V1 1100 1300 1100 1200 1000 900
V2 1200 1300 1400 1100 1200 1000
O1 1300 1100 1300 1200 1500 1400
O2 1100 900 1000 1200 1100 800
O3 1150 1150 950 1250 1050 1350
成品油限定其硬度在3至6单位之间。各种原料油的硬度如下表所示:
油 硬度
V1 8.8
V2 6.1
O1 2.0
O2 4.2
O3 5.0
假设硬度是线性地合成的。
另加条件:现存有5种原料油每种500吨。要求在6月底仍然有这样多的存货;每个月最多使用3种原料油;如果某月使用了原料油V1和V2,则必须使用O3。 (1)为使公司获得最大利润,应取什么样的采购和加工方案。
(2)分析总利润同采购和加工方案适应不同的未来市场价格应如何变化。考虑如下的价格变化方式:2月份植物油价上升x%,非植物油价上升2x%;3月份植物油价上升2x%,非植物油价上升4x%;其余月份保持这种线性上升势头。对不同的x值(直到2),就方案的必要的变化以及对总利润的影响,作出计划。
二问题假设
1.在每个月初采购各种原料。
2.在计算总利润时不考虑机器的磨损费用和保修费用。
3.企业的资金很充足,即采购原料油时不需要考虑资金不足的问题。
4.市场对这种成品油的需求量很大,即生产出来的成品油不会有供大于求的问题,每个月的成品油都能够全部按规定价格卖出。
三符号说明及名词定义
Wi: 第i个月的利润
Si: 第i个月的销售额
Qi: 第i个月的存储量 Bi: 第i个月的购买费用
Aij: 第i个月第j种原料油的购买量 Bij: 第i个月第j种原料油的价格
Rij:第i-1月份底第j种原料油的存储量即作为第j种原料油在i月份初的数量 Hi: 第i个月成本油的硬度 Hj: 第j种原料油的硬度
Fij: 第i个月第j种原料油的加工量
Xij: 0-1变量.加工了第i个月第j种原料油,则Xij=1
则 Xij=0 f未加工第i个月第j种原料油,
:表示公司利润的最大值
x:表示原料油市场价格的波动
其中i=1,2,…,6; j=1,2,…,5
四问题分析
从题目我们可以看出这是线性规划问题。食品加工业的工厂需要制定一种方案如何原料的购买和生产方案使得工厂在六个月内获利最大,对于这六个月的方案我们可以考虑以1个月为一个生产周期,在每个周期初购买这一个周期所需的原料,成品油和精炼油不能存储,生产出来之后马上卖掉。又因为每个月最多使用3种原料油,所以考虑0-1规划。我们的任务就是制定一种优化的采购和加工方案使得公司获得最大利润。
公司的利润要受到三个因素的制约,一是购买每一种原料油的成本费,二是卖掉成品油的销售费,三是没有炼制的原料油的存储费。购买原料油的成本费与购买每一种原料油的数量和每一种原料油的价格有关系,应该是价格高的原料尽量少购买,价格低的原料多购买。由于销售成品油的销售额的价格不变,所以销售额只与成品油的产量有线性关系,因此尽可能增加成品油的产量,以增加销售额。要想增加成品油的产量就必须增加每一种原料油的购买量,这样又会引起成本的增加,因此这是矛盾的,但是在这过程中一定存在一个最优的方案使得这两个目标最大。存储费用与存储原料油总数量存在一种线性关系,存储原料油的数量越少存储费用越少,尽量保证存储的原料油总量少,相应的购买的原料油的量应该尽量少。这三个因素是互相影响的,既是矛盾的又是联系的。所以我们建立线性规划模型来解决此问题。食品加工公司要想获得最大利润,就需要制定一个合理的方案来安排原料油的采购和精炼,本文对此展开分析。
五模型建立
问题一:
(1) 目标函数
题目的目标是寻求利润的最大化,而利润W为六个月的利润和,即:
Wwi
i16每月的利润Yi等于每月销售额减去原料油采购成本和库存原料油的存储费用,即:
Wi=Si-Bi-Ri
每月销售额Si为各种原料油加工的数量之和×成品油价格,即:
S存储费用的确定:
i1500Fij•Xij
j15由于存储费用是50元/吨.月,所以对那些留到月底的原料油来说从月初到月底一共存储了整整1个月,所以费用与数量成正比;对于用来精炼油的那一部分原料油的存储费用不是这么简单,我们必须单独考虑。 存储费用等价引理:如果公司的每个月服从均匀生产规律,那么用来精炼油的原料油单位存储费用是存储整整一个月原料单位费用的0.5。
证明:假设每个月均匀生产,每个月一共生产Q吨,将贮存量表示为时间t的函数q(t),开始生产时刻记为t=0,那么在时刻t=0生产0件,贮存量q(0)Q,q(t)以速率r递减,直到q(t)0,如图1所示
图1 存储量的周期生产图形
一个月生产Q,一个月以30天为准,则rQQ30,q(t)30tQ,平均每
天每吨的存储费用为50/30,在一个周期即一个月内的存储费用是
3050300q(t)dt3050300Q(30tQ)dt25Q
相当于每个月每吨的存储费用是25元。
所以库存原料油存储费用Ri可表示为:
R50Rii1j25Fij•Xij
每月原料油采购成本Bi可表示为:
BBAij
ij1ij5目标函数可表示为:
fmax(1500Fij•XijBijAij50Ri1j25Fij•Xij)
i1j1j1j1j165555化简得:
fmax[1500i1j165Fij•XijBijAij50RAF•X25F•Xijijijijijij]
(2) 约束条件
因为每个月最多使用3种原料油 所以:
0Xij3
j15
由题目中的每个月最多可炼植物油200吨可得:
0Fi1Xi1Fi2Xi2200 ;
250
吨可得:
题目中的每个月最多可非植物油
0Fi3Xi3Fi4Xi4Fi5Xi5250
由现存有5种原料油每种500吨,要求在6月底仍然有这样多的存货可得:
R1j=500,R6jA6jF6j•X6j500
由每种原料油最多可存储1000吨备用可得:
0RijAijFij•Xij1000 .
成本油的硬度Hi是原料油硬度的线性组合,于是有:
HiF•X•Hi1j16ijij65jF•Xi1j1ij5
ij因为对成品油限定其硬度在3至6单位之间 所以:
3F•X•Hi1j16ijij65jF•Xi1j1ij56
ij由题目中如果某月使用了原料油V1和V2,则必须使用O3 可得:
Xi1+Xi2-1<=Xi5
有以上分析可得到约束条件如下:
0,1Xij50Xij3j1 Xi1•2Xi21Xi5 0Fij•Xij200j150Fij•Xij250j3R1j500RAF•X5006j6j6j6j0RijAijFij•Xij100065•Xij•HjFij3i1j1665•XijFiji1j1i1,2,3,4,5,6 j1,2,3,4,5问题二
(1) 目标函数:
题目的目标是寻求利润的最大化,而利润W为六个月的利润和,即:
Wwi
i16每月的利润Yi等于每月销售额减去原料油采购成本和库存原料油的存储费用,即:
Wi=Si-Bi-Ri
现在我们需要考虑但原料油价格发生变化时采购与加工方案的变化,我们认为价格变化方式如下表2所示:
月份 植物油(x%) 非植物油(x%) 1 1 1 2 1 2 3 2 4 表1价格变化方式
所以每月原料油采购成本Bi可表示为:
5x2xB*(1(i1)*)*AB*(1(i1)*)*Aij =ijijijBij1100100j324 3 6 5 4 8 6 5 10 所以目标函数可表示为:
5x2xfmax(1500Fij•XijBij•(1(i1)•)•AijBij•(1(i1)•)•Aij100100i1j1j1j365250Ri1j25Fij•Xij)j1j155(2)约束条件同问题一
六模型求解
问题一:
我们根据建立的线性规划模型,通过lingo软件编程(程序见附录1),得到了问题的最优解,公司的最大利润为47.6786万元,其中销售额为238.3929万元,购买原料油的成本费用为176.0714万元,存储费用为62.3215万元。具体的采购和加工方案见表1。
月份 一 月 二 月 三 月 四 月 五 月 六 月 原料油 V1 V2 O1 O2 O3 V1 V2 O1 O2 O3 V1 V2 O1 O2 O3 V1 V2 O1 O2 O3 V1 V2 O1 O2 O3 V1 V2 O1 O2 O3 购买量(吨) 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 750.0000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 250.0000 428.5714 0.000000 0.000000 500.0000 0.000000 对目标函数值的影响(元/吨) 450.0000 1500.000 1600.000 550.0000 300.0000 600.0000 1550.000 1350.000 300.0000 250.0000 350.0000 1600.000 1500.000 350.0000 0.000000 400.0000 1250.000 1350.000 500.0000 250.0000 150.0000 1300.000 1600.000 350.0000 0.000000 0.000000 1050.000 1450.000 0.000000 250.0000 生产量(吨) 160.7143 0.000000 0.000000 250.0000 0.000000 89.28571 0.000000 0.000000 0.000000 250.0000 89.28571 0.000000 0.000000 0.000000 250.0000 89.28571 0.000000 0.000000 对目标函数值的影响(元/吨) 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 250.0000 0.000000 0.000000 0.000000 0.000000 250.0000 0.000000 0.000000 0.000000 250.0000 0.000000 表2 采购和加工方案
结论:购买方案与原料油的价格有关,尽量购买价格低的原料油,尽量减少价格高的原料油
的购买量,甚至不够买;尽量在后几个月购买原料油,以减少原料油的存储费用.
问题二:
现在我们将变量x从0以步长0.2变化直到2,得到了每一步的最大的利润(见
表3)。
x 0.2 0.4 43320.6 41150.8 38971.0 36801.2 34621.4 32441.6 30271.8 28092 2592利润(元) 455028.6 71.4 14.3 57.1 00 42.9 85.7 28.6 71.4 14.3 表3 我们用Excel软件作出最大利润随价格涨幅的变化曲线图,见图2。
500000400000利润/元30000020000010000000.20.40.60.811.21.41.61.82价格涨幅/x最大利润 图2
由图2可知:原料油的市场价格上涨,公司获得的最大利润呈直线下降。而公司的意图在于获得最大利润,其必定会对成品油的价格作相应的调整,成品油的价格增加幅度过大,势必会影响销售,导致每月的成品油无法全部售完而亏损,增加幅度过小又无法保证利润。
七、模型的评价
1、模型的优点
(1) 通过建立模型,可以成功的为公司获得最大的利润提供必要的参考方案。合理的
安排了原料的采购和精练。并且针对原料市场价格的波动对利润的影响,做出了全面的规划,确保公司能获取最大的利润。
(2) 在模型的建立和求解过程中多次运用图形和表格的形式表示出数据间的关系。这样让结果一目了然,便于分析。
(3) 运用了LINGO 和Excel软件求解,即减少了计算难度,又获取了更多的信息,这样对数据分析获取信息有巨大的帮助。
2、模型的缺点
(1) 该模型是单纯的线性规划模型求解段阶段生产计划,实际上这是一个典型的动态优化模型。应该考虑各个阶段的动态变化。
(2) 在讨论第二个问题时,对于x的插值,取点较少,这样不能使得出的曲线精确地说明问题。
参考文献
[1]袁新生,邵大宏,郁时炼,LINGO和EXCEL在数学建模中的应用,北京,科学出版社2008-11. [2]姜启源,谢金星,叶俊,数学模型(第三版),高等教育出版社,2003年8月 [3]叶其孝,大学生数学建模竞赛辅导教材(三),湖南教育出版社,1998年5月 [4]谷源盛,运筹学,重庆大学出版社,2001年8月
附录
附录一:
sets:
m/1..6/:;!定义月份下标集; n/1..5/:;!定义原料油种类下标集;
ajs(m,n):c,x,y,z;!定义价格矩阵C,购买方案矩阵X和生产方案矩阵Y; endsets data:
c=1100 1200 1300 1100 1150 1300 1300 1100 900 1150 1100 1400 1300 1000 950 1200 1100 1200 1200 1250 1000 1200 1500 1100 1050 900 1000 1400 800 1350; enddata
max=@sum(m(i):@sum(n(j):(1500-25)*y(i,j)*z(i,j)-50*(7-i)*(x(i,j)-y(i,j)*z(i,j))-c(i,j)*x(i,j)))-750000;!目标函数; @for(ajs:@bin(z));
@for(m(i):z(i,1)+z(i,2)+z(i,3)+z(i,4)+z(i,5)<=3); @for(m(i):z(i,1)+z(i,2)+z(i,3)+z(i,4)+z(i,5)>=1); @for(m(i):z(i,1)+z(i,2)-1<=z(i,5));
@for(m(i):y(i,1)*z(i,1)+y(i,2)*z(i,2)<=200);
@for(m(i):y(i,3)*z(i,3)+y(i,4)*z(i,4)+y(i,5)*z(i,5)<=250);
@for(m(i):5.8*y(i,1)*z(i,1)+3.1*y(i,2)*z(i,2)-1.0*y(i,3)*z(i,3)+1.2*y(i,4)*z(i,4)+2.0*y(i,5)*z(i,5)>=0);
@for(m(i):-2.8*y(i,1)*z(i,1)-0.1*y(i,2)*z(i,2)+4.0*y(i,3)*z(i,3)+1.8*y(i,4)*z(i,4)+1.0*y(i,5)*z(i,5)>=0);
@for(n(j):@sum(m(i):x(i,j)-y(i,j)*z(i,j))=0); @for(n(j):x(1,j)<=500);
@for(n(j):x(1,j)-y(1,j) *z(1,j)+x(2,j)<=500);
@for(n(j):x(1,j)-y(1,j)*z(1,j)+x(2,j)-y(2,j)*z(2,j)+x(3,j)<=500); @for(n(j):x(1,j)-y(1,j)*z(1,j)+x(2,j)-y(2,j)*z(2,j)+x(3,j)-y(3,j)*z(3,j)+x(4,j)<=500);
@for(n(j):x(1,j)-y(1,j)*z(1,j)+x(2,j)-y(2,j)*z(2,j)+x(3,j)-y(3,j)*z(3,j)+x(4,j)-y(4,j)*z(4,j)+x(5,j)<=500);
@for(n(j):x(1,j)-y(1,j)*z(1,j)+x(2,j)-y(2,j)*z(2,j)+x(3,j)-y(3,j)*z(3,j)+x(4,j)-y(4,j)*z(4,j)+x(5,j)-y(5,j)*z(5,j)+x(6,j)<=500); @for(n(j):500+x(1,j)-y(1,j)*z(1,j)>=0);
@for(n(j):500+x(1,j)-y(1,j)*z(1,j)+x(2,j)-y(2,j)*z(2,j)>=0);
@for(n(j):500+x(1,j)-y(1,j)*z(1,j)+x(2,j)-y(2,j)*z(2,j)+x(3,j)-y(3,j)*z(3,j)>=0);
@for(n(j):500+x(1,j)-y(1,j)*z(1,j)+x(2,j)-y(2,j)*z(2,j)+x(3,j)-y(3,j)*z(3,j)+x(4,j)-y(4,j)*z(4,j)>=0);
@for(n(j):500+x(1,j)-y(1,j)*z(1,j)+x(2,j)-y(2,j)*z(2,j)+x(3,j)-y(3,j)*z(3,j)+x(4,j)-y(4,j)*z(4,j)+x(5,j)-y(5,j)*z(5,j)>=0); end
运行后的结果为:
Local optimal solution found.
Objective value: 476785.7 Objective bound: 476785.7 Infeasibilities: 0.1136868E-12 Extended solver steps: 74 Total solver iterations: 5590
Variable Value Reduced Cost C( 1, 1) 1100.000 0.000000 C( 1, 2) 1200.000 0.000000 C( 1, 3) 1300.000 0.000000 C( 1, 4) 1100.000 0.000000 C( 1, 5) 1150.000 0.000000 C( 2, 1) 1300.000 0.000000 C( 2, 2) 1300.000 0.000000 C( 2, 3) 1100.000 0.000000 C( 2, 4) 900.0000 0.000000 C( 2, 5) 1150.000 0.000000 C( 3, 1) 1100.000 0.000000 C( 3, 2) 1400.000 0.000000 C( 3, 3) 1300.000 0.000000 C( 3, 4) 1000.000 0.000000 C( 3, 5) 950.0000 0.000000 C( 4, 1) 1200.000 0.000000 C( 4, 2) 1100.000 0.000000 C( 4, 3) 1200.000 0.000000 C( 4, 4) 1200.000 0.000000 C( 4, 5) 1250.000 0.000000 C( 5, 1) 1000.000 0.000000
C( 5, 2) 1200.000 0.000000 C( 5, 3) 1500.000 0.000000 C( 5, 4) 1100.000 0.000000 C( 5, 5) 1050.000 0.000000 C( 6, 1) 900.0000 0.000000 C( 6, 2) 1000.000 0.000000 C( 6, 3) 1400.000 0.000000 C( 6, 4) 800.0000 0.000000 C( 6, 5) 1350.000 0.000000 X( 1, 1) 0.000000 450.0000 X( 1, 2) 0.000000 1500.000 X( 1, 3) 0.000000 1600.000 X( 1, 4) 0.000000 550.0000 X( 1, 5) 0.000000 300.0000 X( 2, 1) 0.000000 600.0000 X( 2, 2) 0.000000 1550.000 X( 2, 3) 0.000000 1350.000 X( 2, 4) 0.000000 300.0000 X( 2, 5) 0.000000 250.0000 X( 3, 1) 0.000000 350.0000 X( 3, 2) 0.000000 1600.000 X( 3, 3) 0.000000 1500.000 X( 3, 4) 0.000000 350.0000 X( 3, 5) 750.0000 0.000000 X( 4, 1) 0.000000 400.0000 X( 4, 2) 0.000000 1250.000 X( 4, 3) 0.000000 1350.000 X( 4, 4) 0.000000 500.0000 X( 4, 5) 0.000000 250.0000 X( 5, 1) 0.000000 150.0000 X( 5, 2) 0.000000 1300.000 X( 5, 3) 0.000000 1600.000 X( 5, 4) 0.000000 350.0000 X( 5, 5) 250.0000 0.000000 X( 6, 1) 428.5714 0.000000 X( 6, 2) 0.000000 1050.000 X( 6, 3) 0.000000 1450.000 X( 6, 4) 500.0000 0.000000 X( 6, 5) 0.000000 250.0000 Y( 1, 1) 160.7143 0.000000 Y( 1, 2) 0.000000 0.000000 Y( 1, 3) 0.000000 0.000000 Y( 1, 4) 250.0000 0.000000 Y( 1, 5) 0.000000 0.000000
Y( 2, 1) 89.28571 0.000000 Y( 2, 2) 0.000000 0.000000 Y( 2, 3) 0.000000 0.000000 Y( 2, 4) 0.000000 0.000000 Y( 2, 5) 250.0000 0.000000 Y( 3, 1) 89.28571 0.000000 Y( 3, 2) 0.000000 0.000000 Y( 3, 3) 0.000000 0.000000 Y( 3, 4) 0.000000 0.000000 Y( 3, 5) 250.0000 0.000000 Y( 4, 1) 89.28571 0.000000 Y( 4, 2) 0.000000 0.000000 Y( 4, 3) 0.000000 0.000000 Y( 4, 4) 0.000000 0.000000 Y( 4, 5) 250.0000 0.000000 Y( 5, 1) 0.000000 0.000000 Y( 5, 2) 0.000000 0.000000 Y( 5, 3) 0.000000 0.000000 Y( 5, 4) 0.000000 0.000000 Y( 5, 5) 250.0000 0.000000 Y( 6, 1) 0.000000 0.000000 Y( 6, 2) 0.000000 0.000000 Y( 6, 3) 0.000000 0.000000 Y( 6, 4) 250.0000 0.000000 Y( 6, 5) 0.000000 0.000000 Z( 1, 1) 1.000000 0.000000 Z( 1, 2) 0.000000 0.000000 Z( 1, 3) 0.000000 0.000000 Z( 1, 4) 1.000000 0.000000 Z( 1, 5) 0.000000 0.000000 Z( 2, 1) 1.000000 0.000000 Z( 2, 2) 0.000000 0.000000 Z( 2, 3) 0.000000 0.000000 Z( 2, 4) 0.000000 0.000000 Z( 2, 5) 1.000000 0.000000 Z( 3, 1) 1.000000 0.000000 Z( 3, 2) 0.000000 0.000000 Z( 3, 3) 0.000000 0.000000 Z( 3, 4) 0.000000 0.000000 Z( 3, 5) 1.000000 0.000000 Z( 4, 1) 1.000000 0.000000 Z( 4, 2) 0.000000 0.000000 Z( 4, 3) 0.000000 0.000000 Z( 4, 4) 0.000000 0.000000
Z( 4, 5) 1.000000 0.000000 Z( 5, 1) 0.000000 0.000000 Z( 5, 2) 0.000000 0.000000 Z( 5, 3) 0.000000 0.000000 Z( 5, 4) 0.000000 0.000000 Z( 5, 5) 1.000000 0.000000 Z( 6, 1) 0.000000 0.000000 Z( 6, 2) 0.000000 0.000000 Z( 6, 3) 0.000000 0.000000 Z( 6, 4) 1.000000 0.000000 Z( 6, 5) 0.000000 0.000000
Row Slack or Surplus Dual Price 1 476785.7 1.000000 2 1.000000 0.000000 3 1.000000 0.000000 4 1.000000 0.000000 5 1.000000 0.000000 6 2.000000 0.000000 7 2.000000 0.000000 8 1.000000 0.000000 9 1.000000 0.000000 10 1.000000 0.000000 11 1.000000 0.000000 12 0.000000 0.000000 13 0.000000 0.000000 14 0.000000 0.000000 15 1.000000 0.000000 16 1.000000 0.000000 17 1.000000 0.000000 18 2.000000 0.000000 19 1.000000 0.000000 20 39.28571 0.000000 21 110.7143 0.000000 22 110.7143 0.000000 23 110.7143 0.000000 24 200.0000 0.000000 25 200.0000 0.000000 26 0.000000 1455.357 27 0.000000 851.7857 28 0.000000 783.9286 29 0.000000 716.0714 30 0.000000 425.0000 31 0.000000 675.0000
32 1232.143 0.000000 33 1017.857 0.000000 34 1017.857 0.000000 35 1017.857 0.000000 36 500.0000 0.000000 37 300.0000 0.000000 38 0.000000 -294.6429 39 0.000000 -276.7857 40 0.000000 -258.9286 41 0.000000 -241.0714 42 250.0000 0.000000 43 450.0000 0.000000 44 0.000000 -950.0000 45 0.000000 0.000000 46 0.000000 0.000000 47 0.000000 -850.0000 48 0.000000 -1150.000 49 500.0000 0.000000 50 500.0000 0.000000 51 500.0000 0.000000 52 500.0000 0.000000 53 500.0000 0.000000 54 660.7143 0.000000 55 500.0000 0.000000 56 500.0000 0.000000 57 750.0000 0.000000 58 500.0000 0.000000 59 750.0000 0.000000 60 500.0000 0.000000 61 500.0000 0.000000 62 750.0000 0.000000 63 0.000000 0.000000 64 839.2857 0.000000 65 500.0000 0.000000 66 500.0000 0.000000 67 750.0000 0.000000 68 250.0000 0.000000 69 928.5714 0.000000 70 500.0000 0.000000 71 500.0000 0.000000 72 750.0000 0.000000 73 250.0000 0.000000 74 500.0000 0.000000 75 500.0000 0.000000
76 500.0000 0.000000 77 250.0000 0.000000 78 500.0000 0.000000 79 339.2857 0.000000 80 500.0000 0.000000 81 500.0000 0.000000 82 250.0000 0.000000 83 500.0000 0.000000 84 250.0000 0.000000 85 500.0000 0.000000 86 500.0000 0.000000 87 250.0000 0.000000 88 250.0000 0.000000 89 160.7143 0.000000 90 500.0000 0.000000 91 500.0000 0.000000 92 250.0000 0.000000 93 750.0000 0.000000 94 71.42857 0.000000 95 500.0000 0.000000 96 500.0000 0.000000 97 250.0000 0.000000 98 500.0000 0.000000 99 71.42857 0.000000 100 500.0000 0.000000 101 500.0000 0.000000 102 250.0000 0.000000 103 500.0000 0.000000
附录二:
sets:
m/1..6/:;!定义月份下标集; n/1..5/:;!定义原料油种类下标集;
ajs(m,n):c,x,y,z;!定义价格矩阵C,购买方案矩阵X和生产方案矩阵Y; endsets data: k=?;
c=1100 1200 1300 1100 1150 1300 1300 1100 900 1150 1100 1400 1300 1000 950 1200 1100 1200 1200 1250 1000 1200 1500 1100 1050 900 1000 1400 800 1350; enddata
max=@sum(m(i):(1500-25)*@sum(n(j):y(i,j)*z(i,j))-50*@sum(n(j):(7-i)*(x(i,j)-y(i,j)*z(i,j)))-@sum(n(j)|j#le#2:c(i,j)*(1+(i-1)*k/100)*x(i,j))-@sum(n(j)|j#gt#2:c(i,j)*(1+(i-1)*2*k/100)*x(i,j)))-750000;!目标函数; @for(ajs:@bin(z));
@for(m(i):z(i,1)+z(i,2)+z(i,3)+z(i,4)+z(i,5)<=3); @for(m(i):z(i,1)+z(i,2)+z(i,3)+z(i,4)+z(i,5)>=1); @for(m(i):z(i,1)+z(i,2)-1<=z(i,5));
@for(m(i):y(i,1)*z(i,1)+y(i,2)*z(i,2)<=200);
@for(m(i):y(i,3)*z(i,3)+y(i,4)*z(i,4)+y(i,5)*z(i,5)<=250);
@for(m(i):5.8*y(i,1)*z(i,1)+3.1*y(i,2)*z(i,2)-1.0*y(i,3)*z(i,3)+1.2*y(i,4)*z(i,4)+2.0*y(i,5)*z(i,5)>=0);
@for(m(i):-2.8*y(i,1)*z(i,1)-0.1*y(i,2)*z(i,2)+4.0*y(i,3)*z(i,3)+1.8*y(i,4)*z(i,4)+1.0*y(i,5)*z(i,5)>=0);
@for(n(j):@sum(m(i):x(i,j)-y(i,j)*z(i,j))=0); @for(n(j):x(1,j)<=500);
@for(n(j):x(1,j)-y(1,j) *z(1,j)+x(2,j)<=500);
@for(n(j):x(1,j)-y(1,j)*z(1,j)+x(2,j)-y(2,j)*z(2,j)+x(3,j)<=500); @for(n(j):x(1,j)-y(1,j)*z(1,j)+x(2,j)-y(2,j)*z(2,j)+x(3,j)-y(3,j)*z(3,j)+x(4,j)<=500);
@for(n(j):x(1,j)-y(1,j)*z(1,j)+x(2,j)-y(2,j)*z(2,j)+x(3,j)-y(3,j)*z(3,j)+x(4,j)-y(4,j)*z(4,j)+x(5,j)<=500);
@for(n(j):x(1,j)-y(1,j)*z(1,j)+x(2,j)-y(2,j)*z(2,j)+x(3,j)-y(3,j)*z(3,j)+x(4,j)-y(4,j)*z(4,j)+x(5,j)-y(5,j)*z(5,j)+x(6,j)<=500); @for(n(j):500+x(1,j)-y(1,j)*z(1,j)>=0);
@for(n(j):500+x(1,j)-y(1,j)*z(1,j)+x(2,j)-y(2,j)*z(2,j)>=0);
@for(n(j):500+x(1,j)-y(1,j)*z(1,j)+x(2,j)-y(2,j)*z(2,j)+x(3,j)-y(3,j)*z(3,j)>=0);
@for(n(j):500+x(1,j)-y(1,j)*z(1,j)+x(2,j)-y(2,j)*z(2,j)+x(3,j)-y(3,j)*z(3,j)+x(4,j)-y(4,j)*z(4,j)>=0);
@for(n(j):500+x(1,j)-y(1,j)*z(1,j)+x(2,j)-y(2,j)*z(2,j)+x(3,j)-y(3,j)*z(3,j)+x(4,j)-y(4,j)*z(4,j)+x(5,j)-y(5,j)*z(5,j)>=0); end
因篇幅问题不能全部显示,请点此查看更多更全内容