主要内容

GlobalOptimSolution

优化解

说明

GlobalOptimSolution 对象包含关于局部最小值的信息,包括位置、目标函数值和得到最小值的一个或多个起点。

GlobalSearchMultiStart 生成一个由 GlobalOptimSolution 对象组成的向量。向量按目标函数值排序,从最低(最好)到最高(最差)。GlobalSearchMultiStart 将在容差范围内与之前求出的解吻合的解进行合并。有关 GlobalSearch 的详细信息,请参阅当 fmincon 运行时 中的更新解集。有关 MultiStart 的详细信息,请参阅 创建 GlobalOptimSolution 对象

创建对象

当您执行 run 并请求 solutions 输出时,GlobalSearchMultiStart 创建 GlobalOptimSolution 对象作为输出。

属性

全部展开

局部求解器的退出条件,以整数形式返回。通常,Exitflag 为正值对应于局部最优,Exitflag 为零或负值对应于对局部最小值的一次不成功搜索。

有关每个 Exitflag 的确切含义,请参阅对应的局部求解器函数参考页中的 exitflag 描述:

数据类型: double

目标函数值,以实数标量形式返回。对于 lsqnonlinlsqcurvefit 求解器,Fval 是残差的平方和。

数据类型: double

局部求解器返回的输出结构体。有关详细信息,请参阅适当的局部求解器函数参考页中的 output 描述:

数据类型: struct

局部解,以与 problem.x0 具有相同维度的数组形式返回。

数据类型: double

得到当前解的起点,以元胞数组形式返回。通过设置全局求解器的 FunctionToleranceXTolerance 属性,控制被视为不同的点之间的距离。

数据类型: cell

示例

全部折叠

使用 MultiStart 为具有多个局部最小值的问题创建一个由 GlobalOptimSolution 对象组成的向量。

rng default % For reproducibility
ms = MultiStart;
sixmin = @(x)(4*x(1)^2 - 2.1*x(1)^4 + x(1)^6/3 ...
    + x(1)*x(2) - 4*x(2)^2 + 4*x(2)^4);
problem = createOptimProblem('fmincon','x0',[-1,2],...
    'objective',sixmin,'lb',[-3,-3],'ub',[3,3]);
[xmin,fmin,flag,outpt,allmins] = run(ms,problem,30);
MultiStart completed the runs from all start points. 

All 30 local solver runs converged with a positive local solver exitflag.

allmins 是由 GlobalOptimSolution 对象组成的向量。

disp(allmins)
  1×6 GlobalOptimSolution array with properties:

    X
    Fval
    Exitflag
    Output
    X0

绘制在返回解处的目标函数值。

plot(arrayfun(@(x)x.Fval,allmins),'k*')
xlabel('Solution number')
ylabel('Function value')
title('Solution Function Values')

Figure contains an axes object. The axes object with title Solution Function Values, xlabel Solution number, ylabel Function value contains a line object which displays its values using only markers.

要检查得到各种解的初始点,请参阅可视化吸引力盆地

版本历史记录

在 R2010a 中推出