探索patternsearch
优化实时编辑器任务中的算法
从R2022b开始,patternsearch
有四个算法选项:
“经典”
“国家联盟”
(非均匀模式搜索)
“nups-gps”
“nups-mads”
这个例子展示了如何尝试不同的方法patternsearch
算法在解决问题时使用优化住编辑任务。
指定的问题
建立一个优化问题,该优化问题有一个二次加线性目标函数、边界和两个线性约束。通常情况下,quadprog
是这类问题的最佳求解器。然而,本例使用patternsearch
你可以尝试不同的算法。
将这个问题的变量数设置为N = 10
.创建一个伪随机对称矩阵问
的大小N
——- - - - - -N
一个伪随机向量z
的长度N
对于目标函数有趣的(x) = x * Q * x '
- - - - - -N * x * z
.
N = 10;rng默认的x0 =兰德(1,N);x0 = x0 / (2 * (x0)之和);Q = 6*eye(N) + randn(N);Q = (Q + Q');z =兰德(N, 1);fun = @(x)x*Q*x' - N*x*z;
对问题设置线性约束:总和(x) < = 1
而且(我* x) < = N / 3
,在那里我
是向量的下标吗x
.
= [(1, N); 1: N];% sum(x) <= 1, sum(i*x) <= N/3b = (1, N / 3);
确认问
是正定的,所以问题是凸的。
eig (Q)
ans =10×11.5071 4.0347 7.3749 9.0561 11.6929 11.9473 13.0976 15.2099 16.1175 18.8949
在优化实时编辑器任务中创建问题
打开一个新的或现有的实时脚本。在代码部分的住编辑器选项卡上,单击任务打开实时编辑器任务库。下优化,点击优化.
选择的方法
在优化Live Editor任务,选择基于求解器的方法。
指定的问题类型
选择这些选项以指定问题的类型:
目标——非线性
约束—下界、上界和线性不等式
解算器——patternsearch
选择问题数据
为问题数据选择以下选项:
目标函数-单击从文件箭头并选择函数处理.单击选择箭头并选择有趣的.
起始点- x0
约束—下界0
约束条件-上界
约束——线性不等式约束数组一个而且b
指定解决方案
单击箭头展开指定解决方案任务的部分。然后,单击添加按钮。任务指定经典Algorithm为算法设置。
显示进度
选择两个图来显示:最好的价值而且评估计算.
你的优化Live Editor任务应该与下图中的任务相匹配。
使用不同的算法寻找解决方案
为您的问题选择选项后,通过单击运行解决程序运行在运行部分的Live Editor选项卡。求解器运行“经典”
patternsearch
算法,并显示两个指定的图。
将算法更改为国家联盟.求解器运行新算法并显示两个指定的图。
求解器完成运行“国家联盟”
算法中约有四分之一的函数求值“经典”
算法,并达到略好(较低)的目标函数值。
工作的优化现场编辑任务,您可以继续探索其他pattersearch
算法和绘图函数,或其他选项和求解器。
优化终止:网格尺寸小于options.MeshTolerance。