【发布时间】:2023-03-19 17:45:01
【问题描述】:
我正在尝试使用 nloptr 包来找到最大化非线性函数 F=b0+b1*x+b2*x^2+b3*x^3 的最佳 x 值。
我将以下代码与 apply() 函数一起使用,以便循环遍历回归数据帧的每一行,并为每一行获取函数的最佳值:
F <- function(x,b0,b1,b2,b3){return(b0+b1*x+b2*x^2+b3*x^3)}
Optimal <- apply(Regression,1,function(i){
nloptr( x0 <- c(0)
,eval_f <- F
,eval_g_ineq = NULL
,eval_g_eq = NULL
,eval_grad_f = NULL
,eval_jac_g_ineq = NULL
,eval_jac_g_eq = NULL
,lb <- c(-Inf)
,ub <- c(Inf)
,opts <- list( "algorithm" = "NLOPT_LD_AUGLAG",
"xtol_rel" = 1.0e-7,
"maxeval" = 1000)
,b0=Regression$b0[i]
,b1=Regression$b1[i]
,b2=Regression$b2[i]
,b3=Regression$b3[i])})
代码为 b0,b1,b2,b3 值调用的回归数据帧具有以下格式:
Tag bo b1 b2 b3
A 5 6 1 3
B 8 8 7 3
C 9 2 7 5
D 1 6 1 3
E 3 6 2 1
.. .. .. .. ..
运行脚本时出现以下错误:
Error in is.nloptr(ret) : objective in x0 returns NA
In addition: Warning message:
In if (is.na(f0)) { :
【问题讨论】:
标签: r optimization nonlinear-optimization