我正在探索使用optimx()或optimx()进行(非常)非线性优化。本质上,我编写了一个函数,将其作为输入:
1)具有特定列名/类型的data.frame
2)长度为1的数字向量
3)长度大于1的数字向量
然后函数接受输入,执行一些计算和逻辑测试,然后如果逻辑测试为假,则返回一个非常负值,或者如果逻辑测试为真,则返回输入#2的值。目标是最大化#2,而不将逻辑测试触发为FALSE。
我尝试在下面的代码中使用optimx() ( par值对应于上面提到的输入):
optimout <-
optimx:::optimx(
par = c(inputDF, 5000, rep(99,20)),
fn = MyFunction,
maximize = TRUE)
我收到以下错误消息:
Optimx.check中的错误(par,optcfg$ufn,optcfg$ugr,optcfg$uhess,较低,:无法在初始参数下计算函数)
拉尔夫
发布于 2018-01-28 14:32:42
如果我正确地理解了您的问题,并且您只想最大化基于第二个输入参数的函数(长度为1的数字向量),则需要不同地调用optimx
,考虑到data.frame可能是一些给定的输入数据,这将是有意义的。
因此,请尝试执行以下操作:
optimout <- optimx(par = c(5000), fn = MyFunction, par1=inputDF,
par2=rep(99,20), maximize = TRUE)
其中par1和par2是函数的输入变量的名称。本质上,您为optimx
提供了输入参数par1 & par2的初始值,这些参数随后没有被优化。因此,仅通过更改第二个参数(长度为1的数字向量)的值来搜索最大值,您选择从5000开始。
https://stackoverflow.com/questions/44268275
复制相似问题