суммирование с индексами i и i + 1 в GAMS

Я не знаю, как я могу закодировать это суммирование в GAMS, потому что у него индекс с разницей один.

Я имею в виду, что у меня есть индекс i и i + 1. это суммирование должно быть вычислено для i = 1, .., 54;

i, j - множества, a (i), b (i), c - параметры, а x, y - переменные

sum(j, a(i)*x(i,j))-b(i)*y(i)+ c * (sum(j, a(i+1)*x(i+1,j))-b(i+1)*y(i)) <= 136

Другими словами, я хочу иметь

 sum(j, a(1)*x(1,j))-b(1)*y(1)+ c * (sum(j, a(2)*x(2,j))-b(2)*y(2) )<= 136

 sum(j, a(3)*x(3,j))-b(3)*y(3)+ c * (sum(j, a(4)*x(4,j))-b(4)*y(4) )<= 136
 .
 .
 .


 sum(j, a(53)*x(53,j))-b(53)*y(53)+ c * (sum(j, a(54)*x(54,j))-b(54)*y(54) )<= 136

person Richard    schedule 29.06.2018    source источник


Ответы (1)


Как насчет этого?

eq1(i)$mod(ord(i),2).. sum(j, a(i)*x(i,j))-b(i)*y(i)+ c * (sum(j, a(i+1)*x(i+1,j))-b(i+1)*y(i)) =L= 136;
person Lutz    schedule 03.07.2018
comment
это неверно, потому что я не хочу иметь sum (j, a (1) * x (i, j)) - b (1) * y (1) + c * (sum (j, a (2) * х (2, j)) - b (2) * y (2)) = L = 136; с суммой (j, a (2) * x (i, j)) - b (2) * y (2) + c * (sum (j, a (3) * x (3, j)) - b ( 3) * y (3)) = L = 136; ,..... и так далее - person Richard; 04.07.2018
comment
я хочу иметь sum (j, a (1) * x (1, j)) - b (1) * y (1) + c * (sum (j, a (2) * x (2, j)) -b (2) * y (2)) ‹= 136 sum (j, a (3) * x (3, j)) - b (3) * y (3) + c * (sum (j, a ( 4) * x (4, j)) - b (4) * y (4)) ‹= 136, .... и т. Д. - person Richard; 04.07.2018
comment
Значит, вы хотите пропускать каждую секунду i? Я соответствующим образом отредактировал свой ответ (обратите внимание на $ -условие в начале). - person Lutz; 04.07.2018
comment
в части c * (sum (j, a (i + 1) * x (i + 1, j)) - b (i + 1) * y (i)) = L = 136 мы должны написать y (i + 1) верно? - person Richard; 04.07.2018
comment
спасибо за помощь, я получил свой ответ в вашем коде ;-) - person Richard; 04.07.2018