R solnp(包Rsolnp)不遵守上界

R solnp(包Rsolnp)不遵守上界,r,optimization,R,Optimization,使用solnp()的优化不符合参数UB=1指定的上限。这可能是一个浮点问题,但如果我的目标乐趣涉及到不平等性检查,我想知道如何解决这个问题 问题:我有一个复杂的目标函数,它本质上包含一个错误检查。我使用solbp进行优化。我无法删除错误检查parm>bound。我可以做些什么来运行优化 编辑:下面的示例经过简化以显示错误。我无法删除始终作为目标函数一部分的不等式检查(此处minimizeit())。但是,我可以为函数的错误检查添加一个容差 工作示例 library(Rsolnp) set.see

使用
solnp()
的优化不符合参数
UB=1
指定的上限。这可能是一个浮点问题,但如果我的目标乐趣涉及到不平等性检查,我想知道如何解决这个问题

问题:我有一个复杂的目标函数,它本质上包含一个错误检查。我使用solbp进行优化。我无法删除错误检查
parm>bound
。我可以做些什么来运行优化

编辑:下面的示例经过简化以显示错误。我无法删除始终作为目标函数一部分的不等式检查(此处
minimizeit()
)。但是,我可以为函数的错误检查添加一个容差

工作示例

library(Rsolnp)
set.seed(123)

x <- 2 * 1:10 + runif(10) / 10 # criterion

# Objective function
minimizeit <- function(parm, x) {
  if (parm > 1) { # checks if the parameter is <= 1
    stop("Argument parm is ", parm)
  }
  return(mean( (parm * 1:10 - x)^2 ))
}

# Run the optimization
solnp(0.5, minimizeit, LB = 0, UB = 1, x = x)
# the UB=1 means an upper bound of 1 on the parameter space
Rsolnp手册规定,control
control=list(rho=)
中的
rho
参数控制边界尊重程度。但是设置rho=10仍然会导致相同的错误

通常使用
all.equal()
解决数值问题的方法不适用于不等式

会话信息

sessionInfo()
# R version 3.5.0 (2018-04-23)
# Platform: x86_64-w64-mingw32/x64 (64-bit)
# Running under: Windows 10 x64 (build 16299)

all.equal
在测试 平等。如果
abs(x-y)
,则
x
y
大致相等。所以你可以直接测试
parm
sessionInfo()
# R version 3.5.0 (2018-04-23)
# Platform: x86_64-w64-mingw32/x64 (64-bit)
# Running under: Windows 10 x64 (build 16299)