R中的优化工具可以找到最小化输出值的函数输入参数?

时间:2015-05-28 09:22:24

标签: r optimization

我希望在R中找到一个优化工具,它允许我确定输入参数的值(例如,介于0.001和0.1之间的特定值),这会导致我的函数产生所需的输出值。

我的函数接受一个输入参数并计算一个值。我希望此输出值与预定数字完全匹配,因此函数输出这两个值之间的差值的绝对值;当它们相同时,函数的输出为零。

我尝试了optimize(),但似乎设置为最小化输入参数,而不是输出值。我也尝试了uniroot(),但它产生了错误f() values at end points not of opposite sign,这表明它不喜欢增加/减少输入参数会将输出值降低到某一点的事实,但超出了这一点然后再次增加它。

如果我遗漏了一些明显的东西,我会道歉 - 我对优化功能完全不熟悉。

1 个答案:

答案 0 :(得分:2)

确实你错过了一些明显的东西:-)你应该/可以如何制定你的问题非常明显。

假设必须等于所需输出值的函数为f。 定义满足

的函数g
g <- function(x) f(x) - output_value

现在,您可以使用uniroot查找g的零。但您必须提供满足uniroot要求的端点。即一个端点的g值必须为正值,另一端点的值g必须为负值(或者相反)。

示例:

f <- function(x) x - 10
g <- function(x) f(x) - 8

然后

uniroot(g,c(0,20))

会做你想要的但是

uniroot(g,c(0,2))

将发出错误消息values at end points not of opposite sign

您也可以使用优化功能,但是您希望最小化函数g。为了让你直截了当:optimize 最小化输入参数。彻底阅读帮助。