lingo中矩阵的转置怎么表示

问题描述:

lingo中矩阵的转置怎么表示

使用循环语句@for(AZ(i,j):t(i,j)=k(j,i));互换i,j位置,即置换.
例子:
MODEL:
sets:
row/1..5/;
col/1..5/;
AZ(row,col):k,t;
endsets
data:
k=1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
1 1 1 1 1;
enddata
@for(AZ(i,j):t(i,j)=k(j,i));
END
运行结果:
Feasible solution found.
Total solver iterations: 0
Variable Value
K( 1, 1)1.000000
K( 1, 2)2.000000
K( 1, 3)3.000000
K( 1, 4)4.000000
K( 1, 5)5.000000
K( 2, 1)2.000000
K( 2, 2)3.000000
K( 2, 3)4.000000
K( 2, 4)5.000000
K( 2, 5)6.000000
K( 3, 1)3.000000
K( 3, 2)4.000000
K( 3, 3)5.000000
K( 3, 4)6.000000
K( 3, 5)7.000000
K( 4, 1)4.000000
K( 4, 2)5.000000
K( 4, 3)6.000000
K( 4, 4)7.000000
K( 4, 5)8.000000
K( 5, 1)1.000000
K( 5, 2)1.000000
K( 5, 3)1.000000
K( 5, 4)1.000000
K( 5, 5)1.000000
T( 1, 1)1.000000
T( 1, 2)2.000000
T( 1, 3)3.000000
T( 1, 4)4.000000
T( 1, 5)1.000000
T( 2, 1)2.000000
T( 2, 2)3.000000
T( 2, 3)4.000000
T( 2, 4)5.000000
T( 2, 5)1.000000
T( 3, 1)3.000000
T( 3, 2)4.000000
T( 3, 3)5.000000
T( 3, 4)6.000000
T( 3, 5)1.000000
T( 4, 1)4.000000
T( 4, 2)5.000000
T( 4, 3)6.000000
T( 4, 4)7.000000
T( 4, 5)1.000000
T( 5, 1)5.000000
T( 5, 2)6.000000
T( 5, 3)7.000000
T( 5, 4)8.000000
T( 5, 5)1.000000
RowSlack or Surplus
10.000000
20.000000
30.000000
40.000000
50.000000
60.000000
70.000000
80.000000
90.000000
100.000000
110.000000
120.000000
130.000000
140.000000
150.000000
160.000000
170.000000
180.000000
190.000000
200.000000
210.000000
220.000000
230.000000
240.000000
250.000000
符合