您的位置:首页 > 编程语言 > Go语言

自己写的一个LINGO程序,欢迎指教

2015-08-28 15:02 846 查看
问题

9.一架货机有三个货舱:前舱、中仓和后舱。三个货舱所能装载的货物的最大重

量和体积有限制如表5 所示。并且为了飞机的平衡,三个货舱装载的货物重量必须与其

最大的容许量成比例。

表5 货舱数据

前舱 中仓 后舱

重量限制(吨) 10 16 8

体积限制(立方米) 6800 8700 5300

现有四类货物用该货机进行装运,货物的规格以及装运后获得的利润如表6。

表6 货物规格及利润表

重量(吨) 空间(立方米/吨) 利润(元/吨)

货物1 18 480 3100

货物2 15 650 3800

货物3 23 580 3500

货物4 12 390 2850

-15-

假设:

(1)每种货物可以无限细分;

(2)每种货物可以分布在一个或者多个货舱内;

(3)不同的货物可以放在同一个货舱内,并且可以保证不留空隙。

问应如何装运,使货机飞行利润最大?

-

程序

model:

sets:

huowu/1,2,3,4/:weight,volume,lirun;

huocang/1,2,3/:wtlimit,vllimit;

link(huowu,huocang):a;

endsets

data:

weight=18,15,23,12;

volume=480,650,580,390;

lirun=3100,3800,3500,2850;

wtlimit=10,16,8;

vllimit=6800,8700,5300;

enddata

max=@sum(huowu(i):@sum(huocang(j):a(i,j))*lirun(i));

@for(huocang(j):@sum(huowu(i):a(i,j))/vllimit(j)=b);

@for(huowu(i):@sum(huocang(j):a(i,j))=weight(i));

@bnd(0,b,1);

end

另一个

sets:

hc/1..3/:e,f;

hw/1..4/:a,b,c;

link(hc,hw):x;

endsets

data:

a=18 15 23 12;

b=480 650 580 390;

c=3100 3800 3500 2850;

e=10 18 8;

f=6800 8700 5300;

enddata

max=@sum(hw(j):c(j)*@sum(hc(i):x(i,j)));

@for(hw(j):@sum(hc(i):x(i,j))<=a(j)); !货物吨数限制;

@for(hc(i):@sum(hw(j):x(i,j))<=e(i)); !货仓吨数限制;

@for(hc(i):@sum(hw(j):b(j)*x(i,j))<=f(i)); !货仓体积限制;

@sum(hw(j):x(2,j))*(5/2)/@sum(hw(j):x(3,j))=@sum(hw(j):x(1,j)); !成比例

10:16:8;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: