2016-11-23 69 views
0

我和我的朋友正在進行AMPL項目。該項目的目標是在光纖到戶網絡中實現利潤最大化。網絡沒有路由器或分路器,只有帶機櫃的節點,其中一根帶有x光纖的光纜可以分成光纖較少的光纜或與其他光纜相連的光纖,以製造具有更多光纖的光纜。也就是說,一個專用光纖應該從一箇中央節點到達有n個客戶端的接入點(需求;我們不擔心客戶端如何連接到接入點)。我們在所有節點(中心節點,傳輸節點和接入點)之間存在邊緣,這些節點在將電纜放置在那裏和長度方面存在挖溝成本(因爲每種類型的電纜具有每km成本和光纖數量)。AMPL優化 - 不同的電纜類型

我們的問題是:在每個邊緣,我們可以有不同類型的電纜數量。我們不知道如何申報AMPL網絡模型這種情況下,讓它現在

  1. 每個邊緣可以有一個以上的電纜
  2. (不同類型的,我們後來在每一種情況下申報的)我們也不知道如何讓程序知道它可以選擇不同的電纜類型

我想過一種解決方案,爲每條邊(鏈接)創建一組獨立的電纜,但我不知道這是否是可能在AMPL中。

到目前爲止,我們有以下代碼

幫助將非常感謝,謝謝!

set ACCESSPOINTS; 
set TRANSITS; 
set CENTRAL 
set NODES := ACCESSPOINTS union TRANSITS union CENTRAL; 
set LINKS within (NODES cross NODES); 
set CABLES; 
#set DEMANDS within (CENTRAL cross ACCESSPOINTS); 

param demand {ACCESSPOINTS} >=0; 

param trenching_cost {LINKS} >= 0; 
param length {LINKS} >= 0; 

param cabinet_cost {TRANSITS} >= 0; 

param cost_per_km {CABLES} >= 0; 
param fibers {CABLES} >= 0; 

param originates {n in NODES, (i,j) in LINKS} binary := 
     if (i = n) then 1 else 0;       
param terminates {n in NODES, (i,j) in LINKS} binary := 
     if (j = n) then 1 else 0;  

回答

0

你應該把目標函數和約束條件在模型第一