最近在科研的需要,开始研究规划的算法。其中有些算法,容易陷入局部最优解。关于这部分的说明,见我的另一篇博客《matlab局部最优和全局最优算法》(http://blog.csdn.net/angelo99/article/details/50788088)。
今天使用了一款全局最优的算法 GlobalSearch。
GlobalSearch,试图找到与最低的目标函数值。全局搜索求解器首先生成基于分散搜索的试验点。然后过滤这些试验点,然后和fmincon从这些过滤点的开始进行搜索。
具体的工作流程如下:
1)建立PROBLEM的结构体:PROBLEM = createOptimProblem('fmincon','objective',...);
2)配置GlobalSearch的求解器:GS = GlobalSearch;
3)运行求解器:run(GS,PROBLEM)。
举例如下:
Run global search on the optimization problem
minimize peaks(x, y); subject to
(x+3)^2 + (y+3)^2 <= 36,
-3 <= x <= 3 and
-3 <= y <= 3.
Specify the first constraint in a MATLAB file function such as
function [c,ceq] = mycon(x)
c = (x(1)+3)^2 + (x(2)+3)^2 - 36;
ceq = [];
Implement the typical workflow
problem = createOptimProblem('fmincon','objective', ...
@(x) peaks(x(1), x(2)), 'x0', [1 2], 'lb', [-3 -3], ...
'ub', [3 3], 'nonlcon', @mycon)
gs = GlobalSearch
[x, f] = run(gs, problem)
具体说明,详见:matlab help GlobalSearch
转:https://blog.csdn.net/angelo99/article/details/50791027