当前位置:早雪网网络学院编程文档.NET → 模拟退火算法--求解货郎担问题(C#实现)

模拟退火算法--求解货郎担问题(C#实现)

减小字体 增大字体 作者:未知  来源:从互联网收集整理并转载  发布时间:2005-3-13 1:56:16

   
具体原理已在前面已经介绍过了。下面是实现过程

          
退火过程由冷却进度表(Cooling Schedule)控制,包括控制参数的初值t及其衰减因子Δt、每个t值时的迭代次数L和停止条件S。本试验分别使用TemperatureDiminishedRateMarkovLengthAIM来表示。其参数值经过多次试验反复测试得到最好的组合,当

Temperature300DiminishedRate0.9

MarkovLength130000AIM100

的时候最好。

--------------------------------------------


        1 初始化:初始温度T(充分大),初始解状态So(是算法迭代的起点) 每个T值的迭代次数L

2  whiletrue

  21k=1,……,L做第211至第215步:

    211 先预算新解和当前解的差值distinct

      212 if(distinct<0||random(0..1)<exp(distinct/temperature))则产生新解S′并将新解作为当前解

      213 如果 currentPath < bestPath bestPathcurrentPath

      214 如果 连续退火了 AIM 次仍没有新的最好解产生则就假设找到了最好路径,跳出循环,结束程序,返回最优解。

      215  如果连续Diminish_T_num此循环都没有更好的解产生则aim1表明此次退火没有产生新的最好解,并退出此次循环,进行退火,即跳到第22

    22 降温

    23 currentPath bestPath

3 输出最佳路径
----------------------------------------


Tags:模拟,退火,算法,求解,货郎担,问题,实现
[数据载入中...] [返回上一页] [打 印]