我想找到具有最少试验次数的函数的最低值.该函数f(x)必须具有最小值的点.给定输入x,我可以计算f(x),但不是另一个方向.我没有函数的显式表达式,所以它是一个黑盒子.
我想找到x最小化的输入f(x),用最少的试验次数(一次试验是我选择一个特定的x,然后将其插入以获得输出).有没有算法可以达到这个目的?
结果不需要是绝对最小值,因为它是从真实问题中得出的.但它应该低于大多数值.
如果函数被约束为凸,那么有更好的方法来实现吗?
谢谢!
假设函数是凸函数并且f(x)所有点都存在 的导数 => 只有一个最小值。我强调导数约束的原因是,当函数看起来像两个凸函数在交点处相邻时,导数不存在,但函数仍然是凸函数并且有两个局部最小值。
导数在最小值的左侧和右侧将具有相反的符号(斜率改变方向)您可以在此处查看其可视化。考虑到这一点,您可以对您的域进行简单的二分搜索,以找到k满足f'(k-e) * f'(k+e) < 0您选择的点,选择的值越小e,结果的精度越高。进行搜索时,让[a,b]为间隔,k=(a+b)/2如果是则选择左f'(k)*f'(a) < 0,否则选择右。
再次选择f(x), f'(x) = (f(x+e)-f(x))/e,越小e,导数的精度就越高。