首页 > 解决方案 > 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和约束向量ciconstrOptim

标签: roptimizationconstraintsnonlinear-optimization

解决方案


从文档中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)

推荐阅读