优化的数据过滤和计算方式

时间:2015-01-19 11:11:01

标签: algorithm artificial-intelligence datastore

鉴于 -

A = fn (B, C, D)

fn可以是任何可能包含简单和复杂计算的函数。

我需要根据运行时的当前值(如果可用)计算A,B,C,D的可能值

让我们举个例子来更好地理解它。假设 -

A = B + C * D

现在,如果B=2C=3D=5A = 17

如果B=1 to 2C=1 to 5D=5,则A = 6 to 27

如果A=10 to 20B=100D=1 to 10,则A = 110 to 1020

同样根据B,C和D的可能值,我们可以计算A的可能值。

现在我需要为BCD执行相同操作,即如果我知道AC和{{1}的值那么我应该能够告诉D的可能值 - (记住,没有办法直接知道什么是B而且B = fn2 (A, C, D)可能不仅仅是数学计算。

我知道的一种方法是预先计算数据库中所有可能值的数据,然后根据可用值将其过滤掉(假设存储不是问题)。

以最短的响应时间实现此目的的其他可能方法是什么?

1 个答案:

答案 0 :(得分:1)

基本上,您要做的是找到fn的最大值和最小值,即解决constraint optimization problem:首先,您要查找最小fn个给定约束(范围)对于B,C和D),然后在同一域中最小化-fn

幸运的是,你只有3个变量,所以这应该不是问题。但算法的速度取决于您拥有的函数的信息量。理想情况下,您应该能够计算Hessian,但只知道gradient就足够了。最后,如果您不知道渐变,您仍然可以使用finite differences近似它。

如果你事先不知道优化函数,但在基本操作方面知道它的符号表示(公式)(如+-和基本函数如explog),您可以symbolic differentiation获取渐变公式(和粗体)。

在优化方面,我不是专家,但我认为预测方法(如投影梯度下降,投影牛顿法)将起作用。此外,内点法可能有用,但我不熟悉它。

已作出假设:

  1. 你的功能是连续的。
  2. 而且,你的功能是“理智的”。有一些具有奇怪几何的函数实例很难优化。
  3. 你的功能是真实的论点。如果不是这种情况,最有可能的是,对于“理智”函数,最佳值将在该点的4个内值邻居中的某处。虽然,这不能保证。