永发信息网

一个LINGO 旅行商问题

答案:1  悬赏:80  手机版
解决时间 2021-04-04 01:31
  • 提问者网友:無理詩人
  • 2021-04-03 17:18
MODEL:
SETS:
CITY/1..14/: JL;
STEP/1..11/;
LINE( STEP, CITY): X;
LINKS(CITY,CITY):C;
ENDSETS

DATA:
JL=0,14,16,17,21,23,26,27,31,32,35,36,38,39
C= 0 0 0 0 1797 0 1392 0 0 0 0 0 0 0
0 0 2608 2196 3297 0 0 0 0 0 0 0 0 0
0 2608 0 0 0 2098 0 0 0 0 0 0 0 0
0 2196 0 0 2104 1775 0 0 0 0 0 0 0 0
1797 3297 0 2104 0 0 2192 0 0 0 0 0 0 0
0 0 2098 1775 0 0 0 0 0 1312 0 0 0 0
1392 0 0 0 2192 0 0 0 1537 0 0 0 0 0
0 0 0 0 0 0 0 0 1068 0 0 2204 0 1780
0 0 0 0 0 0 1537 1068 0 0 1114 0 0 0
0 0 0 0 0 1312 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1114 0 0 0 1410 0
0 0 0 0 2880 0 0 2204 0 0 0 0 1537 0
0 0 0 0 0 0 0 0 0 0 1410 1537 0 0
0 0 0 0 0 0 0 1780 0 0 0 0 0 0
ENDDATA

@FOR( LINE : @BIn( X));
M1=@SIZE(STEP);
@FOR(CITY(I): @SUM(STEP(N): X(N,I)) = 1);
@FOR(STEP(N):@SUM(CITY(I):X(N,I))=1);
L1=@SUM(CITY(I):(X(1,I)+X(M1,I))*JL(I));
LX=@SUM(STEP(N)|N#LT#M1:@SUM(LINKS(I,J):C(I,J)*X(N,I)*X(N+1,J)));
MIN=L1+LX;
END
这是一个用LINGO求解旅行商问题的程序,在这个程序里面,一个人从O点出发,送货到13个位置,位置之间并不是两两相连的,这是求最短路径的但是不知道为啥有溢出的错误,请各路大侠帮忙看看问题出在哪个地方。。。。。。拜托了,各种紧急各种在线等。。。。。。
最佳答案
  • 五星知识达人网友:夜余生
  • 2021-04-03 18:48



我不知道下面的step是指什么意思
STEP/1..11/;
LINE( STEP, CITY): X;

我换了一种方式来编:
MODEL:
SETS:
CITY / 1.. 14/: U;
LINK( CITY, CITY):DIST, X;
ENDSETS
DATA:
DIST = 0 0 0 0 1797 0 1392 0 0 0 0 0 0 0
0 0 2608 2196 3297 0 0 0 0 0 0 0 0 0
0 2608 0 0 0 2098 0 0 0 0 0 0 0 0
0 2196 0 0 2104 1775 0 0 0 0 0 0 0 0
1797 3297 0 2104 0 0 2192 0 0 0 0 0 0 0
0 0 2098 1775 0 0 0 0 0 1312 0 0 0 0
1392 0 0 0 2192 0 0 0 1537 0 0 0 0 0
0 0 0 0 0 0 0 0 1068 0 0 2204 0 1780
0 0 0 0 0 0 1537 1068 0 0 1114 0 0 0
0 0 0 0 0 1312 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1114 0 0 0 1410 0
0 0 0 0 2880 0 0 2204 0 0 0 0 1537 0
0 0 0 0 0 0 0 0 0 0 1410 1537 0 0
0 0 0 0 0 0 0 1780 0 0 0 0 0 0;
ENDDATA
N = @SIZE( CITY);
MIN = @SUM( LINK: DIST * X);
@FOR( CITY( K):
@SUM( CITY( I)| I #NE# K: X( I, K)) = 1;
@SUM( CITY( J)| J #NE# K: X( K, J)) = 1;
@FOR( CITY( J)| J #GT# 1 #AND# J #NE# K:
U( J) >= U( K) + X ( K, J) -
( N - 2) * ( 1 - X( K, J)) +
( N - 3) * X( J, K));
);
@FOR( LINK: @BIn( X));
@FOR( CITY( K)| K #GT# 1:
U( K) <= N - 1 - ( N - 2) * X( 1, K);
U( K) >= 1 + ( N - 2) * X( K, 1)
);
END
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯