我有一个函数 Y = f(a,b)。
a 和 b 以 0 为界
该函数没有定义,但可以想象成一个黑盒子,如果我插入 (a,b) 的值,我会得到一个“Y”。也可能有(a,b)的其他值给出相同的Y。但它总是(a,b)的有限数量。
我使用了蛮力搜索并找到了所有值并用它绘制了一个 3D 图,如下所示。但这并不总是曲线。这只是我的初始条件的一种情况。
现在我的目标是知道 Y' 的特定值,我需要以最少的迭代次数找到所有解决方案 (a,b)。(通过迭代我的意思是,将 (a,b) 插入函数以获得 Y)。
我有一个函数 Y = f(a,b)。
a 和 b 以 0 为界
该函数没有定义,但可以想象成一个黑盒子,如果我插入 (a,b) 的值,我会得到一个“Y”。也可能有(a,b)的其他值给出相同的Y。但它总是(a,b)的有限数量。
我使用了蛮力搜索并找到了所有值并用它绘制了一个 3D 图,如下所示。但这并不总是曲线。这只是我的初始条件的一种情况。
现在我的目标是知道 Y' 的特定值,我需要以最少的迭代次数找到所有解决方案 (a,b)。(通过迭代我的意思是,将 (a,b) 插入函数以获得 Y)。
在一般情况下,没有解决方案。如果 f 是某个散列函数,唯一的解决方案是尝试所有输入。
现在假设 f 是连续的,至少在您正在寻找的值附近并且它相对平滑,那么您可以取一个三角形覆盖您正在寻找值的区域,计算它的顶点和三角形的中心并猜测 3 个三角形中的哪一个可能包含您的解决方案,然后限制为那个。
或者,您可以在该区域上创建一个网格,计算网格中每个顶点的值,然后将搜索限制在您认为可能存在该值的单元格并继续搜索。通过这种方式,您可以确保单元格足够小,这样您就不会错过感兴趣的特征。
这一切都依赖于对 f 的行为方式有一定的了解,并且如果 f 不符合您的期望,它会以不好的方式工作或根本不起作用。