code: def test_multiple_evaluations_bandit_algo(self):
      max_steps = 20
      regret_trajectory = multiple_evaluations_bandit_algo(
          algo_cls=UCB1,
          bandit_cls=BernoilliMAB,
          n_bandits=3,
          max_steps=max_steps,
          algo_kwargs={"n_arms": 2},
          bandit_kwargs={"probs": torch.Tensor([0.3, 0.5])},
      )
  
      self.assertIsInstance(regret_trajectory, np.ndarray)
      self.assertEqual(regret_trajectory.shape, (max_steps,))
  
      # make sure regret is non-decreasing
      self.assertGreaterEqual(
          np.diff(regret_trajectory, prepend=0).min(), 0
      )
  
imports: import unittest
  from io import BytesIO
  from itertools import cycle
  from unittest import mock
  import numpy
  import numpy.testing
  import torch
  from parameterized.parameterized import parameterized
  from pytorch_lightning import seed_everything
  from reagent.mab.mab_algorithm import get_arm_indices, place_values_at_indices, randomized_argmax, reindex_multiple_tensors
  from reagent.mab.simulation import BernoilliMAB, compare_bandit_algos, multiple_evaluations_bandit_algo, single_evaluation_bandit_algo
  from reagent.mab.thompson_sampling import BaseThompsonSampling, BernoulliBetaThompson, NormalGammaThompson
  from reagent.mab.ucb import BaseUCB, MetricUCB, UCB1, UCBTuned
label_desc: Use image node_id 4 for calling the TestSimulation obj's underlying member method code with example usage: obj.test_multiple_evaluations_bandit_algo() without return types