Неожиданная полная синтаксическая ошибка

Итак, я хотел запустить этот код:

constraint ctMachine[Machine];
subject to{
forall(i in Machine)
  forall (k in Week)
  ctMachine[i]: sum(j in Product)
    ResourceConsumption[i][j] * Units[j][k]  <= Capacity[i];

Но если я сделаю это, я получу ошибку, что ctMachine[1] уже был назначен, что имеет смысл. Поэтому я попытался поставить второй цикл for после функции sum, например:

constraint ctMachine[Machine];
subject to{


forall(i in Machine)
  ctMachine[i]: sum(j in Product)
  forall(k in Week)
    ResourceConsumption[i][j] * Units[j][k]  <= Capacity[i];

Но затем я получаю синтаксическую ошибку, неожиданную для себя. Но как я могу это сделать тогда? Мне нужно ограничение для всех k. Я довольно новичок в линейном программировании и OPL, так что я понятия не имею, как я могу решить это сейчас. Кстати, я не могу просто удалить метку ограничения, так как она мне тоже нужна.

1 ответ

Я бы удалил

ограничение ctMachine[Machine];

и писать

Форалл (я в машине)
ctMachine: сумма (j в продукте)
сумма (k в неделю) ResourceConsuration[i][j] * Units[j][k] <= Capacity[i];

С уважением

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