【问题标题】:Restrictions in a optimization using R使用 R 进行优化的限制
【发布时间】:2019-07-22 17:57:01
【问题描述】:

继续here提出的问题,我想在优化中添加一个限制:

a <- c(52.67, 46.80, 41.74, 40.45)
b <- c(1.726219351, 1.842421805, 1.790801758, 1.449997494)

rsq <- function(c) {
  x <- log(a)
  y <- log((c*(a/b))-1)
  summary(lm(y ~ x))$r.squared
}
optimise(rsq, maximum = TRUE, interval=c(1, 1000))

优化的间隔是 1 到 1000,但是我希望间隔从哪里开始

(c*(a/b)) > 0

为了避免log出现问题

【问题讨论】:

    标签: r function optimization conditional-statements


    【解决方案1】:

    如果 log 参数为负,则返回 -Inf。那么就没有必要对域进行操作了。

    rsq <- function(c) {
      x <- log(a)
      tmp <- (c*(a/b))-1
      if (any(tmp < 0)) -Inf else summary(lm(log(tmp) ~ x))$r.squared
    }
    
    optimise(rsq, maximum = TRUE, interval=c(1, 1000))
    

    给予:

    $maximum
    [1] 1.082353
    
    $objective
    [1] 0.8093781
    

    更新

    固定。

    【讨论】:

      猜你喜欢
      • 2018-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-31
      • 1970-01-01
      • 2022-09-26
      相关资源
      最近更新 更多