主要内容

探索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任务,选择基于求解器的方法。

optimizestart.png

指定的问题类型

选择这些选项以指定问题的类型:

  • 目标——非线性

  • 约束—下界、上界和线性不等式

  • 解算器——patternsearch

选择问题数据

为问题数据选择以下选项:

  • 目标函数-单击从文件箭头并选择函数处理.单击选择箭头并选择有趣的

  • 起始点- x0

  • 约束—下界0

  • 约束条件-上界

  • 约束——线性不等式约束数组一个而且b

指定解决方案

单击箭头展开指定解决方案任务的部分。然后,单击添加按钮。任务指定经典Algorithm为算法设置。

显示进度

选择两个图来显示:最好的价值而且评估计算

你的优化Live Editor任务应该与下图中的任务相匹配。

optimizeps.png

使用不同的算法寻找解决方案

为您的问题选择选项后,通过单击运行解决程序运行运行部分的Live Editor选项卡。求解器运行“经典”patternsearch算法,并显示两个指定的图。

optimizeclassic.png

将算法更改为国家联盟.求解器运行新算法并显示两个指定的图。

optimizenups.png

求解器完成运行“国家联盟”算法中约有四分之一的函数求值“经典”算法,并达到略好(较低)的目标函数值。

工作的优化现场编辑任务,您可以继续探索其他pattersearch算法和绘图函数,或其他选项和求解器。

生活任务
优化终止:网格尺寸小于options.MeshTolerance。

{

另请参阅

相关的话题

Baidu
map