particleswarm
粒子群优化
语法
描述
例子
最小化一个简单函数
最小化一个简单的二元函数。
定义目标函数。
有趣= @ (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
- - - - - -数量的变量
正整数
磅
- - - - - -下界
[]
(默认)|实向量或数组
下界,指定为实向量或双精度数组。磅
中的元素的下界磅
≤x
≤乌兰巴托
.
在内部,particleswarm
将一个数组磅
的向量磅(:)
.
例子:磅=[0;无穷;4)
意味着x(1)≥0
,x(3)≥4
.
数据类型:双
乌兰巴托
- - - - - -上界
[]
(默认)|实向量或数组
上界,指定为实向量或双精度值数组。乌兰巴托
中元素的上界磅
≤x
≤乌兰巴托
.
在内部,particleswarm
将一个数组乌兰巴托
的向量乌兰巴托(:)
.
例子:乌兰巴托= (Inf; 4; 10)
意味着x(2)≤4
,x(3)≤10
.
数据类型:双
选项
- - - - - -选项particleswarm
选择使用optimoptions
选项particleswarm
的输出optimoptions
函数。
的选项中缺少一些选项optimoptions
显示。这些选项以斜体显示。有关详细信息,请参见视图选项.
CreationFcn |
创建初始蜂群的函数。指定为 |
显示 |
返回到命令行的显示级别。
|
DisplayInterval | 迭代显示的间隔。迭代显示为每DisplayInterval 迭代。默认是1 . |
FunctionTolerance |
带有默认值的非负标量1 e-6 .当最佳目标函数值相对于最后一个函数值的相对变化时迭代结束MaxStallIterations 迭代少于选项。FunctionTolerance . |
FunValCheck | 检查目标函数和约束值是否有效。 |
HybridFcn |
之后继续优化的函数
也可以是指定混合函数及其选项的单元格数组,例如 看到何时使用混合函数. |
InertiaRange |
具有相同符号值的双元素实向量。给出了自适应惯量的上下限。为获得恒定的(非自适应的)惯性,设置的两个元素InertiaRange 相同的值。默认是[0.1, 1.1] .看到粒子群优化算法. |
InitialSwarmMatrix |
粒子的初始总体或部分总体。米 ——- - - - - -据nvar 矩阵,每一行代表一个粒子。如果米 <SwarmSize ,然后particleswarm 创建更多的粒子,使总数为SwarmSize .如果米 >SwarmSize ,然后particleswarm 使用第一个SwarmSize 行。 |
InitialSwarmSpan |
粒子位置的初始范围
|
MaxIterations |
最大迭代次数particleswarm 需要。默认是据nvar 200 * ,在那里据nvar 是变量的个数。 |
MaxStallIterations |
带默认值的正整数20. .当最佳目标函数值相对于最后一个函数值的相对变化时迭代结束MaxStallIterations 迭代少于选项。FunctionTolerance . |
MaxStallTime |
在最佳已知目标函数值没有改进的情况下的最大秒数。带默认值的正标量正 . |
MaxTime |
以秒为单位的最大时间particleswarm 运行。默认是正 . |
MinNeighborsFraction |
最小自适应邻域大小,来自的标量0 来1 .默认是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
——解决方案
真正的向量
解,作为一个实向量返回,该实向量使目标函数受任何约束条件的影响最小。
fval
——客观价值
真正的标量
目标值,作为实标量返回有趣的(x)
.
exitflag
-算法停止条件
整数
算法停止条件,返回为整数,标识算法停止的原因。的值如下所示exitflag
以及相应的原因particleswarm
停止了。
|
相对于上一个目标值的变化 |
|
超过的迭代次数 |
|
迭代被输出函数或绘图函数停止。 |
|
边界是不一致的:对某些人来说 |
|
最佳目标函数值如下 |
|
最佳目标函数值在内没有变化 |
|
运行时间超过 |
输出
-解决过程总结
结构
解决方案流程摘要,作为包含优化流程信息的结构返回。
|
求解器迭代的次数 |
|
目标函数评价数。 |
|
算法停止的原因。 |
|
混合函数的退出标志。关系到 |
|
算法启动前默认随机数生成器的状态。 |
算法
有关粒子群优化算法的描述,请参见粒子群优化算法.
选择功能
应用程序
的优化Live Editor任务提供了一个可视化的界面particleswarm
.
扩展功能
自动并行支持万博1manbetx
通过使用并行计算工具箱™自动并行运行计算来加速代码。
若要并行运行,请设置“UseParallel”
选项真正的
.
选择= optimoptions ('
solvername
”、“UseParallel’,真的)
有关更多信息,请参见如何在全局优化工具箱中使用并行处理.
版本历史
介绍了R2014b
Abrir比如
Tiene una versión modificada de este ejemplo。¿Desea abrir este ejemplo con sus modificaciones?
第一de MATLAB
Ha hecho clic en unenlace que对应一个este comando de MATLAB:
Ejecute el comando introduciéndolo en la ventana de comandos de MATLAB。Los navegadores web no admit comandos de MATLAB。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。