首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有限粒子分辨率的粒子群优化算法

有限粒子分辨率的粒子群优化算法
EN

Stack Overflow用户
提问于 2019-09-27 18:53:04
回答 1查看 195关注 0票数 0

我正在用Python做一个大型的电力系统优化项目,我正在使用粒子群优化(PSO)来优化6个系统控制参数。然而,我正在努力寻找一个可以真正做我需要的PSO包。我目前使用的是'pyswarm‘包。

我的问题有6个控制变量,除了主要目标函数外,它还有约束。目标/适应度函数是在外部模拟中计算的,因此每次测试新粒子时,都会打开、运行sim程序,然后将数据导出到Python中。每次群测试大约需要16秒,使用群大小为20。因此,对于典型的1000次迭代优化,优化需要16,000秒,即4.4小时。我有450个场景需要优化,按照目前的速度,这将需要82天。显然,减少迭代次数将加快厚度,但某些场景需要一段时间才能收敛,因此如果可能的话,我希望保持高迭代次数。

我尝试过的所有粒子群优化实现都使用6+小数点分辨率将新粒子生成为浮点数。当我在物理系统中优化参数时,我真的只需要两位小数的结果。

为了加快优化速度,我想使用一个PSO包,您可以在其中设置粒子分辨率,即只尝试具有两个小数位的值。我认为这应该会让一切变得更快,因为可能值的范围大大减少了。我使用过pyswarms、pyswarm和psopy,但还没有找到任何可以做到这一点的软件包。有人知道我是怎么实现这个的吗?我并不打算编写自己的PSO实现,只是为了使用现有的包。

编辑:为了澄清,我的逻辑是,目前pyswarm为粒子生成6个小数点分辨率的浮点值,因此对于边界范围为20的粒子,有2000万个可能的值。如果粒子生成限制为2位小数,则同一粒子只有2000个可能的值。使用群大小为20,这意味着在100次迭代中,该粒子的每个可能值都会进行测试,因此解决方案很可能在100次迭代中收敛(尽管每次更新粒子时都会假设值是唯一的,我不认为总是这样)。

这个假设是正确的,还是我的逻辑有缺陷?

EN

回答 1

Stack Overflow用户

发布于 2019-09-27 21:57:42

为了解决您的编辑(有点长,因此没有注释),例如,您不仅仅有一个20的范围,该范围内表示了2000个可能的值。你有六个控制变量。每个控制变量都有一些要搜索的有效范围,并且粒子分辨率可以表示该范围内的一些可能值。

假设每个粒子可以代表每个控制变量的2000个不同的可能值,那就是每个粒子可能的参数组合2000^66.4 * 10^19 (这很大)。我不认为您可能会详尽地搜索整个范围(请参阅最后一节)。

所有这些都是说,较低分辨率的粒子可能不会达到完美的解决方案,但对于最终的性能,您可能不会受到粒子分辨率的太多限制。在如此大的搜索空间中,您更有可能收敛到某个局部最小值;我怀疑每个粒子丢失的分辨率是否会有太大影响。

穷举搜索

实际上,大数字是很有趣的!搜索整个参数空间需要多长时间?假设您能够将评估时间加快1000倍,因此处理每个群只需要.016秒。这是每0.016秒20次猜测或0.0008秒(800us)每次猜测。这仍然是5.12e16秒或1.6万亿年来详尽地搜索空间。

可能不是一个确定的来源,但remaining life of the Sun只有50亿年,所以如果你想在太阳系灭亡之前进行详尽的搜索,你需要更快地寻找。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58133085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档