文章目录
- 1、瑶草问题-离散优化问题
- 2、重试优化
- 3、分支限界法-改进重试优化法
- 4、重启式搜索
- 4.1 重启方针/策略
- 4.2 自动化搜索策略
- THE END
1、瑶草问题-离散优化问题
\qquad
要求在一个建木上构建一个完整的分枝树,每一个完整的分枝有100段,完整分枝上的每一段树段都要用一份神队用户培育。
\qquad
当前手头有100中不同特性的神水,可以培育不同数量的树段分枝;在每一个树段都有特定数量的树叶,都需要特定分量的养分。
\qquad
若要求在某个完整分枝顶端长出一支瑶草,需要满足养分充足的约束和区间数量数量的约束。目标是求最好的瑶草,使得分支中的数量数量最多。
2、重试优化
\qquad
约束编程求解器没有很巧妙的对离散优化问题进行优化,当找到一个解,约束编程即对问题进行重新搜索,去搜索一个更好的解。如果求解一个最大化问题,重试优化算法的流程如下图所示:
3、分支限界法-改进重试优化法
KaTeX parse error: Undefined control sequence: \qqua at position 1: \̲q̲q̲u̲a̲ 在约束编程进行搜索的过程中,在搜索到一个新的解方案时,比较新的解方案和当前最优解方案之间的优劣,保留最优解,同时更新最优解的目标值下界约束,而不是添加一个新的最优解目标值下界约束后对解空间重新进行搜索。
\qquad
分枝限界法相对于重试优化法来说减少了不必要的冗余搜索,从而可以提高求解效率。越早找到一个高质量的解可以辅助剪枝,缩小解空间。
\qquad
在约束编程中,搜索的顺序至关重要,在搜索时可以先注重重要的变量(对目标函数影响较大的变量),对此类变量进行优先搜索,可以更早找到高质量的解方案。
4、重启式搜索
\qquad
在搜索的过程中,一个早期错误的决策可能导致非常严重的搜索效率的降低,重启搜索可以克服重尾现象。
\qquad
重启式搜索时简单有效的方法。重启搜索规定在一定量的资源消耗之后,从最早的地方重启搜索,通常以搜索量(资源)为指标,例如被访问的或者回溯的节点数量。在重启之后随后的搜索中,采用不一样的搜索,例如引入随机化或者从之前运行的过程中收集、学习和积累经验。
4.1 重启方针/策略
\qquad
常量级重启,每次重启之后记录资源使用量,在使用
L
L
L单位资源之后重启搜索
\qquad
几何级重启,设定一个乘子
α
\alpha
α,在使用
L
L
L单位资源之后,新的重启资源限制设置为
α
L
\alpha L
αL,依次类推,这样每次重启之后的资源都会增加
α
\alpha
α倍,因此叫做几何级重启。
\qquad
Luby序列重启,Luby序列如下所示:
\qquad
Luby序列重启对于随机算法来说通常是最佳的,与最佳策略相比也只会有不多余对数级别(log)的差异;与其他常用策略相比,即使较差,也不会有超过常数级别的差异。
4.2 自动化搜索策略
\qquad
自动化搜索策略是一个在约束编程里面高度活跃的研究领域,自动化搜索策略包括:dom_w_deg, impact 和 activity等。