python中后期接受爬山
lahc的Python项目详细描述
后期验收爬山
利用 伯克和比科夫在python中[Burke2017]。
安装
将存储库下载到您的计算机并安装,例如通过pip
pip install .
或者直接从python包索引安装。
pip install lahc
使用量
包提供了一个基类,用于子类化到特定的 问题。move和energy方法必须由 应用算法之前的用户。
用户通过调整单个算法来控制算法 参数history length和的终止条件 算法。请参阅下面关于每个主题的小节。
搜索是通过调用run方法开始的。
这个例子是开始使用这个包的好地方。
- 注意
- 实现在很大程度上依赖于复制状态。这个 默认复制策略(copy_strategy='deepcopy')依赖于 stlcopy.deepcopy方法适用于大多数数据结构, 但通常相当缓慢。large性能提升可以是 通过采用不同的复制策略很容易获得,请参见 copy_state方法的文档。
历史长度
LAHC算法的行为由单个参数控制, 历史长度。要改变算法的历史长度, 调整类的history_length参数。
如果历史长度设置为1,则LAHC算法等效 一个贪婪的爬山算法。增加历史长度 通常提高了溶液质量,但也增加了 汇聚。
因此,历史长度的选择应基于 对溶液质量和可用时间的要求 分析。
lahc启发式的一个有用特性是 收敛性与历史长度大致成正比。运行时 因此,在应用 一些不同历史长度的算法。
作为一般建议,从较低的历史长度开始, 逐渐增加它以确定 估计结果。选择一个较短的历史长度,允许 在分配给模拟的时间内多次运行,而不是 单次运行的较长历史长度。
终止标准
当terminate_search方法计算 当中断信号(Ctrl-C)发送到进程时。
terminate_search方法的默认行为是 当尝试次数最少时终止算法 使得算法无法改进 一定数量的步骤。最小步数和必要步数 可以使用^{tt12}调整空闲迭代次数$ 和steps_idle_fraction参数。
steps_idle_fraction(0.02)的默认值通常是 对于各种问题都是不错的选择,但是 steps_minimumvalue(100000)可能需要根据 问题是。作为一般建议,用户应该减少 steps_minimum参数,如果算法始终终止于 steps_minimum在长时间运行后没有改进 解决办法。
确认
源代码的结构和部分 LateAcceptanceHillClimber类是从^{tt19}复制的$ 在simannealpython项目中初始化。所有来自 simanneal项目在此表示感谢。退房 simanneal项目位于
https://github.com/perrygeo/simanneal
实现了广泛应用的、成功的模拟退火 元启发式。
支持
请open an issue 为了支持。
贡献
请捐款使用Github Flow。 创建分支、添加提交和 open a pull request。
参考书目
[BURKE2017] | E. K. Burke, Y. Bykov, The late acceptance Hill-Climbing heuristic. European Journal of Operational Research. 258, 70–78 (2017). |