optim()多个参数类型

时间:2017-05-30 17:19:14

标签: r optimization

我正在探索使用R optim()或optimx()进行(非常)非线性优化。基本上我写了一个函数,它作为输入:

1)具有特定列名称/类型的data.frame 2)长度为1的数字向量 3)长度> 1的数值向量; 1个

然后,该函数接受输入,执行一些计算和逻辑测试,如果逻辑测试为FALSE,则返回非常负值;如果逻辑测试为TRUE,则返回输入#2的值。目标是在不将逻辑测试跳至FALSE的情况下最大化#2。

我尝试使用带有以下代码的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,lower,:         无法在初始参数下评估函数

拉​​尔夫

1 个答案:

答案 0 :(得分:0)

如果我正确理解你的问题并且你只想根据第二个输入参数(长度为1的数字向量)最大化函数,你需要以不同的方式调用optimx,这对于数据是有意义的.frame可能是一些给定的输入数据。

因此,请尝试执行以下操作:

optimout <- optimx(par = c(5000), fn = MyFunction, par1=inputDF,
par2=rep(99,20), maximize = TRUE)

其中par1和par2是函数的输入变量的名称。基本上,您为optimx提供了输入参数par1&amp;的初始值。 par2,然后没有被优化。因此,仅通过更改第二个参数(长度为1的数字向量)的值来搜索最大值,您选择从5000开始。