particleswarm

粒子群算法

描述

X= particleswarm(开玩笑nvars试图找到一个向量X这实现了局部最小开玩笑nvars是尺寸(数设计变量的)开玩笑

注意

传递额外的参数(优化工具箱)解释了如何额外的参数,传递给目标函数,如果必要的。

X= particleswarm(开玩笑nvarsUB定义了设计变量的一组上限和下限的,X,使得溶液中的范围内发现XUB

X= particleswarm(开玩笑nvarsUB选项使用默认的优化参数最大限度地减少替换值选项。组磅= []UB = []如果不存在界限。

X= particleswarm(问题找到最低的问题,其中问题是一个结构。

[XFVALexitflag产量] = particleswarm(___,对于上面,返回描述的任何输入参数:

  • 标量FVAL,这是目标函数值有趣(X)

  • 一个值exitflag描述退出条件

  • 的结构产量关于优化过程包含信息

例子

全部收缩

最小化两个变量的简单函数。

定义目标函数。

有趣= @(X)×(1)* EXP(范数(X)^ 2);

呼叫particleswarm最小化功能。

RNG默认%用于重现nvars = 2;X = particleswarm(乐趣,nvars)
优化结束:在过去的OPTIONS.MaxStallIterations迭代的客观价值相对变化小于OPTIONS.FunctionTolerance。X = 629.4474 311.4814

该解决方案还远没有真正的最小值,因为你在函数图见。

fsurf(@(X,Y)X * EXP( - (的x ^ 2 + Y ^ 2)))。

通常情况下,最好是设定界限。看到尽量减少与界一个简单的函数

最小化两个变量的约束带约束的简单功能。

定义目标函数。

有趣= @(X)×(1)* EXP(范数(X)^ 2);

在设置的变量范围。

磅= [-10,-15]。UB = [15,20];

呼叫particleswarm最小化功能。

RNG默认%用于重现nvars = 2;X = particleswarm(乐趣,nvars,LB,UB)
优化结束:在过去的OPTIONS.MaxStallIterations迭代的客观价值相对变化小于OPTIONS.FunctionTolerance。
X =1×2-0.7071 -0.0000

使用更多的人口和混合功能,试图得到一个更好的解决方案。

指定目标函数和边界。

有趣= @(X)×(1)* EXP(范数(X)^ 2);磅= [-10,-15]。UB = [15,20];

指定选项。

选项= optimoptions('particleswarm''SwarmSize',100,'HybridFcn',@ fmincon);

呼叫particleswarm最小化功能。

RNG默认%用于重现nvars = 2;X = particleswarm(乐趣,nvars,LB,UB,选项)
优化结束:在过去的OPTIONS.MaxStallIterations迭代的客观价值相对变化小于OPTIONS.FunctionTolerance。
X =1×2-0.7071 -0.0000

返回可选的输出参数检查求解过程的更多细节。

定义问题。

有趣= @(X)×(1)* EXP(范数(X)^ 2);磅= [-10,-15]。UB = [15,20];选项= optimoptions('particleswarm''SwarmSize'50,'HybridFcn',@ fmincon);

呼叫particleswarm与所有输出以最小化功能,并得到有关解决方案的过程信息。

RNG默认%用于重现nvars = 2;[X,FVAL,exitflag,输出] = particleswarm(乐趣,nvars,LB,UB,选项)
优化结束:在过去的OPTIONS.MaxStallIterations迭代的客观价值相对变化小于OPTIONS.FunctionTolerance。
X =1×2-0.7071 -0.0000
FVAL = -0.4289
exitflag = 1
输出=同场的结构:rngstate:[1x1的结构]迭代:43 funccount:2203的消息: '优化结束:在客观值相对变化...'

输入参数

全部收缩

目标函数,指定为功能手柄或函数的名称。编写目标函数接受长的行向量nvars并返回一个标量值。

当。。。的时候'UseVectorized'选项真正,写开玩笑接受流行-通过-nvars矩阵,其中流行是目前的人口规模。在这种情况下,开玩笑返回一个矢量的长度相同流行含有合适函数值。确保这件事开玩笑不承担任何特定大小流行由于particleswarm甚至可以在一个矢量计算传递一个群的一个成员。

例:有趣= @(X)(X - [4,2])。^ 2

数据类型:烧焦|function_handle|

变量数,指定为正整数。解算器通过长度的行向量nvars开玩笑

例:4

数据类型:

下界,指定为实向量或双打的阵列。表示下界逐元素在XUB

在内部,particleswarm转换的阵列到向量磅(:)

例:LB = [0; -Inf; 4]手段X(1)≥0X(3)≥4

数据类型:

上限,指定为实向量或双打的阵列。UB表示上限逐元素在XUB

在内部,particleswarm转换的阵列UB到向量UB(:)

例:UB = [Inf文件; 4; 10]手段X(2)≤4X(3)≤10

数据类型:

对于选项particleswarm,指定为的输出optimoptions功能。

有些选项是从缺席optimoptions显示。这些选项中列出了斜体。有关详细信息,请参阅查看选项(优化工具箱)。

CreationFcn

创建初始的群功能。作为指定'pswcreationuniform'或功能句柄。默认值是'pswcreationuniform'。看到群创

显示

显示器的水平返回到命令行。

  • “关”要么'没有'显示没有输出。

  • '最后'只显示最终输出(默认)。

  • 'ITER'给迭代显示。

DisplayInterval 区间反复显示。迭代显示打印一行,每DisplayInterval迭代。默认值是1
FunctionTolerance 非负标量默认1E-6。迭代结束时以最好的目标函数值在过去的相对变化MaxStallIterations迭代次数小于options.FunctionTolerance
FunValCheck

检查目标函数和约束值是否有效。'上'时显示目标函数或约束返回一个值,该值是复杂的错误,天道酬勤, 要么为NaN。默认的,“关”时,显示没有错误。

HybridFcn

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

  • 'fmincon'

  • 'fminsearch'

  • 'fminunc'

  • 'patternsearch'

也可以是一个单元阵列指定混合功能和它的选择,如{@ fmincon,fminconopts}。默认值是[]。看到混合功能

看到当使用混合功能

InertiaRange 两个元素的实数向量与增加的顺序相同的符号价值。给出了下部和上部结合的自适应惯性的。为了获得恒定的(非自适应)惯性,设置的两个元件InertiaRange为相同的值。默认值是[0.1,1.1]。看到粒子群算法
InitialSwarmMatrix 初始群体或颗粒的部分群。中号-通过-nvars矩阵,其中每一行代表一个颗粒。如果中号<SwarmSize, 然后particleswarm产生更多的颗粒,使得总数为SwarmSize。如果中号>SwarmSize, 然后particleswarm使用第一SwarmSize行。
InitialSwarmSpan

粒子位置的那个初始范围@pswcreationuniform创建。可以是正标量或矢量nvars元素,其中nvars是变量的数目。的范围内对于任何颗粒组分是-InitialSwarmSpan / 2,InitialSwarmSpan / 2,移位并在必要时缩放,以匹配任何边界。默认值是2000

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

MaxIterations 最大迭代次数particleswarm需要。默认值是200个* nvars,其中nvars是变量的数目。
MaxStallIterations 使用默认的正整数20。迭代结束时以最好的目标函数值在过去的相对变化MaxStallIterations迭代次数小于options.FunctionTolerance
MaxStallTime 的最大秒数而不在最知名的目标函数值的改进。正标量默认天道酬勤
MAXTIME 在几秒钟内最大的时间particleswarm运行。默认值是天道酬勤
MinNeighborsFraction 最小自适应邻域的大小,从一个标01。默认值是0.25。看到粒子群算法
ObjectiveLimit 最低目标价值,停止准则。标量,默认-Inf
OutputFcn 功能句柄或功能手柄单元阵列。输出功能,可以读取数据的迭代,并停止求解。默认值是[]。看到输出功能和绘图功能
PlotFcn 函数名,函数句柄,或功能手柄单元阵列。对于自定义情节功能,传递函数处理。绘图功能,可以读取数据的迭代,画出每次迭代,并停止求解。默认值是[]。可用内置绘图功能:'pswplotbestf'。看到输出功能和绘图功能
SelfAdjustmentWeight 调整速度时每个粒子的最佳位置的加权。有限的标量默认1.49。看到粒子群算法
SocialAdjustmentWeight 调整速度在邻里的最佳位置的比重。有限的标量默认1.49。看到粒子群算法
SwarmSize 颗粒在群号码,整数大于1。默认值是分钟(100,10 * nvars),其中nvars是变量的数目。
UseParallel 在并行计算时目标函数真正。默认值是。看到平行或矢量化功能评价
UseVectorized 在矢量化的方式,当计算目标函数真正。默认值是。看到平行或矢量化功能评价

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

求解 'particleswarm'
目的 功能句柄目标函数或目标函数的名称。
nvars 在问题的变量数。
矢量或下限的阵列。
UB 矢量或上界的阵列。
选项 选项通过创建optimoptions
rngstate 在求解过程的开始随机数生成器的可选状态。

数据类型:结构

输出参数

全部收缩

溶液,返回作为所述目标函数受到任何结合的约束最小化的实数向量。

客观价值,返回真正的标有趣(X)

算法停止条件,返回一个整数,标识算法停止的原因。下面列出的值exitflag和相应的原因particleswarm停止。

1

在过去的客观价值的相对变化options.MaxStallIterations迭代次数小于options.FunctionTolerance

0

超过迭代次数options.MaxIterations

-1

迭代停止通过输出功能和绘图功能。

-2

边界是不一致的:对于一些一世磅(ⅰ)>UB(ⅰ)

-3

最佳目标函数值低于options.ObjectiveLimit

-4

最佳目标函数值之内并没有改变options.MaxStallTime秒。

-5

运行时间超过options.MaxTime秒。

溶液工艺总结,返回作为含有约优化过程信息的结构。

迭代

解算器迭代次数

funccount

客观评价次数。

信息

理性停止算法。

rngstate

默认的随机数生成器的状态之前的算法开始。

算法

对于粒子群算法的描述,请参阅粒子群算法

扩展功能

介绍了在R2014b