我是python的新手,并开始使用遗传算法(GA)进行某种曲线拟合.对于那个GA,我使用(真棒)pyevolve库(http://pyevolve.sourceforge.net/),它能够通过使用多处理极大地减少计算时间.
这就是我的问题出现的地方:我想要近似的曲线是一个从excel文件中读取并在程序开头存储为全局变量的数组.使用python多处理模块时,每个进程都使用自己的全局变量创建自己的python实例.这导致每一个人,在每一代算法(意味着每个过程)中一次又一次地打开和读取excel文件.打开大的excel文件会导致大量的时间,因此只需打开一次该文件并使读取数组可供每个进程/个人使用,这将是一件好事.
多处理是在pyevolve库中启动的,我不想更改它以便于更新.不幸的是,这意味着只需通过例如将变量传递给流程池
p = Process(target=my_func,args=(my_array))
对我来说不是一个选择.这是我到目前为止找到的唯一解决方案.
有没有人知道从每个进程访问my_array的另一种方法?
提前致谢!
Pyevolve 通常用于 python 2.7。有什么办法可以在 python 3 中安装和使用 pyevolve 吗?我知道还有另一个包 DEAP 用于与 python 3 兼容的遗传算法,但不知何故我必须使用 pyevolve。
我尝试过,但我认为它不受支持,所以 pip install pyevolve 抛出错误。
我正在尝试使用DEAP遗传算法来解决一个与背包问题不同的优化问题.染色体由整数向量表示,约束条件是向量之和必须等于某个数字X.在适应性评估中处理这个问题似乎效率低,因为相对较少的交叉/突变会导致有一个总和恰好等于X的向量.
相反,似乎我应该将交叉和突变重新映射到有限的可能解决方案中.我应该在DEAP中使用装饰器来实现这个,还是有人知道更好的方法来解决这个问题?有没有人有这种情况的示例代码的链接?
我目前正在使用Pyevolve包解决一些遗传算法问题.我想知道是否有任何在Pyevolve包中使用Pareto排名的例子,因为我有多个评估函数.
如果不存在,你能不能提供一些Pareto排名算法的伪代码.我想自己实现它.
谢谢!!