import tensorflow as tf


        Args:
            variables: List of variables.
            deltas: List of deltas of same length.

        Returns:
            The step-applied operation. A tf.group of tf.assign_add ops.
        """
        if len(variables) != len(deltas):
            raise TensorforceError("Invalid variables and deltas lists.")

        assignments = list()
        for variable, delta in zip(variables, deltas):
            assignments.append(tf.assign_add(ref=variable, value=delta))

        with tf.control_dependencies(control_inputs=assignments):
            return util.no_operation()

    def tf_minimize(self, variables, **kwargs):
        """
        Performs an optimization step.

        Args:
            variables: List of variables to optimize.
            **kwargs: Additional optimizer-specific arguments. The following arguments are used
                by some optimizers:
