Example #1
0
def main():
    args = parse_args()

    if args.type == "uZS":
        game_func = uniform_zero_sum_game
        assert len(args.game_args) == 1, "game_args must specify strategy count"
    elif args.type == "uSym":
        game_func = uniform_symmetric_game
        assert len(args.game_args) == 2, "game_args must specify player and " + "strategy counts"
    elif args.type == "CG":
        game_func = congestion_game
        assert len(args.game_args) == 3, "game_args must specify player, " + "facility, and required facility counts"
    elif args.type == "LEG":
        game_func = local_effect_game
        assert len(args.game_args) == 2, "game_args must specify player and " + "strategy counts"
    game_args = map(int, args.game_args)

    games = [game_func(*game_args) for __ in range(args.count)]

    if args.noise == "normal":
        assert len(args.noise_args) == 2, "noise_args must specify stdev " + "and sample count"
        noise_args = [float(args.noise_args[0]), int(args.noise_args[1])]
        games = map(lambda g: normal_noise(g, *noise_args), games)
    elif args.noise == "gauss_mix":
        assert len(args.noise_args) == 3, "noise_args must specify max " + "stdev, sample count, and number of modes"
        noise_args = [float(args.noise_args[0]), int(args.noise_args[1]), int(args.noise_args[2])]
        games = map(lambda g: gaussian_mixture_noise(g, *noise_args), games)

    if len(games) == 1:
        print IO.to_JSON_str(games[0])
    else:
        print IO.to_JSON_str(games)
def main():
    parser = ArgumentParser(description='Sequential Bootstrap Experiments')
    parser.add_argument('input_file', metavar='input_file', help='a yaml file specifying the required details')
    parser.add_argument('output_file', metavar='output_file', help='output json suitable for use with the plotting script')
    args = parser.parse_args()
    input = yaml.safe_load(open(args.input_file))
    results = [{s:{} for s in input['stdevs']} for i in range(input['num_games'])]

    for i in range(input['num_games']):
        print i
        base_game = yaml_builder.construct_game(input['game'])
        stopping_rule = yaml_builder.construct_stopping_rule(input['stopping_rule'], base_game)
        for stdev in input['stdevs']:
            noise_model = yaml_builder.construct_model(stdev, input['noise_model'])
            matrix, equilibria = add_noise_sequentially(base_game, noise_model, stopping_rule, input['samples_per_step'])
            sample_game = matrix.toGame()
            results[i][stdev][0] = [{"profile": eq, "statistic": Regret.regret(base_game, eq),
                                  "bootstrap" : Bootstrap.bootstrap(sample_game, eq, Regret.regret, "resample", ["profile"]),
                                  "sample_count": sample_game.max_samples
                    } for eq in equilibria]
    f = open(args.output_file, 'w')
    f.write(IO.to_JSON_str(results, indent=None))
Example #3
0
def main():
    parser = ArgumentParser(description='Sequential CI Experiments')
    parser.add_argument('input_file', metavar='input_file', help='a yaml file specifying the required details')
    parser.add_argument('output_file', metavar='output_file', help='output json')
    args = parser.parse_args()
    input = yaml.safe_load(open(args.input_file))
    f = open(args.output_file, 'a')
    f.write("{")
    for stdev in input['stdevs']:
        f.write("\""+str(stdev)+"\""+":[")
        print stdev
        noise_model = yaml_builder.construct_model(stdev, input['noise_model'])
        for i in range(input['num_games']):
            print i
            base_game = yaml_builder.construct_game(input['game'])
            data = single_test(base_game, noise_model, input['samples_per_step'], input['delta'], input['alpha'], input['best_effort'])
            f.write(GameIO.to_JSON_str(data, indent=None))
            if i == input['num_games']-1:
                f.write("]")
            else:
                f.write(",")
        if stdev != input['stdevs'][-1]:
            f.write(",")
    f.write("}")