Перенаправление вывода: >, >>, close
Все примеры, приведенные в этой книге, показывают выходные данные команд в том виде, в котором они отображаются в интерактивном сеансе AMPL, с чередованием напечатанных команд и печатных ответов. Однако пользователь может вместо этого направить все данные вывода в файл, добавив > filename:
display ORIG, DEST, PROD > multi.out; display supply > multi.out;
В первом случае, команда > multi.out, создает новый файл с этим именем (или перезаписывает любой существующий файл с тем же именем). Последующие команды добавляют данные в конец файла до окончания сеанса или соответствующей закрывающей команды close:
close multi.out;
Чтобы открыть файл и добавить вывод к тому содержанию, что уже есть, вместо > необходимо использовать >>. Когда файл открыт, последующее использование > и >> имеет тот же эффект.
Журналы вывода log_model
Опция log_file указывает AMPL сохранять последующие команды и ответы в файл. Значением опции является строка, которая интерпретируется как имя файла:
option log_file ’multi.tmp’;
Файл журнала собирает все операторы AMPL и вывод, который они производят, с некоторыми исключениями, описанными ниже. Установка значения log_file в виде пустой строки: option log_file ’’; отключает запись в файл. Пустая строка является значением по умолчанию для этого параметра.
Когда AMPL читает из входного файла с помощью команды model или data (или команды include), операторы из этого файла обычно не копируются в файл журнала. Чтобы AMPL отображал содержимое входных файлов, нужно изменить опцию log_model (для ввода в режиме модели) или log_data (для ввода в режиме данные) c значения по умолчанию 0 до ненулевого значения.
Когда пользователь вызывает решатель, AMPL регистрирует, по крайней мере, несколько строк, суммирующих значение целевой функции, статус решения и требуемую работу. С помощью указания параметров, специфичных для решателя, можно запрашивать дополнительные выходные данные решателя, такие как журналы итераций или узлы ветвления и привязки. Многие решатели автоматически отправляют все свои выходные данные в файл журнала AMPL, но эта совместимость не универсальна. Если вывод решателя не отображается в файле журнала, следует обратиться к дополнительной документации по интерфейсу AMPL этого решателя. Возможно, этот решатель принимает нестандартные команды для перенаправления вывода в файл.
Ограничение количества сообщений
eexit
Указав опцию eexit n, где n - некоторое целое число, пользователь определяет, как AMPL будет обрабатывать сообщения об ошибках. Если n не равно нулю, любая инструкция AMPL завершается после того, как она выдала сообщения об ошибках abs(n). Отрицательное значение приводит к завершению только одного оператора, в то время как положительное значение приводит к завершению всего сеанса AMPL. Эффект этой опции чаще всего наблюдается при использовании операторов model и data, когда что-то пошло не так, как при использовании неправильного файла:
option eexit -3; model diet.mod; data diet.mod; diet.mod, line 4 (offset 32): expected ; ( [ : or symbol context: param cost >>> { <<< FOOD} > 0; diet.mod, line 5 (offset 56): expected ; ( [ : or symbol context: param f_min >>> { <<< FOOD} >= 0; diet.mod, line 6 (offset 81): expected ; ( [ : or symbol context: param f_max >>> { <<< j in FOOD} >= f_min[j]; Bailing out after 3 warnings.
presolve_warnings
Значение по умолчанию для eexit составляет - 10. Установка его в 0 приведет к отображению всех сообщений об ошибках. Параметр eexit также применяется к предупреждениям о невозможности выполнения solve, созданным на этапе предварительного разрешения AMPL. Количество этих предупреждений одновременно ограничено значением параметра presolve_warnings, которое обычно устанавливается на меньшее значение (по умолчанию 5).
Оператор данных AMPL может указывать значения, которые соответствуют недопустимым комбинациям индексов, из-за любого количества ошибок, таких как неправильные наборы индексов в модели, индексы в неправильном порядке, неправильное использование (tr) и ошибки ввода. Подобные ошибки могут быть вызваны операторами let, которые изменяют членство наборов индексов. AMPL ловит эти ошибки после ввода solve.
bad_subscripts
Количество отображаемых недопустимых комбинаций ограничено значением параметра bad_subscripts, значение по умолчанию которого равно 3.