Переменная в нижней/верхней границе ошибки AMPL

У меня проблема, когда я пытаюсь сделать сумму с переменными пределами, когда я выполняю в AMPL, он возвращает ошибку «Переменная в нижней границе» и «Переменная в верхней границе» в последней строке, но я действительно не получаю это точная идея использования min и max! ВТФ большое спасибо

var Y{i in Dias,j in Bloques} binary;
var B{i in Dias,j in Bloques}= Y[i,j]*j;
var L{i in Dias}=min{n in Bloques}if B[i,n]>0 then B[i,n];
var M{i in Dias}=max{n in Bloques}if B[i,n]>0 then B[i,n];

#this line gives error
var V{i in Dias}= sum{z in (L[i]..M[i])}1-Y[i,z];

person TOM    schedule 29.10.2015    source источник


Ответы (1)


Вы не можете использовать переменные решения для указания границ диапазона a и b в a..b (L[i]..M[i] в вашем коде). Если границы диапазона известны заранее, а не в результате процесса оптимизации, то вместо переменных следует использовать параметры.

param L{i in Dias} = ...
param M{i in Dias} = ...

В противном случае вам придется переформулировать вашу модель.

person vitaut    schedule 29.10.2015