2014-11-18 8 views
1

Я пытаюсь выяснить, почему я получаю эту ошибку в одном из моих ограничений.Ampl Индексирование выражений с использованием colons error: переменная в такой-то части спецификации набора

линия выглядит следующим образом:

subject to resource1{t in time: operation[1,1,t]= 1}: 
    sum {p in plane, m in t..(t+process_time[p,1])} 
     (operation[p,1,m] + operation[p,8,m]) <= 1; 

Это довольно много говорят, что за все время, когда бинарная переменная «операция» = 1, что означает, что операция с использованием конкретной машины/ресурс в данный момент времени t, никакая другая операция не должна начинаться до тех пор, пока эта операция не будет выполнена.

+0

Как объявляются ресурс1, плоскость, время, операция и process_time? –

ответ

1

Вы не можете использовать переменные в выражениях индексирования в AMPL. Если вы используете CPLEX, вы можете сформулировать это как индикатор ограничение вместо:

subject to resource1{t in time}: 
    operation[1,1,t] = 1 ==> sum {p in plane, m in t..(t+process_time[p,1])} 
     (operation[p,1,m] + operation[p,8,m]) <= 1; 

В качестве альтернативы, вы можете использовать свой род Big M formulation.

 Смежные вопросы

  • Нет связанных вопросов^_^