Source code for mushroom_rl.algorithms.value.dqn.maxmin_dqn

import torch

from mushroom_rl.algorithms.value.dqn import DQN


[docs] class MaxminDQN(DQN): """ MaxminDQN algorithm. "Maxmin Q-learning: Controlling the Estimation Bias of Q-learning" Lan Q. et al. 2020. """
[docs] def __init__(self, mdp_info, policy, approximator, n_approximators, **params): """ Constructor. Args: n_approximators (int): the number of approximators in the ensemble. """ assert n_approximators > 1 self._n_approximators = n_approximators super().__init__(mdp_info, policy, approximator, **params)
def fit(self, dataset): self._fit_params['idx'] = torch.randint(self._n_approximators, (1,)).item() super().fit(dataset) def _initialize_regressors(self, approximator, apprx_params_train, apprx_params_target): self.approximator = approximator(n_models=self._n_approximators, prediction='min', **apprx_params_train) self.target_approximator = approximator(n_models=self._n_approximators, prediction='min', **apprx_params_target) self._update_target()
[docs] def _update_target(self): self.target_approximator.set_weights(self.approximator.get_weights())