original_docstring: update the isotropic evolution path.
  
          Using ``es`` attributes ``mean``, ``mean_old``, ``sigma``,
          ``sigma_vec``, ``sp.weights.mueff``, ``cp.cmean`` and
          ``sm.transform_inverse``.
  
          :type es: CMAEvolutionStrategy
          
docstring: update the isotropic evolution path.
docstring_tokens: update the isotropic evolution path .
code: def _update_ps(self, es):
          """update the isotropic evolution path.
  
          Using ``es`` attributes ``mean``, ``mean_old``, ``sigma``,
          ``sigma_vec``, ``sp.weights.mueff``, ``cp.cmean`` and
          ``sm.transform_inverse``.
  
          :type es: CMAEvolutionStrategy
          """
          if not self.is_initialized_base:
              self.initialize_base(es)
          if self._ps_updated_iteration == es.countiter:
              return
          try:
              if es.countiter <= es.sm.itereigenupdated:
                  # es.B and es.D must/should be those from the last iteration
                  utils.print_warning('distribution transformation (B and D) have been updated before ps could be computed',
                                '_update_ps', 'CMAAdaptSigmaBase', verbose=es.opts['verbose'])
          except AttributeError:
              pass
          z = es.sm.transform_inverse((es.mean - es.mean_old) / es.sigma_vec.scaling)
          # assert Mh.vequals_approximately(z, np.dot(es.B, (1. / es.D) *
          #         np.dot(es.B.T, (es.mean - es.mean_old) / es.sigma_vec.scaling)))
          z *= es.sp.weights.mueff**0.5 / es.sigma / es.sp.cmean
          self.ps = (1 - self.cs) * self.ps + (self.cs * (2 - self.cs))**0.5 * z
          self._ps_updated_iteration = es.countiter
code_tokens: def _update_ps ( self , es ) : if not self . is_initialized_base : self . initialize_base ( es ) if self . _ps_updated_iteration == es . countiter : return try : if es . countiter <= es . sm . itereigenupdated : utils . print_warning ( 'distribution transformation (B and D) have been updated before ps could be computed' , '_update_ps' , 'CMAAdaptSigmaBase' , verbose = es . opts [ 'verbose' ] ) except AttributeError : pass z = es . sm . transform_inverse ( ( es . mean - es . mean_old ) / es . sigma_vec . scaling ) z *= es . sp . weights . mueff ** 0.5 / es . sigma / es . sp . cmean self . ps = ( 1 - self . cs ) * self . ps + ( self . cs * ( 2 - self . cs ) ) ** 0.5 * z self . _ps_updated_iteration = es . countiter
short_docstring: update the isotropic evolution path.
short_docstring_tokens: update the isotropic evolution path .
comment: """update the isotropic evolution path.
  
          Using ``es`` attributes ``mean``, ``mean_old``, ``sigma``,
          ``sigma_vec``, ``sp.weights.mueff``, ``cp.cmean`` and
          ``sm.transform_inverse``.
  
          :type es: CMAEvolutionStrategy
          """$SEP$# es.B and es.D must/should be those from the last iteration$SEP$# assert Mh.vequals_approximately(z, np.dot(es.B, (1. / es.D) *$SEP$#         np.dot(es.B.T, (es.mean - es.mean_old) / es.sigma_vec.scaling)))