python - 仅获取 pyswarm 粒子生成的整数

标签 python integer

我正在使用 pyswarm,我想知道是否有人知道如何更改设置以仅获取群粒子 (x1, x2) 的整数!

from pyswarm import pso
def banana(x):
      x1 = x[0]     #  Get only integer number 
      x2 = x[1]     #  Get only integer number 
      return x1**4 - 2*x2*x1**2 + x2**2 + x1**2 - 2*x1 + 5
def con(x):
     x1 = x[0]
     x2 = x[1]
     return [-(x1 + 0.25)**2 + 0.75*x2]

lb = [-3, -1]
ub = [2, 6]

xopt, fopt = pso(banana, lb, ub, f_ieqcons=con)

最佳答案

今天遇到同样的问题,稍微看了一下代码,发现根本没有处理这个行为。此外,自 2015 年以来存储库上没有任何事件......

此外,将初始实域空间映射到整数空间并不是一个好主意:两个整数之间的所有解都将使用相同的参数计算。

更改目标函数参数意味着您定义了一个为非整数参数返回的“错误”值(某种被优化问题惩罚的极值)。但是您可能会以这种方式面临局部最优。

所以最后您可能想要搜索其他实现 PSO 的库,或者甚至尝试在实际的 pyswarm 代码上实现以支持粒子的自定义域。

编辑: 这是一篇关于整数规划 PSO 的论文:http://www.cs.uoi.gr/~kostasp/papers/C03.pdf

关于python - 仅获取 pyswarm 粒子生成的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43090407/

相关文章:

python - 如何使用 Python 检索网页的页面标题?

python - 当两个数组都已排序时,更快的搜索排序方法

python - 潜在语义分析结果

swift - 使用比较运算符扩展 Int 枚举

integer - EDSAC - 17 位和 35 位整数

python - 在 Pandas 中将 IP 地址转换为整数

python - 如何从 Pandas 中的两列创建一个数组

python - 使用 Raspbian 和 Raspberry Pi 将运动文件上传到 Google Drive

R:将数据框中的文本(字符)转换为整数类型

java:将整数作为无符号 8 位整数写入文件