使用 AMPL + Neos 服务器仅打印非零结果
Print only nonzero results using AMPL + Neos server
我在做一个比较大的模型的优化模型。我将在这个模型中使用 15 个时间步,但现在当我测试它时我只使用 4 个。然而,即使 11 个时间步比预期的少,模型仍然打印 22000 行变量,其中可能只有一百行不同于0.
有人知道解决这个问题的方法吗? IE。一种使用 NEOS 服务器只打印变量名和对应值的方法,如果它高于 0.
我测试过的是:
solve;
option omit_zero_rows 0; (also tried 1;)
display _varname, _var;
同时使用 omit_zero_rows 0;或 omit_zero_rows 1;仍然打印每个结果,而不是那些高于 0 的结果。
我也试过:
solve;
if _var > 0 then {
display _varname, _var;
}
但它给了我语法错误。两个(或者实际上是三个)变体都在我用于 NEOS 服务器的 .运行 文件中进行了测试。
我正在发布此问题的解决方案,因为我相信这是一个会被更多人偶然发现的问题。基本上,为了使用 NEOS 服务器仅打印非零值,请将命令文件(.运行 文件)写为:
solve;
display {j in 1.._nvars: _var[j] > 0} (_varname[j], _var[j]);
我在做一个比较大的模型的优化模型。我将在这个模型中使用 15 个时间步,但现在当我测试它时我只使用 4 个。然而,即使 11 个时间步比预期的少,模型仍然打印 22000 行变量,其中可能只有一百行不同于0.
有人知道解决这个问题的方法吗? IE。一种使用 NEOS 服务器只打印变量名和对应值的方法,如果它高于 0.
我测试过的是:
solve;
option omit_zero_rows 0; (also tried 1;)
display _varname, _var;
同时使用 omit_zero_rows 0;或 omit_zero_rows 1;仍然打印每个结果,而不是那些高于 0 的结果。
我也试过:
solve;
if _var > 0 then {
display _varname, _var;
}
但它给了我语法错误。两个(或者实际上是三个)变体都在我用于 NEOS 服务器的 .运行 文件中进行了测试。
我正在发布此问题的解决方案,因为我相信这是一个会被更多人偶然发现的问题。基本上,为了使用 NEOS 服务器仅打印非零值,请将命令文件(.运行 文件)写为:
solve;
display {j in 1.._nvars: _var[j] > 0} (_varname[j], _var[j]);