非均匀模式搜索 (NUPS) 算法
当将 patternsearch
函数的 Algorithm
选项设置为 "nups"
时,该算法将执行 搜索和轮询 中描述的搜索和轮询步骤,并进行以下修改。
轮询忽略选项
MeshContractionFactor
、MeshExpansionFactor
、PollMethod
、PollOrderAlgorithm
、UseCompletePoll
和MeshRotate
的设置。网格扩展因子取决于迭代次数(如本列表后面的充分减少项目所述)。网格收缩系数始终为 1/2。"nups"
算法以 16 次迭代为一个循环。在每个循环中,该算法对循环的第一部分使用 GPS(广义模式搜索),对剩余部分使用 MADS(网格自适应直接搜索)。每个轮询方法在一个周期内最多可使用 14 次迭代。未来周期中轮询方法所使用的迭代次数取决于当前周期中每个函数评估的目标函数的改进。当问题没有线性约束或当前点不在线性约束边界时,每次轮询使用 N+1 个点。交替 N 坐标方向和点 [1,1,1,…,1];下一次轮询使用这些方向的负数。MADS 使用这些相同的轮询点,并以随机均匀的方式选择一组正交的方向。(当问题具有线性等式约束时,MADS 不适用。)
当问题具有线性约束并且当前点位于约束边界时,轮询将使用线性约束的切线方向,加上轮询中剩余维度的适当方向。这里,适当的方向是从当前点开始可行的方向。
当问题具有线性约束时,该算法将使用线搜索(如有必要)来确保轮询中的所有点相对于约束和边界都是可行的。相反,如果一个潜在的轮询点在
"classic"
算法中不可行,那么该点就会被从轮询中消除。因此,"nups"
算法可以使用更多的轮询点,从而可能产生更有效的轮询。足够减少意味着轮询找到一个目标函数值足够低于当前值的点。令
Fc
为当前点的目标函数值,Fn
为下一个提议点的目标函数值。当满足以下条件时,值Fn
满足充分减少条件:(
Fc
–Fn
) / max(1,abs(Fc)
) ≥ ImprovementTolerance.轮询持续进行,直到提议的要点满足充分减少条件或直到所有要点都经过检查。然后算法采取此列表中第一个适用的操作:
如果轮询没有发现可以改善当前值的点,则轮询被视为不成功,并且网格大小减少 1/2。
如果轮询发现满足充分减少条件的点,则轮询被视为成功,并且网格大小增加 2 倍。
如果在连续三次迭代中,轮询发现一个可以改善当前值的点,但不足以满足充分减少条件,则第三次轮询被视为成功,并且网格大小增加 3/2 倍。
如果轮询发现一个可以改善当前值的点,并且当前网格大小大于阈值,则轮询被视为成功,并且网格大小增加 2 倍。
否则,轮询被视为成功,但网格大小不会改变。
充分减少条件的效果是,当一个步骤导致目标函数值的非常小的改善时,保持网格大小较小。这种行为可以帮助防止算法对目标函数值的微小变化反应过度,从而可能导致更快的收敛。
您不能使用轮询方法作为搜索方法。
当您将 Algorithm
选项设置为 "nups-gps"
时,该算法与 "nups"
相同,只是它使用 GPS 执行所有轮询。当您将 Algorithm
选项设置为 "nups-mads"
时,该算法与 "nups"
相同,只是它使用 OrthoMADS 执行所有轮询。
patternsearch
以相同的方式处理所有算法的非线性约束,如 用于模式搜索的非线性约束求解算法 中所述。
当 UseParallel
为 true
时,patternsearch
对所有算法进行完整轮询。