问题标签 [particle-swarm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
230 浏览

optimization - 调整粒子群优化 (PSO) 的参数

粒子群优化(PSO)的参数调整有离线和在线两种方法。在离线方式中,元优化用于通过使用另一个覆盖优化器来调整 PSO 的参数。在在线方式中,有两种技术,即自适应,“包括将部分或全部优化器行为参数添加到搜索空间,从而使它们与手头的问题一起进行优化”。另一种技术是 Meta-Adaptation,“其中一个覆盖优化器试图在优化问题期间以在线方式调整另一个优化器的参数。”

“元优化的概念。黑盒优化器以离线方式用作叠加元优化器,用于寻找另一种优化方法的良好行为参数,进而用于优化一个或多个实际问题。”

在标准 PSO 中,粒子通过使用均匀随机数进行初始化,并且这些粒子使用更新方程进行更新。根据目标函数的最佳值选择最佳解决方案。

在我的工作中。我有两个数据集,训练数据集和理论数据集,我需要使用训练数据而不是随机数来初始化粒子。

在这种情况下,如何使用训练和理论数据集调整 PSO 的参数。

另外,我有一个问题,我在 PSO 的初始步骤中获得了最佳成本,并且在初始步骤中没有参数或更新方程。

是否可以使用机器学习方法调整参数?我怎样才能做到这一点?

0 投票
1 回答
124 浏览

matlab - 巨大的参数、约束和目标函数:如何在 Matlab 中处理这个?

我想找到最小化这个目标函数的Alpha系数:

和 :

A= 向量 1d (69X1)

B= 矩阵 2d (69X1000)

Alpha_i 未知参数的向量 (1X1000),其中0 < Alpha < 1sum(Alpha) = 1

处理这么多参数的最佳优化方法是什么(我可以尝试减少它仍然会保留很多)?如何在优化过程中引入第二个约束,即sum(Alpha_i) = 1

非常感谢您的宝贵帮助。

最好的,

本杰明

0 投票
1 回答
302 浏览

particle-swarm - Swarm 中的粒子群优化 (PSO) 算法

粒子群优化(PSO)算法中,是否可以使用数据集来初始化粒子的位置,而不是使用统一的随机数?

0 投票
1 回答
796 浏览

r - R中基于PSO和K-means的文本文档聚类

我是粒子群优化的新手。我阅读了关于基于 PSO 和 K-means 的聚类的研究论文,但我没有找到任何相同的工作示例。非常感谢任何形式的帮助。提前致谢!

我想在 R 中使用 PSO 和 K-means 执行文本文档聚类。我的基本想法是,首先 PSO 会给我集群质心的优化值,然后我必须使用 PSO 的集群质心的那些优化值作为k-means 的初始簇质心以获取文档簇。

以下是描述我到目前为止所做的代码!

(在我的实际数据中,我有 20 个文档,包含 951 个术语,即dim(dtm) = 20*951

但上述hydroPSO()功能不起作用。它给出错误Error in 1:nrow(y) : argument of length 0。我搜索了它,但没有得到任何适合我的解决方案。

我还对我的目标函数进行了一些更改,这次 hydroPSO() 有效,但我猜不正确。我将初始质心矩阵作为维度为 2*7 的参数传递,但该函数仅返回 1*7 优化值。我不明白它的原因。

上述函数的输出。

我想我hydroPSO()以错误的方式将参数传递给了。请纠正我做错的地方。

非常感谢!

0 投票
1 回答
284 浏览

evolutionary-algorithm - 如何使用差分进化算法选择最佳参数

对于课堂作业,我需要优化 4 个 10 维函数,在实施差分进化时,我注意到所有函数都需要不同的参数设置。通过玩弄它似乎特别是在选择高交叉率和大约 0.5 的 F 似乎工作正常时。

然而,在一个函数上,10 维 Katsuura 函数,我的微分算法似乎失败了。我尝试了一堆参数,但在满分 10 分中得分为 0.01。差分进化是否不适用于某些目标函数?

我也尝试为这个问题实现 PSO,但也失败了,所以我似乎认为这个函数具有某些属性,只能通过某些算法来解决?

我在这篇文章中启发了我的 DE: https ://en.wikipedia.org/wiki/Differential_evolution

亲切的问候,

基斯蒂尔

0 投票
0 回答
363 浏览

python - 如何在 PSO 优化的神经网络代码中使用不同的损失函数?

我正在使用 pyswarms PSO 进行神经网络优化。我正在尝试创建一个输入层和输出层的网络。

我修改了示例中的代码,但出现错误

此外,这个例子在最后一层实现了 softmax 函数。我应该如何将它与不同的损失函数一起使用?原始代码可以在这里找到。

0 投票
1 回答
921 浏览

python - 如何使用 PSO 优化 CNN 的权重?

我想使用粒子群优化来优化 CNN 的权重。基本上,权重位于倒数第二层和要优化的过滤器。PSO 替换了优化器,其余工作以相同的方式完成。是否可以使用 Keras 或 Tensorflow?编写了附在下面的 PSO 代码。

0 投票
0 回答
107 浏览

r - 粒子群优化调用计数

在尝试使用 R-CRAN 中的psoorhydroPSO包时,我需要使用/访问计数(当前迭代、当前数字函数评估和当前重新启动)来使用我一直在编写的函数。但是,我似乎无法解决这个问题。关于如何在目标函数中调用当前迭代/函数/重新启动的任何建议都会很棒。一段示例代码将不胜感激,因为我似乎无法完全理解文档。

背景:
我的函数需要迭代编号,因为它是一些用 FORTRAN 编写的代码的包装器,在这些代码中生成输入文件并将输出文件读回 R。我希望迭代编号仍然存在,以便我可以返回到以前的输出文件以供进一步分析。这方面的一个例子是:
~/runs/<restart #>/<iteration>/<particle>/input/
~/runs/<restart #>/<iteration>/<particle>/output/

包装函数接受参数,自动生成输入文件,运行 FORTRAN 模型,然后在输出中解析并对它们进行后处理(例如性能指标计算)。

0 投票
3 回答
197 浏览

localization - 卡尔曼滤波需求

我有一个群体机器人项目。定位系统使用超声波和红外发射器/接收器完成。精度为 +-7 厘米。我能够遵循领导者算法。但是,我想知道如果传感器原始数据良好,为什么我还必须使用卡尔曼滤波器?它会改善什么?不仅会延迟发送给机器人的坐标(坐标不会立即更新,因为每个机器人每秒发送 4 次坐标需要时间来进行卡尔曼滤波器数学运算)

0 投票
0 回答
236 浏览

c++ - 当通过类似于 PSO 的算法优化 Schwefel 函数时,Matlab 和 C++ 会产生不同的结果

这个问题可能很长,非常感谢您的耐心等待。核心问题是我使用 matlab 和 c++ 来实现优化算法,但它们为我提供了不同的结果(matlab 更好)。

我最近在研究一些进化算法,并对 PSO(粒子群优化)的一种变体感兴趣,它被称为竞争群优化器(2015 年出生)。这是论文链接http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=6819057

该算法的基本思想是首先在搜索空间中产生一些随机粒子并赋予它们随机速度。在每次迭代中,我们将它们随机配对,并让每对粒子比较它们的目标函数值。赢家(具有更好的客观价值观)保持现状,而输家则通过向赢家学习(走向赢家)来更新自己。

假设在迭代 t 时,粒子 i 和 j 被比较并且 i 更好。然后我们按照这些公式更新迭代 t+1 的粒子 j。如果粒子 j 超出搜索空间,我们只需将其拉回边界即可。R_1、R_2、R_3都是从[0, 1]均匀抽取的随机向量;操作“otimes”表示元素乘积;phi 是一个参数;x_bar 是 swarm 的中心。

例如,假设现在我要最小化一个 500 维的 Schwefel 函数(最小化最大绝对元素)并且我使用 250 个粒子,设置 phi=0.1,搜索空间为 500 维 [-100, 100]。当 C++ 卡在 85 到 90 之间时,Matlab 可以返回大约 35 的值。我无法弄清楚问题出在哪里。

让我在这里附上我的 matlab 和 c++ 代码。

(我没有写 C++ 函数。)

那么,最后,为什么我的 c++ 代码不能重现 matlab 的结果?非常感谢。