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))
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("}")