同一个lingo旅行商程序为什么对小矩阵可以 矩阵变大之后就会报错?
来源:学生作业帮 编辑:搜搜考试网作业帮 分类:数学作业 时间:2024/06/13 23:55:26
同一个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
程序报错
![](http://img.wesiedu.com/upload/c/fc/cfc8c2ad11c0a45c7ee5280d73e67664.jpg)
但是将距离矩阵换为
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列 的矩阵该怎么求?
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
程序报错
![](http://img.wesiedu.com/upload/c/fc/cfc8c2ad11c0a45c7ee5280d73e67664.jpg)
但是将距离矩阵换为
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旅行商程序为什么对小矩阵可以 矩阵变大之后就会报错?](/uploads/image/z/17060822-62-2.jpg?t=%E5%90%8C%E4%B8%80%E4%B8%AAlingo%E6%97%85%E8%A1%8C%E5%95%86%E7%A8%8B%E5%BA%8F%E4%B8%BA%E4%BB%80%E4%B9%88%E5%AF%B9%E5%B0%8F%E7%9F%A9%E9%98%B5%E5%8F%AF%E4%BB%A5+%E7%9F%A9%E9%98%B5%E5%8F%98%E5%A4%A7%E4%B9%8B%E5%90%8E%E5%B0%B1%E4%BC%9A%E6%8A%A5%E9%94%99%3F)
city / 1..5/:u; 这个地方要改成city / 1..10/:u;才可以啊