Печатайте только ненулевые результаты, используя сервер AMPL + Neos
Я делаю модель оптимизации относительно большой модели. Я буду использовать 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;
}
но это дало мне синтаксическую ошибку. Оба (или действительно три) варианта были протестированы в файле.run, который я использую для сервера NEOS.
1 ответ
Я выкладываю решение этой проблемы, так как считаю, что это проблема, с которой столкнется больше людей. По сути, чтобы печатать только ненулевые значения с помощью NEOS Server, запишите ваш командный файл (файл.run) как:
solve;
display {j in 1.._nvars: _var[j] > 0} (_varname[j], _var[j]);