# `GEPA.Strategies.EvaluationPolicy.Incremental`
[🔗](https://github.com/nshkrdotcom/gepa_ex/blob/v0.3.0/lib/gepa/strategies/evaluation_policy.ex#L88)

Incremental evaluation policy - progressively evaluates validation set.

Starts with a small sample and expands for promising candidates.
Reduces computation by avoiding full evaluation for poor candidates.

## Options

  - `:initial_sample_size` - Starting sample size (default: 10)
  - `:increment_size` - Samples to add each time (default: 5)
  - `:max_sample_size` - Max before full eval (default: 50)
  - `:full_eval_threshold` - Score threshold for full eval (default: 0.7)
  - `:seed` - Random seed (default: 0)

# `t`

```elixir
@type t() :: %GEPA.Strategies.EvaluationPolicy.Incremental{
  evaluated_samples: %{required(non_neg_integer()) =&gt; MapSet.t()},
  full_eval_threshold: float(),
  increment_size: pos_integer(),
  initial_sample_size: pos_integer(),
  max_sample_size: pos_integer(),
  seed: integer()
}
```

# `calculate_avg_and_coverage`

# `get_eval_batch`

```elixir
@spec get_eval_batch(
  t(),
  GEPA.DataLoader.t(),
  GEPA.State.t(),
  non_neg_integer() | nil
) :: [term()]
```

# `new`

```elixir
@spec new(keyword()) :: t()
```

# `select_samples`

```elixir
@spec select_samples(t(), non_neg_integer(), [term()]) :: {[term()], t()}
```

# `should_do_full_eval?`

```elixir
@spec should_do_full_eval?(t(), non_neg_integer(), float()) :: boolean()
```

# `update_evaluated`

```elixir
@spec update_evaluated(t(), non_neg_integer(), [term()]) :: t()
```

---

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