主要内容

particleswarm

粒子群优化

描述

例子

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

请注意

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

例子

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(有趣)
优化结束:目标值相对于上一个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)≥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迭代次数小于选项。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 函数句柄或函数句柄的单元格数组。输出函数可以读取迭代数据,并停止求解器。默认是[]。看到输出函数和Plot函数
PlotFcn 函数名,函数句柄,或函数句柄的单元格数组。对于自定义的plot函数,传递函数句柄。Plot函数可以读取迭代数据,绘制每次迭代,并停止求解器。默认是[]。可自带plot功能:“pswplotbestf”。看到输出函数和Plot函数
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

迭代被输出函数或plot函数停止。

2

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

3

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

4

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

5

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

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

迭代

求解器迭代次数

funccount

目标函数求值的次数。

消息

算法停止的原因。

hybridflag

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

rngstate

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

算法

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

选择功能

应用程序

优化实时编辑器任务提供了一个可视化的界面particleswarm

扩展功能

版本历史

介绍了R2014b

Baidu
map