Model = TrainModel(config['num_layers'],
                       config['width_layers'],
                       config['batch_size'],
                       config['learning_rate'],
                       input_dim=config['num_states'],
                       output_dim=config['num_actions'])

    Memory = Memory(config['memory_size_max'], config['memory_size_min'])

    TrafficGen = TrafficGenerator(config['max_steps'], config['n_v_generated'])

    Visualization = Visualization(path, dpi=96)

    Simulation = Simulation(Model, Memory, TrafficGen, sumo_cmd,
                            config['gamma'], config['max_steps'],
                            config['green_duration'],
                            config['yellow_duration'], config['num_states'],
                            config['num_actions'], config['training_epochs'])

    episode = 0
    timestamp_start = datetime.datetime.now()
    gui_episodes = config['gui_episodes']

    while episode < config['total_episodes']:
        print('\n----- Episode', str(episode + 1), 'of',
              str(config['total_episodes']))
        epsilon = 1.0 - (
            episode / config['total_episodes']
        )  # set the epsilon for this episode according to epsilon-greedy policy
        simulation_time, training_time = Simulation.run(
            episode, epsilon, episode in gui_episodes)  # run the simulation
    #EW traffic generator
    TrafficGen_3 = TrafficGenerator(config['max_steps'],
                                    config['n_cars_generated_ew'], 'EW')

    #NS traffic generator
    TrafficGen_4 = TrafficGenerator(config['max_steps'],
                                    config['n_cars_generated_ns'], 'NS')

    #Same visualization
    Visualization = Visualization(path, dpi=96)

    #Simulation with High traffic
    Sim = Simulation(TrafficGen, sumo_cmd, config['gamma'],
                     config['max_steps'], config['green_duration'],
                     config['yellow_duration'], config['num_cells'],
                     config['num_states'], config['num_actions'],
                     config['training_epochs'])

    #Simulation with Low traffic
    Simulation_2 = Simulation(TrafficGen_2, sumo_cmd, config['gamma'],
                              config['max_steps'], config['green_duration'],
                              config['yellow_duration'], config['num_cells'],
                              config['num_states'], config['num_actions'],
                              config['training_epochs'])

    #Simulation with EW traffic
    Simulation_3 = Simulation(TrafficGen_3, sumo_cmd, config['gamma'],
                              config['max_steps'], config['green_duration'],
                              config['yellow_duration'], config['num_cells'],
                              config['num_states'], config['num_actions'],