particleswarm

粒子群优化

描述

例子

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

请注意

传递额外的参数(Optimization Toolbox)说明如何在必要时将额外的参数传递给目标函数。

例子

x= particleswarm (有趣的,据nvar,,乌兰巴托)在设计变量上定义一组下界和上界,x,从而在这个范围内找到一个解x乌兰巴托

例子

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

x= particleswarm (问题)求出问题,在那里问题是一个结构。

例子

(x,fval,exitflag,输出)= particleswarm (___),对于上述任何输入参数,返回:

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

  • 一个值exitflag描述退出条件

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

例子

全部折叠

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

定义目标函数。

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

调用particleswarm来最小化函数。

rng默认的%的再现性据nvar = 2;据nvar, x = particleswarm(有趣)
优化结束:目标值相对于最后一个选项的相对变化。maxstalliteration:迭代次数小于选择次数。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乌兰巴托)
优化结束:目标值相对于最后一个选项的相对变化。maxstalliteration:迭代次数小于选择次数。
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磅,乌兰巴托,选项)
优化结束:目标值相对于最后一个选项的相对变化。maxstalliteration:迭代次数小于选择次数。
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磅、乌兰巴托、期权)
优化结束:目标值相对于最后一个选项的相对变化。maxstalliteration:迭代次数小于选择次数。
x =1×2-0.7071 - -0.0000
fval = -0.4289
exitflag = 1
输出=结构体字段:rngstate: [1x1 struct]迭代:43 funccount: 2203消息:“优化结束:目标值的相对变化……”

输入参数

全部折叠

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

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

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

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

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

例子:4

数据类型:

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

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

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

数据类型:

上界,指定为实向量或双精度数组。乌兰巴托以明智的方式表示上界元素x乌兰巴托

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

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

数据类型:

选项particleswarm的输出optimoptions函数。

有些选项是不存在的optimoptions显示。这些选项以斜体列出。有关详细信息,请参见视图选项(优化工具箱)。

CreationFcn

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

显示

显示级别返回到命令行。

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

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

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

DisplayInterval 迭代显示的时间间隔。迭代显示每一行打印一行DisplayInterval迭代。默认是1
FunctionTolerance 带默认值的非负标量1 e-6。迭代结束时,相对变化的最佳目标函数值比上一个MaxStallIterations迭代小于options.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迭代小于options.FunctionTolerance
MaxStallTime 最大秒数,但没有改进最著名的目标函数值。带默认值的正标量
MaxTime 最大时间,以秒为单位particleswarm运行。默认是
MinNeighborsFraction 最小自适应邻域大小,一个标量01。默认是0.25。看到粒子群优化算法
ObjectiveLimit 最小目标值,停止准则。标量,默认
OutputFcn 函数句柄或函数句柄的单元数组。输出函数可以读取迭代数据,并停止求解。默认是[]。看到输出函数和绘图函数
PlotFcn 函数名、函数句柄或函数句柄的单元格数组。对于自定义绘图函数,传递函数句柄。Plot函数可以读取迭代数据,绘制每个迭代,并停止求解程序。默认是[]。可用内置绘图功能:“pswplotbestf”。看到输出函数和绘图函数
SelfAdjustmentWeight 调整速度时每个粒子的最佳位置的加权。默认有限标量1.49。看到粒子群优化算法
SocialAdjustmentWeight 调整速度时邻域最佳位置的加权。默认有限标量1.49。看到粒子群优化算法
SwarmSize 在粒子群中,一个大于的整数1。默认是分钟(100,10 *据nvar),在那里据nvar是变量的个数。
UseParallel 并行计算目标函数真正的。默认是。看到并行或向量化的函数计算
UseVectorized 计算目标函数时采用向量化方式真正的。默认是。看到并行或向量化的函数计算

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

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

数据类型:结构体

输出参数

全部折叠

解,作为实向量返回,使目标函数在任何约束条件下最小化。

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

算法停止条件,以整数形式返回,确定算法停止的原因。下面列出了的值exitflag以及相应的原因particleswarm停止了。

1

相对于上一个目标值的变化options.MaxStallIterations迭代小于options.FunctionTolerance

0

超过迭代次数options.MaxIterations

1

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

2

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

3

最佳目标函数值如下options.ObjectiveLimit

4

最佳目标函数值没有变化options.MaxStallTime秒。

5

运行时间超过options.MaxTime秒。

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

迭代

求解器迭代次数

funccount

目标函数评估的次数。

消息

算法停止的原因。

rngstate

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

算法

有关粒子群优化算法的说明,请参阅粒子群优化算法

扩展功能

介绍了R2014b