在区间内查找函数的(局部)最小值

时间:2016-07-27 09:42:12

标签: netlogo

我正在为海龟建立决策功能如何分配资金以达到一定比例的两个参数。为此,海龟找到了其他海龟中最成功的比例,并尝试按比例分配资金,这导致其比例与最佳比例之间的差异最小。

通过最小化计算自身和最佳比率之间差异的函数,数学上似乎相对容易实现。因为它是一个比率,所以间隔自然是[0,1]。

我想知道如何实现这个?我可以计算一个值列表并找到min的最小值,但这看起来有点笨拙。不幸的是,根据我的搜索条件,Netlogo文档并没有多大帮助。我认为这是一个相当标准的问题,所以我错过了一个标准的解决方案吗?

  • bestRatio_t-1:a / b
  • ownRatio_t-1:c / d
  • 每蜱生长a,b,c,d:g
  • 增长分数:f

最小化为区间[0,1]定义的g(f) = a/b - (a + (g * f)) / (b + (g * (1-f)))应该产生最佳分数f,我想?

1 个答案:

答案 0 :(得分:1)

在这种情况下,您实际上可以解析分析最小值。取你的函数的导数,用代数求解0。这会根据您的参数告诉您f哪里有最大值或最小值(但不是最大值)。然后,您只需评估ff=0f=1,然后查看哪个最小。

否则,因为我相信此函数中只有一个最小值,您可以使用binary searchgradient descent来查找最小值。

对于许多情况来说,另一个非常简单且实际上非常现实的策略就是随机抽样。只需在一堆随机点上评估函数并取最小值。