如何使用LINGO解决这道题?从杭州出发,游至少20个省会城市,用火车作为交通工具,用lingo确定费用最少的路线.(各城市之间路费已知)

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/14 03:23:57
如何使用LINGO解决这道题?从杭州出发,游至少20个省会城市,用火车作为交通工具,用lingo确定费用最少的路线.(各城市之间路费已知)

如何使用LINGO解决这道题?从杭州出发,游至少20个省会城市,用火车作为交通工具,用lingo确定费用最少的路线.(各城市之间路费已知)
如何使用LINGO解决这道题?
从杭州出发,游至少20个省会城市,用火车作为交通工具,用lingo确定费用最少的路线.(各城市之间路费已知)

如何使用LINGO解决这道题?从杭州出发,游至少20个省会城市,用火车作为交通工具,用lingo确定费用最少的路线.(各城市之间路费已知)
MODEL:
SETS:!初始设置;
CITY / 1.. 5/: U;!U(i)为地点编号;
LINK( CITY, CITY):DIST, X;!DIST为两地间花费;
ENDSETS
!数据区;
DATA:
DIST =999 11 7 4 5
10 999 4 5 8
7 4 999 7 8
5 6 7 999 3
3 8 8 3 999;
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:!如果连接cityk和cityj,则cityj = cityk+1;
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
自己修改下数据就可以用了,希望采纳!