Как умножить каждый соответствующий элемент на два массива при использовании Cplex

Есть два массива A1[a][c], A2[b][c]

Теперь я пытаюсь умножить каждый соответствующий элемент этих двух массивов.

int a = 3;
int b = 4;
int c = 5;

range aRange = 1..a;
range bRange = 1..b;
range cRange = 1..c;

int A1[aRange][cRange] = [[1,2,2,1,3]
                          [1,1,1,1,1]
                          [1,1,1,1,1]];

int A2[bRange][cRange] = [[2,2,2,2,2]
                          [2,3,1,3,2]];


dvar boolean x[a][b];

Если переменная решения выбирает x[1][2], тогда я хочу получить результат массива умножения всех соответствующих элементов, [1*2,2*3,2*1,1*3,3*2] вот так.

Дополнительно хочу получить значение 1*2+2*3+2*1+1*3+3*2=19 :) ..


person sangho park    schedule 19.09.2019    source источник


Ответы (2)


int a = 3;
int b = 4;
int c = 5;

range aRange = 1..a;
range bRange = 1..b;
range cRange = 1..c;

int A1[aRange][cRange] = [[1,2,2,1,3],
                          [1,1,1,1,1],
                          [1,1,1,1,1]];

int A2[bRange][cRange] = [[2,2,2,2,2],
                          [2,3,1,3,2]];

int R[i in aRange][j in bRange]=sum(k in cRange) A1[i][k]*A2[j][k];

execute
{
writeln(R);
}   

дает

[[18 19 0 0]
         [10 11 0 0]
         [10 11 0 0]] 
person Alex Fleischer    schedule 19.09.2019

для всех (c в cRange) сумма (a в aRange, b в bRange) x [a] [b] * A1 [a] [c] * A2 [b] [c]

Но правая часть отсутствует. Вы хотите формализовать ограничение или целевую функцию? Вы знакомы с общей нотацией математической модели?

person PySeeker    schedule 19.09.2019
comment
Сэр, я вообще не умею кодировать. Поэтому я не мог понять, что такое общая математическая модель. И я закодировал то, что вы написали, но есть ошибка «синтаксическая ошибка, неожиданная для всех». Это потому, что я пишу код с максимальной целевой функцией? - person sangho park; 19.09.2019
comment
да. Вы не можете использовать оператор for all в цели. Я думаю, что в вашей переменной решения отсутствует индекс c, тогда вы можете суммировать все индексы в цели. Но я не знаю, какую модель вы пытаетесь решить. Вам действительно стоит попробовать начать с нуля и познакомиться с математическими обозначениями, прежде чем пытаться реализовать их на компьютере. - person PySeeker; 19.09.2019