def _randomize_sim()

in robogym/randomization/sim.py [0:0]


    def _randomize_sim(self, random_state: RandomState):
        param_value = self._randomizer_param_values * self._coef
        if self._apply_mode == "coupled":
            new_value = self._initial_value * np.exp(param_value)
        elif self._apply_mode == "coupled_additive":
            new_value = self._initial_value + (np.exp(param_value) - 1.0)
        elif self._apply_mode == "uncoupled":
            new_value = self._initial_value * np.exp(
                random_state.normal(param_value, size=self._initial_value.shape)
                * np.absolute(param_value)
            )
        elif self._apply_mode == "ranges":
            low = min(0, -param_value[0])
            high = max(0, param_value[1])
            new_value = self._initial_value * np.exp(
                random_state.uniform(low, high, size=self._initial_value.shape)
            )
        elif self._apply_mode == "coupled_ranges":
            low = min(0, -param_value[0])
            high = max(0, param_value[1])
            new_value = self._initial_value * np.exp(random_state.uniform(low, high))
        elif self._apply_mode == "coupled_symmetric_ranges":
            low = -abs(param_value)
            high = abs(param_value)  # This is intentially domain_param_value
            new_value = self._initial_value * np.exp(
                random_state.uniform(low, high, size=self._initial_value.shape)
            )
        elif self._apply_mode == "variance":
            variance = abs(param_value)
            new_value = self._initial_value * np.exp(
                random_state.normal(0, size=self._initial_value.shape) * variance
            )
        elif self._apply_mode == "variance_additive":
            scale = np.exp(abs(param_value)) - 1.0
            noise = random_state.normal(0, scale=scale, size=self._initial_value.shape)
            new_value = self._initial_value + noise
        elif self._apply_mode == "variance_mean_additive":
            pos = np.exp(param_value[0]) - 1.0
            scale = np.exp(abs(param_value[1])) - 1.0
            noise = np.abs(
                random_state.normal(pos, scale=scale, size=self._initial_value.shape)
            )
            new_value = self._initial_value + noise
        elif self._apply_mode == "coupled_mean_variance":
            new_value = self._initial_value * np.exp(
                random_state.normal(
                    param_value, scale=abs(param_value), size=self._initial_value.shape
                )
            )
        elif self._apply_mode == "uncoupled_mean_variance":
            new_value = self._initial_value * np.exp(
                random_state.normal(
                    param_value[0],
                    scale=abs(param_value[1]),
                    size=self._initial_value.shape,
                )
            )
        elif self._apply_mode == "max_additive":
            high = np.exp(abs(param_value)) - 1.0
            noise = random_state.uniform(
                low=0, high=high, size=self._initial_value.shape
            )
            new_value = self._initial_value + noise
        else:
            raise RuntimeError()

        if self._positive_only:
            new_value = np.clip(new_value, 0, np.inf)

        self.set_params(new_value)