surrogateoptplot
的surrogateoptplot
Plot函数提供了关于代理优化步骤的大量信息。
例如,考虑步骤的图surrogateopt
接受内置的测试功能rastriginsfcn
.该函数在点[0,0]处的全局最小值为0。
创建的表面图rastriginsfcn
.
ezsurf (@ (x, y) rastriginsfcn ([x (:), y (:))));
通过给出不对称的边界,你鼓励了surrogateopt
使搜索远离全局最小值。集非对称界(3、3)
和(9、10)
.设置选项以使用surrogateoptplot
绘图函数,然后调用surrogateopt
.
磅= (3 3);乌兰巴托=(9、10);选择= optimoptions (“surrogateopt”,“PlotFcn”,“surrogateoptplot”);rng默认的[x, fval] = surrogateopt (@rastriginsfcn、磅、乌兰巴托、期权);
Surrogateopt停止,因为它超过了'options.MaxFunctionEvaluations'设置的函数求值限制。
从左边开始解读剧情。具体算法步骤请参见代理优化算法.
第一个点是黑色三角形,表示函数在问题范围内的拟随机样本。这些点来自构造代理阶段。
接下来是指示自适应点的黑点,这些点是在搜索最小值阶段创建的。
粗绿线表示找到的最佳(最低)目标函数值。在第30次评估后不久,surrogateopt
在目标函数值接近5时陷入局部最小值。放大以更清楚地看到这种行为。
Xlim ([20 100]) ylim([0 10])
在第120次评估附近,一条垂线表示代理重置。此时,算法返回到构造代理程序阶段。
深蓝色的x点表示现任点,这是自上次代理重置以来找到的最佳点。
在评估数160附近,在任者通过获得大约4的值来改进之前的最佳点。在这个评估数字之后,最佳点的值会慢慢下降。放大以更清楚地看到这种行为。
Xlim ([140 200]) ylim([0 6])
优化在计算数200时停止,因为这是二维问题的默认函数计算限制。
的surrogateoptplot
当你有非线性约束时,显示会改变。施加约束x (1)
是整数值,还是非线性约束
.有关实现此约束的函数,请参见rasfcn
在这个例子的最后。
有趣= @rasfcn;
通过设置设置整数约束intcon
= 1,并运行最小化。
intcon = 1;[x, fval] = surrogateopt(有趣,磅,乌兰巴托,intcon选项);
Surrogateopt停止,因为它超过了'options.MaxFunctionEvaluations'设置的函数求值限制。
现在,地图上有红色标记surrogateopt
计算一个不可行的点。最后一点接近于[0,0]的真最小值点。
disp (x)
1.0e-03 * 0 -0.3913
整数约束可能会有所帮助surrogateopt
通过缩小搜索空间,找到真正的最小值。
函数函数F = rasfcn(x);f = x(1)^2 - 2 - x(2);结束