QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 7086|回复: 8
打印 上一主题 下一主题

lingo动态规划求最短路,for循环是如何递推的?求大神指教

[复制链接]
字体大小: 正常 放大

16

主题

10

听众

51

积分

升级  48.42%

  • TA的每日心情
    开心
    2013-9-30 09:41
  • 签到天数: 18 天

    [LV.4]偶尔看看III

    自我介绍
    未老先衰

    群组2013年数学建模国赛备

    跳转到指定楼层
    1#
    发表于 2013-7-23 13:40 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    model:
    sets:
    nodes/A,B,C,D,E,F,G/:FL;
    roads(nodes,nodes)/A,B A,C B,D B,E B,F C,D C,E C,F D,G E,G F,G/:w;
    endsets
    data:
    w=2 4 3 3 1 2 3 1 1 3 4;
    enddata
    N=@size(nodes);
    FL(N)=0;
    @for( nodes(i)|i#lt#N: FL(i)=@min(roads(i,j):w(i,j)+FL(j)));
    end
    !nodes是城市,roads是街道。图起点A,终点G。FL(i)是从i到终点的距离。书上说是从FL(N)往前倒推的,问题是我认为for循环的i应该是从小变大,然后只I的增大过程只有一次,那Lingo到底是怎么完成倒推的?还是for循环的i增大是一次又一次的,到了n又变回1,知道Fl不能在改变为止?纠结了,求原理;
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信

    21

    主题

    97

    听众

    3110

    积分

  • TA的每日心情
    奋斗
    2014-3-2 00:26
  • 签到天数: 243 天

    [LV.8]以坛为家I

    哇,楼主问题问得好!考虑得很细致!赞一个!
    其实我以前也没有仔细想过这个问题,那我个人的看法是,既然是递推,应该是基于某一或某些已有的项来对未知的项进行求解,在这段程序中,首先的已知项是FL(N)=0,而N已是最大下标,故在进行@FOR()循环时,求解的应是与N最邻近的N-1这项,然后依次递减,最终得到结果。
      不知楼主是否能够接受我这样的解释,如果有什么疑问或者我的解决存在错误,望不吝指出,谢谢!

    点评

    冬季的期盼  谢谢版主大哥!!!!  详情 回复 发表于 2013-7-24 17:44
    有什么好说的
    回复

    使用道具 举报

    0

    主题

    0

    听众

    4

    积分

    升级  80%

    该用户从未签到

    自我介绍
    西电
    wujianjack2 发表于 2013-7-23 16:26
    哇,楼主问题问得好!考虑得很细致!赞一个!
    其实我以前也没有仔细想过这个问题,那我个人的看法是,既 ...

    其实我在baidu上问的时候,重点是无法理解for的循环。。。用c语言写这样的程序,for的I应该是由大到小递减的。。。所以不清楚到底Lingo的for是循环的机理。这样不利于自己编写递推。所以想问清楚
    回复

    使用道具 举报

    21

    主题

    97

    听众

    3110

    积分

  • TA的每日心情
    奋斗
    2014-3-2 00:26
  • 签到天数: 243 天

    [LV.8]以坛为家I

    爱猫的孩子 发表于 2013-7-23 23:14
    其实我在baidu上问的时候,重点是无法理解for的循环。。。用c语言写这样的程序,for的I应该是由大到小递减 ...

    哦,你是在考虑@FOR()的一般循环机理么?个人认为一般还是递增吧,就像MATLAB里for i=1:10,默认是+1的步长,当然,你用C语言写的话可以更灵活地控制吧!我在分析这个问题时是针对性分析的,没有考虑一般。多谢你的提醒!
    有什么好说的
    回复

    使用道具 举报

    16

    主题

    10

    听众

    51

    积分

    升级  48.42%

  • TA的每日心情
    开心
    2013-9-30 09:41
  • 签到天数: 18 天

    [LV.4]偶尔看看III

    自我介绍
    未老先衰

    群组2013年数学建模国赛备

    回复

    使用道具 举报

    16

    主题

    10

    听众

    51

    积分

    升级  48.42%

  • TA的每日心情
    开心
    2013-9-30 09:41
  • 签到天数: 18 天

    [LV.4]偶尔看看III

    自我介绍
    未老先衰

    群组2013年数学建模国赛备

    wujianjack2 发表于 2013-7-23 16:26
    哇,楼主问题问得好!考虑得很细致!赞一个!
    其实我以前也没有仔细想过这个问题,那我个人的看法是,既 ...

    谢谢版主大哥!!!!
    回复

    使用道具 举报

    4

    主题

    8

    听众

    147

    积分

    升级  23.5%

  • TA的每日心情
    开心
    2016-9-17 23:27
  • 签到天数: 38 天

    [LV.5]常住居民I

    自我介绍
    乐观,积极 乐于交友
    拼搏
    回复

    使用道具 举报

    madio        

    3万

    主题

    1307

    听众

    5万

    积分

  • TA的每日心情
    奋斗
    2021-5-1 20:26
  • 签到天数: 2013 天

    [LV.Master]伴坛终老

    自我介绍
    数学中国站长

    社区QQ达人 邮箱绑定达人 优秀斑竹奖 发帖功臣 风雨历程奖 新人进步奖 最具活力勋章

    群组数学建模培训课堂1

    群组数学中国美赛辅助报名

    群组Matlab讨论组

    群组2013认证赛A题讨论群组

    群组2013认证赛C题讨论群组

    你这个问题和@for的循环顺序并没有什么关系,因为在lingo凡是没有被赋值的量都会被认为是未知量。lingo会想办法获得未知量的解,你这里lingo虽然首先遇到了未知量FL(A),但是lingo并不能直接解出它的值,需要通过FL(G)的值获得FL(F)的值,这样逐步的倒推,所以这个过程并不是你的程序所限定的,而是Lingo的求解系统在这样做。
    数学建模社会化
    回复

    使用道具 举报

    978111053        

    0

    主题

    3

    听众

    14

    积分

    升级  9.47%

  • TA的每日心情
    开心
    2023-5-11 18:47
  • 签到天数: 2 天

    [LV.1]初来乍到

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2024-5-14 05:07 , Processed in 0.660287 second(s), 100 queries .

    回顶部