爬山算法

爬山算法与模拟退火算法的实验

为君一笑 提交于 2020-01-26 02:38:23
本实验的问题 n n n 个工作将要指派给 n n n 个工人分别完成,工人 i i i 完成工作 j j j 的时间为 d i j d_{ij} d i j ​ ,问如何安排可使总的工作时间达到最小. 分别设计爬山算法和 模拟退火算法来解决上述指派问题。 1.设 n = 100 n=100 n = 1 0 0 ,要求随机产生 d i j d_{ij} d i j ​ ; 2.当爬山算法与 SA 算法采用相同的随机初始解和邻域结构时,利用 t 检验来分析两种算法能够获得的最优解质量。 爬山算法 简介 爬山算法是一种简单的贪心搜索算法,该算法每次从当前解的临近解空间中选择一个最优解作为当前解,直到达到一个局部最优解。爬山算法实现很简单,其主要缺点是会陷入局部最优解,而不一定能搜索到全局最优解。假设C点为当前解,爬山算法搜索到A点这个局部最优解就会停止搜索,因为在A点无论向那个方向小幅度移动都不能得到更优的解。 算法步骤 1.随机生成一个问题的解 x 0 x_0 x 0 ​ 2.随机选取解 x 0 x_0 x 0 ​ 的部分邻域 x 1 , x 2 , x 3 . . . x n x_1,x_2,x_3...x_n x 1 ​ , x 2 ​ , x 3 ​ . . . x n ​ ,并找出邻域中的解 x m i n x_{min} x m i n ​ 能使总工作时间 y = f (