同一个lingo旅行商程序为什么对小矩阵可以 矩阵变大之后就会报错?model:sets:city / 1..5/:u; link( city,city): dist, 距离矩阵; x;endsets n = @size( city);data: 距离矩阵,它并不需要是对称的

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/01 06:53:08
同一个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: 距离矩阵,它并不需要是对称的
同一个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;才可以啊