r - constrOptim:使用自适应障碍算法最小化受线性不等式约束的函数
问题描述
我正在尝试使用最小化损失函数constrOptim
。我的约束是 2 θ κ ≥ σ² 形式的 Feller 条件,它对应于2*x1*x2 ≥ x4^2
例如x4^2- 2*x1*x2
我的代码。我的起始值是x0 <- c(0.05, -0.85, 3.00, 0.32)
,损失函数的形式是 1/N * sum(w_i * (market_price - model_price)^2) 并且简称为loss_function
. 包含四个未知参数,我必须使用优化来校准它们,model_price
但我不太明白如何设置约束矩阵ui
和约束向量ci
。constrOptim
解决方案
从文档中constrOptim
只接受线性不等式约束,您的约束是非线性的,所以这不起作用。NlcOptim
这是使用包解决此问题的一种方法。
library(NlcOptim)
w_i=runif(4)
model_price=rnorm(4)
x0=c(0.05,-0.85,3.00,0.32)
objfun=function(x){
sum(w_i*(x-model_price)^2)/length(x)
}
confun=function(x){
f=NULL
f=rbind(f,x[4]^2-2*x[1]*x[2])
list(ceq=NULL,c=f)
}
solnl(x0,objfun=objfun,confun=confun)
推荐阅读
- python - 如何在熊猫替换功能中使用正则表达式捕获组
- c# - 映射器的结果为NULL?如何将我的 api 请求映射到 dto?
- python - Tkinter:注册两次左键单击?
- android - 如何在 Android SQLite 中插入多行
- excel - 第一行和最后一行,然后是从年初到年底的值
- jsf - PrimeFaces 入门项目
- java - 如何使用 java-8 以 UTC 秒为单位转换时间和以秒为单位的时区偏移量?
- php - 插入数据库不成功,没有重定向到页面 php mysql
- vega-lite - VegaLite 中用于标记的线条粗细:规则
- javascript - React JSX 在元素周围呈现双引号