使用MATLAB,我试图在4D空间中找到函数的鞍点。更具体地,函数是f(x,y,z,w)并且我需要相对于z和w找到关于x和y以及最大值的最小值。换句话说,4D空间中的鞍点在x和y中是最小的并且在z和w中是最大的。变量x,y,z和w被约束在各自的域中。
我尝试过使用fmincon,但无济于事。函数f(x,y,z,w)肯定必须在定义它的域中具有鞍点。我一直在做的是首先使用fmincon来最小化f相对于x和y,然后在下一步中使用fmincon来最小化-f相对于z和w,然后迭代。我还尝试使用fmincon来最小化f(x,y,z0,w0)-f(x0,y0,z,w),其中(x0,y0,z0,w0)是起始点或从前一次迭代计算的起点。后一种方法(我知道由于没有适当的权重而效率很低)也没有用。
如果你们有任何关于如何使这项工作的想法,我将非常感激。谢谢大家。
答案 0 :(得分:0)
编辑3 : 一个问题可能是约束优化算法。如果您只有一个鞍点,则交替算法应该可以解决问题,因此问题可能来自约束。
在Matlab中尝试在fminsearch
中实现的Nelder-Mead算法,该算法在没有约束的情况下进行优化。然后检查解决方案是否尊重您的约束。如果不遵守约束条件,则在不遵守约束条件的情况下惩罚目标函数(不要忘记在最小化然后最大化时更改惩罚的符号)。
您可以反转x和y的效果,从而最大化(-x,-y,z,w)上的函数。
将您的目标重写为:g(x,y,y,z)=f(-x,-y,z,w)
并最大化g。
编辑2:第一种方法无用且已经尝试
如果您考虑优化问题,尝试最小化和同时最大化(在同一步骤)并没有多大意义。
尝试考虑鞍点检测,解决方案可能分为两个步骤:
重复直到收敛/最优状态。
编辑:我没有在4个维度中对其进行可视化,但是使用函数z = f(x,y)
是有意义的