Example #1
0
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)
Example #2
0
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])
Example #3
0
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
Example #5
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'}
                
                ]
Example #7
0
#                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'
        },
Example #8
0
        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)