# Parse noise string for DDPG and SAC if algo_ in ['ddpg', 'sac', 'td3' ] and hyperparams.get('noise_type') is not None: noise_type = hyperparams['noise_type'].strip() noise_std = hyperparams['noise_std'] n_actions = env.action_space.shape[0] if 'adaptive-param' in noise_type: assert algo_ == 'ddpg', 'Parameter is not supported by SAC' hyperparams['param_noise'] = AdaptiveParamNoiseSpec( initial_stddev=noise_std, desired_action_stddev=noise_std) elif 'normal' in noise_type: if 'lin' in noise_type: hyperparams['action_noise'] = LinearNormalActionNoise( mean=np.zeros(n_actions), sigma=noise_std * np.ones(n_actions), final_sigma=hyperparams.get('noise_std_final', 0.0) * np.ones(n_actions), max_steps=n_timesteps) else: hyperparams['action_noise'] = NormalActionNoise( mean=np.zeros(n_actions), sigma=noise_std * np.ones(n_actions)) elif 'ornstein-uhlenbeck' in noise_type: hyperparams['action_noise'] = OrnsteinUhlenbeckActionNoise( mean=np.zeros(n_actions), sigma=noise_std * np.ones(n_actions)) else: raise RuntimeError( 'Unknown noise type "{}"'.format(noise_type)) print("Applying {} noise with std {}".format( noise_type, noise_std))
if args.optimize_hyperparameters and n_envs > 1: env.close() # Parse noise string for DDPG and SAC if algo_ in ["ddpg", "sac", "td3" ] and hyperparams.get("noise_type") is not None: noise_type = hyperparams["noise_type"].strip() noise_std = hyperparams["noise_std"] n_actions = env.action_space.shape[0] if "normal" in noise_type: if "lin" in noise_type: final_sigma = hyperparams.get("noise_std_final", 0.0) * np.ones(n_actions) hyperparams["action_noise"] = LinearNormalActionNoise( mean=np.zeros(n_actions), sigma=noise_std * np.ones(n_actions), final_sigma=final_sigma, max_steps=n_timesteps, ) else: hyperparams["action_noise"] = NormalActionNoise( mean=np.zeros(n_actions), sigma=noise_std * np.ones(n_actions)) elif "ornstein-uhlenbeck" in noise_type: hyperparams["action_noise"] = OrnsteinUhlenbeckActionNoise( mean=np.zeros(n_actions), sigma=noise_std * np.ones(n_actions)) else: raise RuntimeError(f'Unknown noise type "{noise_type}"') print(f"Applying {noise_type} noise with std {noise_std}") del hyperparams["noise_type"] del hyperparams["noise_std"] if "noise_std_final" in hyperparams: