code: def gym_problem(
      seed: tp.Optional[int] = None,
      specific_problem: str = "LANM",
      conformant: bool = False,
      big_noise: bool = False,
      multi_scale: bool = False,
      greedy_bias: bool = False,
  ) -> tp.Iterator[Experiment]:
      """Gym simulator for Active Network Management (default) or other pb.
  
      seed: int
          random seed for determinizing the problem
      specific_problem: string
          name of the problem we are working on
      conformant: bool
          do we focus on conformant planning
      big_noise: bool
          do we switch to specific optimizers, dedicated to noise
      multi_scale: boolean
          do we check multiple scales
      greedy_bias: boolean
          do we use greedy reward estimates for biasing the decisions.
      """
      if conformant:
          funcs = [
              nevergrad_gym.GymMulti(
                  specific_problem,
                  control="conformant",
                  neural_factor=None,
              )
          ]
      else:
          funcs = [
              nevergrad_gym.GymMulti(
                  specific_problem,
                  control=control,
                  neural_factor=1 if control != "linear" else None,
                  optimization_scale=scale,
                  greedy_bias=greedy_bias,
              )
              for scale in ([-6, -4, -2, 0] if multi_scale else [0])
              for control in (
                  ["deep_neural", "semideep_neural", "neural", "linear"]
                  if not greedy_bias
                  else ["neural"]
              )
          ]
      seedg = create_seed_generator(seed)
      optims = [
          "TwoPointsDE",
          "GeneticDE",
          "PSO",
          "DiagonalCMA",
          "DoubleFastGADiscreteOnePlusOne",
          "DiscreteLenglerOnePlusOne",
          "PortfolioDiscreteOnePlusOne",
          "MixDeterministicRL",
          "NoisyRL2",
          "NoisyRL3",
          "SpecialRL",
          "NGOpt39",
          "CMA",
          "DE",
      ]
      if "stochastic" in specific_problem:
          optims = (
              ["DiagonalCMA", "TBPSA"] if big_noise else ["DiagonalCMA"]
          )
      if (
          specific_problem == "EnergySavingsGym-v0" and conformant
      ):  # Do this for all conformant discrete ?
          optims = [
              "DiscreteOnePlusOne",
              "PortfolioDiscreteOnePlusOne",
              "DiscreteLenglerOnePlusOne",
              "AdaptiveDiscreteOnePlusOne",
              "AnisotropicAdaptiveDiscreteOnePlusOne",
              "DiscreteBSOOnePlusOne",
              "DiscreteDoerrOnePlusOne",
              "OptimisticDiscreteOnePlusOne",
              "NoisyDiscreteOnePlusOne",
              "DoubleFastGADiscreteOnePlusOne",
              "SparseDoubleFastGADiscreteOnePlusOne",
              "RecombiningPortfolioOptimisticNoisyDiscreteOnePlusOne",
              "RecombiningPortfolioDiscreteOnePlusOne",
              "MultiDiscrete",
              "NGOpt",
          ]
  
      optims = gym_optimizer_modifier(optims)
      budgets = [25, 50, 100, 200]
      budgets = gym_budget_modifier(budgets)
      for func in funcs:
          for budget in budgets:
              for num_workers in [1]:
                  if num_workers < budget:
                      for algo in optims:
                          xp = Experiment(
                              func,
                              algo,
                              budget,
                              num_workers=num_workers,
                              seed=next(seedg),
                          )
                          if not xp.is_incoherent:
                              yield xp
  
imports: import os
  import typing
  from nevergrad.functions import gym
  from .xpbase import registry
  from .xpbase import create_seed_generator
  from .xpbase import Experiment
  from .optgroups import get_optimizers
label_desc: Use image node_id 15 for calling a global function with example usage: gym_problem(seed, specific_problem, conformant, big_noise, multi_scale, greedy_bias) without return types