R: fn(unlist(x), ...) 错误:未使用的参数 (unlist(x))
R: Error in fn(unlist(x), ...) : unused argument (unlist(x))
我正在使用 R 中的“mlrMBO”库 (https://cran.r-project.org/web/packages/mlrMBO/index.html)。我正在尝试学习如何 运行 我定义的某个任意函数的优化算法:
#Load library
library(mlrMBO)
#define objective function
obj.fn = makeMultiObjectiveFunction(
name = "My test function",
fn = function(x1, x2, x3, x4) {
var_1 <- sin(x1 + x2)
var_2 <- cos(x1 - x2)
var_3 <- x1 + x4
var_4 <- x3 + x4 -7
goal_1 = sum(var_1 + var_2 + var_3 + var_4)
goal_2 = var_1 + var_2 - var_3 + var_4
goal_3 = var_1 + var_2 - var_3 + 2*var_4
return(c(goal_1, goal_2, goal_3))
},
#define acceptable ranges
par.set = makeParamSet(
makeNumericParam("x1", lower = 20, upper = 40),
makeNumericParam("x2", lower = 30, upper = 45),
makeNumericParam("x3", lower = 10, upper = 20),
makeNumericParam("x4", lower = 10, upper = 50),
#define constraints
forbidden = expression(x2 >x1 | x3 > x4)
),
minimize=TRUE
)
#create control gird
control=makeMBOControl(propose.points=1, final.method="best.predicted", final.evals=10)
control=setMBOControlTermination(control, iters=10)
control=setMBOControlInfill(control, crit=makeMBOInfillCritEI())
#perform optimization
lrn=makeMBOLearner(control, obj.fun)
此代码returns出现以下错误:
Error in fn(unlist(x), ...) : unused argument (unlist(x))
有谁知道为什么会产生这个错误?我试图查看各种参考资料 material(例如 https://cran.r-project.org/web/packages/mlrMBO/mlrMBO.pdf and https://cran.r-project.org/web/packages/mlrMBO/vignettes/mlrMBO.html),但到目前为止我无法理解为什么会产生此错误。
有人可以告诉我我做错了什么吗?
谢谢
您需要添加一项设置并调整另一项设置:
obj.fn = makeMultiObjectiveFunction(
name = "My test function",
fn = function(x1, x2, x3, x4) {
var_1 <- sin(x1 + x2)
var_2 <- cos(x1 - x2)
var_3 <- x1 + x4
var_4 <- x3 + x4 -7
goal_1 = sum(var_1 + var_2 + var_3 + var_4)
goal_2 = var_1 + var_2 - var_3 + var_4
goal_3 = var_1 + var_2 - var_3 + 2*var_4
return(c(goal_1, goal_2, goal_3))
},
#define acceptable ranges
par.set = makeParamSet(
makeNumericParam("x1", lower = 20, upper = 40),
makeNumericParam("x2", lower = 30, upper = 45),
makeNumericParam("x3", lower = 10, upper = 20),
makeNumericParam("x4", lower = 10, upper = 50),
#define constraints
forbidden = expression(x2 >x1 | x3 > x4)
),
minimize=rep(TRUE, 3), #corrected
has.simple.signature = FALSE #added
)
我正在使用 R 中的“mlrMBO”库 (https://cran.r-project.org/web/packages/mlrMBO/index.html)。我正在尝试学习如何 运行 我定义的某个任意函数的优化算法:
#Load library
library(mlrMBO)
#define objective function
obj.fn = makeMultiObjectiveFunction(
name = "My test function",
fn = function(x1, x2, x3, x4) {
var_1 <- sin(x1 + x2)
var_2 <- cos(x1 - x2)
var_3 <- x1 + x4
var_4 <- x3 + x4 -7
goal_1 = sum(var_1 + var_2 + var_3 + var_4)
goal_2 = var_1 + var_2 - var_3 + var_4
goal_3 = var_1 + var_2 - var_3 + 2*var_4
return(c(goal_1, goal_2, goal_3))
},
#define acceptable ranges
par.set = makeParamSet(
makeNumericParam("x1", lower = 20, upper = 40),
makeNumericParam("x2", lower = 30, upper = 45),
makeNumericParam("x3", lower = 10, upper = 20),
makeNumericParam("x4", lower = 10, upper = 50),
#define constraints
forbidden = expression(x2 >x1 | x3 > x4)
),
minimize=TRUE
)
#create control gird
control=makeMBOControl(propose.points=1, final.method="best.predicted", final.evals=10)
control=setMBOControlTermination(control, iters=10)
control=setMBOControlInfill(control, crit=makeMBOInfillCritEI())
#perform optimization
lrn=makeMBOLearner(control, obj.fun)
此代码returns出现以下错误:
Error in fn(unlist(x), ...) : unused argument (unlist(x))
有谁知道为什么会产生这个错误?我试图查看各种参考资料 material(例如 https://cran.r-project.org/web/packages/mlrMBO/mlrMBO.pdf and https://cran.r-project.org/web/packages/mlrMBO/vignettes/mlrMBO.html),但到目前为止我无法理解为什么会产生此错误。
有人可以告诉我我做错了什么吗?
谢谢
您需要添加一项设置并调整另一项设置:
obj.fn = makeMultiObjectiveFunction(
name = "My test function",
fn = function(x1, x2, x3, x4) {
var_1 <- sin(x1 + x2)
var_2 <- cos(x1 - x2)
var_3 <- x1 + x4
var_4 <- x3 + x4 -7
goal_1 = sum(var_1 + var_2 + var_3 + var_4)
goal_2 = var_1 + var_2 - var_3 + var_4
goal_3 = var_1 + var_2 - var_3 + 2*var_4
return(c(goal_1, goal_2, goal_3))
},
#define acceptable ranges
par.set = makeParamSet(
makeNumericParam("x1", lower = 20, upper = 40),
makeNumericParam("x2", lower = 30, upper = 45),
makeNumericParam("x3", lower = 10, upper = 20),
makeNumericParam("x4", lower = 10, upper = 50),
#define constraints
forbidden = expression(x2 >x1 | x3 > x4)
),
minimize=rep(TRUE, 3), #corrected
has.simple.signature = FALSE #added
)