You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Fix core concepts: config.yaml is optional, not required
- Clarify EVOLVE-BLOCK markers are LLM guidance, not enforced by the tool
- Fix fitness description: excludes MAP-Elites feature dimensions
- Remove non-numeric error field from evaluator example metrics dict
- Fix checkpoint structure: programs are .json, add best_program.py and
best_program_info.json, add artifacts/ directory
- Fix output paths to be consistent (my_experiment/output throughout)
- Point to best_program.py instead of programs/<id>.py for result retrieval
- Remove plotly from visualizer install (Flask only, no plotly dependency)
- Clarify artifact config: evaluator.enable_artifacts + prompt.include_artifacts
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Every OpenEvolve experiment requires exactly **3 files**:
39
+
Every OpenEvolve experiment requires **2 files** (with an optional third):
40
40
41
-
| File | Purpose |
42
-
|------|---------|
43
-
|`initial_program.py`| Starting code with `EVOLVE-BLOCK` markers around the section to evolve |
44
-
|`evaluator.py`| Defines `evaluate(program_path) -> dict` that scores each variant |
45
-
|`config.yaml`| LLM provider, iterations, population size, system message |
41
+
| File |Required |Purpose |
42
+
|------|----------|---------|
43
+
|`initial_program.py`|Yes |Starting code with `EVOLVE-BLOCK` markers around the section to evolve |
44
+
|`evaluator.py`|Yes |Defines `evaluate(program_path) -> dict` that scores each variant |
45
+
|`config.yaml`|No |LLM provider, iterations, population size, system message (sensible defaults are used when omitted)|
46
46
47
47
---
48
48
49
49
## Workflow
50
50
51
51
### Step 1: Scaffold the experiment
52
52
53
-
Create a project directory with the three required files.
53
+
Create a project directory with the required files.
54
54
55
55
```bash
56
56
mkdir -p my_experiment
57
57
```
58
58
59
59
#### initial_program.py
60
60
61
-
Wrap the code to evolve in `EVOLVE-BLOCK` markers. Code outside the markers stays fixed.
61
+
Wrap the code to evolve in `EVOLVE-BLOCK` markers. These markers serve as guidance for the LLM, signaling which sections should be modified. Note: the markers are not enforced by the tool — the diff engine can technically change any part of the file — but they strongly steer the LLM's attention.
62
62
63
63
```python
64
64
import math
@@ -79,10 +79,11 @@ if __name__ == "__main__":
79
79
print(solve([3, 1, 4, 1, 5]))
80
80
```
81
81
82
-
**Rules for EVOLVE-BLOCK markers:**
82
+
**Guidelines for EVOLVE-BLOCK markers:**
83
83
- Both `# EVOLVE-BLOCK-START` and `# EVOLVE-BLOCK-END` are required as a pair
84
84
- Multiple blocks are supported for evolving different sections
85
-
- If omitted, OpenEvolve wraps the entire file (less control)
85
+
- If omitted, the LLM may modify any part of the file (less control)
86
+
- These markers are conventions that guide the LLM prompt — they are not enforced at the tool level
86
87
- Keep the code between markers self-contained — imports and helpers go outside
0 commit comments