def example(gui):
    train_env = gym.make('Traffic-Simple-cli-v0')
    agent = build_agent(train_env)
    path = "output/traffic/simple/dqn"
    explorer = EpsilonExplorer(agent, epsilon=0.5, decay=5e-7)

    if gui:

        def test_env_func():
            return gym.make('Traffic-Simple-gui-v0')
    else:

        def test_env_func():
            return train_env

    runner = SimpleRunner(max_steps_per_episode=1000)
    video_callable = None if gui else False
    run_agent(runner=runner,
              agent=explorer,
              test_agent=explorer,
              train_env=train_env,
              test_env_func=test_env_func,
              nb_episodes=500,
              test_nb_episodes=10,
              nb_epoch=100,
              path=path,
              video_callable=video_callable)
train_env = gym.make('CartPole-v0')
agent = DQN(train_env.observation_space,
            train_env.action_space,
            memory_size=4,
            replay_size=128)
explorer = EpsilonExplorer(agent, epsilon=0.3, decay=2e-5)
path = "output/cartpole/dqn"

print("Q")
agent.Q.summary()
print("training_model")
agent.training_model.summary()


def test_env_func():
    return train_env


runner = SimpleRunner(max_steps_per_episode=1000)

run_agent(runner=runner,
          agent=explorer,
          test_agent=agent,
          train_env=train_env,
          test_env_func=test_env_func,
          nb_episodes=100,
          test_nb_episodes=100,
          nb_epoch=25,
          path=path)