首页 > 解决方案 > 如何为 optimx 函数中的参数下限定义不等式约束(> 0)

问题描述

我正在尝试在 R 中使用 optimx 函数来最小化具有四个参数的函数。所有参数都需要大于 0 (> 0)。该函数实际上是数据集残差的总和。我需要把什么作为lower参数来定义这样的约束(即par>0)?

    dat <- data.frame(x1=c(0.000163748 , 0.000141609,
                0.000202383 , 0.000199971,
                0.000261698 , 0.000265203,
                0.000409705 , 0.00042005,
                0.001236108 , 0.001330472),
              x2=c(0.000144412 , 0.000142153,
                0.000222341 , 0.00022807,
                0.00031753 , 0.000433908,
                0.000524367 , 0.000542441,
                0.002087011 , 0.002026212),
              x3=c(0.000333708 , 0.000308,
                0.000395904 , 0.000436969,
                0.000657612 , 0.000674400,
                0.001039139 , 0.001308073,
                0.005091189 , 0.005299810),
              x4=c(0.000245495 , 0.000212988,
                0.000262344 , 0.000268059,
                0.000442362 , 0.000440593,
                0.000748795 , 0.000786637,
                0.003249222 , 0.003182184),
              y=c(1.273497303 , 1.273861357,
               1.595002072 , 1.594726213,
               2.10682323 , 2.10583998,
               3.144250458 , 3.140591138,
               5.963073073 , 5.959330577))
min.RSS <- function(data, par) {
  with(data, sum((((956.1 * (x1 ^ 0.79) / par[1]) ^ (1/0.71) +
                  (72.9 * (x2 ^ 0.67) / par[2]) ^ (1/0.71) +
                  (103 * (x3 ^ 0.66) / par[3]) ^ (1/0.71) +
                  (289 * (x4 ^ 0.72) / par[4]) ^ (1/0.71)) ^ 0.71- y)^2))
}

library(optimx)    
result1 <- optimx (par=c(10 , 10 , 5 , 5),
                     fn = min.RSS,
                     method = "L-BFGS-B",
                     data = dat)

标签: roptimizationconstraintsnonlinear-optimizationinequality

解决方案


推荐阅读