Как я могу рассчитать промежуточную сумму подмножества элементов массива для использования в нисходящем ограничении в MiniZinc?

У меня есть массив a типа int [0,0,0,0,0] длины l

Я хочу вычислить сумму всех элементов с нечетными индексами для использования в нисходящем ограничении, вот какой-то псевдо-код MiniZinc:

s = sum(i in 1..l | i mod 2 == 0) (a[i]);

решить максимизировать (ы);

Как это может быть сделано?


person Romeo Kienzler    schedule 22.09.2015    source источник


Ответы (1)


Я не знаю, что такое «нисходящее ограничение», но вы можете использовать «где», чтобы добавить условие в цикл:

 constraint
     s = sum(i in 1..l where i mod 2 == 0) (a[i])
 ;
person hakank    schedule 22.09.2015
comment
Под ограничением нисходящего потока я имею в виду ограничение, в основном использующее s в качестве параметра. Спасибо за ответ, все работает! - person Romeo Kienzler; 22.09.2015