在 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。
我正在为调度问题做一个模型,我已经解决了它,但我想按新月形数字对输出进行排序。这是我的输出,其中 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。