У меня есть переменная называется Остальной определяется как:Инициализировать 3 измерения переменная в AMPL
var Rest{I,J,T} >= 0;
где Т представляет собой совокупность периодов времени и I и J дуг. Мне нужно определить, что каждое значение для I и J, где T = 0, должно быть 0. I - это набор узлов поставки, а J - набор узлов спроса.
Я пробовал:
let Rest[*,*,0] default 0;
, но он получил меня синтаксическую ошибку. Я попытался это как в .dat и .mod файл, используя как: = и:
Я также пытался поместить это в .dat файл
var Rest default 0:=
[*,*,0] 1 City1 0;
, но он дал мне ошибку
Error at _cmdno 3 executing "solve" command
(file amplin, line 286, offset 11443):
error processing constraint Constraint1[1,'Leveaniemi',1]:
invalid subscript Rest[1,'City1',0]
Заранее благодарим!
EDIT: я теперь использовать:
var Rest default 0 :=
[*,*,0] 1 Leveaniemi 0;
которые дают мне ошибку
Error at _cmdno 3 executing "solve" command
(file amplin, line 286, offset 11438):
error processing constraint Constprocessing commands.
Executing on neos-3.neos-server.org
Error (2) in /opt/ampl/ampl -R amplin
(я использую сервер ОСЗ Gurobi решателя). Что это вообще значит? Также, если я объявляю Variable Rest как это, это приведет к тому, что каждое решение Rest станет 0? Или компилятор интерпретирует это как начальное значение?
EDIT: Я попытался реализовать решение, предоставленное Vitaut. Однако это не сработало, как выражено в комментариях ниже этого ответа. Я полагал, что, так как я определил Т как:
set T := 1 2 3 ... 15;
и так как я хотел сделать заявление LET при Т = 0, я должен объяснить, что и определить Rest как:
вар Rest { I, J TIMET};
, где TimeU Т Союз набор с только 0 элементом, т.е. TimeU интерпретируется как:
TimeU := 0 1 2 3 ... 15;
с этим фиксированными однако, компилятор жалуется, что все мои переменные и параметры уже определены.
Спасибо за ответ! Я попытался скопировать и вставить это в мою модель, как в .mod, так и в .dat. В обоих случаях это дало мне ошибку Ошибка в _cmdno 3 Выполнение команды «let» (файл amplin, команды обработки. Выполнение на neos-2.neos-сервере.org Ошибка (2) in/opt/ampl/ampl -R amplin – Cenderze
Я отредактировал свое оригинальное сообщение. – Cenderze
Возможно, вам нужно будет поместить команду let в отдельный файл и отправить его в NEOS в качестве файла команд. – vitaut