Мне нужна помощь в следующем случае. скажем, у меня есть следующий код:
enum x= {p,k,m};
enum y= {t1,t2,t3,t4};
array[y] of set of int:against=[{1,3,6},{3,3,6},{6,1,1},{6,3,6}];
array[x] of set of int:attack=[{3,3,6},{6,2,2},{3,1,3}];
array[x] of set of y: NodesD=[{t2,t3},{t2,t3,t4},{t1,t4}];
array[x]of var y: Select;
constraint forall(p in x)(Select[p] in NodesD[p]);
Итак, для каждого перечисления x я должен выбрать только перечисление Y. Затем я хочу выбрать тот, который подходит для каждого набора атак следующим образом:
возьмем первое перечисление x {p}, у которого есть два возможных варианта y {t2, t3}, поэтому я хочу сделать вот так: t2 = {1,1,6}, t3 = {6,3,3} поэтому я хочу вычесть каждое значение в x attack [] {3,3,6} из каждого значения в y против [] и суммировать результаты:
{1,1,6}-
{3,3,6}
-----------
{-2,-2,0} then sum them which is equal to -4
затем сделайте то же самое с t2
{6,3,3}-
{3,3,6}
------------
{3,0,-3} which is equal to 0
и в этом случае t3, равное 0, лучше, чем t2 = -4. Я хочу сделать то же самое для каждого перечисления x и максимизировать мощность. Я пробовал сделать так, но не получается
var int: power = sum(p in x)(card(against[Select[p]])-(card(attack[p])*Select[p]) );
solve maximize power ;
Любая помощь или подсказка, пожалуйста, :)