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 |
函数句柄或函数句柄的单元格数组。输出函数可以读取迭代数据,并停止求解器。默认是[] 。看到输出函数和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
——解决方案
真正的向量
解,作为一个实向量返回,该实向量使目标函数服从于任何约束条件。
fval
——客观价值
真正的标量
客观值,作为真实标量返回有趣的(x)
。
exitflag
-算法停止条件
整数
算法停止条件,返回为一个整数,标识算法停止的原因。的值如下所示exitflag
以及相应的原因particleswarm
停止了。
|
相对于上一个目标值的变化 |
|
迭代次数超过 |
|
迭代被输出函数或plot函数停止。 |
|
边界是不一致的:对一些人来说 |
|
最佳目标函数值如下 |
|
内的最佳目标函数值没有变化 |
|
运行时间超过 |
输出
-求解过程总结
结构
解决方案流程总结,作为包含优化流程信息的结构返回。
|
求解器迭代次数 |
|
目标函数求值的次数。 |
|
算法停止的原因。 |
|
混合函数的退出标志。关系到 |
|
默认随机数生成器在算法启动前的状态。 |
算法
关于粒子群优化算法的描述,请参见粒子群优化算法。
选择功能
应用程序
的优化实时编辑器任务提供了一个可视化的界面particleswarm
。
扩展功能
自动并行支持
通过使用并行计算工具箱™自动并行运行计算来加速代码。
若要并行运行,请设置“UseParallel”
选项真正的
。
选择= optimoptions ('
solvername
”、“UseParallel’,真的)
更多信息,请参见如何在全局优化工具箱中使用并行处理。
版本历史
介绍了R2014b
MATLAB命令
你点击了一个对应这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令即可运行该命令。Web浏览器不支持MATLAB命令。
你也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。