logger.info("Collect tasks that needs to be calculated") for optimizer in config.LIST_OF_OPTIMIZERS: for problem in config.LIST_OF_PROBLEMS: optimizerId = str(optimizer.__name__) problemId = str(problem.__name__) for k in range(config.K): if not db.exists(optimizerId, problemId, str(k)): #optimizer().apply(problem(), config.MAX_EVALUATIONS) taskList.append({ 'optimizer': optimizer, 'problem': problem, 'maxeval': config.MAX_EVALUATIONS, 'k': k }) elif (config.REPEAT_INCOMPLETE and (np.shape( (db.get(optimizerId, problemId, str(k)))['scores'])[0] < config.MAX_EVALUATIONS)): logger.info("Repeat evaluation of " + str(optimizerId) + " on " + str(problemId) + " k=" + str(k) + " because the previous did not complete 100%") logger.info("Last results: " + str( np.shape((db.get(optimizerId, problemId, str(k)) )['scores'])[0])) #if there is already an evaluation, but it contains less values than configured (meaning it stopped somewhere because of some numerical issues) #we add it again and hope that the issues will not appear this time (this is mostly for AdaLipo) taskList.append({ 'optimizer': optimizer, 'problem': problem, 'maxeval': config.MAX_EVALUATIONS, 'k': k })