matlab 全局最优算法 GlobalSearch

来源:互联网 发布:java 多线程 趣味 编辑:程序博客网 时间:2024/06/15 03:45

最近在科研的需要,开始研究规划的算法。其中有些算法,容易陷入局部最优解。关于这部分的说明,见我的另一篇博客《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

2 0
原创粉丝点击