2015-01-20 7 views
0

Я занимаюсь оптимизацией модели относительно большой модели. Я буду использовать 15 временных меток в этой модели, но теперь, когда я тестирую это, я использую только 4. Однако даже при 11 временных шагах, меньших желаемого, модель все еще печатает 22 000 строк переменных, где, возможно, всего сто отличается от 0.Распечатайте только отличные от нуля результаты используя сервер AMPL + Neos

Кто-нибудь видит путь мимо этого? То есть способ использования сервера 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; 
} 

, но он дал мне синтаксическую ошибку. Оба варианта (или действительно, три) были протестированы в файле .run, который я использую для сервера NEOS.

ответ

1

Я отправляю решение этой проблемы, так как считаю, что это проблема, с которой люди будут сталкиваться. В основном, чтобы печатать только ненулевые значения, используя NEOS Server, напишите свой командный файл (файл .run) как:

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