AMPL:目的地城市内的终端模型

时间:2014-10-06 06:30:42

标签: ampl neos-server

我遇到了一个问题,我没有找到任何解决方案来阅读集合的AMPL文档。

我想要建模的是,一个城市,例如Kir,必须有来自另一个城市的9个交付,例如Sto。但是,这些交付必须在某些特定终端到达Kir,每个终端每天只开放少量时间(约2分钟)。原点节点必须如此。必须从特定终端指定来自Sto的路线(因此路径可以是"在结果中跟随")。

我已经开始使用"在K"中设置V来建模。集合的操作,但要求V必须是相同的集合,或K的子集,其中K是表示节点的集合" - Kir,Sto等等,V是终端名称的集合"终端1","终端2"等。

我已经开始检查实例"设置K维4"例如:

 set K dimension 4;

 data;

 set K:=
 Sto Kir Terminal1 Terminal2
 Bod Kir Terminal3 Terminal2;

其中集合K表示来自哪个城市(例如Sto)应该驱动交付(例如Kir),其中Sto中的离开终端是Terminal1并且Kir中的交付终端是Terminal2。这具有必须手动指定大量组合(在Kir单独存在大约22个终端等)的缺点。我也不知道如何对约束进行建模。例如" one dimension"我以前有过:

subject to yvar{i in V, j in V}:
    sum{k in H} x[i,j,k] <= maxVisits[i,j];

其中V是单独的城市集合,H是车辆集合,maxVisits表示从城市i到城市j的最大交付量,如果使用车辆k从i到j进行交付,则x为1。我不明白如何使用四维集K来建模。

此致

1 个答案:

答案 0 :(得分:1)

对此进行建模的一种方法是将x编入KH,并将总和更改为包含终端:

var x{K, H} binary;
subject to yvar{i in V, j in V}:
  sum{(i,j,t,u) in K, k in H} x[i,j,t,u,k] <= maxVisits[i,j];

求和中的索引(i,j,t,u) in K将迭代成对的终端,这些终端是从城市i到城市j的路线的终点。请注意,ij在此处已修复,因为它们是在约束索引{i in V, j in V}中定义的。