《蒙特卡罗最优化》PPT课件.ppt

  1. 1、本文档共55页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《蒙特卡罗最优化》PPT课件

运行结果: 2.应用于求解随机优化问题的蒙特卡罗方法 2.1模拟退火算法 模拟退火算法来源于固体退火原理,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。根据Metropolis准则,粒子在温度T时趋于平衡的概率为e-ΔE/(kT),其中E为温度T时的内能,ΔE为其改变量,k为Boltzmann常数。用固体退火模拟组合优化问题,将内能E模拟为目标函数值f,温度T演化成控制参数t, 即得到 Monte Carlo Optimization 主要内容 一、数值优化方法(Numerical optimization methods) 二、应用于求解随机优化问题的蒙特卡罗方法 (1)模拟退火算法(Simulated Annealing) (2)EM算法(The EM algorithm) 1.Numerical optimization methods in R 1.1 Root-finding in one dimension 假设f:R→R为一连续函数,则方程f(x)=c的根x,满足g(x)=f(x)-c=0.为此我们只考虑f(x)=0形式的方程求根问题。使用数值方法求此方程的根,可以选择是使用f的一阶导数还是不使用导数的方法。Newton方法或者Newton-Raphson方法是使用一阶导数的方法,而Brent的最小化算法是不使用导数的一种求根方法。 1.1.1 Bisection method(二分法) 如果f(x)在区间[a,b]上连续,以及f(a)和f(b)有相反的符号,则由中值定理知道存在acb,使得f(c)=0。二分法通过在每次迭代中简单的判断f(x)在中点x=(a+b)/2处的符号来寻求方程的根。如果f(a)和f(x)有相反的符号则区间就被[a,x]代替,否则就被[x,b]代替。在每次迭代中,包含根的区间长度减少一半。即 下面我们使用二分法求此方程的一个数值解。我们首先要找到一个区间,比如(0,5n),使得函数 在区间两端有着不同的符号。然后即可使用二分法。 例1 解方程 其中a为常数,n2为一整数。显然,方程的解为 程序: a - 0.5 n - 20 cat(true roots,-a/(n-1)-sqrt(n-2-a^2+(a/(n-1))^2), + -a/(n-1)+sqrt(n-2-a^2+(a/(n-1))^2),\n) bisec-function(b0,b1){ f - function(y, a, n) { a^2 + y^2 + 2*a*y/(n-1) - (n-2) } it - 0 eps - .Machine$double.eps^0.25 r - seq(b0, b1, length=3) y - c(f(r[1], a, n), f(r[2], a, n), f(r[3], a, n)) if (y[1] * y[3] 0) stop(f does not have opposite sign at endpoints) while(it 1000 abs(y[2]) eps) { it - it + 1 if (y[1]*y[2] 0) { r[3] - r[2] y[3] - y[2] } else { r[1] - r[2] y[1] - y[2] } r[2] - (r[1] + r[3]) / 2 y[2] - f(r[2], a=a, n=n) print(c(r[1], y[1], y[3]-y[2])) } } bisec(0,5*n) 运行结果: true roots -4.239473 4.186841 1.1.2 Brent’s method 二分法是一种特殊的括入根算法。Brent通过逆二次插值方法将括入根方法和二分法结合起来。其使用y的二次函数来拟合x。如果三个点为(a,f(a)),(b,f(b)),(c,f(c)),其中b为当前最好的估计,则通过Lagrange多项式插值方法(y=0)对方程的根进行估计, 在R中,函数uniroot就是应用Brent方法求解一元方程的数值根。 例2 应用uniroot求例1中的方程的根。 程序: a - 0.5 n - 20 out - uniroot(function(y) { a^2 + y^2 + 2*a*y/(n-1) - (n-2) }, lower = 0, upper = n*5) unlist(out)

文档评论(0)

wuyoujun92 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档