打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
编程:Lingo旅行商问题

MODEL:
 ! 旅行商问题:从城市O出发经过城市A, B, C, D,E,F后又回到O的过程;
 SETS:
  CITY / O A B C D E F/: P;
  PRED( CITY,CITY)/A,B C,D E,F/旅行优先顺序;
  STEP/1..7/STEP(I)表示第I个经过的城市;
 
  LINK( CITY, CITY):
          T,  ! 时间矩阵;
          X;  ! X( I, J);
  TXS( CITY,STEP):Y;  
ENDSETS
 DATA:   !时间矩阵;
   T =   0 1.7 1.5 1.4 3 1.9 2.8
         1.7 0 3 2.6 4 3 3.5
         1.5 3 0 1.5 3.7 2.6 2.8
         1.4 2.6 1.5 0 11.5 3 3.2
         3 4 3.7 11.5 0 3.6 3.3
         1.9 3 2.6 3 3.6 0 15.6
         2.8 3.5 2.8 3.2 3.3 15.6 0;

 ENDDATA

 !城市个数;
  N = @SIZE( CITY);
  MIN = @SUM( LINK:T * X);
  !第K个经过城市I;
 @FOR( CITY( I): @SUM( STEP( K): Y( I, K)) = 1);
  !城市A和B经过的次序相邻,同理C和D,E和F;
  @FOR( PRED( I, J): @SUM( STEP( K): P(K) * Y( J, K) - P(K) * Y( I, K)) =1#OR#-1);
 
  @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:
       P( J) >= P( K) + X ( K, J) -
       ( N - 2) * ( 1 - X( K, J)) +
       ( N - 3) * X( J, K)
   );
  );
  ! 使X、Y取0或1;
  @FOR( LINK: @BIN( X));
  @FOR( TXS: @BIN( Y));
  !出发点和终点;
  @FOR( CITY( K)| K #GT# 1:
   P( K) <= N - 1 - ( N - 2) * X( 1, K);
   P( K) >= 1  + ( N - 2) * X( K, 1)
  );
END

 

用Lingo编的,条件是:从城市O出发经过城市A, B, C, D,E,F后又回到O的过程。约束:第n个经过城市A,则第n+1或n-1个经过城市B;同理C和D,E和F皆是如此。
该程序可以运行,但结果不符合约束条件,求正解。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
lingo使用教程
LINGO基础知识 | 指派问题
R语言中Logistic回归
[转载]空花·当代剪纸——乔晓光个展作品选
[学习笔记]Lingo超经典案例大全
雅思口语 hometown
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服