code: def play_multi_episode(
      submit_model, episode_num=2, vis=False, seed=0
  ):
      np.random.seed(seed)
  
      env = L2M2019Env(difficulty=3, visualize=vis)
      env.change_model(model="3D", difficulty=3)
      env = ForwardReward(env)
      env = FrameSkip(env, 4)
      env = ActionScale(env)
      env = OfficialObs(env)
      all_reward = []
  
      for e in range(episode_num):
          episode_reward = 0.0
          observation = env.reset(project=True, obs_as_dict=True)
          step = 0
          target_change_times = 0
          while True:
              step += 1
              action = submit_model.pred_batch(
                  observation, target_change_times
              )
              observation, reward, done, info = env.step(
                  action, project=True, obs_as_dict=True
              )
              if info["target_changed"]:
                  target_change_times += 1
              episode_reward += reward
              if done:
                  break
          all_reward.append(episode_reward)
          logger.info(
              "[episode/{}] episode_reward:{} mean_reward:{}".format(
                  e, episode_reward, np.mean(all_reward)
              )
          )
  
file_path: PARL/examples/NeurIPS2019-Learn-to-Move-Challenge/final_submit/test.py
imports: import argparse
  import numpy
  import time
  from env_wrapper import FrameSkip, ActionScale, OfficialObs, ForwardReward
  from osim.env import L2M2019Env
  from parl.utils import logger
  from submit_model import SubmitModel
label_desc: Use image node_id 1 for calling a global function with example usage: play_multi_episode(submit_model, episode_num, vis, seed) without return types