一、 问题介绍
中国邮递员问题tsp
输入:中国144个城市数据
输出:最短路径序列及路径长度
1. 采用局部搜索算法实现
2. 采用模拟退化算法实现
二、 程序设计与算法分析
1. 待解决的问题实际上是优化与组合优化问题。很多问题属于优化问题,或者可以转化为优化问题,如TSP问题,皇后问题等。
2. 用一个城市的序列表示一个可能的解,通过交换两个城市的位置获取S的邻居。
逆序交换方法设xi、xj是选取的两个城市,所谓的逆序交换方式是指,通过逆转xi、xj两个城市之间的城市次序来得到S的邻居。
3. local search:
基本思想:在搜索过程中,始终向着离目标最接近的方向搜索。
目标可以是最大值,也可以是最小值。
本题中目标为最小值。
算法步奏:
1.随机的选择一个初始的可能解x0∈D,xb=x0,P=N(xb);
2. 如果不满足结束条件,则
3. Begin
4. 选择P的一个子集P',xn为P'中的最优解
5. 如果f(xn)<f(xb),则xb=xn,P=N(xb),
转2;f(x)为指标函数。
6. 否则P=P–P',转2。
7. End
8. 输出计算结果
9. 结束
4. localsearch中存在的问题:
得到的答案往往是局部最优,而不是全局最优解。
5. 解决local search中问题的方法:
1) 每次并不一定选择邻域内最优的点,而是依据一定的概率,从 邻域内选择一个点,指标数优的点,被选中的概率比较大, 而指标函数差的点,被选中的概率比较小。
2) 函数的递增递减可能不均匀,在最优值附近可能变化极快,最好采用变步长的方式,越接近最优解时步长越小。
3) 起始点的选择可能会影响最终的解:随机的生成一些初始点,从每个初始点出发进行搜索,找到各自的最优解。再从这些最优解中选择一个最好的结果作为最终的结果。
6. 以上决方法可以结合在一起使用,比如第一、第二种方 法的结合,就产生了模拟退火方法。
7. 模拟退火思想综述:
在高温下,系统基本处于无序的状态,基本以等概率落入各个状态在给定的温度下,系统 落入低能量状态的概率大于系统落入高能量状态的概率,这样在同一温度下,如果系统交换的 足够充分,则系统会趋向于落入较低能量的状态。随着温度的 缓慢下降,系统落入低能量状态的概率逐步增加,而落入高能量状态的概率逐步减少,使得系统各状态能量的期望值随温度的下降单调下降,而只有那些能量小于期望值的状态,其概率 才随温度下降增加,其他状态均随温度下降而下降。因此,随着能量期望值的逐步下降,能量低于期望值的状态逐步减少, 当温度趋于0时,只剩下那些具有最小能量的状态,系统处于其他状态的概率趋近于0。因此最终系统将以概率1处于具有最小能量的一个状态。
8. 达到最小能量状态三个条件: