【问题标题】:Optimized way for data filtering and calculation优化的数据过滤和计算方式
【发布时间】:2026-01-21 12:55:01
【问题描述】:

鉴于-

A = fn (B, C, D)

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

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

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

A = B + C * D

现在,如果 B=2C=3D=5 然后是 A = 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 做同样的事情,即如果我知道ACD 的值,那么我应该能够说出可能的值B - (请记住,没有办法直接知道什么是 B = fn2 (A, C, D)fn 可能不仅仅是数学计算。

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

还有哪些其他可能的方法可以以最短的响应时间实现这一目标?

【问题讨论】:

    标签: algorithm artificial-intelligence datastore


    【解决方案1】:

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

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

    如果你事先不知道优化函数,但知道它是基本操作(如+-和基本函数如@的符号表示(公式) 987654331@、log),您可以通过symbolic differentiation 获得梯度(和粗麻布)的公式。

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

    已做出假设:

    1. 你的函数是连续的。
    2. 此外,您的功能是“健全的”。有些函数的几何形状很奇怪,很难优化。
    3. 您的函数包含实参。如果不是这种情况,最有可能的是,对于“正常”功能,最佳值将在该点的 4 个 int 值邻居中的某个位置。不过,这并不能保证。

    【讨论】: