比较和对比蒙特卡罗方法和进化算法

Gil*_*ili 12 montecarlo evolutionary-algorithm

蒙特卡罗方法进化算法之间有什么关系?从表面上看,它们似乎是用于解决复杂问题的无关模拟方法.哪种问题最适合?他们能解决同样的问题吗?两者之间有什么关系(如果有的话)?

Fra*_*ank 18

根据我的经验,"蒙特卡洛"是一个严重超载的术语.人们似乎将它用于任何使用随机数生成器的技术(全局优化,情景分析(谷歌"Excel蒙特卡罗模拟"),随机整合(每个人用来演示MC 的Pi计算).我相信,因为你提到过您问题中的进化算法,您正在谈论用于数学优化的蒙特卡罗技术:您有一些具有多个输入参数的适应度函数,并且您希望最小化(或最大化)该函数.

如果您的函数表现良好(无论您从哪个输入开始,都会有一个全局最小值),那么最好使用确定的最小化技术,例如共轭梯度法.许多机器学习分类技术涉及找到最小化超平面相对于训练集的最小平方误差的参数.在这种情况下被最小化的功能是在n维空间中平滑,表现良好的抛物面.计算坡度并滚下坡.十分简单.

但是,如果您的输入参数是离散的(或者如果您的适应度函数具有不连续性),则无法再准确计算梯度.如果使用一个或多个变量的表格数据计算适应度函数,则会发生这种情况(如果变量X小于0.5,则使用此表,否则使用该表).或者,您可能拥有一个从NASA获得的程序,该程序由作为批处理作业运行的不同团队编写的20个模块组成.你提供输入,它会吐出一个数字(想想黑盒子).根据您开始使用的输入参数,最终可能会出现错误的最小值.全局优化技术试图解决这些类型的问题.

进化算法形成一类全局优化技术.全局优化技术通常涉及某种"爬山"(接受具有更高(更差)适应度函数的配置).这种爬坡通常涉及一些随机性/随机性/蒙特卡罗.通常,这些技术在早期更可能接受不太优化的配置,并且随着优化的进展,它们不太可能接受劣质配置.

进化算法松散地基于进化类比.模拟退火基于金属退火的类比.粒子群技术也受到生物系统的启发.在所有情况下,您应该将结果与简单的随机(也称为"monte carlo")配置抽样进行比较......这通常会产生相同的结果.

我的建议是开始使用确定性的基于梯度的技术,因为它们通常比随机/蒙特卡罗技术需要更少的功能评估.当你听到蹄声时,认为马不是斑马.从几个不同的起点运行优化,除非你正在处理一个特别讨厌的问题,你应该最终得到大致相同的最小值.如果没有,那么你可能有斑马,应该考虑使用全局优化方法.

  • @Gili引用您链接的维基百科文章,"蒙特卡罗方法(或蒙特卡罗实验)是一类依赖重复随机抽样计算结果的计算算法." 我的观点仅仅是MC描述了一类算法.在全局优化的背景下,进化算法是许多蒙特卡罗(又名随机)优化方法之一. (4认同)