输出功能允许你检查的优化中间结果。此外,它们允许你以编程方式停止求解器。
有两种类型的输出功能,如两种类型的输出结构:
全球输出功能在每个地方求解器运行后运行。当全球求解器开始和结束他们还运行。
本地输出功能的局部求解器的每次迭代之后运行。看到输出功能(优化工具箱)。
使用全局输出功能:
使用语法写入输出功能描述在OutputFcn。
设置OutputFcn
财产你GlobalSearch
要么多头
求解器的输出功能的功能句柄。您可以通过设置使用多输出功能OutputFcn
属性到函数处理的一个单元阵列。
该输出功能停止GlobalSearch
后它找到五个不同的局部最小值与阳性出口标志,或它找到一个局部最小值后小于0.5
。输出功能使用持久性的局部变量,foundLocal
,并存储在本地的结果。foundLocal
使输出函数来确定局部解是否是从其他不同,到的容限内1E-4
。
为了存储使用嵌套函数,而不是持续性的局部变量的结果,看嵌套输出功能的示例(MATLAB)。
写使用中描述的语法中的输出功能OutputFcn。
功能停止= StopAfterFive(optimValues,状态)持续foundLocal停止= FALSE;开关状态的情况下为 'init' foundLocal = [];%为空的情况下初始化的 'ITER' newf = optimValues.localsolution.Fval;EFLAG = optimValues.localsolution.Exitflag;%现在,检查出口标志为正,且%的新值不同于所有其他至少1E-4%如果是这样,新的价值添加到newf列表中,如果EFLAG> 0 &&所有(ABS(newf - foundLocal)>1E-4)foundLocal = [foundLocal; newf];%现在检查如果添加到foundLocal%的最新值小于1/2%另外检查是否存在在foundLocal%5局部最小值如果是,则停止如果foundLocal(结束)<0.5 ||长度(foundLocal)> = 5停止= TRUE;结束结束结束
救StopAfterFive.m
作为您的MATLAB的文件夹中文件®路径。
编写目标函数,并创建一个优化问题的结构,如查找全局或多个局部极小。
函数f = sawtoothxy(X,Y)[T R] = cart2pol(X,Y);%变化到极坐标H = COS(2 * T - 1/2)/ 2 + cos(T)+ 2;G =。(SIN(R) - SIN(2 * R)/ 2 + SIN(2 * R)/ 3 - 罪(4 * R)/ 4 + 4)... * R ^ 2 ./(R1);F = G *小时。;结束
救sawtoothxy.m
为您的MATLAB路径上的文件夹中的文件。
在命令行中,创建问题的结构:
问题= createOptimProblem( 'fmincon',... '目标',@(X)sawtoothxy(X(1)中,x(2)),... 'X0',[100,-50], '选项',... optimoptions(@ fmincon, '算法', '二次规划'));
创建一个GlobalSearch
与对象@StopAfterFive
作为输出的功能,并设置迭代显示属性,以'ITER'
。
GS = GlobalSearch( 'OutputFcn',@ StopAfterFive, '显示', 'ITER');
(可选)要得到相同的答案,因为这例子中,设置默认的随机数流。
RNG默认
运行问题。
[X,FVAL] =运行(GS,问题)货号积分最佳电流阈值本地本地分析F-计数F(X)点球F(X)exitflag步骤0 200 555.5 555.5 0初始点200 1463 1.547e-15 1.547e-15 1阶段第1本地GlobalSearch停在输出或绘图功能。1出2个本地求解运行的融合具有积极当地求解器出口标志。X = 1.0E-07 * 0.0414 0.1298 FVAL = 1.5467e-15
运行初期,因为停止GlobalSearch
发现与函数值的点小于0.5
。
而多头
可以并行运行,它不支持并行全球输出功能和打印功能。万博1manbetx此外,尽管本地输出功能和情节的功能工人运行时多头
在平行运行,效果不同于连续运行。工人运行时,本地输出和打印功能不创建一个显示。你看不到的输出和打印功能的任何其他效果,直到工人将它的结果给客户端(的鼻祖多头
并行作业)。
有关运行信息多头
与此同时,看到并行计算。