Exemplo n.º 1
0
def run_random_search(verbose,
                      num_diff_experiments,
                      num_repeat_experiment,
                      allow_duplicates=False,
                      df_path=None,
                      overwrite=True,
                      data_to_collect=POSSIBLE_DATA,
                      MVP_key='waitingTime',
                      save_model=True):
    grid = load_constants('constants/constants-grid.json')

    if not allow_duplicates:
        _, num_choices = get_num_grid_choices(grid)
        num_diff_experiments = min(num_choices, num_diff_experiments)
    # Make grid choice generator
    grid_choice_gen = grid_choices_random(grid, num_diff_experiments)
    for diff_experiment, constants in enumerate(grid_choice_gen):
        data_collector_obj = DataCollector(
            data_to_collect, MVP_key, constants,
            'test' if constants['agent']['agent_type'] == 'rule' else 'eval',
            df_path, overwrite if diff_experiment == 0 else False, verbose)

        for same_experiment in range(num_repeat_experiment):
            print(' --- Running experiment {}.{} / {}.{} --- '.format(
                diff_experiment + 1, same_experiment + 1, num_diff_experiments,
                num_repeat_experiment))
            if save_model:
                data_collector_obj.set_save_model_path(
                    'models/saved_models/random_{}-{}.pt'.format(
                        diff_experiment + 1, same_experiment + 1))
            run_experiment(diff_experiment + 1, same_experiment + 1, constants,
                           data_collector_obj)
Exemplo n.º 2
0
def run_normal(verbose,
               num_experiments=1,
               df_path=None,
               overwrite=True,
               data_to_collect=POSSIBLE_DATA,
               MVP_key='waitingTime',
               save_model=True,
               load_model_file=None):
    # if loading, then dont save
    if load_model_file:
        save_model = False

    if not df_path:
        df_path = 'run-data.xlsx'  # def. path

    # Load constants
    constants = load_constants('constants/constants.json')
    data_collector_obj = DataCollector(
        data_to_collect, MVP_key, constants,
        'test' if constants['agent']['agent_type'] == 'rule' or load_model_file
        else 'eval', df_path, overwrite, verbose)

    loaded_model = None
    if load_model_file:
        loaded_model = torch.load('models/saved_models/' + load_model_file)

    for exp in range(num_experiments):
        print(' --- Running experiment {} / {} --- '.format(
            exp + 1, num_experiments))
        if save_model:
            data_collector_obj.set_save_model_path(
                'models/saved_models/normal_{}.pt'.format(exp + 1))
        run_experiment(exp + 1,
                       None,
                       constants,
                       data_collector_obj,
                       loaded_model=loaded_model)