【问题标题】:Print only nonzero results using AMPL + Neos server使用 AMPL + Neos 服务器仅打印非零结果
【发布时间】:2015-01-20 09:17:58
【问题描述】:

我正在做一个比较大的模型的优化模型。我将在这个模型中使用 15 个时间步,但现在当我测试它时,我只使用了 4 个。然而,即使比预期少 11 个时间步,模型仍然会打印 22 000 行变量,其中可能只有 100 行与0.

有没有人看到解决办法? IE。一种使用 NEOS 服务器只打印大于 0 的变量名和对应值的方法。

我测试的是:

 solve; 
 option omit_zero_rows 0; (also tried 1;)
 display _varname, _var;

同时使用 omit_zero_rows 0;或省略_zero_rows 1;仍然打印每个结果,而不是高于 0 的结果。

我也试过了:

solve;
if _var > 0 then {
      display _varname, _var;
}

但它给了我语法错误。在我用于 NEOS 服务器的 .run 文件中测试了两个(或者实际上是三个)变体。

【问题讨论】:

    标签: ampl neos-server


    【解决方案1】:

    我正在发布此问题的解决方案,因为我相信这是一个更多人会偶然发现的问题。基本上,为了使用 NEOS Server 仅打印非零值,请将您的命令文件(.run 文件)编写为:

    solve;
    display {j in 1.._nvars: _var[j] > 0} (_varname[j], _var[j]); 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-28
      • 1970-01-01
      • 1970-01-01
      • 2019-10-20
      • 1970-01-01
      相关资源
      最近更新 更多