# `GEPA.Engine`
[🔗](https://github.com/nshkrdotcom/gepa_ex/blob/v0.3.0/lib/gepa/engine.ex#L1)

Main optimization engine for GEPA.

Orchestrates the optimization loop: propose → evaluate → accept/reject → repeat.

# `run`

```elixir
@spec run(map()) :: {:ok, GEPA.State.t()}
```

Run optimization until stop condition met.

## Parameters

- `config`: Configuration map with all necessary settings

## Returns

`{:ok, final_state}` on success

# `run_iteration`

```elixir
@spec run_iteration(GEPA.State.t(), map()) ::
  {:cont, GEPA.State.t(), map(), boolean(), term()} | {:stop, GEPA.State.t()}
```

Run a single optimization iteration.

Returns `{:cont, new_state}` to continue or `{:stop, state}` to stop.

---

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