@@ -283,8 +283,6 @@ def __init__(self, *args, **kwargs):
283283 super (_CMASolutionDict_functional , self ).__init__ (* args , ** kwargs )
284284 self .last_solution_index = 0
285285
286- # TODO: insert takes 30% of the overall CPU time, mostly in def key()
287- # with about 15% of the overall CPU time
288286 def insert (self , key , geno = None , iteration = None , fitness = None ,
289287 value = None , cma_norm = None ):
290288 """insert an entry with key ``key`` and value
@@ -301,36 +299,35 @@ def insert(self, key, geno=None, iteration=None, fitness=None,
301299 # archive returned solutions, first clean up archive
302300 if iteration is not None and iteration > self .last_iteration and (iteration % 10 ) < 1 :
303301 self .truncate (300 , iteration - 3 )
304- elif value is not None and value .get ('iteration' ):
305- iteration = value ['iteration' ]
306- if (iteration % 10 ) < 1 :
307- self .truncate (300 , iteration - 3 )
302+ elif value is not None :
303+ iteration_tmp = value .get ('iteration' )
304+ if iteration_tmp :
305+ iteration = iteration_tmp
306+ if (iteration % 10 ) < 1 :
307+ self .truncate (300 , iteration - 3 )
308308
309309 self .last_solution_index += 1
310310 if value is not None :
311- try :
312- iteration = value ['iteration' ]
313- except :
314- pass
311+ iteration = value .get ('iteration' , iteration )
315312 if iteration is not None :
316313 if iteration > self .last_iteration :
317314 self .last_solution_index = 0
318315 self .last_iteration = iteration
319316 else :
320317 iteration = self .last_iteration + 0.5 # a hack to get a somewhat reasonable value
321318 if value is not None :
322- self [ key ] = value
319+ entry = value
323320 else :
324- self [ key ] = {'pheno' : key }
321+ entry = {'pheno' : key }
325322 if geno is not None :
326- self [key ]['geno' ] = geno
327- if iteration is not None :
328- self [key ]['iteration' ] = iteration
323+ entry ['geno' ] = geno
324+ entry ['iteration' ] = iteration
329325 if fitness is not None :
330- self [ key ] ['fitness' ] = fitness
326+ entry ['fitness' ] = fitness
331327 if cma_norm is not None :
332- self [key ]['cma_norm' ] = cma_norm
333- return self [key ]
328+ entry ['cma_norm' ] = cma_norm
329+ self [key ] = entry
330+ return entry
334331
335332class _CMASolutionDict_empty (dict ):
336333 """a hack to get most code examples running"""
0 commit comments