【问题标题】:Using optim in R, how would I maximize a function of several variables given a few of them?在 R 中使用 optim,我将如何最大化几个变量的函数?
【发布时间】:2013-12-07 07:44:24
【问题描述】:

我有四个变量的函数,(c,l,t,a)

我只想在 c 和 l 上优化这个函数,因为 a 和 t 是输入并且在函数内部使用,有时用于索引和其他东西。 (这就是为什么我不能只采用一阶条件,设置为零等......)。

有什么想法吗?

感谢您的帮助。

编辑:

好的,所以我认为问题可能出在我使用 optim 的方式上。我要尝试一些东西并重新构建我的 q。

【问题讨论】:

  • 您能否发布您尝试传递给 optim 的函数、您如何实现 optim 的示例以及您收到的任何错误消息?
  • 您的系统定义不足,很可能有一个最佳平面 g(c,I) 。如果没有其他约束,您将无法进行优化。
  • 致卡尔:我有 c 和 l 的上限和下限
  • 致乔:函数有点复杂,但我会尝试在上面发布一个简单的想法
  • 上限可能不够。从基本代数来看,如果要求解N个变量,则需要N个独立方程。

标签: r optimization conditional maximize


【解决方案1】:

你有四个参数的函数:

> foo=function(c,l,t,a){c+10*l+100*t+1000*a}
> foo(1,2,3,4)
[1] 4321

你只想优化两个以上,所以制作一个有两个参数的函数,并在设置其他参数的情况下调用四参数函数:

> f2=function(c,l){foo(c,l,9,8)}
> f2(1,2)
[1] 8921

现在,无论您使用 foo 做什么,您都可以使用 f2

如果你愿意,你可以创建一个函数生成函数,它返回带有你想要的固定参数的函数,你可以这样做:

> f3gen=function(t,a){force(t);force(a);function(c,l){foo(c,l,t,a)}}

然后您可以像以前一样创建一个带有 t 和一个设置为 8 和 9 的双参数函数:

> f3=f3gen(8,9)
> f3(1,2)
[1] 9821

这给了我们一个函数,它们设置为 8 和 6:

> f3=f3gen(8,6)
> f3(1,2)
[1] 6821

现在您已将 f3ta 的值打包并修复。

但是我认为 optim 总是使用参数的单个参数向量,这意味着,由于你没有给我们一个可重现的例子,我已经浪费了我的时间来向你解释这个。

【讨论】:

    猜你喜欢
    • 2014-04-19
    • 1970-01-01
    • 2017-02-16
    • 2014-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-17
    • 1970-01-01
    相关资源
    最近更新 更多