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



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

从数学上讲,通过最小化计算自身比率和最佳比率之间差异的函数,这似乎相对容易实现。由于它是一个比率,因此区间自然是 [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?

在这种情况下,您实际上可以通过解析求解最小值。取函数的导数,代数求解 0。这会告诉您基于您的参数的最大值或最小值(但不是最小值(的f。然后你只需在那个点、f=0f=1时评估你的f,看看哪个最小。

否则,由于我相信此函数中只有一个最小值,因此您可以使用二叉搜索或梯度下降来查找该最小值。

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

最新更新