我正在寻找关于组合优化中搜索算法参数(在线学习)的自适应参数控制的想法/经验/参考/关键字。
更详细一点:
我有一个框架,负责优化硬组合优化问题。这是在一些以迭代方式使用的“小型启发式”的帮助下完成的(大型邻域搜索;破坏和重建方法)。这些“小启发式”的每个算法都采用一些外部参数,这些参数在某种程度上控制着启发式逻辑(目前:只是随机值;某种噪声;使搜索多样化)。
现在我希望有一个控制框架,用于以改进收敛的方式选择这些参数,尽可能通用,以便以后在不更改参数控制的情况下添加新的启发式方法。
至少有两个一般性的决定需要做出:
- A:选择在下一次迭代中使用的算法对(一个销毁算法和一个重建算法)。
- B:选择算法的随机参数。
唯一的反馈是新发现的解决方案的评估功能。这让我想到了强化学习这个话题。这是正确的方向吗?
不是真正的学习行为,但目前的简单想法是:
- A:根据迭代期间收集的一些性能值进行轮盘赌选择(接近过去的比旧的更有价值)。因此,如果启发式 1 确实找到了所有新的全局最佳解决方案 -> 选择这个的可能性很高。
- B:还不知道。也许可以在 (0,1) 范围内使用一些不均匀的随机值,我正在收集一些变化的动量。因此,如果启发式 1 上次使用 alpha = 0.3 并且没有找到新的最佳解决方案,则使用 0.6 并找到新的最佳解决方案 -> 有朝向 1 的动量 -> 下一个随机值可能大于 0.3。可能的问题:振荡!
需要注意的事项: - 一种特定算法的良好收敛所需的参数可能会发生巨大变化 -> 开始时可能需要更多的多样化操作,最后需要更多的强化操作。- 在一对特定的破坏/重建算法(有时称为:耦合邻域)中可能会产生良好的协同效应。怎么会认出这样的东西?那还在强化学习领域吗?- 不同的算法由不同数量的参数控制(有些取 1,有些取 3)。
有什么想法、经验、参考资料(论文)、关键字(ml-topics)吗?
如果有关于以离线学习方式决定(b)的想法。毫不犹豫地提到这一点。
感谢您的输入。
萨沙