我和我的朋友们正在做一个 AMPL 项目。该项目的目标是最大化光纤到户网络的利润。网络在没有路由器或分路器的情况下工作,只有带有机柜的节点,其中一根带有 x 根光纤的电缆可以分成具有较少光纤的电缆或与其他电缆连接以创建具有更多光纤的电缆。也就是说,一根专用光纤应该从单个中心节点到达具有 n 个客户端的接入点(需求;我们不担心客户端如何连接到接入点)。我们在所有节点(中心节点、传输节点和接入点)之间都有边缘,这些边缘具有将电缆放置在那里的挖沟成本和长度(因为每种类型的电缆都有每公里成本和光纤数量)。
我们的问题是:在每个边缘上,我们可以有许多不同类型的电缆。我们不知道如何在 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;