何时使用混合函数
混合函数是在原始求解器终止后继续进行优化的函数。
这些 Global Optimization Toolbox 求解器完成后,可以自动运行混合函数或第二个求解器:
要运行混合函数,请将 HybridFcn
选项设置为第二个求解器。
在下列情况下,混合函数可以从第一个求解器找到的相对粗略的解开始,获得更精确的解:
无论目标函数是否具有非平滑区域,如果解位于具有平滑约束的平滑区域,则使用来自 Optimization Toolbox™ 的混合函数,例如
fmincon
。如果目标函数或约束在解附近不光滑,则使用
patternsearch
作为混合函数。假设问题有多个局部极小值,而您想要获得一个精确的全局解。单目标求解器可以搜索全局解的附近区域,但不一定能获得极其准确的结果。如果目标函数是平滑的,则使用来自 Optimization Toolbox 的混合函数,例如
fminunc
。对于平滑的多目标问题,混合函数通常可以改进
gamultiobj
的解。
要查看哪些求解器可用作混合函数,请参阅原始求解器的参考页上的 options
输入参量。为了调整混合函数,您可以为混合函数包含一组单独的选项。例如,如果混合函数是 fmincon
:
hybridopts = optimoptions('fmincon','OptimalityTolerance',1e-10); options = optimoptions('ga','HybridFcn',{'fmincon',hybridopts}); [x,fval] = ga(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon,options)
另请参阅
ga
| gamultiobj
| particleswarm
| simulannealbnd