Source code for kernel.scenarioCreation
# -*- coding: utf-8 -*-
"""
Scenario Creation
The Scenarios are created using dependency injection
The definition of the Scenarios that will be used in the simulation are in the yaml file
"""
import dependency_injector.errors as errors
import dependency_injector.providers as providers
import basicScenarios as scn
[docs]class ScenarioCreator(object):
""" Scenario Generator - Scenario Implemented Subclass must be used """
def __init__(self, simulation, model, scenarios_def):
self.scenarios = dict()
self.simulation = simulation
self.model = model
for scenario_def in scenarios_def:
self.scenario_type = scenario_def['scenario_type']
self.scenario_name = scenario_def['scenario_name']
self.scenario_parameters = scenario_def['scenario_parameters']
self.scenario_variables = scenario_def['scenario_variables']
self.agents_init = scenario_def['agents_init']
try:
a_scenario = "scn" + "." + self.scenario_type
self.scenario_class = eval(a_scenario)
except NameError:
print("class ", self.scenario_type, " is not defined")
self.scenario_Factory = ScenarioProvider(self.scenario_class)
self.scenario_Factory.add_args(self.simulation,
self.model,
self.scenario_name,
self.scenario_parameters,
self.scenario_variables,
self.agents_init)
try:
self.new_scenario = self.scenario_Factory()
self.scenarios[self.scenario_name] = self.new_scenario
except errors.Error as exception:
print(exception)
# <class '__main__.scenario_Factory'>
# does not know <'__main__.self.scenario_name'>
[docs]class ScenarioProvider(providers.Factory):
""" Scenario Provider Class"""
provided_type = scn.Scenario