主要内容

本页采用了机器翻译。点击此处可查看英文原文。

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 中推出