constrOptim:使用自适应屏障算法最小化受线性不等式约束的函数
constrOptim: Minimise a function subject to linear inequality constraints using an adaptive barrier algorithm
我正在尝试使用 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
和来自 constrOptim
的约束向量 ci
.
根据文档 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)
我正在尝试使用 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
和来自 constrOptim
的约束向量 ci
.
根据文档 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)