setof в данных модели и файлах сценариев для сервера NEOS

При отправке моей формулировки AMPL на сервер NEOS, почему приведенная ниже кодовая строка с использованием оператора `setof'прекрасно работает в файле модели, но не в файле данных?

set X := setof {indices in Y} subsetofindices

Сервер NEOS требует, чтобы код был разделен на.mod, .dat и файл сценария отдельно. Я видел ссылки на использование letX := ... в файле скрипта. В чем разница между этими файлами и что ставить куда?

Пример Используя файлы AMPL steelT.x, этот первый блок из 2 файлов работает

# steelT.mod
set DUMMYPROD;
set PROD := setof {i in DUMMYPROD} i;     # products
# steelT.dat
data;
set DUMMYPROD := bands coils;

Тогда как следующее не работает:

# steelT.mod
set DUMMYPROD;
set PROD;     # products
# steelT.dat
data;
set DUMMYPROD := bands coils;
set PROD := setof {i in DUMMYPROD} i;

Возвращает ошибку

ожидается; (: или контекст символа: set PROD:= setof >>> { <<< i in DUMMYPROD} i;

Более широкий вопрос Вообще, что принадлежит файлу модели, файлу данных и файлу скрипта? (Также для param и другие определения) В каком порядке они обрабатываются? Возможно, мне не хватает некоторых основ, поскольку я читал руководство AMPL, где я не нашел этого (я никогда не проходил курс по оптимизации).

Дополнительный вопрос о сервере NEOS "Новая" Логика программирования Contraint в AMPL включает в себя условные и логические операторы для целых ограничений. Я не думаю, что они доступны в NEOS. Или они (потому что они не работали на меня)? Есть ли простой обходной путь?

Спасибо!

1 ответ

Решение

Формат данных AMPL не поддерживает выражения, поэтому вы должны либо использовать setof {i in DUMMYPROD} i в объявлении (как в первом примере) или в скрипте AMPL:

let PROD := setof {i in DUMMYPROD} i;

См. Также главу 9. Указание данных книги AMPL для получения более подробной информации о формате данных AMPL.

Что касается функций программирования ограничений (CP), я не думаю, что есть какие-либо решатели CP в NEOS. Вы можете попробовать связаться со службой поддержки NEOS по этому поводу.

Другие вопросы по тегам