同一个lingo旅行商程序为什么对小矩阵可以 矩阵变大之后就会报错?model:sets:city / 1..5/:u; link( city,city): dist, 距离矩阵; x;endsets n = @size( city);data: 距离矩阵,它并不需要是对称的
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/06 13:26:43
![同一个lingo旅行商程序为什么对小矩阵可以 矩阵变大之后就会报错?model:sets:city / 1..5/:u; link( city,city): dist, 距离矩阵; x;endsets n = @size( city);data: 距离矩阵,它并不需要是对称的](/uploads/image/z/10393663-31-3.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%3Fmodel%3Asets%3Acity+%2F+1..5%2F%3Au%3B++link%28+city%2Ccity%29%3A+++++++dist%2C++%E8%B7%9D%E7%A6%BB%E7%9F%A9%E9%98%B5%3B++++++++++x%3Bendsets++++++n+%3D+%40size%28+city%29%3Bdata%3A+++%E8%B7%9D%E7%A6%BB%E7%9F%A9%E9%98%B5%2C%E5%AE%83%E5%B9%B6%E4%B8%8D%E9%9C%80%E8%A6%81%E6%98%AF%E5%AF%B9%E7%A7%B0%E7%9A%84)
同一个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;才可以啊