使用AMPL + Neos服务器仅打印非零结果

时间:2015-01-20 09:17:59

标签: ampl neos-server

我正在做一个相对较大模型的优化模型。我将在这个模型中使用15个时间步,但是现在当我测试它时我只使用了4个。但是,即使11个时间步长小于预期,模型仍会打印22 000行变量,其中可能只有一百个不同于0.

有没有人看到过这个方法?即使用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服务器的.run文件中进行了测试。

1 个答案:

答案 0 :(得分:2)

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

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