Как реформировать и трансформировать матрицу?
Прежде всего, спасибо всем читателям.
Проблема как ниже.
int MaxANum = 5;
int MaxBNum = 3;
int MaxENum = 8;
int ANum = 3;
int BNum = 2;
int ENum = 5;
range TTRange = 1..(MaxANum+MaxBNum);
range TRange = 1..(ANum+BNum);
range ARange = 1..ANum;
range BRange = 1..BNum;
range TERange = 1..MaxENum;
range ERange = 1..ENum;
M[TTRange][TERange] = [[**0, 1, 1, 0, 1**, 1, 0, 1] -> 1st ANum
[**1, 1, 0, 0, 1**, 0, 0, 1] -> 2nd ANum
[**0, 0, 1, 0, 1**, 0, 1, 0] -> 3rd ANum
[0, 1, 0, 0, 1, 1, 1, 0] -> 4th ANum
[1, 1, 0, 1, 0, 1, 0, 1] -> 5th ANum
[**1, 0, 0, 1, 1**, 0, 0, 0] -> 1st BNum
[**0, 0, 1, 0, 0, 0**, 1, 1] -> 2nd BNum
[1, 1, 0, 0, 0, 0, 0, 1]]; -> 3rd BNum
В этой ситуации я хотел бы изменить матрицу, выбрав определенные минимумы и столбцы.
Как...
M1[TRange][ERange] = [[0, 1, 1, 0, 1] -> 1st ANum
[1, 1, 0, 0, 1] -> 2nd ANum
[0, 0, 1, 0, 1] -> 3rd ANum
[1, 0, 0, 1, 1] -> 1st BNum
[0, 0, 1, 0, 0] -> 2nd BNum
Я новичок в CPLEX и компьютерном кодировании. Плз, дайте мне знать, как мне получить код для этого. Спасибо за ваше чтение так много.
1 ответ
Я не совсем уверен, как ваш ввод связан с желаемым выводом, но этот фрагмент кода может помочь:
range TTRange = 1..8;
range TRange = 1..5;
range TERange = 1..8;
range ERange = 1..5;
int M[TTRange][TERange] = [[0, 1, 1, 0, 1, 1, 0, 1],
[1, 1, 0, 0, 1, 0, 0, 1],
[0, 0, 1, 0, 1, 0, 1, 0],
[0, 1, 0, 0, 1, 1, 1, 0],
[1, 1, 0, 1, 0, 1, 0, 1],
[1, 0, 0, 1, 1, 0, 0, 0],
[0, 0, 1, 0, 0, 0, 1, 1],
[1, 1, 0, 0, 0, 0, 0, 1]];
int M1[t in TRange][e in ERange] = M[t][e];
Это производит эту субматрицу:
M1 = [[0 1 1 0 1]
[1 1 0 0 1]
[0 0 1 0 1]
[0 1 0 0 1]
[1 1 0 1 0]]
"Хитрость" заключается в том, чтобы сделать выбор в наборах индексов M1
,