小弟最近在學習lingo的程式語法 有一個問題想請問前輩們 題目:運輸問題-轉運站
然後這是課本上的程式碼 MODEL: SETS: FACTORY /F1, F2/: SUPPLY ; WAREHOUSE /W1, W2/ : CAPACITY; VENDOR /V1..V4/: DEMAND ; FXW(FACTORY,WAREHOUSE): c, xc ; WXV(WAREHOUSE, VENDOR): t, xt ; ENDSETS DATA: SUPPLY=600, 400; DEMAND=200, 150, 350, 300; C = 2 3 3 1; T=2 6 3 6 4 4 6 5; ENDDATA !----------------------------; [Obj] MIN= @SUM(FXW:c*xc) + @SUM(WXV:t*xt); @FOR(FACTORY(i): @SUM(WAREHOUSE(j): xc(i,j))<=SUPPLY(i)); @FOR(VENDOR(j):@SUM(WAREHOUSE(i): xt(i,j))=DEMAND(j)); @FOR(WAREHOUSE(i):CAPACITY(i)= @SUM(FACTORY(j): xc(j,i))); @FOR(WAREHOUSE(i):(@SUM(VENDOR(j): xt(i,j))-CAPACITY(i))=0); END 其中倒數第三行 @FOR(WAREHOUSE(i):CAPACITY(i)= @SUM(FACTORY(j): xc(j,i))); 我看不懂為什麼是xc(j,i),難道xc(i,j)不行嗎? 於是我把它改成xc(i,j)跑了一次 這是xc(j,i)的答案
這是xc(i,j)的答案
跑出來總成本是一樣的 只是運輸的量不一樣 請問一下前輩們xc(j,i)跟xc(i,j)的差別,跟i,j代表的意思 麻煩前輩,謝謝
留言
1. 倒數第三行 因為限制式裡有提到,轉運站的存量要全數運出給接收點,而等於0是因為大於0表示會缺貨,小於0表示有剩餘;所以所詢問的第三行程式裡寫的是,從第j個工廠運到第i個轉運站的運送總量,簡單來說xcji等於上面書上的vcji(第j個工廠到第i個轉運站的運送量),且由於在程式裡i,j已經有先行定義(倉庫為i, 工廠為j),所以當你把他打成xcij的時候意思就會不同 2. i, j 的意思 假設i為工廠, j為轉運站, 則 cij為第i個工廠到第j個轉運站的運輸成本, vcij為第i個工廠到第j個轉運站的運輸量 , 以此類推