stats | 介绍三个与数学规划函数
本篇介绍stats
包中三个与数学规划相关的函数,分别如下:
optimize:解决非限制的单变量数学规划问题;
optim:解决非限制的多变量数学规划问题;
constrOptim:解决限制性的线性规划问题。
1 optimize()
函数
该函数的语法结构如下:
optimize(f, interval, ...,lower = min(interval),upper = max(interval),maximum = FALSE,tol = .Machine$double.eps^0.25)
f:目标函数;其中第一个参数为优化参数;
interval:变量的取值区间;
...:目标函数
f
的其他参数;lower、upper:取值区间的下限和上限;
maximum:优化方向;逻辑变量,TRUE表示求最大值,FALSE表示求最小值(默认项);
tol:误差允许范围。
例如,对于函数,其中。
(1),求的最小值
fun1 = function(x,a) (x-a)^2
optimize(fun1, interval = c(-1,1),a = -2)## $minimum
## [1] -0.999959
##
## $objective
## [1] 1.000082
优化结果表明:当取-0.999959时,目标函数取得最小值1.000082(存在误差)。
(2) ,求的最大值
optimize(fun1, c(-1,1),a = 0.7,maximum = T)## $maximum
## [1] -0.999959
##
## $objective
## [1] 2.889861
2 optim()
函数
该函数的语法结构如下:
optim(par, fn, gr = NULL, ...,method = c("Nelder-Mead", "BFGS", "CG","L-BFGS-B", "SANN", "Brent"),lower = -Inf, upper = Inf,control = list(), hessian = FALSE)
par:优化参数的初始值;
fn:目标函数,其中第一个参数为优化参数,一般为向量形式;
optim()
函数默认求最小值,若要求最大值,需将control
参数的元素fnscale
定义为负数。
例如,,其中、为优化参数,为已知参数。在定义目标函数时,可以使用c(x,y)
作为目标函数的第一个参数。
fun2 = function(x0,a) {x = x0[1]; y = x0[2](x^2 - y)^2 + (x - a)^2
}
(1)当时,求函数的最小值
optim(c(0.5,0.5), fn = fun2,a = 1)## $par
## [1] 0.9999655 1.0000206
##
## $value
## [1] 9.223486e-09
##
## $counts
## function gradient
## 65 NA
##
## $convergence
## [1] 0
##
## $message
## NULL
(2)当时,求函数在,内的最大值
optim(c(0.5,0.5), fn = fun2,lower = c(-0.5, 0.2), upper = 0.5,a = 1, control = list(fnscale = -1))## $par
## [1] -0.5 0.5
##
## $value
## [1] 2.3125
##
## $counts
## function gradient
## 2 2
##
## $convergence
## [1] 0
##
## $message
## [1] "CONVERGENCE: NORM OF PROJECTED GRADIENT <= PGTOL"
3 constrOptim()
函数
该函数的语法结构如下:
constrOptim(theta, f, grad,ui, ci, mu = 1e-04,control = list(),method = if(is.null(grad)) "Nelder-Mead" else "BFGS",outer.iterations = 100,outer.eps = 1e-05, ...,hessian = FALSE)
theta:优化参数的起始值;
f:目标函数;
ui、ci:限制条件;见案例。
例如,有如下线性规划问题:
先将限制条件统一改写成大于号的形式,如改写成,则ui
即为大于号左侧的系数矩阵,ci
为大于号右侧的常数向量。
fun3 <- function(x) {x1 = x[1]; x2 = x[2]2*x1+3*x2
}
constrOptim(theta = c(1,1),f = fun3, grad = NULL,ui = rbind(c(-1,-2), c(-4,0),c(0,-4), c(1,0), c(0,1)),ci = c(-8, -16, -12, 0, 0),control = list(fnscale = -1))## $par
## [1] 3.999998 2.000001
##
## $value
## [1] 14
##
## $counts
## function gradient
## 298 NA
##
## $convergence
## [1] 0
##
## $message
## NULL
##
## $outer.iterations
## [1] 3
##
## $barrier.value
## [1] 0.003847654
stats | 介绍三个与数学规划函数相关推荐
- Horseshoe prior的R package介绍:HS.normal.mean函数
Horseshoe prior的R package介绍:HS.normal.mean函数 最近做的一些事情需要和Horseshoe prior对比,所以一直在看Horseshoe的一些资料.上周做了一 ...
- OpenCV学习笔记(三十六)——Kalman滤波做运动目标跟踪 OpenCV学习笔记(三十七)——实用函数、系统函数、宏core OpenCV学习笔记(三十八)——显示当前FPS OpenC
OpenCV学习笔记(三十六)--Kalman滤波做运动目标跟踪 kalman滤波大家都很熟悉,其基本思想就是先不考虑输入信号和观测噪声的影响,得到状态变量和输出信号的估计值,再用输出信号的估计误差加 ...
- 介绍了如何取成员函数的地址以及调用该地址
摘要:介绍了如何取成员函数的地址以及调用该地址. 关键字:C++成员函数 this指针 调用约定 一.成员函数指针的用法 在C++中,成员函数的指针是个比较特殊的东西.对普通的函数指针来说,可以 ...
- {Django基础九之中间件} 一 前戏 二 中间件介绍 三 自定义中间件 四 中间件的执行流程 五 中间件版登陆认证...
Django基础九之中间件 本节目录 一 前戏 二 中间件介绍 三 自定义中间件 四 中间件的执行流程 五 中间件版登陆认证 六 xxx 七 xxx 八 xxx 一 前戏 我们在前面的课程中已经学会了 ...
- C语言实现OOP——轻量级的面向对象 C 语言编程框架 LW_OOPC 介绍(三)
文章目录 C 语言编程框架 LW_OOPC 介绍(三) 方案的可扩展性如何? LW_OOPC最佳实践 LW_OOPC的优点: LW_OOPC的缺点: 总结: 幕后花絮: 参考资料: C 语言编程框架 ...
- NoSQL介绍(三)
NoSQL介绍(三) Redis数据类型-string string为最简单的类型,与Memcached一样的类型,一个key对应一个value,其支持的操作与Memcached的操作类似,它的功能更 ...
- 三种睡眠时间函数的区别:linux 的sleep()、usleep()、nanosleep()函数
三种睡眠时间函数的区别:linux 的sleep().usleep().nanosleep()函数 (1)sleep()-------以秒为单位 unsigned int sleep(unsigned ...
- 云桌面VOI计算存储在服务器端,介绍三种云桌面:VDI、IDV、VOI
介绍三种云桌面:VDI.IDV.VOI 云桌面应场景而变,没有一种云桌面可以适用所有场景.市场上的云桌面一般分为VDI.IDV和VOI三种架构.下面我们就来看下,它们各有哪些优劣,又分别适用哪些场景. ...
- python中len用法_简单介绍Python中的len()函数的使用
简单介绍Python中的len()函数的使用 函数:len() 1:作用:返回字符串.列表.字典.元组等长度 2:语法:len(str) 3:参数:str:要计算的字符串.列表.字典.元组等 4:返回 ...
最新文章
- 启动targetcli时遭遇ImportError: cannot import name ALUATargetPortGroup故障
- Google Chrome —— 离线安装/安装包下载解决方案
- 使用线程池有以下几个目的
- java weblogic反序列化_Weblogic JAVA反序列化漏洞攻防搭建(3)
- 嵌入式电路设计(工具准备)
- Vuforia开发完全指南
- 重定向程序中的系统输入输出
- Java的throws Exception
- ppt变成了图片不能编辑文字怎么办_解决PPT字体缺失这个问题,这个技巧你一定要掌握...
- python朋友圈头像_Python之微信-微信好友头像合成
- 【知识图谱】OpenKG 发布多个新冠病毒相关开放知识图谱
- 判断矩形相似C语言,C++判断矩形相交的方法
- 如何认识宇宙场存在的六种基本作用力
- 如何修改wamp5的端口号,默认页。
- 微大夫感冒舒缓仪亮相“2018健康陕西发展大会”回顾
- Python eval() 函数看这里就够了
- 行列式的3种计算方法技巧和一点注意
- JAVA转义字符详解
- d3d纹理过滤器配置
- 其实性格决定命运,细节决定成败,知识改变命运,学习成就未来,观念决定行动,思维决定出路,态度决定一切
热门文章
- Linux操作系统各版本ISO镜像下载(包括oracle linux\redhat\centos\u
- Java基础学习总结(79)——Java本地接口JNI详解
- anaconda哪个版本是 python3.6_windows10(64位)Anaconda3+Python3.6搭建Tensorflow(cpu版本)及keras...
- codesmith 模板 html5,js-template-art【二】语法(示例代码)
- 兰州中考计算机考试,宜昌、兰州发布中考新政新消息:增加口语考试,采取人机对话形式...
- GitChat · 前端 | Vue 组件库实践和设计
- tornado异步客户端(Future)
- Hadoop入门进阶步步高(四)-测试Hadoop
- cratedb导入json文件
- VueJS样式绑定:v-bind