待完善 - R语言 - 优化函数 - optimize,optimise,optim

待完善 - R语言 - 优化函数 - optimize,optimise,optimR 语言中 常用的优化函数知多少 这次将介绍 optimize optimise optim 这三个做优化的函数 也是目前最常用到的优化函数 做一元的优化 只有要给参数 optimize optimise 此外 optim 也可以做一元优化 前面两个较为常用些 这两个函数的用法是相同的

大家好,我是讯享网,很高兴认识大家。

R语言中,常用的优化函数知多少,这次将介绍optimize,optimise,optim这三个做优化的函数,也是目前最常用到的优化函数。

这两个函数的用法是相同的,先给定函数,指定参数的取值函数,再从取值范围中优化,对于凸函数,能够取到全局最优解,对于非凸函数,可能取到局部最优解。

函数

optimize(f, interval, ..., lower = min(interval), upper = max(interval), maximum = FALSE, tol = .Machine$double.eps^0.25) optimise(f, interval, ..., lower = min(interval), upper = max(interval), maximum = FALSE, tol = .Machine$double.eps^0.25)

讯享网

这里,f表示函数,interval是取值的区间,lower是区间下界,upper是区间上界,maximum用于指定是最大优化问题还是最小优化问题,tol是计算的精度设置。

=====================

讯享网The first evaluation of f is always at x_1 = a + (1-φ)(b-a) where (a,b) = (lower, upper) and phi = (sqrt(5) - 1)/2 = 0.61803.. is the golden section ratio. Almost always, the second evaluation is at x_2 = a + phi(b-a). Note that a local minimum inside [x_1,x_2] will be found as solution, even when f is constant in there, see the last example.

=====================

f <- function (x) (x - 1/3)^2 plot(f,xlim = c(0,1))

这里写图片描述
讯享网

讯享网xmin <- optimize(f, c(0, 1), tol = 0.0001) xmin

结果

$minimum [1] 0. $objective [1]0

极小值时,x取值为0. ,函数的值为0

第二种,非凸问题

讯享网 f=function(x) x*sin(10*pi*x)+1 curve(f,xlim=c(-2,1))

这里写图片描述

从图来看,是波动的,存在好多极小值或极大值。

optimize(f,c(-2,1),tol=0.0001,maximum=T)

结果

讯享网$maximum [1] -1.050968 $objective [1] 2.050482 

当函数取最大值时,它对应的x取值为-1.050968,显然在-2到1的范围内,非**的极大值。此时,对应的目标函数为2.050482.

函数,有两个

optim(par, fn, gr = NULL, ..., method = c("Nelder-Mead", "BFGS", "CG", "L-BFGS-B", "SANN", "Brent"), lower = -Inf, upper = Inf, control = list(), hessian = FALSE) optimHess(par, fn, gr = NULL, ..., control = list())

对于多元的,它的求解难度较大,涉及到的优化算法很多,对于不同类型的算法,其适用范围也有所不一样。

这里暂时给出demo,下次再来完善。

讯享网require(graphics) fr <- function(x) { Rosenbrock Banana function x1 <- x[1] x2 <- x[2] 100 * (x2 - x1 * x1)^2 + (1 - x1)^2 }
optim(c(-1.2,1), fr)

初始值为-1.2和1

讯享网$par [1] 1.000260 1.000506 $value [1] 8.e-08 $counts function gradient 195 NA $convergence [1] 0 $message NULL

计算得到的参数**结果为1.000260和1.000506。

注意:需要完善的有

  • optimize
  • optimise
  • optim
  • optimHess
  • 优化算法的适用范围:”Nelder-Mead”,”BFGS”,”CG”,”L-BFGS-B”,”SANN”,”Brent”
小讯
上一篇 2025-03-17 22:31
下一篇 2025-01-11 22:32

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/51243.html