def test_experiments_to_cases(): from examples.FLUvensimExample import FluModel from expWorkbench.model import SimpleModelEnsemble EMAlogging.log_to_stderr(EMAlogging.INFO) data = load_results(r'../analysis/1000 flu cases.cPickle') experiments, results = data cases = experiments_to_cases(experiments) model = FluModel(r'..\..\models\flu', "fluCase") ensemble = SimpleModelEnsemble() ensemble.set_model_structure(model) ensemble.perform_experiments(cases)
def test_feature_selection(): from expWorkbench.model import SimpleModelEnsemble from examples.FLUvensimExample import FluModel log_to_stderr(level= INFO) model = FluModel(r'..\..\models\flu', "fluCase") ensemble = SimpleModelEnsemble() ensemble.parallel = True ensemble.set_model_structure(model) policies = [{'name': 'no policy', 'file': r'\FLUvensimV1basecase.vpm'}, {'name': 'static policy', 'file': r'\FLUvensimV1static.vpm'}, {'name': 'adaptive policy', 'file': r'\FLUvensimV1dynamic.vpm'} ] ensemble.add_policies(policies) results = ensemble.perform_experiments(5000) results = feature_selection(results, classify) for entry in results: print entry[0] +"\t" + str(entry[1])
def test_save_and_load(): import matplotlib.pyplot as plt from expWorkbench.EMAlogging import log_to_stderr, INFO from expWorkbench.model import SimpleModelEnsemble from examples.FLUvensimExample import FluModel from analysis.graphs import lines log_to_stderr(level= INFO) model = FluModel(r'..\..\models\flu', "fluCase") ensemble = SimpleModelEnsemble() # ensemble.parallel = True ensemble.set_model_structure(model) policies = [{'name': 'no policy', 'file': r'\FLUvensimV1basecase.vpm'}, {'name': 'static policy', 'file': r'\FLUvensimV1static.vpm'}, {'name': 'adaptive policy', 'file': r'\FLUvensimV1dynamic.vpm'} ] ensemble.add_policies(policies) results = ensemble.perform_experiments(10) file = r'C:\eclipse\workspace\EMA workbench\models\results.cPickle' save_results(results, file) results = load_results(file) lines(results) plt.show()
# EMAlogging.debug("no policy specified") super(EnergyTrans, self).model_init(policy, kwargs) #pop name policy = copy.copy(policy) policy.pop('name') for key, value in policy.items(): vensim.set_value(key, value) if __name__ == "__main__": logger = logging.log_to_stderr(logging.INFO) model = EnergyTrans(r"..\VensimModels\TFSC", "ESDMAElecTrans") ensemble = SimpleModelEnsemble() ensemble.set_model_structure(model) cases, uncertainties = ensemble._generate_cases(1) valuelist = [15.467089994193 , 18.3948367845855 , 17.5216359599053 , 0.0323513175268276 , 0.0267216806566911 , 0.0252897989265933 , 0.0211748970259063 , 0.0192967619764282 , 0.0298868721235403 , 0.026846492561752 , 0.0282265728603356 , 0.0274643497911105 , 0.0206173186487346 , 0.930953610229856 , 1.05807449426449 , 58.6261672319115 , 1.0959476696141 , 48.4897275078371 , 79.8968117041453 , 2.03012275630195 , 2.33576352581696 , 2.60266175740213 , 1.24700542123355 , 3.06884098418713 , 1 , 0 , 0 , 0 , 0 , 1.45807445678444 , 3.53395235847141 , 1.75257486371618 , 2.9795030911447 , 4.00199168664975 , 1.97473349200058 , 4.74196793795403 , 4.72730891245437 , 0 , 0 , 14826.4074143275 , 1.24609526886412 , 1.18827514220571 , 1.09824115488565 , 1245886.83942348 , 6282282.69560999 , 6118827.67237203 , 9531496.10651471 , 8693813.50295679 , 32.948697875027 , 17.1705785135149 , 13.0971274404015 , 3.74255065304761 , 1.36231655867486 , 1.92101352688469 , 3.8941723138427 , 0.898745338298322 , 0.782806406356795 , 0.817631734201507 , 0.705822656618514 , 43.3820783577107] newcases = [] case = {} i=0 for uncertainty in uncertainties: print uncertainty.name case[uncertainty.name] = valuelist[i] i+=1 # case['desired fraction'] = 1.0
# self.uncertainties.append(CategoricalUncertainty((1,3,10,1000), "order lifetime T3", default = 3)) # self.uncertainties.append(CategoricalUncertainty((1,3,10,1000), "order lifetime T4", default = 3)) def model_init(self, policy, kwargs): try: self.modelFile = policy['file'] except: EMAlogging.debug("no policy specified") super(EnergyTrans, self).model_init(policy, kwargs) if __name__ == "__main__": # logger = logging.log_to_stderr(logging.INFO) model = EnergyTrans(r"..\..\models\EnergyTrans", "ESDMAElecTrans") ensemble = SimpleModelEnsemble() ensemble.set_model_structure(model) def eval_func(chromosome): x1 = chromosome[0] x2 = chromosome[1] # ensemble.parallel = True experiment = {"lifetime T1":x1, "lifetime T2": x2} experiments = [experiment] results = ensemble.perform_experiments(experiments) print results[1]['total fraction new technologies'][0, -1] return results[1]['total fraction new technologies'][0, -1]
## activationTimeStep = activationTimeStep ## else: ## activationTimeStep = np.array([0]) # results[output.name] = activationTimeStep self.output = results if error: raise CaseError("run not completed", case) if __name__ == "__main__": logger = logging.log_to_stderr(logging.INFO) model = EnergyTrans(r'..\..\models\CANER\CESUN', "ESDMAElecTrans") model.step = 4 #reduce data to be stored ensemble = SimpleModelEnsemble() ensemble.set_model_structure(model) ensemble.parallel = True policies = [ {'name': 'No Policy', 'file': r'\CESUN_no.vpm'}, {'name': 'Basic Policy', 'file': r'\CESUN_basic.vpm'}, {'name': 'Adaptive Policy', 'file': r'\CESUN_adaptive.vpm'}, # {'name': 'optimized adaptive', # 'file': r'\CESUN_optimized2.vpm'}, {'name': 'Optimized Adaptive Policy', 'file': r'\CESUN_optimized_new.vpm'} ]
# activationTimeStep = np.array([0]) ## if activationTimeStep.shape[0] > 0: ## activationTimeStep = activationTimeStep ## else: ## activationTimeStep = np.array([0]) # results[output.name] = activationTimeStep self.output = results if error: raise CaseError("run not completed", case) if __name__ == "__main__": logger = logging.log_to_stderr(logging.INFO) model = EnergyTrans(r'..\..\models\CANER\CESUN', "ESDMAElecTrans") model.step = 4 #reduce data to be stored ensemble = SimpleModelEnsemble() ensemble.set_model_structure(model) ensemble.parallel = True policies = [ { 'name': 'No Policy', 'file': r'\CESUN_no.vpm' }, { 'name': 'Basic Policy', 'file': r'\CESUN_basic.vpm' }, { 'name': 'Adaptive Policy', 'file': r'\CESUN_adaptive.vpm' },
immune_population_region_1 = immune_population_region_1_NEXT immune_population_region_2 = immune_population_region_2_NEXT deceased_population_region_1.append(deceased_population_region_1_NEXT) deceased_population_region_2.append(deceased_population_region_2_NEXT) #End of main code return (deceased_population_region_1, runTime, Max_infected, Max_time) if __name__ == "__main__": import expWorkbench.EMAlogging as logging logging.log_to_stderr(logging.INFO) fluModel = MexicanFlu(None, "mexican flu example") ensemble = SimpleModelEnsemble() ensemble.parallel = True ensemble.set_model_structure(fluModel) result = ensemble.perform_experiments(10) # import matplotlib.pyplot as plt # figure = plt.figure() # ax = figure.add_subplot(111) # for entry in result: # a = entry[1][0] # b = entry[1][1] # # ax.plot(b,a) # plt.show() # Base case parameters
"""Method for retrieving output after a model run """ return self.result def optimize(self, case, policy): """method called when using the model in an optimization context this method should return a single value that represents the performance of the policy params are the same as for run model """ raise NotImplementedError def reset_model(self): """Method for reseting the model to its initial state before runModel was called""" self.modelInterface.resetModel() if __name__ == '__main__': logger = logging.log_to_stderr(logging.DEBUG) # emailHander = logging.TlsSMTPHandler(("smtp.gmail.com", 587), # '*****@*****.**', # ['*****@*****.**'], # 'finished!', # ('*****@*****.**', 'password')) # emailHander.setLevel(logging.WARNING) # logger.addHandler(emailHander) model = ElectTransEMA(r'C:\workspace\ElectTransEMA\workingDirectory', "test") ensemble = SimpleModelEnsemble() ensemble.set_model_structure(model) ensemble.parallel=True results = ensemble.perform_experiments(10)