同一个lingo旅行商程序为什么对小矩阵可以 矩阵变大之后就会报错?model:sets:city / 1..5/:u; link( city,city): dist, 距离矩阵; x;endsets n = @size( city);data: 距离矩阵,它并不需要是对称的
来源:学生作业帮助网 编辑:六六作业网 时间:2025/01/20 20:01:45
同一个lingo旅行商程序为什么对小矩阵可以 矩阵变大之后就会报错?model:sets:city / 1..5/:u; link( city,city): dist, 距离矩阵; x;endsets n = @size( city);data: 距离矩阵,它并不需要是对称的
同一个lingo旅行商程序为什么对小矩阵可以 矩阵变大之后就会报错?
model:
sets:
city / 1..5/:u;
link( city,city):
dist, 距离矩阵;
x;
endsets
n = @size( city);
data: 距离矩阵,它并不需要是对称的;
dist=0 7 4 5 8 6 12 13 11 18
7 0 3 10 9 14 5 14 17 17
4 3 0 5 9 10 21 8 27 12
5 10 5 0 14 9 10 9 23 16
8 9 9 14 0 7 8 7 20 19
6 14 10 9 7 0 13 5 25 12
12 5 21 10 8 13 0 23 21 18
13 14 8 9 7 5 23 0 18 12
11 17 27 23 20 25 21 18 0 16
18 17 12 16 19 12 18 12 16 0 ;
enddata
目标函数;
min = @sum( link:dist * x);
@FOR( city( K):
进入城市K;
@sum( city( I)| I #ne# K:x( I,K)) = 1;
离开城市K;
@sum( city( J)| J #ne# K:x( K,J)) = 1;
);
保证不出现子圈;
@for(city(I)|I #gt# 1:
@for( city( J)| J#gt#1 #and# I #ne# J:
u(I)-u(J)+n*x(I,J)<=n-1);
);
限制u的范围以加速模型的求解,保证所加限制并不排除掉TSP问题的最优解;
@for(city(I) | I #gt# 1:u(I)<=n-2 );
定义X为0\1变量;
@for( link:@bin( x));
End
程序报错
但是将距离矩阵换为
dist=0 70 115 90 95
70 0 46 21 50
115 46 0 30 32
90 21 30 0 48
95 50 32 48 0;程序反倒可以运行 对于10行10列 的矩阵该怎么求?
同一个lingo旅行商程序为什么对小矩阵可以 矩阵变大之后就会报错?model:sets:city / 1..5/:u; link( city,city): dist, 距离矩阵; x;endsets n = @size( city);data: 距离矩阵,它并不需要是对称的
city / 1..5/:u; 这个地方要改成city / 1..10/:u;才可以啊