在 AMPL 中订购显示器

Ordering the Display in AMPL

我正在为调度问题做一个模型,我已经解决了它,但我想按新月形数字对输出进行排序。这是我的输出,其中 X[i] 是作业 i.

开始的时间
x [*] :=
NM2646FX-1024  109.5
 NM2646FX-107  138.3
NM2646FX-1115  120.3
 NM2646FX-176  213.3
 NM2646FX-220  180.3
  NM2646FX-81  220.8
 NM2646FX-999  285.9
RD1060FX-2144   68.1
RD1060FX-3854   34.5
 RD720FX-1515    0
  RD720FX-878  237.9
;

不幸的是,在 AMPL 中唯一可以轻松排序的模型实体类型是 set。排序参数比较棘手。您可以创建一个有序的 set 并将 x 变量的值分配给它:

set xOrderedSet ordered by Reals;
let xOrderedSet := setof {i in S} x[i].val;
display xOrderedSet;

我相信这只有在所有 x 都是唯一的情况下才有效。然后您可以创建一个参数 xOrdered 以将值与其各自的集合条目映射:

param xOrdered{xOrderedSet} symbolic;

for {i in xOrderedSet} {
    let {s in S : i = x[s].val} xOrdered[i] := s;
}

display xOrdered;

有关 let 命令的详细信息 here