AMPL 中的稀疏矩阵
Sparse Matrix in AMPL
我在 AMPL 中有一个稀疏矩阵。因此,它包含许多编码为“.”的值。这 ”。” AMPL 中的值表示 "no value specified here." 当我尝试解决优化问题时,我收到一条消息,内容为 "no value specified for...",涉及包含“.”的单元格。因此,它不会解决问题。
但是,当我尝试指定一个默认值来替换“.”时,问题搅来搅去,并没有解决。有什么办法可以对参数设置限制,以便求解器不查看“。”值?
希望这已经够清楚了。
您可以使用稀疏矩阵来代替指定默认值。例如:
param m integer > 0;
set C within {1..m,1..m};
param A{C};
data;
param m := 4;
param: C: A: 1 2 3 4 :=
1 36 . . -2
2 . 7 3 .
3 . . -8 16
4 12 3 . 77 ;
并且在您的模型中,您应该将 {i in 1..m, j in 1..m}
上的索引替换为 {(i,j) in C}
上的索引。
另见 https://groups.google.com/d/msg/ampl/1s1X-UNSCg4/RWZm0sVa0IQJ。
用点(或句点)表示无用的值不是我所说的 "sparse"。它可以节省操作时间,但它会使用与密集表示一样多的内存。
话虽如此,上面的例子也不是我所说的稀疏。很多位置都是非零的。
话虽如此,如果您确实有一个大的稀疏矩阵,请改用下面的公式。它确实利用了结构 "within" 并且应该为您节省一些内存。
param m 整数 > 0;
设置C在{1..m,1..m}内;
参数A{C};
数据;
参数 m := 4;
参数:C:A:=
1 1 36
1 4 -2
2 2 7
2 3 3
3 3 -8
3 4 16
4 1 12
4 2 3
4 4 77;
我在 AMPL 中有一个稀疏矩阵。因此,它包含许多编码为“.”的值。这 ”。” AMPL 中的值表示 "no value specified here." 当我尝试解决优化问题时,我收到一条消息,内容为 "no value specified for...",涉及包含“.”的单元格。因此,它不会解决问题。
但是,当我尝试指定一个默认值来替换“.”时,问题搅来搅去,并没有解决。有什么办法可以对参数设置限制,以便求解器不查看“。”值?
希望这已经够清楚了。
您可以使用稀疏矩阵来代替指定默认值。例如:
param m integer > 0;
set C within {1..m,1..m};
param A{C};
data;
param m := 4;
param: C: A: 1 2 3 4 :=
1 36 . . -2
2 . 7 3 .
3 . . -8 16
4 12 3 . 77 ;
并且在您的模型中,您应该将 {i in 1..m, j in 1..m}
上的索引替换为 {(i,j) in C}
上的索引。
另见 https://groups.google.com/d/msg/ampl/1s1X-UNSCg4/RWZm0sVa0IQJ。
用点(或句点)表示无用的值不是我所说的 "sparse"。它可以节省操作时间,但它会使用与密集表示一样多的内存。 话虽如此,上面的例子也不是我所说的稀疏。很多位置都是非零的。
话虽如此,如果您确实有一个大的稀疏矩阵,请改用下面的公式。它确实利用了结构 "within" 并且应该为您节省一些内存。
param m 整数 > 0;
设置C在{1..m,1..m}内;
参数A{C};
数据;
参数 m := 4;
参数:C:A:=
1 1 36
1 4 -2
2 2 7
2 3 3
3 3 -8
3 4 16
4 1 12
4 2 3
4 4 77;