主要内容

particleswarm

粒子群优化

描述

例子

x= particleswarm (有趣的据nvar试图找到一个向量x这就得到了局部最小值有趣的据nvar尺寸(设计变量的数量)是有趣的

请注意

传递额外的参数解释如何在必要时向目标函数传递额外的参数。

例子

x= particleswarm (有趣的据nvar乌兰巴托定义一组设计变量的上下限,x,从而在值域内找到解x乌兰巴托

例子

x= particleswarm (有趣的据nvar乌兰巴托选项中的值替换默认优化参数时最小化选项.集磅= []而且乌兰巴托= []如果没有边界存在。

x= particleswarm (问题找到最小值问题中描述的结构问题

例子

xfvalexitflag输出) = particleswarm (___,对于上面描述的任何输入参数,返回:

  • 一个标量fval,为目标函数值有趣的(x)

  • 一个值exitflag描述退出条件

  • 一个结构输出包含关于优化过程的信息

例子

全部折叠

最小化一个简单的二元函数。

定义目标函数。

有趣= @ (x) x (1) * exp(规范(x) ^ 2);

调用particleswarm最小化函数。

rng默认的%的再现性据nvar = 2;据nvar, x = particleswarm(有趣)
优化结束:目标值相对于上一个OPTIONS的变化。MaxStallIterations小于OPTIONS.FunctionTolerance。X = 629.4474 311.4814

正如你在函数图中看到的,这个解远远不是真正的最小值。

fsurf (@ x (x, y)。* exp (- (x ^ 2 + y ^ 2)))

通常,最好是设定界限。看到最小化一个有边界的简单函数

最小化具有约束条件的两个变量的简单函数。

定义目标函数。

有趣= @ (x) x (1) * exp(规范(x) ^ 2);

设置变量的边界。

磅=(-10、-15);乌兰巴托= (15 20);

调用particleswarm最小化函数。

rng默认的%的再现性据nvar = 2;x = particleswarm(磅,有趣,据nvar乌兰巴托)
优化结束:目标值相对于上一个OPTIONS的变化。MaxStallIterations小于OPTIONS.FunctionTolerance。
x =1×2-0.7071 - -0.0000

使用更大的总体和混合函数来尝试得到更好的解。

指定目标函数和边界。

有趣= @ (x) x (1) * exp(规范(x) ^ 2);磅=(-10、-15);乌兰巴托= (15 20);

指定的选项。

选择= optimoptions (“particleswarm”“SwarmSize”, 100,“HybridFcn”, @fmincon);

调用particleswarm最小化函数。

rng默认的%的再现性据nvar = 2;x = particleswarm(有趣,据nvar磅,乌兰巴托,选项)
优化结束:目标值相对于上一个OPTIONS的变化。MaxStallIterations小于OPTIONS.FunctionTolerance。
x =1×2-0.7071 - -0.0000

返回可选输出参数,以更详细地检查解决方案过程。

定义问题。

有趣= @ (x) x (1) * exp(规范(x) ^ 2);磅=(-10、-15);乌兰巴托= (15 20);选择= optimoptions (“particleswarm”“SwarmSize”, 50岁,“HybridFcn”, @fmincon);

调用particleswarm用所有的输出来最小化函数,并得到关于求解过程的信息。

rng默认的%的再现性据nvar = 2;[x, fval exitflag、输出]= particleswarm(乐趣,据nvar磅、乌兰巴托、期权)
优化结束:目标值相对于上一个OPTIONS的变化。MaxStallIterations小于OPTIONS.FunctionTolerance。
x =1×2-0.7071 - -0.0000
fval = -0.4289
exitflag = 1
输出=结构体字段:rngstate: [1x1 struct] iterations: 43 funccount: 2203 message: '优化结束:目标值的相对变化…“hybridflag: 1

输入参数

全部折叠

目标函数,指定为函数句柄或函数名。写出目标函数来接受一个长度的行向量据nvar并返回一个标量值。

“UseVectorized”选择是真正的,写有趣的接受流行——- - - - - -据nvar矩阵,流行是当前的人口规模。在这种情况下,有趣的返回长度相同的向量流行包含适应度函数值。确保有趣的没有假设任何特定的尺寸流行,因为particleswarm即使在向量化计算中,也可以通过种群中的单个成员。

例子:有趣= @ (x) (x - (4,2)) ^ 2

数据类型:字符|function_handle|字符串

变量数,指定为正整数。求解器传递长度的行向量据nvar有趣的

例子:4

数据类型:

下界,指定为实向量或双精度数组。中的元素的下界x乌兰巴托

在内部,particleswarm将一个数组的向量磅(:)

例子:磅=[0;无穷;4)意味着x(1)≥0x(3)≥4

数据类型:

上界,指定为实向量或双精度值数组。乌兰巴托中元素的上界x乌兰巴托

在内部,particleswarm将一个数组乌兰巴托的向量乌兰巴托(:)

例子:乌兰巴托= (Inf; 4; 10)意味着x(2)≤4x(3)≤10

数据类型:

选项particleswarm的输出optimoptions函数。

的选项中缺少一些选项optimoptions显示。这些选项以斜体显示。有关详细信息,请参见视图选项

CreationFcn

创建初始蜂群的函数。指定为“pswcreationuniform”或者一个函数句柄。默认是“pswcreationuniform”.看到创建群

显示

返回到命令行的显示级别。

  • “关闭”“没有”显示没有输出。

  • “最后一次”只显示最终输出(默认值)。

  • “通路”给出了迭代显示。

DisplayInterval 迭代显示的间隔。迭代显示为每DisplayInterval迭代。默认是1
FunctionTolerance 带有默认值的非负标量1 e-6.当最佳目标函数值相对于最后一个函数值的相对变化时迭代结束MaxStallIterations迭代少于选项。FunctionTolerance
FunValCheck

检查目标函数和约束值是否有效。“上”当目标函数或约束返回复杂值时显示错误,,或.默认的,“关闭”,没有显示错误。

HybridFcn

之后继续优化的函数particleswarm终止。指定为名称或函数句柄。可能的值:

  • “fmincon”

  • “fminsearch”

  • “fminunc”

  • “patternsearch”

也可以是指定混合函数及其选项的单元格数组,例如{@fmincon, fminconopts}.默认是[].看到混合函数

看到何时使用混合函数

InertiaRange 具有相同符号值的双元素实向量。给出了自适应惯量的上下限。为获得恒定的(非自适应的)惯性,设置的两个元素InertiaRange相同的值。默认是[0.1, 1.1].看到粒子群优化算法
InitialSwarmMatrix 粒子的初始总体或部分总体。——- - - - - -据nvar矩阵,每一行代表一个粒子。如果<SwarmSize,然后particleswarm创建更多的粒子,使总数为SwarmSize.如果>SwarmSize,然后particleswarm使用第一个SwarmSize行。
InitialSwarmSpan

粒子位置的初始范围@pswcreationuniform创建。可以是一个正标量或一个向量据nvar元素,据nvar是变量的个数。任何粒子分量的范围是-InitialSwarmSpan / 2, InitialSwarmSpan / 2,如果需要,移动和缩放以匹配任何边界。默认是2000

InitialSwarmSpan也会影响粒子初速度的范围。看到初始化

MaxIterations 最大迭代次数particleswarm需要。默认是据nvar 200 *,在那里据nvar是变量的个数。
MaxStallIterations 带默认值的正整数20..当最佳目标函数值相对于最后一个函数值的相对变化时迭代结束MaxStallIterations迭代少于选项。FunctionTolerance
MaxStallTime 在最佳已知目标函数值没有改进的情况下的最大秒数。带默认值的正标量
MaxTime 以秒为单位的最大时间particleswarm运行。默认是
MinNeighborsFraction 最小自适应邻域大小,来自的标量01.默认是0.25.看到粒子群优化算法
ObjectiveLimit 最小目标值,停止标准。标量,默认
OutputFcn 函数句柄或函数句柄的单元格数组。输出函数可以读取迭代数据,并停止求解器。默认是[].看到输出函数和图函数
PlotFcn 函数名、函数句柄或函数句柄的单元格数组。对于自定义plot函数,传递函数句柄。Plot函数可以读取迭代数据,绘制每次迭代,并停止求解器。默认是[].可内置plot功能:“pswplotbestf”.看到输出函数和图函数
SelfAdjustmentWeight 调整速度时每个粒子最佳位置的权重。带默认值的有限标量1.49.看到粒子群优化算法
SocialAdjustmentWeight 调整速度时邻域最佳位置的权重。带默认值的有限标量1.49.看到粒子群优化算法
SwarmSize 蜂群中的粒子数,一个大于1.默认是分钟(100,10 *据nvar),在那里据nvar是变量的个数。
UseParallel 并行计算目标函数真正的.默认是.看到并行或向量化函数求值
UseVectorized 以向量化的方式计算目标函数真正的.默认是.看到并行或向量化函数求值

优化问题,指定为具有以下字段的结构。

解算器 “particleswarm”
客观的 目标函数的函数句柄,或目标函数的名称。
据nvar 问题中变量的数量。
下界的向量或数组。
乌兰巴托 上界的向量或数组。
选项 选择创建的optimoptions
rngstate 随机数发生器在求解过程开始时的可选状态。

数据类型:结构体

输出参数

全部折叠

解,作为一个实向量返回,该实向量使目标函数受任何约束条件的影响最小。

目标值,作为实标量返回有趣的(x)

算法停止条件,返回为整数,标识算法停止的原因。的值如下所示exitflag以及相应的原因particleswarm停止了。

1

相对于上一个目标值的变化选项。米axStallIterations迭代少于选项。FunctionTolerance

0

超过的迭代次数选项。米axIterations

-1

迭代被输出函数或绘图函数停止。

-2

边界是不一致的:对某些人来说磅(我)>乌兰巴托(我)

3

最佳目标函数值如下选项。ObjectiveLimit

4

最佳目标函数值在内没有变化选项。米axStallTime秒。

5

运行时间超过选项。MaxTime秒。

解决方案流程摘要,作为包含优化流程信息的结构返回。

迭代

求解器迭代的次数

funccount

目标函数评价数。

消息

算法停止的原因。

hybridflag

混合函数的退出标志。关系到HybridFcn选项

rngstate

算法启动前默认随机数生成器的状态。

算法

有关粒子群优化算法的描述,请参见粒子群优化算法

选择功能

应用程序

优化Live Editor任务提供了一个可视化的界面particleswarm

扩展功能

版本历史

介绍了R2014b