模拟退火算法解决0-1背包问题的实现

模拟退火算法解决0-1背包问题的实现

 

《模拟退火算法解决0-1背包问题的实现》

2   模拟退火算法介绍

 

 

模拟退火算法来源于固体退火原理,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。用固体退火模拟组合优化问题,将内能E模拟为目标函数值f,温度T演化成控制参数t,即得到解组合优化问题的模拟退火算法:由初始解i和控制参数初值t开始,对当前解重复“产生新解→计算目标函数差→接受或舍弃”的迭代,并逐步衰减t值,算法终止时的当前解即为所得近似最优解,这是基于蒙特卡罗迭代求解法的一种启发式随机搜索过程。

模拟退火算法可以分解为解空间、目标函数和初始解3部分。其基本思想是:

(1)初始化:初始温度T(充分大),初始解状态s(是算法迭代的起点),每个T值的迭代次数L(Markov链长),衰减准则α,停止准则。

(2)对k=1,……,L做第(3)至第(6)步;

(3)产生新解s′;

(4)计算增量cost=cost(s′)-cost(s),其中cost(s)为评价函数;

(5)若t′<0则接受s′作为新的当前解,否则以概率exp(-t′/T)接受s′作为新的当前解;

(6)如果满足终止条件则输出当前解作为最优解,结束程序。否则T逐渐减少,并转第2步运算。


3 思路分析


《模拟退火算法解决0-1背包问题的实现》

《模拟退火算法解决0-1背包问题的实现》

SA解决01背包问题 knapsackSa.cpp代码下载:

http://download.csdn.net/detail/zhoubin1992/7494517

《模拟退火算法解决0-1背包问题的实现》

    原文作者:停车场模拟问题
    原文地址: https://blog.csdn.net/zhoubin1992/article/details/30500923
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞