本帖最后由 401798300 于 2010-8-15 18:31 编辑
复合肥料生产 某复合肥料由几种基本肥料组合而成,基础肥料有5种,其中氮肥3种:N1,N2,N3,磷肥2种P1,P2,各种基础肥料由其它化工厂购进,未来半年中各种基础肥料的价格如下:
月份\肥料
| P1
| P2
| N1
| N2
| N3
| 一
| 1650
| 1800
| 1950
| 1650
| 1725
| 二
| 1950
| 1950
| 1650
| 1350
| 1725
| 三
| 1650
| 2100
| 1950
| 1500
| 1425
| 四
| 1800
| 1650
| 1800
| 1800
| 1875
| 五
| 1500
| 1800
| 2250
| 1650
| 1575
| 六
| 1350
| 1500
| 2100
| 1200
| 2025
|
对几种基础肥料加工,然后混合为复合肥。复合肥售价为2250元/吨。氮肥和磷肥在不同生产线加工,每个月最多可以加工磷肥200吨,氮肥250吨。加工过程没有重量损失,费用不考虑。每种基础肥料最多可以存储1000吨备用,存储费用为每吨每月75元。成品复合肥和加工过的基础肥料不能存储。对复合肥的杂质指标限制在3-6%个单位之间,假设杂质是线性混合的。各种基础肥料的杂质含量见下表 基础肥料
| P1
| P2
| n1
| N2
| N3
| 杂质(%)
| 8.8
| 6.1
| 2.0
| 4.2
| 5.0
|
为使公司获得最大利润,应采取什么样的采购和加工方案。现存有5种基础肥料每种500吨,要求在6月底仍然有这样多存货。 model:
title:复合肥料的生产
sets:
month/m1..m6/:;
muck/n1..n5/:a,q;
links(month,muck):c,x,p;
endsets
max=@sum(month(i):2050*@sum(muck(j):c(i,j)))-@sum(links:p(i,j)*x(i,j))-75*@sum(links:500+x(1,j)-c(1,j))-75*@sum(links:500+x(2,j)-c(2,j)+x(1,j)-c(1,j))-75*@sum(links:500+x(3,j)-c(3,j)+x(2,j)-c(2,j)+x(1,j)-c(1,j))-75*@sum(links:500+x(4,j)-c(4,j)+x(3,j)-c(3,j)+x(2,j)-c(2,j)+x(1,j)-c(1,j))-75*@sum(links:500+x(5,j)-c(5,j)+x(4,j)-c(4,j)+x(3,j)-c(3,j)+x(2,j)-c(2,j)+x(1,j)-c(1,j))+@sum(links:x(6,j)-c(6,j)+500+x(5,j)-c(5,j)+x(4,j)-c(4,j)+x(3,j)-c(3,j)+x(2,j)-c(2,j)+x(1,j)-c(1,j));
@for(links:x(i,1)+x(i,2)<=200);
@for(links:x(i,3)+x(i,4)+x(i,5)<=250);
@for(links:500+x(1,j)-c(1,j)<=1000);
@for(links:500+x(2,j)-c(2,j)+x(1,j)-c(1,j)<=1000);
@for(links:500+x(3,j)-c(3,j)+x(2,j)-c(2,j)+x(1,j)-c(1,j)<=1000);
@for(muck(j):500+x(4,j)-c(4,j)+x(3,j)-c(3,j)+x(2,j)-c(2,j)+x(1,j)-c(1,j)<=1000);
@for(muck(j):500+x(5,j)-c(5,j)+x(4,j)-c(4,j)+x(3,j)-c(3,j)+x(2,j)-c(2,j)+x(1,j)-c(1,j)<=1000);
@for(muck(j):500+x(6,j)-c(6,j)+x(5,j)-c(5,j)+x(4,j)-c(4,j)+x(3,j)-c(3,j)+x(2,j)-c(2,j)+x(1,j)-c(1,j)<=1000);
@for(month(i):c(i,1)/c(i,2)=a(1)/a(2));
@for(month(i):c(i,1)/c(i,3)=a(1)/a(3));
@for(month(i):c(i,1)/c(i,4)=a(1)/a(4));
@for(month(i):c(i,1)/c(i,5)=a(1)/a(5));
@sum(muck(j):a(j))=1;
@for(month(i) bnd(3,@sum(muck(j):a(j)*q(j)*c(i,j)),6));
@sum(links:x(i,j))=@sum(links:c(i,j));
data:
q=8.8 6.1 2.0 4.2 5.0;
p=1650,1800,1950,1650,1725
1950,1950,1650,1350,1725
1650,2100,1950,1500,1425
1800,1650,1800,1800,1875
1500,1800,2250,1650,1575
1350,1500,2100,1200,2025
enddata;
end
这是我编的程序,但不知道为什么不行?哪位高手帮我看一下?
|