def main(): print ("note: 'ulimit -Sn 1024' if Errno 24") parser = argparse.ArgumentParser() parser.add_argument('--env', default='CartPole-v1') parser.add_argument('--seed', type=int, default=417) parser.add_argument('--n-timesteps', type=int, default=1e5) parser.add_argument('--gamma', type=float, default=0.99) parser.add_argument('--max-kl', type=float, default=1e-2) parser.add_argument('--log-interval', type=int, default=1e4) parser.add_argument('--save-path', default=None) parser.add_argument('--batch-size', type=int, default=1) parser.add_argument('--cuda', type=bool, default=False) parser.add_argument('--update-rule', default='A2C') args = parser.parse_args() if args.cuda: assert torch.cuda.is_available(), 'No available cuda devices' envs = [gym.make(args.env) for _ in range(args.batch_size)] set_seeds(envs, args.seed, args.cuda) agent = Agent(envs[0].observation_space, envs[0].action_space) if args.cuda: agent.cuda() rets = learn(agent, envs, args.update_rule, cuda=args.cuda, n_timesteps=args.n_timesteps, gamma=args.gamma, log_interval=args.log_interval, max_kl=args.max_kl) torch.save(rets, "./out/{}_{}".format(args.env, args.update_rule)) if not (args.save_path is None): torch.save(agent.state_dict(), args.save_path)