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

2023-10-21 20:59

本文主要是介绍待完善 | R语言 | 优化函数 | optimize,optimise,optim,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

做一元的优化:只有要给参数
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是计算的精度设置。

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

该区域用于描述optimize和optimise函数的核心优化思想,待下次完善。
关键点:以供下次注意理解点。

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.3333333$objective
[1]0

极小值时,x取值为0.3333333 ,函数的值为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函数,对于多个参数的多元优化,设置为theta一个参数,取theta1 = theta[1],theta2 = theta[2],…依次类推。

函数,有两个

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 functionx1 <- 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.825241e-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”

这篇关于待完善 | R语言 | 优化函数 | optimize,optimise,optim的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/256952

相关文章

Python中help()和dir()函数的使用

《Python中help()和dir()函数的使用》我们经常需要查看某个对象(如模块、类、函数等)的属性和方法,Python提供了两个内置函数help()和dir(),它们可以帮助我们快速了解代... 目录1. 引言2. help() 函数2.1 作用2.2 使用方法2.3 示例(1) 查看内置函数的帮助(

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

Go语言中泄漏缓冲区的问题解决

《Go语言中泄漏缓冲区的问题解决》缓冲区是一种常见的数据结构,常被用于在不同的并发单元之间传递数据,然而,若缓冲区使用不当,就可能引发泄漏缓冲区问题,本文就来介绍一下问题的解决,感兴趣的可以了解一下... 目录引言泄漏缓冲区的基本概念代码示例:泄漏缓冲区的产生项目场景:Web 服务器中的请求缓冲场景描述代码

Go语言如何判断两张图片的相似度

《Go语言如何判断两张图片的相似度》这篇文章主要为大家详细介绍了Go语言如何中实现判断两张图片的相似度的两种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 在介绍技术细节前,我们先来看看图片对比在哪些场景下可以用得到:图片去重:自动删除重复图片,为存储空间"瘦身"。想象你是一个

Go语言中Recover机制的使用

《Go语言中Recover机制的使用》Go语言的recover机制通过defer函数捕获panic,实现异常恢复与程序稳定性,具有一定的参考价值,感兴趣的可以了解一下... 目录引言Recover 的基本概念基本代码示例简单的 Recover 示例嵌套函数中的 Recover项目场景中的应用Web 服务器中

Python中bisect_left 函数实现高效插入与有序列表管理

《Python中bisect_left函数实现高效插入与有序列表管理》Python的bisect_left函数通过二分查找高效定位有序列表插入位置,与bisect_right的区别在于处理重复元素时... 目录一、bisect_left 基本介绍1.1 函数定义1.2 核心功能二、bisect_left 与

java中BigDecimal里面的subtract函数介绍及实现方法

《java中BigDecimal里面的subtract函数介绍及实现方法》在Java中实现减法操作需要根据数据类型选择不同方法,主要分为数值型减法和字符串减法两种场景,本文给大家介绍java中BigD... 目录Java中BigDecimal里面的subtract函数的意思?一、数值型减法(高精度计算)1.

C++/类与对象/默认成员函数@构造函数的用法

《C++/类与对象/默认成员函数@构造函数的用法》:本文主要介绍C++/类与对象/默认成员函数@构造函数的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录名词概念默认成员函数构造函数概念函数特征显示构造函数隐式构造函数总结名词概念默认构造函数:不用传参就可以

C++类和对象之默认成员函数的使用解读

《C++类和对象之默认成员函数的使用解读》:本文主要介绍C++类和对象之默认成员函数的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、默认成员函数有哪些二、各默认成员函数详解默认构造函数析构函数拷贝构造函数拷贝赋值运算符三、默认成员函数的注意事项总结一

Python函数返回多个值的多种方法小结

《Python函数返回多个值的多种方法小结》在Python中,函数通常用于封装一段代码,使其可以重复调用,有时,我们希望一个函数能够返回多个值,Python提供了几种不同的方法来实现这一点,需要的朋友... 目录一、使用元组(Tuple):二、使用列表(list)三、使用字典(Dictionary)四、 使