私と私の友人は AMPL プロジェクトに取り組んでいます。このプロジェクトの目標は、ファイバーツーザホーム ネットワークで利益を最大化することです。ネットワークはルーターやスプリッターなしで機能し、x ファイバーの 1 本のケーブルをファイバーの少ないケーブルに分割したり、他のケーブルと接続してファイバーの多いケーブルを作成したりできるキャビネットを備えたノードのみが機能します。つまり、1 つの専用ファイバーが単一の中央ノードから n 個のクライアントを持つアクセス ポイントに到達することになっています (需要。クライアントがアクセス ポイントにどのように接続されているかは気にしません)。すべてのノード (セントラル ノード、トランジット ノード、およびアクセス ポイント) 間にエッジがあり、そこにケーブルを配置するためのトレンチ コストと長さがあります (ケーブルの種類ごとに 1 km あたりのコストとファイバー数があるため)。
私たちの問題は、各エッジに、さまざまなケーブル タイプの多数のケーブルを配置できることです。AMPLネットワークモデルでこの状況を宣言して、今ではそれを可能にする方法がわかりません
- 各エッジには複数のケーブルが存在する可能性があります (後で各状況で宣言するさまざまなタイプの)
- また、さまざまなケーブル タイプから選択できることをプログラムに知らせる方法もわかりません。
エッジ (リンク) ごとに独立したケーブルのセットを作成するソリューションについて考えましたが、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;