0
我正在使用遺傳算法來解決優化問題。 由於健身評估耗時,我使用記憶來加速計算。它是通過以下方式實現:使用字典進行Python記憶 - 性能問題
def memoize(f):
memo = {}
def helper(my_input):
if my_input not in memo:
if len(memo)%100000==0:
print('increased memo size:', len(memo))
memo[my_input] = f(my_input)
return memo[my_input]
return helper
@memoize
def eval_fitness(individual):
#time consuming calc
return fitness
我注意到,迅速在第一代備忘錄字典大小的增加,然後(在產生500例如達到14M鍵)增加得更慢。
另一方面,隨着記憶的回報,每代的經過時間在第一代中是高的(即40秒),然後是下降。不過,如上圖所示,我注意到經過時間數據序列的非單調行爲:計算速度變慢,整體計算時間急劇增加。
我使用單個進程。內存使用率安全地低於20%。
- 有關此行爲的根本原因的任何想法?
- 我該如何避免這種慢下來?
謝謝你的回答。我編輯了我的問題,添加了每代字典大小的圖。實際上,這表明沒有人口穩定的這種時刻/很多新的個人;事實上,它與時間流逝的情節是不一致的。 –