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['total fraction new technologies'] zeros = np.zeros((outcome.shape[0], 1)) zeros[outcome[:,-1]>0.6] = 1 value = np.sum(zeros)/zeros.shape[0] return value, if __name__ == "__main__": ema_logging.log_to_stderr(ema_logging.INFO) model = EnergyTrans(r"..\data", "ESDMAElecTrans") ensemble = ModelEnsemble() ensemble.set_model_structure(model) ensemble.parallel = True policy_levers = {'Trigger subsidy T2': {'type':'range', 'values':(0,1)}, 'Trigger subsidy T3': {'type':'range', 'values':(0,1)}, 'Trigger subsidy T4': {'type':'range', 'values':(0,1)}, 'Trigger addnewcom': {'type':'list', 'values':[0, 0.25, 0.5, 0.75, 1]}} stats_callback, pop = ensemble.perform_robust_optimization(cases=10, reporting_interval=100, obj_function=obj_func, policy_levers=policy_levers, weights = (MAXIMIZE,), nr_of_generations=100, pop_size=10, crossover_rate=0.5, mutation_rate=0.02, mutationRate=0.01 ) save_optimization_results((stats_callback, pop), '../data/robust test.bz2')
ensemble = ModelEnsemble() ensemble.set_model_structure(model) policy_levers = {'Trigger a': {'type':'list', 'values':[0, 0.25, 0.5, 0.75, 1]}, 'Trigger b': {'type':'list', 'values':[0, 0.25, 0.5, 0.75, 1]}, 'Trigger c': {'type':'list', 'values':[0, 0.25, 0.5, 0.75, 1]}} cases = ensemble._generate_samples(10, UNION)[0] ensemble.add_policy({"name":None}) experiments = [entry for entry in ensemble._generate_experiments(cases)] for entry in experiments: entry.pop("model") entry.pop("policy") cases = experiments stats, pop = ensemble.perform_robust_optimization(cases=cases, reporting_interval=100, obj_function=obj_func, policy_levers=policy_levers, weights = (MINIMIZE,)*2, nr_of_generations=20, algorithm=epsNSGA2, pop_size=4, crossover_rate=0.5, mutation_rate=0.02, caching=True, eps=[0.01, 0.01] )