code: def test_HeSBOStrategy(self) -> None:
      gs = HeSBOStrategy(D=10, d=4, init_per_proj=2)
      self.assertEqual(gs.name, "HeSBO")
      self.assertEqual(len(gs.projections), 1)
      A, bounds_d = gs.projections[0]
      self.assertEqual(bounds_d, [(-1, 1)] * 4)
      z = torch.abs(A).sum(dim=1)
      self.assertTrue(
          torch.allclose(z, torch.ones(10, dtype=torch.double))
      )
      gs2 = gs.clone_reset()
      self.assertTrue(isinstance(gs2, HeSBOStrategy))
  
file_path: Ax/ax/modelbridge/tests/test_rembo_strategy.py
imports: import torch
  from ax.core.experiment import Experiment
  from ax.core.objective import Objective
  from ax.core.optimization_config import OptimizationConfig
  from ax.core.outcome_constraint import ComparisonOp, OutcomeConstraint
  from ax.core.parameter import ParameterType, RangeParameter
  from ax.core.search_space import SearchSpace
  from ax.metrics.hartmann6 import Hartmann6Metric
  from ax.metrics.l2norm import L2NormMetric
  from ax.modelbridge.strategies.rembo import HeSBOStrategy, REMBOStrategy
  from ax.runners.synthetic import SyntheticRunner
  from ax.utils.common.testutils import TestCase
  from ax.utils.testing.mock import fast_botorch_optimize
label_desc: Use image node_id 2 for calling the REMBOStrategyTest obj's underlying member method code with example usage: obj.test_HeSBOStrategy() without return types