def do_predictor_rollout(predictor_args, initial_state, act_list, noise_list, step): """act_list: list with num_rollout_per_cpu elements, each element is np.array with size (H, dim_u)""" # print('begin rollout...') predictor = Predictor(*predictor_args) print('predictor built successfully') paths = [] N = len(act_list) H = act_list[0].shape[0] for i in range(N): predictor.catch_up(*initial_state) act = [] noise = [] obs = [] cost = [] for k in range(H): obs.append(predictor._get_obs()) act.append(act_list[i][k]) noise.append(noise_list[i][k]) c = predictor.predict(act[-1], step) cost.append(c) path = dict(observations=np.array(obs), actions=np.array(act), costs=np.array(cost), noise=np.array(noise)) paths.append(path) return paths