# `Monty.Experiment.RecognitionStrategy.MaximumSteps`
[🔗](https://github.com/d-led/ex.tbp.monty/blob/v0.1.0/packages/ex_tbp_monty_core/lib/monty/experiment/recognition_strategy/maximum_steps.ex#L1)

Done once the *matching* steps reach the limit for the current mode.

Mirrors `tbp/monty/experiment/recognition_strategy.py::MaximumSteps`. Two things
have to hold: the model is not exploring — an exploring step is training, not
matching — and `model.matching_steps` has reached `max_train_steps` or
`max_eval_steps`, chosen by mode.

# `call`

```elixir
@spec call(map(), Monty.Experiment.RecognitionStrategy.RecognitionCounter.t(), map()) ::
  Monty.Experiment.RecognitionStrategy.RecognitionResult.t()
```

Done when the mode's limit is reached, unless the model is exploring.

# `new`

```elixir
@spec new(keyword()) :: {:ok, {module(), map()}} | {:error, String.t()}
```

A policy with a limit for each mode.

Monty raises `ValueError` for a limit that is not positive; here that is
`{:error, message}` with Monty's own words.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
