0

在我的项目中,我面临一个场景,我有一个具有大量输入的函数。在某个时刻,我得到了一个结果,我需要找到一个生成该结果的输入组合。

这是一些说明问题的伪代码:

双 y = f(x_0,..., x_n)

我得到了 y,我需要找到适合输入的任何组合。

我在纸上尝试了几件可以产生某些东西的东西,但我的每个参数都有 6.5 x 10^9 的可能值范围 - 所以我想获得最佳执行时间。

有人可以说出对我有用的算法或主题,以便我可以了解其他人如何解决类似问题。

我正在考虑从输入创建一个向量并判断该向量对问题的适合程度。这听起来很像 NN,但没有可用的训练阶段。

编辑:谢谢大家的反馈。这些评论总结了我遇到的问题,我会尝试一些爬山的方法。

4

1 回答 1

1

您的问题的一般情况可能无法解决,但在某些情况下,有一些数值方法可以帮助您解决问题。

例如,在 1D 空间中,如果您可以找到一个小于y和一个大于y的数字 - 您可以使用数值方法regula-falsi以数字方式找到“根”(y在您的情况下,通过只需调用f(x) -y) 上的方法。
我承认,其他求根的数值方法是newton-raphson
,我不熟悉如何将这些方法应用于多维空间 - 但它可能是一个入门者。如果我是你,我会在文献中搜索这些。
注意:使用这种方法几乎总是需要一些函数知识。

另一种可能的解决方案是采用g(X) = |f(X) - y)|并使用一些启发式算法来找到 的最小值g。启发式方法的问题是它们会让你“足够接近”——但很少能让你准确地到达目标(除非函数是的)

一些优化算法是:基因算法爬山梯度下降(你可以在数字上找到梯度

于 2012-10-15T10:54:42.940 回答