當前位置:編程學習大全網 - 編程語言 - Lipc編程

Lipc編程

1.首先說:ch9505有病嗎?記得我上次問了壹個問題,也是直接抄的。

然後我開始幫妳解決這個問題:

所有代碼都是原創,我花了大概壹個上午的時間幫妳解決。雖然這個題目不算太難,但是數據有點復雜。有許多不同維度的集合聲明。希望能幫到妳。

程序部分:

型號:

集合:

程序/1..4/;!定義四個項目;

factory/1,2/:total time;!定義兩個車間。註意:在本程序中,我們同意Q開頭代表數量,C開頭代表成本;

倉庫/1,2,3/;!定義三個倉庫;

鋼/A、B、C、D/;!定義四種鋼(集合中第四種鋼是塑鋼門窗);

component/1,2/;!定義兩種組件;

卡琳(鋼鐵,倉庫):qlinka!表2.1=倉庫中的鋼材存儲量;

linkb(構件,鋼):qlinkb!表2.2==單位構件所需鋼材數量;

linkc(工廠,組件):時間,成本,qlinkc!表2.3-2.4 = =車間生產成本(&;耗時);

linkd(程序,組件):cpdemand!表2.5,CP需求代表“組件需求”組件需求;

克林(程序,鋼鐵):stdemand!表2.5,“鋼材需求”的鋼材需求;

linkf(工廠,鋼鐵):qlinkf

deepa(工廠、程序、組件):qdeepa!2*4*2=16工程量;

deepb(倉庫,程序,鋼鐵):qdeepb!3*4*4=48個數量;

deepc(鋼鐵,倉庫,工廠):qdeepc!4*3*2=24;

!deepd(工廠,組件,鋼鐵):qdeepd!2*2*4=16;

transa(工廠,程序):qtransa,ctransa!此集合與以下兩個集合(倉庫、車間和項目)之間的運輸。表2.6;

transb(倉庫,程序):qtransb,ctransb

transc(倉庫,工廠):qtransc,ctransc

端集

數據:

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

時間=100 200

200 100;

成本=6600 7800

6500 7300;

cpdemand=

50 100

30 60

100 200

50 80;

標準需求=

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;

結束數據

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(克林(I,j):@sum(倉庫(k):qdeepb(k,I,j))=stdemand(i,j));

!3.車間工作時間限制;

@ for(factory(I):@ sum(component(j):time(I,j)*qlinkc(i,j))& lt;= total time(I));

!4.平衡庫存鋼材的數量;

@for(卡琳(I,j):@sum(程序(k):qdeepb(j,k,i))+@sum(工廠(m):qdeepc(i,j,m))& lt;=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):q transa = @ 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)));

結束

部分結果:

在叠代80時找到全局最優解

客觀值:5770900。

可變價值降低成本

總時間(1) 35000.00 0.000000

總時間(2) 60000.00 0.000000

QLINKA( A,1) 4000.000 0.000000

QLINKA( A,2) 4000.000 0.000000

QLINKA( A,3) 6000.000 0.000000

QLINKA( B,1) 3000.000 0.000000

QLINKA( B,2) 3500.000 0.000000

QLINKA( B,3) 2500.000 0.000000

QLINKA( C,1) 3000.000 0.000000

QLINKA( C,2) 5000.000 0.000000

QLINKA( C,3) 5000.000 0.000000

QLINKA( D,1) 200.0000 0.000000

QLINKA( D,2) 250.0000 0.000000

QLINKA( D,3) 100.0000 0.000000

QLINKB( 1,A) 15.00000 0.000000

QLINKB( 1,B) 10.00000 0.000000

QLINKB( 1,C) 20.00000 0.000000

QLINKB( 1,D) 0.000000 0.000000

QLINKB( 2,A) 20.00000 0.000000

QLINKB( 2,B) 10.00000 0.000000

QLINKB( 2,C) 15.00000 0.000000

QLINKB( 2,D) 0.000000

時間(1,1) 100.0000 0.00000

時間(1,2) 200.0000 0.000000

時間(2,1) 200.0000 0.00000

時間(2,2) 100.0000 0.00000

成本(1,1) 6600.000 0.000000

成本(1,2) 7800.000 0.000000

成本(2,1) 6500.000 0.000000

成本(2,2) 7300.000 0.000000

QLINKC( 1,1) 150.0000 0.000000

QLINKC( 1,2) 0.000000 17.50000

QLINKC( 2,1) 80.00000 0.000000

QLINKC( 2,2) 440.0000 0.000000

CPDEMAND( 1,1) 50.00000 0.000000

CPDEMAND( 1,2) 100.0000

CPDEMAND( 2,1) 30.00000 0.000000

CPDEMAND( 2,2) 60.00000 0.00000

CPDEMAND( 3,1) 100.0000 0.000000

CPDEMAND( 3,2) 200.0000 0.00000

CPDEMAND( 4,1) 50.00000 0.000000

CPDEMAND( 4,2) 80.00000 0.00000

STDEMAND( 1,A) 100.0000 0.000000

STDEMAND( 1,B) 70.00000 0.000000

STDEMAND( 1,C) 0.000000 0.000000

STDEMAND( 1,D) 100.0000 0.000000

標準需求(2,A) 50.00000 0.000000

標準需求(2,B) 80.00000 0.000000

標準需求(2,C)0.00000 0.000000

STDEMAND( 2,D) 120.0000 0.000000

標準需求(3,A) 30.00000 0.000000

標準需求(3,B) 90.00000 0.000000

標準需求(3,C)0.00000 0.000000

STDEMAND( 3,D) 80.00000 0.000000

標準需求(4,A) 70.00000 0.000000

標準需求(4,B) 60.00000 0.000000

標準需求(4,C)

標準需求(4,D) 200.0000 0.000000

QLINKF( 1,A) 2250.000 0.000000

QLINKF( 1,B) 1500.000 0.000000

QLINKF( 1,C) 3000.000 0.000000

QLINKF( 1,D) 0.000000 0.000000

QLINKF( 2,A) 10000.00 0.000000

QLINKF( 2,B) 5200.000 0.000000

QLINKF( 2,C) 8200.000 0.000000

QLINKF( 2,D) 0.000000

QDEEPA( 1,1,1)

QDEEPA( 1,1,2) 0.000000 70.00000

QDEEPA( 1,2,1) 0.000000 40.00000

QDEEPA( 1,2,2) 0.000000 110.0000

QDEEPA( 1,3,1) 100.0000 0.000000

QDEEPA( 1,3,2) 0.000000 20.00000

QDEEPA( 1,4,1) 50.00000 0.000000

QDEEPA( 1,4,2) 0.000000 0.000000

QDEEPA( 2,1,1) 50.00000 0.000000

QDEEPA( 2,1,2) 100.0000 0.000000

QDEEPA( 2,2,1) 30.00000 0.000000

QDEEPA( 2,2,2) 60.00000 0.000000

QDEEPA( 2,3,1) 0.000000 50.00000

QDEEPA( 2,3,2) 200.0000 0.000000

QDEEPA( 2,4,1) 0.000000 70.00000

QDEEPA( 2,4,2) 80.00000 0.000000

QDEEPB( 1,1,A) 100.0000 0.000000

QDEEPB( 1,1,B) 70.00000 0.000000

QDEEPB( 1,1,C) 0.000000 62.50000

QDEEPB( 1,1,D) 0.000000 25.00000

QDEEPB( 1,2,A) 50.00000 0.000000

QDEEPB( 1,2,B) 80.00000 0.000000

QDEEPB( 1,2,C) 0.000000 42.50000

QDEEPB( 1,2,D) 0.000000 25.00000

QDEEPB( 1,3,A) 30.00000 0.000000

QDEEPB( 1,3,B) 90.00000 0.000000

QDEEPB( 1,3,C) 0.000000 52.50000

QDEEPB( 1,3,D) 80.00000 0.000000

QDEEPB( 1,4,A) 70.00000 0.000000

QDEEPB( 1,4,B) 60.00000 0.000000

QDEEPB( 1,4,C) 0.000000 72.50000

QDEEPB( 1,4,D) 120.0000

QDEEPB( 2,1,A) 0.000000 80.00000

QDEEPB( 2,1,B) 0.000000 40.00000

QDEEPB( 2,1,C) 0.000000 80.00000

QDEEPB(2 1,D) 80.00000 0.000000

QDEEPB( 2,2,A) 0.000000 80.00000

QDEEPB( 2,2,B) 0.000000 40.00000

QDEEPB( 2,2,C) 0.000000 60.00000

QDEEPB( 2,2,D) 120.0000 0.000000

QDEEPB( 2,3,A) 0.000000 110.0000

QDEEPB( 2,3,B) 0.000000 70.00000

QDEEPB( 2,3,C) 0.000000 100.0000

QDEEPB( 2,3,D) 0.000000 5.000000

QDEEPB( 2,4,A) 0.000000 110.0000

QDEEPB( 2,4,B) 0.000000 70.00000

QDEEPB( 2,4,C) 0.000000 120.0000

QDEEPB( 2,4,D) 0.000000 5.000000

QDEEPB( 3,1,A) 0.000000 50.00000

QDEEPB( 3,1,B) 0.000000 10.00000

QDEEPB( 3,1,C) 0.000000 50.00000

QDEEPB( 3,1,D) 20.00000 0.000000

QDEEPB( 3,2,A) 0.000000 80.00000

QDEEPB( 3,2,B) 0.000000 40.00000

QDEEPB( 3,2,C) 0.000000 60.00000

QDEEPB( 3,2,D) 0.000000 30.00000

QDEEPB( 3,3,A) 0.000000 85.00000

QDEEPB( 3,3,B) 0.000000 45.00000

QDEEPB( 3,3,C) 0.000000 75.00000

QDEEPB( 3,3,D) 0.000000 10.00000

QDEEPB( 3,4,A) 0.000000 75.00000

QDEEPB( 3,4,B) 0.000000 35.00000

QDEEPB( 3,4,C) 0.000000 85.00000

QDEEPB( 3,4,D) 80.00000 0.000000

QDEEPC( A,1,1) 2250.000 0.000000

QDEEPC( A,1,2) 0.000000 0.000000

QDEEPC( A,2,1) 0.000000 120.0000

QDEEPC( A,2,2) 4000.000 0.000000

QDEEPC( A,3,1) 0.000000 80.00000

QDEEPC( A,3,2) 6000.000

QDEEPC( B,1,1) 1500.000 0.000000

QDEEPC( B,1,2) 0.000000 40.00000

QDEEPC( B,2,1) 0.000000 80.00000

QDEEPC( B,2,2) 3500.000 0.000000

QDEEPC( B,3,1) 0.000000 40.00000

QDEEPC( B,3,2) 1700.000 0.000000

QDEEPC( C,1,1) 3000.000 0.000000

QDEEPC( C,1,2) 0.000000 62.50000

QDEEPC( C,2,1) 0.000000 57.50000

QDEEPC( C,2,2) 5000.000 0.000000

QDEEPC( C,3,1) 0.000000 17.50000

QDEEPC( C,3,2) 3200.000 0.000000

QDEEPC( D,1,1) 0.000000 85.00000

QDEEPC( D,1,2) 0.000000 125.0000

QDEEPC( D,2,1) 0.000000 100.0000

QDEEPC( D,2,2) 0.000000 20.00000

QDEEPC( D,3,1) 0.000000 90.00000

QDEEPC( D,3,2) 0.000000 50.00000

QTRANSA( 1,1)

QTRANSA( 1,2)0.00000 0.000000

QTRANSA( 1,3) 100.0000

QTRANSA( 1,4) 50.00000 0.00000

QTRANSA( 2,1) 150.0000 0.000000

QTRANSA( 2,2) 90.00000 0.000000

QTRANSA( 2,3) 200.0000 0.00000

QTRANSA( 2,4) 80.00000 0.00000

CTRANSA( 1,1) 100.0000 0.000000

CTRANSA( 1,2) 150.0000 0.000000

CTRANSA( 1,3) 80.00000 0.000000

CTRANSA( 1,4) 70.00000 0.000000

CTRANSA( 2,1) 50.00000 0.000000

CTRANSA( 2,2) 60.00000 0.000000

CTRANSA( 2,3) 80.00000 0.000000

CTRANSA( 2,4) 90.00000 0.000000

QTRANSB( 1,1) 170.0000 0.000000

QTRANSB( 1,2) 130.0000 0.000000

QTRANSB( 1,3) 200.0000 0.000000

QTRANSB( 1,4) 250.0000 0.000000

QTRANSB( 2,1) 80.00000 0.000000

QTRANSB( 2,2) 120.0000 0.000000

QTRANSB( 2,3) 0.000000 0.000000

QTRANSB( 2,4) 0.000000 0.000000

QTRANSB( 3,1) 20.00000 0.000000

QTRANSB( 3,2) 0.000000 0.000000

QTRANSB( 3,3) 0.000000 0.000000

QTRANSB( 3,4) 80.00000 0.000000

CTRANSB( 1,1) 40.00000 0.000000

CTRANSB( 1,2) 20.00000 0.000000

CTRANSB( 1,3) 30.00000 0.000000

CTRANSB( 1,4) 50.00000 0.000000

CTRANSB( 2,1) 60.00000 0.000000

CTRANSB( 2,2) 40.00000 0.000000

CTRANSB( 2,3) 80.00000 0.000000

CTRANSB( 2,4) 100.0000 0.000000

CTRANSB( 3,1) 50.00000 0.000000

CTRANSB( 3,2) 60.00000 0.000000

CTRANSB( 3,3) 75.00000 0.000000

CTRANSB( 3,4) 85.00000 0.000000

QTRANSC( 1,1) 6750.000 0.000000

QTRANSC( 1,2) 0.000000 0.000000

QTRANSC( 2,1) 0.000000 0.000000

QTRANSC( 2,2) 12500.00 0.000000

QTRANSC( 3,1) 0.000000 0.000000

QTRANSC( 3,2) 10900.00 0.000000

CTRANSC( 1,1) 40.00000 0.000000

CTRANSC( 1,2) 80.00000 0.000000

CTRANSC(2 1)100.0000 0.000000

CTRANSC( 2,2) 20.00000 0.000000

CTRANSC( 3,1) 80.00000 0.000000

CTRANSC( 3,2) 40.00000 0.000000

最後:剛剛查了壹下對結果的需求,覺得還算滿意。如果妳發現有什麽不對的地方,妳可以告訴我,我會調整的。另外,我的催收聲明裏有些東西,妳覺得繁瑣可以修改。聯系511757449@qq.com,或者直接在百度嗨上留言。

  • 上一篇:關於軟件工程專業的介紹
  • 下一篇:什麽才是制約自動駕駛發展的最大問題?
  • copyright 2024編程學習大全網