Ejemplo n.º 1
0
def default_config() -> ClientConfig:
    """
    :return: Default configuration for the experiment
    """
    dqn_config = DQNConfig(input_dim=242,
                           defender_output_dim=242,
                           hidden_dim=64,
                           replay_memory_size=10000,
                           num_hidden_layers=1,
                           replay_start_size=1000,
                           batch_size=32,
                           target_network_update_freq=1000,
                           gpu=True,
                           tensorboard=True,
                           tensorboard_dir=default_output_dir() +
                           "/results/tensorboard",
                           loss_fn="Huber",
                           optimizer="Adam",
                           lr_exp_decay=True,
                           lr_decay_rate=0.9999)
    q_agent_config = QAgentConfig(
        gamma=0.999,
        alpha=0.00001,
        epsilon=1,
        render=False,
        eval_sleep=0.9,
        min_epsilon=0.01,
        eval_episodes=100,
        train_log_frequency=100,
        epsilon_decay=0.9999,
        video=True,
        eval_log_frequency=1,
        video_fps=5,
        video_dir=default_output_dir() + "/results/videos",
        num_episodes=20001,
        eval_render=False,
        gifs=True,
        gif_dir=default_output_dir() + "/results/gifs",
        eval_frequency=1000,
        attacker=False,
        defender=True,
        video_frequency=101,
        save_dir=default_output_dir() + "/results/data",
        dqn_config=dqn_config,
        checkpoint_freq=5000)
    env_name = "idsgame-random_attack-v4"
    client_config = ClientConfig(env_name=env_name,
                                 defender_type=AgentType.DQN_AGENT.value,
                                 mode=RunnerMode.TRAIN_DEFENDER.value,
                                 q_agent_config=q_agent_config,
                                 output_dir=default_output_dir(),
                                 title="RandomAttacker vs DQN",
                                 run_many=True,
                                 random_seeds=[0, 999, 299, 399, 499])
    return client_config
Ejemplo n.º 2
0
def default_config() -> ClientConfig:
    """
    :return: Default configuration for the experiment
    """
    dqn_config = DQNConfig(input_dim=242,
                           attacker_output_dim=220,
                           hidden_dim=64,
                           replay_memory_size=10000,
                           num_hidden_layers=1,
                           replay_start_size=1000,
                           batch_size=32,
                           target_network_update_freq=5000,
                           gpu=True,
                           tensorboard=True,
                           tensorboard_dir=default_output_dir() +
                           "/tensorboard",
                           loss_fn="Huber",
                           optimizer="Adam",
                           lr_exp_decay=True,
                           lr_decay_rate=0.99995)

    q_agent_config = QAgentConfig(gamma=1,
                                  alpha=0.00001,
                                  epsilon=0.75,
                                  render=False,
                                  eval_sleep=0.9,
                                  min_epsilon=0.05,
                                  eval_episodes=100,
                                  train_log_frequency=100,
                                  epsilon_decay=0.99995,
                                  video=True,
                                  eval_log_frequency=1,
                                  video_fps=5,
                                  video_dir=default_output_dir() + "/videos",
                                  num_episodes=500000,
                                  eval_render=False,
                                  gifs=True,
                                  gif_dir=default_output_dir() + "/gifs",
                                  eval_frequency=5000,
                                  attacker=True,
                                  defender=False,
                                  video_frequency=101,
                                  save_dir=default_output_dir() + "/data",
                                  dqn_config=dqn_config,
                                  checkpoint_freq=10000)
    env_name = "idsgame-minimal_defense-v6"
    client_config = ClientConfig(
        env_name=env_name,
        attacker_type=AgentType.DQN_AGENT.value,
        mode=RunnerMode.TRAIN_ATTACKER.value,
        q_agent_config=q_agent_config,
        output_dir=default_output_dir(),
        title="TrainingDQNAgent vs DefendMinimalDefender")
    return client_config
Ejemplo n.º 3
0
def test_train_random_attack_tabular_q_learning(version) -> ClientConfig:
    q_agent_config = QAgentConfig(num_episodes=10,
                                  eval_frequency=100,
                                  attacker=False,
                                  defender=True)
    env_name = "idsgame-random_attack-v" + str(version)
    client_config = ClientConfig(env_name=env_name,
                                 defender_type=AgentType.TABULAR_Q_AGENT.value,
                                 mode=RunnerMode.TRAIN_DEFENDER.value,
                                 q_agent_config=q_agent_config,
                                 output_dir=default_output_dir())
    Runner.run(client_config)
Ejemplo n.º 4
0
def default_config() -> ClientConfig:
    """
    :return: Default configuration for the experiment
    """
    simulation_config = SimulationConfig(render=True, sleep=0.8, video=True, log_frequency=1,
                                         video_fps=5, video_dir=default_output_dir() + "/videos", num_episodes=1000,
                                         gifs=True, gif_dir=default_output_dir() + "/gifs", video_frequency = 1)
    q_agent_config = QAgentConfig(attacker_load_path=default_output_dir() + "/q_table/q_table.npy")
    env_name = "idsgame-v4"
    client_config = ClientConfig(env_name=env_name, attacker_type=AgentType.TABULAR_Q_AGENT.value,
                                 defender_type=AgentType.DEFEND_MINIMAL_VALUE.value, mode=RunnerMode.SIMULATE.value,
                                 simulation_config=simulation_config, output_dir=default_output_dir(),
                                 title="TabularQAgentAttacker vs DefendMinimalDefender",
                                 q_agent_config=q_agent_config,
                                 initial_state_path = default_output_dir() + "/initial_state/initial_state.pkl")
    return client_config
Ejemplo n.º 5
0
def default_config() -> ClientConfig:
    """
    :return: Default configuration for the experiment
    """
    q_agent_config = QAgentConfig(gamma=0.999, alpha=0.05, epsilon=1, render=False, eval_sleep=0.9,
                                  min_epsilon=0.01, eval_episodes=100, train_log_frequency=1,
                                  epsilon_decay=0.9999, video=True, eval_log_frequency=1,
                                  video_fps=5, video_dir=default_output_dir() + "/videos", num_episodes=40000,
                                  eval_render=False, gifs=True, gif_dir=default_output_dir() + "/gifs",
                                  eval_frequency=5000, attacker=True, defender=False, video_frequency=101,
                                  save_dir=default_output_dir() + "/data")
    env_name = "idsgame-minimal_defense-v4"
    client_config = ClientConfig(env_name=env_name, attacker_type=AgentType.TABULAR_Q_AGENT.value,
                                 mode=RunnerMode.TRAIN_ATTACKER.value,
                                 q_agent_config=q_agent_config, output_dir=default_output_dir(),
                                 title="TrainingQAgent vs DefendMinimalDefender")
    return client_config
Ejemplo n.º 6
0
def default_config() -> ClientConfig:
    """
    :return: Default configuration for the experiment
    """
    q_agent_config = QAgentConfig(gamma=0.999, alpha=0.0005, epsilon=1, render=False, eval_sleep=0.9,
                                  min_epsilon=0.01, eval_episodes=100, train_log_frequency=100,
                                  epsilon_decay=0.9999, video=True, eval_log_frequency=1,
                                  video_fps=5, video_dir=default_output_dir() + "/videos", num_episodes=20001,
                                  eval_render=False, gifs=True, gif_dir=default_output_dir() + "/gifs",
                                  eval_frequency=1000, attacker=False, defender=True,
                                  save_dir=default_output_dir() + "/data", video_frequency=101)
    env_name = "idsgame-maximal_attack-v7"
    client_config = ClientConfig(env_name=env_name, defender_type=AgentType.TABULAR_Q_AGENT.value,
                                 mode=RunnerMode.TRAIN_DEFENDER.value,
                                 q_agent_config=q_agent_config, output_dir=default_output_dir(),
                                 title="AttackMaximalAttacker vs TrainingQAgent",
                                 run_many=True, random_seeds=[0, 999, 299, 399, 499])
    return client_config
Ejemplo n.º 7
0
def default_config() -> ClientConfig:
    """
    :return: Default configuration for the experiment
    """
    q_agent_config = QAgentConfig(
        gamma=0.999,
        alpha=0.0005,
        epsilon=1,
        render=False,
        eval_sleep=0.9,
        min_epsilon=0.01,
        eval_episodes=100,
        train_log_frequency=100,
        epsilon_decay=0.999,
        video=True,
        eval_log_frequency=1,
        video_fps=5,
        video_dir=default_output_dir() + "/results/videos",
        num_episodes=20001,
        eval_render=False,
        gifs=True,
        gif_dir=default_output_dir() + "/results/gifs",
        eval_frequency=2000,
        attacker=True,
        defender=False,
        video_frequency=101,
        save_dir=default_output_dir() + "/results/data",
        tab_full_state_space=True)
    env_name = "idsgame-minimal_defense-v13"
    client_config = ClientConfig(
        env_name=env_name,
        attacker_type=AgentType.TABULAR_Q_AGENT.value,
        mode=RunnerMode.TRAIN_ATTACKER.value,
        q_agent_config=q_agent_config,
        output_dir=default_output_dir(),
        title="TrainingQAgent vs DefendMinimalDefender",
        run_many=False,
        random_seeds=[0, 999, 299, 399, 499])
    return client_config
Ejemplo n.º 8
0
                        optimizer="Adam",
                        lr_exp_decay=True,
                        lr_decay_rate=0.9999)
 q_agent_config = QAgentConfig(
     gamma=0.999,
     alpha=0.00001,
     epsilon=1,
     render=False,
     eval_sleep=0.9,
     min_epsilon=0.01,
     eval_episodes=100,
     train_log_frequency=100,
     epsilon_decay=0.9999,
     video=True,
     eval_log_frequency=1,
     video_fps=5,
     video_dir=default_output_dir() + "/results/videos/" + str(random_seed),
     num_episodes=20001,
     eval_render=False,
     gifs=True,
     gif_dir=default_output_dir() + "/results/gifs/" + str(random_seed),
     eval_frequency=1000,
     attacker=False,
     defender=True,
     video_frequency=101,
     save_dir=default_output_dir() + "/results/data/" + str(random_seed),
     dqn_config=dqn_config,
     checkpoint_freq=5000)
 env_name = "idsgame-maximal_attack-v3"
 env = gym.make(env_name,
                save_dir=default_output_dir() + "/results/data/" +