def maxmin_optimize(): ema_logging.log_to_stderr(ema_logging.INFO) model = TestModel("", 'simpleModel') #instantiate the model ensemble = ModelEnsemble() #instantiate an ensemble ensemble.set_model_structure(model) #set the model on the ensemble ensemble.parallel = True ensemble.processes = 12 def obj_function1(outcomes): return outcomes['y'] policy_levers = { "L1": (0,1), "L2": (0,1)} results = ensemble.perform_maximin_optimization(obj_function1 = obj_function1, policy_levers = policy_levers, minimax1='minimize', nrOfGenerations1=50, nrOfPopMembers1=200, minimax2 = "maximize", nrOfGenerations2 = 50, nrOfPopMembers2 = 100, ) graph_errorbars_raw(results['stats']) plt.show()
def visualize_optimization(): import cPickle results = cPickle.load(open("..\..\..\models\CANER\Flu\SD\maximintest.cPickle")) # best_case, best_individual_score, results = results graph_errorbars_raw(results['stats']) graph_pop_heatmap_raw(results['raw']) plt.show()
def outcome_optimize(): ema_logging.log_to_stderr(ema_logging.INFO) model = TestModel("", 'simpleModel') #instantiate the model ensemble = ModelEnsemble() #instantiate an ensemble ensemble.set_model_structure(model) #set the model on the ensemble policy = {"name": "test", "L1": 1, "L2": 1} ensemble.add_policy(policy) def obj_func(results): return results['y'] results = ensemble.perform_outcome_optimization(obj_function=obj_func, minimax = 'minimize', nrOfGenerations = 1000, nrOfPopMembers = 10) graph_errorbars_raw(results['stats']) plt.show()
def robust_optimize(): ema_logging.log_to_stderr(ema_logging.INFO) model = TestModel("", 'simpleModel') #instantiate the model ensemble = ModelEnsemble() #instantiate an ensemble ensemble.set_model_structure(model) #set the model on the ensemble policy_levers = { "L1": (0,1), "L2": (0,1)} def obj_func(results): return np.average(results['y']) results = ensemble.perform_robust_optimization(cases=1000, obj_function=obj_func, policy_levers=policy_levers, minimax='minimize', nrOfGenerations=50, nrOfPopMembers=20 ) graph_errorbars_raw(results['stats']) plt.show()
outcome = outcomes['deceased population region 1'] zeros = np.zeros((outcome.shape[0], 1)) zeros[outcome[:,-1]<1000000] = 1 value = np.sum(zeros)/zeros.shape[0] return value if __name__ == "__main__": # ema_logging.log_to_stderr(ema_logging.INFO) # model = FluModel(r'..\..\..\models\CANER\Flu\SD', "fluCase") # # ensemble = ModelEnsemble() # ensemble.set_model_structure(model) # ensemble.parallel = True # # policy_levers = {'trackperiod': (1,8), # 'delaytime': (0.01,2)} # # res = ensemble.perform_robust_optimization(cases=1000, # obj_function=obj_func, # policy_levers = policy_levers, # nrOfPopMembers=50, # nrOfGenerations=50, # crossoverRate=0.7, # mutationRate=0.01) # cPickle.dump(res, open(r'FLU robust optimization results.cPickle', 'w')) res = cPickle.load(open(r'FLU robust optimization results.cPickle', 'r')) graph_pop_heatmap_raw(res['raw']) graph_errorbars_raw(res['stats']) plt.show()