def METHOD_NAME(s, env, mirror, populationSize):
 stateVariableCount = env.observation_space.shape[0]
 actionVariableCount = env.action_space.shape[0]
 # Get policy
 X = np.array(s["Parameters"])
 X = X.reshape((actionVariableCount, stateVariableCount))
 # Data Whitening
 global previousStateList
 global currentStateList
 if len(previousStateList) == 0:
     mu = np.zeros(stateVariableCount)
     Sigma = np.ones(stateVariableCount)
     SigmaInv = 1./Sigma
 else:
     stateArr = np.array([item for sublist in previousStateList for item in sublist])
     mu = np.mean(stateArr, axis=0)
     Sigma = np.std(stateArr, axis=0)
     SigmaInv = 1./Sigma
 # Init rollout
 state = env.reset()
 step = 0
 done = False
 states = [np.array(state)]
 # Storage for cumulative reward
 cumulativeReward = 0.0
 overSteps = 0
 while not done and step < 1000:
  # Performing the action
  stateHat = state - mu
  M = np.multiply(X,SigmaInv)
  action = np.dot(M, stateHat)
  state, reward, done, _ = env.step(action)
  states.append(np.array(state))
  # Update cumulative reward
  cumulativeReward = cumulativeReward + reward 
  # Advancing step counter
  step = step + 1
 currentStateList.append(states)
 # Reset state lists
 if len(currentStateList) == populationSize:
  previousStateList = currentStateList
  currentStateList = []
 s["F(x)"] = cumulativeReward