geatpy icon indicating copy to clipboard operation
geatpy copied to clipboard

关于使用multiprocessing的一些问题

Open MingjiaLi666 opened this issue 4 years ago • 2 comments

开发者您好,我在模仿soea demo6使用多进程时遇到了一些问题,似乎是subaimfunc无法序列化,具体报错信息如下,请问如何解决: Traceback (most recent call last): File "Method3_mp.py", line 522, in BayesianNetworkEvolution('alarm') File "Method3_mp.py", line 423, in BayesianNetworkEvolution [BestIndi, population] = myAlgorithm.run() # 执行算法模板,得到最优个体以及最后一代种群 File "Method3_mp.py", line 214, in run self.call_aimFunc(population) # 计算种群的目标函数值 File "/home/lmj/anaconda3/envs/BNSL/lib/python3.8/site-packages/geatpy/Algorithm.py", line 174, in call_aimFunc self.problem.aimFunc(pop) # 调用问题类的aimFunc() File "Method3_mp.py", line 396, in aimFunc pop.ObjV = np.array(result.get()) File "/home/lmj/anaconda3/envs/BNSL/lib/python3.8/multiprocessing/pool.py", line 768, in get raise self._value File "/home/lmj/anaconda3/envs/BNSL/lib/python3.8/multiprocessing/pool.py", line 537, in _handle_tasks put(task) File "/home/lmj/anaconda3/envs/BNSL/lib/python3.8/multiprocessing/connection.py", line 206, in send self._send_bytes(_ForkingPickler.dumps(obj)) File "/home/lmj/anaconda3/envs/BNSL/lib/python3.8/multiprocessing/reduction.py", line 51, in dumps cls(buf, protocol).dump(obj) AttributeError: Can't pickle local object 'BayesianNetworkEvolution..subAimFunc'

MingjiaLi666 avatar Feb 25 '21 11:02 MingjiaLi666

这个最好还是去multiprocessing那边发个issue问一下。

geatpy-dev avatar Feb 26 '21 08:02 geatpy-dev

我想请问一下开发者,是否采用了差分进化的遗传算法就会默认并行计算。 我想对模型中的一个参数进行优化分析,Python中算一个模型的时间大概是19s左右,我设置种群数量为200,最高进化50代,就算是串行计算一代的计算时间也就是19*200为3800s,可是我感觉采用差分进化法(soea_DE_best_1_L_templet)计算的时间跟传统的遗传算法差不多呀。请问我是哪里没有设置对嘛?

canhuaLiu avatar May 12 '21 12:05 canhuaLiu