问题描述
我使用Scipy的差分进化来使用OMPython运行一些模拟。 我在Windows和Jupiter Notebook上工作。
当我仅使用1个处理器时,我的代码有效。但是,当我使用选项workers=-1
时,代码冻结(尽管目录中生成了一些文件),但出现以下错误。
from multiprocessing import Process,freeze_support
from scipy.optimize import differential_evolution
def Optimization_Modelica_General('arguments'):
'Some code'
Solution_GEN=differential_evolution(Optimization_Modelica,bounds=bounds_2,args=
('args'),updating='deferred',workers=-1)
if __name__ == "__main__":
from pathos.helpers import freeze_support
freeze_support()
Result_Gen_Final=Optimization_Modelica_General('arguments')
错误消息:
---------------------------------------------------------------------------
RemoteTraceback Traceback (most recent call last)
RemoteTraceback:
"""
Traceback (most recent call last):
File "C:\...\Anaconda3\lib\multiprocessing\pool.py",line 125,in worker
result = (True,func(*args,**kwds))
File "C:\...\Anaconda3\lib\multiprocessing\pool.py",line 48,in mapstar
return list(map(*args))
File "C:\...\Anaconda3\lib\site-packages\scipy\optimize\_differentialevolution.py",line 1261,in __call__
return self.f(x,*self.args)
File "C:\...\Fonc_complem_1.ipynb",line 310,in Optimization_Modelica
" \n",File "C:\...\Anaconda3\lib\site-packages\scipy\optimize\_differentialevolution.py",line 308,in differential_evolution
ret = solver.solve()
File "C:\...\Anaconda3\lib\site-packages\scipy\optimize\_differentialevolution.py",line 750,in solve
self._calculate_population_energies(
File "C:\...\Anaconda3\lib\site-packages\scipy\optimize\_differentialevolution.py",line 873,in _calculate_population_energies
calc_energies = list(self._mapwrapper(self.func,*self.args)
File "C:\...\Fonc_complem_2.ipynb",line 733,in Fonct_Obj_General
" # T_me_temp[i] = T_me_temp_brut[3*i-2]\n",File "C:\...\Fonc_complem_2.ipynb",line 425,in Simulator
" #au long de l'intervalle) \n",File "C:\...\Anaconda3\lib\site-packages\OMPython\__init__.py",line 1086,in simulate
raise Exception("Error: application file not generated yet")
Exception: Error: application file not generated yet
"""
The above exception was the direct cause of the following exception:
Exception Traceback (most recent call last)
<ipython-input-5-d40ce0161088> in <module>
4 freeze_support()
5
----> 6 Result_Gen_Final=Optimization_Modelica_General(po_stat_tt_intv,Nom_Modelica_po_stat_tt_intv,Type_simul_dyna_mult_int,Plage_variation_po_stat_tt_intv,step_gen,deb_int_gen,fin_int_gen,Vecteur_int_calib_st_dyn,modelpath,Nom_fichier_mo,Nom_fich,data_cond_lim,Data_mesu_gen,Type_Ind_FO,param_optim,initial_condit_temp,Directory_cd,data_cond_lim_fich_temporel,fich_res_Modelica_mat,Nom_Modelica_param_optim,Nom_Modelica_initial_condit_temp,Nom_Modelica_outlet_results_sim,Nom_Modelica_Function_Objectif,Plage_variation_param,M_population,Fichier_Excel_sortie_nom,M_STAT_population)
<ipython-input-4-cdce4edef5b3> in Optimization_Modelica_General(po_stat_tt_intv,M_STAT_population)
--> 208 Solution_GEN=differential_evolution(Optimization_Modelica,args=(Nom_Modelica_po_stat_tt_intv,Fichier_Excel_sortie_nom),callback=printCurrentIteration,maxiter=3,init=(random_init_val_bound_final_STAT),workers=-1)
~\Anaconda3\lib\site-packages\scipy\optimize\_differentialevolution.py in differential_evolution(func,bounds,args,strategy,maxiter,popsize,tol,mutation,recombination,seed,callback,disp,polish,init,atol,updating,workers,constraints)
306 workers=workers,307 constraints=constraints) as solver:
--> 308 ret = solver.solve()
309
310 return ret
~\Anaconda3\lib\site-packages\scipy\optimize\_differentialevolution.py in solve(self)
748 # only work out population energies for feasible solutions
749 self.population_energies[self.feasible] = (
--> 750 self._calculate_population_energies(
751 self.population[self.feasible]))
752
~\Anaconda3\lib\site-packages\scipy\optimize\_differentialevolution.py in _calculate_population_energies(self,population)
871 parameters_pop = self._scale_parameters(population)
872 try:
--> 873 calc_energies = list(self._mapwrapper(self.func,874 parameters_pop[0:nfevs]))
875 energies[0:nfevs] = calc_energies
~\Anaconda3\lib\site-packages\scipy\_lib\_util.py in __call__(self,func,iterable)
412 # only accept one iterable because that's all Pool.map accepts
413 try:
--> 414 return self._mapfunc(func,iterable)
415 except TypeError:
416 # wrong number of arguments
~\Anaconda3\lib\multiprocessing\pool.py in map(self,iterable,chunksize)
362 in a list that is returned.
363 '''
--> 364 return self._map_async(func,mapstar,chunksize).get()
365
366 def starmap(self,chunksize=None):
~\Anaconda3\lib\multiprocessing\pool.py in get(self,timeout)
769 return self._value
770 else:
--> 771 raise self._value
772
773 def _set(self,i,obj):
Exception: Error: application file not generated yet
您是否会知道问题出在哪里? 我尝试使例程中使用的函数腌制,但是仍然出现相同的错误。 预先感谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)