lingo软件编程,高手帮帮忙!

lingo软件编程,高手帮帮忙!,第1张

1.首先说一下:ch9505有病吗,记得我上次问了个问题,他丫的也是直接复制下来。

2.然后我开始帮你解答这个题目:

【所有代码都是原创的,大概花了我一个上午才帮你解出来的。这个题目虽然不是太难,但是数据有些繁琐。集合声明比较多,维度不一。希望能够帮上你的忙。】

程序部分:

MODEL:

SETS:

program/1..4/!定义四个项目

factory/1,2/:totaltime!定义两个车间,注意:本程序中,我们约定q开头代表数量,c开头代表成本

warehouse/1,2,3/!定义三个仓库

steel/A,B,C,D/!定义四种钢材(集合中第四种钢材为塑钢门窗)

component/1,2/!定义两种构件

linka(steel,warehouse):qlinka!表2.1==仓库存钢量

linkb(component,steel):qlinkb!表2.2==单位构件需钢材量

linkc(factory,component):time,cost,qlinkc!表2.3 2.4==车间生产成本(&耗时)

linkd(program,component):cpdemand!表2.5,cpdemand stands for "component demand"构件需求量

linke(program,steel):stdemand!表2.5,stdemand for "steel demand"钢材需求量

linkf(factory,steel):qlinkf

deepa(factory,program,component):qdeepa!2*4*2=16个量

deepb(warehouse,program,steel):qdeepb!3*4*4=48个量

deepc(steel,warehouse,factory):qdeepc!4*3*2=24

!deepd(factory,component,steel):qdeepd!2*2*4=16

transa(factory,program):qtransa,ctransa!本集合和下面两个集合,仓库,车间,项目之间的运输。表2.6

transb(warehouse,program):qtransb,ctransb

transc(warehouse,factory):qtransc,ctransc

ENDSETS

DATA:

qlinka=

4000 4000 6000

3000 3500 2500

3000 5000 5000

200 250 100

qlinkb=

15 10 20 0

20 10 15 0

totaltime= 35000 60000

time=100 200

200 100

cost=6600 7800

6500 7300

cpdemand=

50 100

30 60

100 200

50 80

stdemand=

100 70 0 100

50 80 0 120

30 90 0 80

70 60 0 200

ctransa=

100 150 80 70

50 60 80 90

ctransb=

40 20 30 50

60 40 80 100

50 60 75 85

ctransc=

40 80

100 20

80 40

ENDDATA

MIN=@sum(linkc:cost*qlinkc)+@sum(transa:qtransa*ctransa)+@sum(transb:qtransb*ctransb)+@sum(transc:qtransc*ctransc)

!1.构件需求约束

@for(linkd(i,j):@sum(factory(k):qdeepa(k,i,j))=cpdemand(i,j))

!2.钢材需求约束

@for(linke(i,j):@sum(warehouse(k):qdeepb(k,i,j))=stdemand(i,j))

!3.车间工时约束

@for(factory(i):@sum(component(j):time(i,j)*qlinkc(i,j))<=totaltime(i))

!4.库存钢材数量平衡

@for(linka(i,j):@sum(program(k):qdeepb(j,k,i))+@sum(factory(m):qdeepc(i,j,m))<=qlinka(i,j))

!5.生产运出平衡

@for(linkc(i,j):@sum(program(k):qdeepa(i,k,j))=qlinkc(i,j))

!6.单位构件需钢材量约束

@for(linkf(i,k):qlinkf(i,k)=@sum(component(j):qlinkc(i,j)*qlinkb(j,k)))

!7.运输量的约束

@for(transa(i,j):qtransa=@sum(component(k):qdeepa(i,j,k)))

@for(transb(i,j):qtransb=@sum(steel(k):qdeepb(i,j,k)))

@for(transc(i,j):qtransc=@sum(steel(k):qdeepc(k,i,j)))

@for(linkf(i,j):qlinkf(i,j)=@sum(warehouse(k):qdeepc(j,k,i)))

END

部分结果:

Global optimal solution found at iteration:80

Objective value: 5770900.

Variable ValueReduced Cost

TOTALTIME( 1)35000.000.000000

TOTALTIME( 2)60000.000.000000

QLINKA( A, 1)4000.0000.000000

QLINKA( A, 2)4000.0000.000000

QLINKA( A, 3)6000.0000.000000

QLINKA( B, 1)3000.0000.000000

QLINKA( B, 2)3500.0000.000000

QLINKA( B, 3)2500.0000.000000

QLINKA( C, 1)3000.0000.000000

QLINKA( C, 2)5000.0000.000000

QLINKA( C, 3)5000.0000.000000

QLINKA( D, 1)200.00000.000000

QLINKA( D, 2)250.00000.000000

QLINKA( D, 3)100.00000.000000

QLINKB( 1, A)15.000000.000000

QLINKB( 1, B)10.000000.000000

QLINKB( 1, C)20.000000.000000

QLINKB( 1, D)0.0000000.000000

QLINKB( 2, A)20.000000.000000

QLINKB( 2, B)10.000000.000000

QLINKB( 2, C)15.000000.000000

QLINKB( 2, D)0.0000000.000000

TIME( 1, 1)100.00000.000000

TIME( 1, 2)200.00000.000000

TIME( 2, 1)200.00000.000000

TIME( 2, 2)100.00000.000000

COST( 1, 1)6600.0000.000000

COST( 1, 2)7800.0000.000000

COST( 2, 1)6500.0000.000000

COST( 2, 2)7300.0000.000000

QLINKC( 1, 1)150.00000.000000

QLINKC( 1, 2)0.00000017.50000

QLINKC( 2, 1)80.000000.000000

QLINKC( 2, 2)440.00000.000000

CPDEMAND( 1, 1)50.000000.000000

CPDEMAND( 1, 2)100.00000.000000

CPDEMAND( 2, 1)30.000000.000000

CPDEMAND( 2, 2)60.000000.000000

CPDEMAND( 3, 1)100.00000.000000

CPDEMAND( 3, 2)200.00000.000000

CPDEMAND( 4, 1)50.000000.000000

CPDEMAND( 4, 2)80.000000.000000

STDEMAND( 1, A)100.00000.000000

STDEMAND( 1, B)70.000000.000000

STDEMAND( 1, C)0.0000000.000000

STDEMAND( 1, D)100.00000.000000

STDEMAND( 2, A)50.000000.000000

STDEMAND( 2, B)80.000000.000000

STDEMAND( 2, C)0.0000000.000000

STDEMAND( 2, D)120.00000.000000

STDEMAND( 3, A)30.000000.000000

STDEMAND( 3, B)90.000000.000000

STDEMAND( 3, C)0.0000000.000000

STDEMAND( 3, D)80.000000.000000

STDEMAND( 4, A)70.000000.000000

STDEMAND( 4, B)60.000000.000000

STDEMAND( 4, C)0.0000000.000000

STDEMAND( 4, D)200.00000.000000

QLINKF( 1, A)2250.0000.000000

QLINKF( 1, B)1500.0000.000000

QLINKF( 1, C)3000.0000.000000

QLINKF( 1, D)0.0000000.000000

QLINKF( 2, A)10000.000.000000

QLINKF( 2, B)5200.0000.000000

QLINKF( 2, C)8200.0000.000000

QLINKF( 2, D)0.0000000.000000

QDEEPA( 1, 1, 1)0.0000000.000000

QDEEPA( 1, 1, 2)0.00000070.00000

QDEEPA( 1, 2, 1)0.00000040.00000

QDEEPA( 1, 2, 2)0.000000110.0000

QDEEPA( 1, 3, 1)100.00000.000000

QDEEPA( 1, 3, 2)0.00000020.00000

QDEEPA( 1, 4, 1)50.000000.000000

QDEEPA( 1, 4, 2)0.0000000.000000

QDEEPA( 2, 1, 1)50.000000.000000

QDEEPA( 2, 1, 2)100.00000.000000

QDEEPA( 2, 2, 1)30.000000.000000

QDEEPA( 2, 2, 2)60.000000.000000

QDEEPA( 2, 3, 1)0.00000050.00000

QDEEPA( 2, 3, 2)200.00000.000000

QDEEPA( 2, 4, 1)0.00000070.00000

QDEEPA( 2, 4, 2)80.000000.000000

QDEEPB( 1, 1, A)100.00000.000000

QDEEPB( 1, 1, B)70.000000.000000

QDEEPB( 1, 1, C)0.00000062.50000

QDEEPB( 1, 1, D)0.00000025.00000

QDEEPB( 1, 2, A)50.000000.000000

QDEEPB( 1, 2, B)80.000000.000000

QDEEPB( 1, 2, C)0.00000042.50000

QDEEPB( 1, 2, D)0.00000025.00000

QDEEPB( 1, 3, A)30.000000.000000

QDEEPB( 1, 3, B)90.000000.000000

QDEEPB( 1, 3, C)0.00000052.50000

QDEEPB( 1, 3, D)80.000000.000000

QDEEPB( 1, 4, A)70.000000.000000

QDEEPB( 1, 4, B)60.000000.000000

QDEEPB( 1, 4, C)0.00000072.50000

QDEEPB( 1, 4, D)120.00000.000000

QDEEPB( 2, 1, A)0.00000080.00000

QDEEPB( 2, 1, B)0.00000040.00000

QDEEPB( 2, 1, C)0.00000080.00000

QDEEPB( 2, 1, D)80.000000.000000

QDEEPB( 2, 2, A)0.00000080.00000

QDEEPB( 2, 2, B)0.00000040.00000

QDEEPB( 2, 2, C)0.00000060.00000

QDEEPB( 2, 2, D)120.00000.000000

QDEEPB( 2, 3, A)0.000000110.0000

QDEEPB( 2, 3, B)0.00000070.00000

QDEEPB( 2, 3, C)0.000000100.0000

QDEEPB( 2, 3, D)0.0000005.000000

QDEEPB( 2, 4, A)0.000000110.0000

QDEEPB( 2, 4, B)0.00000070.00000

QDEEPB( 2, 4, C)0.000000120.0000

QDEEPB( 2, 4, D)0.0000005.000000

QDEEPB( 3, 1, A)0.00000050.00000

QDEEPB( 3, 1, B)0.00000010.00000

QDEEPB( 3, 1, C)0.00000050.00000

QDEEPB( 3, 1, D)20.000000.000000

QDEEPB( 3, 2, A)0.00000080.00000

QDEEPB( 3, 2, B)0.00000040.00000

QDEEPB( 3, 2, C)0.00000060.00000

QDEEPB( 3, 2, D)0.00000030.00000

QDEEPB( 3, 3, A)0.00000085.00000

QDEEPB( 3, 3, B)0.00000045.00000

QDEEPB( 3, 3, C)0.00000075.00000

QDEEPB( 3, 3, D)0.00000010.00000

QDEEPB( 3, 4, A)0.00000075.00000

QDEEPB( 3, 4, B)0.00000035.00000

QDEEPB( 3, 4, C)0.00000085.00000

QDEEPB( 3, 4, D)80.000000.000000

QDEEPC( A, 1, 1)2250.0000.000000

QDEEPC( A, 1, 2)0.0000000.000000

QDEEPC( A, 2, 1)0.000000120.0000

QDEEPC( A, 2, 2)4000.0000.000000

QDEEPC( A, 3, 1)0.00000080.00000

QDEEPC( A, 3, 2)6000.0000.000000

QDEEPC( B, 1, 1)1500.0000.000000

QDEEPC( B, 1, 2)0.00000040.00000

QDEEPC( B, 2, 1)0.00000080.00000

QDEEPC( B, 2, 2)3500.0000.000000

QDEEPC( B, 3, 1)0.00000040.00000

QDEEPC( B, 3, 2)1700.0000.000000

QDEEPC( C, 1, 1)3000.0000.000000

QDEEPC( C, 1, 2)0.00000062.50000

QDEEPC( C, 2, 1)0.00000057.50000

QDEEPC( C, 2, 2)5000.0000.000000

QDEEPC( C, 3, 1)0.00000017.50000

QDEEPC( C, 3, 2)3200.0000.000000

QDEEPC( D, 1, 1)0.00000085.00000

QDEEPC( D, 1, 2)0.000000125.0000

QDEEPC( D, 2, 1)0.000000100.0000

QDEEPC( D, 2, 2)0.00000020.00000

QDEEPC( D, 3, 1)0.00000090.00000

QDEEPC( D, 3, 2)0.00000050.00000

QTRANSA( 1, 1)0.0000000.000000

QTRANSA( 1, 2)0.0000000.000000

QTRANSA( 1, 3)100.00000.000000

QTRANSA( 1, 4)50.000000.000000

QTRANSA( 2, 1)150.00000.000000

QTRANSA( 2, 2)90.000000.000000

QTRANSA( 2, 3)200.00000.000000

QTRANSA( 2, 4)80.000000.000000

CTRANSA( 1, 1)100.00000.000000

CTRANSA( 1, 2)150.00000.000000

CTRANSA( 1, 3)80.000000.000000

CTRANSA( 1, 4)70.000000.000000

CTRANSA( 2, 1)50.000000.000000

CTRANSA( 2, 2)60.000000.000000

CTRANSA( 2, 3)80.000000.000000

CTRANSA( 2, 4)90.000000.000000

QTRANSB( 1, 1)170.00000.000000

QTRANSB( 1, 2)130.00000.000000

QTRANSB( 1, 3)200.00000.000000

QTRANSB( 1, 4)250.00000.000000

QTRANSB( 2, 1)80.000000.000000

QTRANSB( 2, 2)120.00000.000000

QTRANSB( 2, 3)0.0000000.000000

QTRANSB( 2, 4)0.0000000.000000

QTRANSB( 3, 1)20.000000.000000

QTRANSB( 3, 2)0.0000000.000000

QTRANSB( 3, 3)0.0000000.000000

QTRANSB( 3, 4)80.000000.000000

CTRANSB( 1, 1)40.000000.000000

CTRANSB( 1, 2)20.000000.000000

CTRANSB( 1, 3)30.000000.000000

CTRANSB( 1, 4)50.000000.000000

CTRANSB( 2, 1)60.000000.000000

CTRANSB( 2, 2)40.000000.000000

CTRANSB( 2, 3)80.000000.000000

CTRANSB( 2, 4)100.00000.000000

CTRANSB( 3, 1)50.000000.000000

CTRANSB( 3, 2)60.000000.000000

CTRANSB( 3, 3)75.000000.000000

CTRANSB( 3, 4)85.000000.000000

QTRANSC( 1, 1)6750.0000.000000

QTRANSC( 1, 2)0.0000000.000000

QTRANSC( 2, 1)0.0000000.000000

QTRANSC( 2, 2)12500.000.000000

QTRANSC( 3, 1)0.0000000.000000

QTRANSC( 3, 2)10900.000.000000

CTRANSC( 1, 1)40.000000.000000

CTRANSC( 1, 2)80.000000.000000

CTRANSC( 2, 1)100.00000.000000

CTRANSC( 2, 2)20.000000.000000

CTRANSC( 3, 1)80.000000.000000

CTRANSC( 3, 2)40.000000.000000

最后:我对结果只是检验了一下需求量,发现满足,如果你发现有什么不对的地方,可以告诉我,我会对其进行调整。另外我的集合声明中有些如果你觉得繁琐的地方,可以进行修改。联系方式511757449@qq.com,或者直接在百度HI上留言。

sets:

k/1..5/

z/1..8/:m

link(k,z):a,c,l,s

endsets

min=@sum(link:a)

@sum(z(j):a(4,j)*c(4,j))<=150

@sum(z(j):a(5,j)*c(5,j))<=400

@sum(z(j):a(1,j)*c(1,j))<=360+40*t

@sum(z(j):a(2,j)*c(2,j))<=600+30*t

@sum(z(j):a(3,j)*c(3,j))<=500+20*t

@for(z(j):@sum(k(i):a(i,j))=m(j))

t=@max(link(i,j):c(i,j)*(2*s(i,j)+2))

t<=10

data:

m=300 330 120 170 110 100 1000 700

s=3.08 2.5 2.6 5.74 4.28 6.2 2 3.86

1.16 3.14 4.12 5.06 2.36 5.52 1.96 2.96

4.48 6.64 6.74 2.9 3.28 1.86 3.34 2.04

4.8 4.5 5.4 8.1 8.2 6.55 5.74 4.32

1.84 2.58 3.92 3.74 3.84 3.98 3.82 2.36

enddata

A会报错,报错代码为70,错误原因属性的下标越界

详解:for循环,i取1到4,当i=4时,s(i+1)=s(5),而根据前面集的定义知道s只有4个元素而已,不存在s(5),也就是下标越界

正确写法应该是@for(yuefen(i)|i#LT#4:s(i+1)=s(i)+x(i)-d(i))或@for(yuefen(i)|i#LE#3:s(i+1)=s(i)+x(i)-d(i))


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8075279.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-13
下一篇2023-04-13

发表评论

登录后才能评论

评论列表(0条)

    保存