Строковые выражения могут появляться вместо буквенных строк в нескольких контекстах:
- в именах файлов, которые являются частью команд, включая model, data и commands;
- в именах файлов после > или >>, чтобы указать перенаправление вывода.
- в значениях, назначенных опциям AMPL командой option.
- в списке строк и в именах строк и столбцов базы данных, указанных в операторе table.
Во всех указанных случаях строковое выражение необходимо идентифицировать, заключив его в скобки (). Вот пример с именами файлов. Этот сценарий использует строковое выражение для указания файлов для оператора данных и для перенаправления вывода из оператора display:
model diet.mod; set CASES = 1..3; for {j in CASES} { reset data; data ("diet" & j & ".dat"); solve; display Buy > ("diet" & j & ".out"); }
Результатом является решение diet.mod с помощью ряда различных файлов данных diet1.dat, diet2.dat и diet3.dat и сохранение решения в файлах diet1.out, diet2.out и diet3.out. Значение индекса j автоматически преобразуется из числа в строку, как описано выше. Следующий скрипт использует строковое выражение для указания значения параметра cplex_options, который содержит указания для решателя CPLEX:
model sched.mod; data sched.dat; option solver cplex; set DIR1 = {"primal","dual"}; set DIR2 = {"primalopt","dualopt"}; for {i in DIR1, j in DIR2} { option cplex_options (i & " " & j); solve; }
Цикл в этом скрипте решает одну и ту же проблему четыре раза, каждый из которых использует разные значения для primal, dual, primalopt и dualopt.
Примеры использования строковых выражений в операторе таблицы для работы с несколькими файлами базы данных, таблицами или столбцами представлены в разделе.