Skip to content

Commit 8bbaef4

Browse files
committed
new implementations, new benchmarks, better ui
1 parent a19eb16 commit 8bbaef4

149 files changed

Lines changed: 10886 additions & 244 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 51 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,9 @@ Implementation status:
103103
- Production vertical slices:
104104
- `umda` (discrete)
105105
- `gaussian-eda` (continuous, diagonal Gaussian pipeline)
106+
- `full-covariance-eda` (continuous, adaptive covariance)
107+
- `flow-eda` (continuous, nonlinear transport)
108+
- `hboa` (discrete dependency-aware Bayesian-network variant)
106109
- `ehm-eda` (permutation)
107110
- Working baselines/scaffolds (explicit TODO markers in source):
108111
- `pbil`, `cga`, `bmda`, `mimic`, `boa`, `ebna`
@@ -113,8 +116,8 @@ Implementation status:
113116

114117
### Models (`./edaf list models`)
115118

116-
- Discrete: `umda-bernoulli`, `pbil-frequency`, `cga-frequency`, `bmda`, `mimic-chow-liu`, `boa-ebna`
117-
- Continuous: `gaussian-diag`, `gaussian-full`, `gmm`, `kde`, `copula-baseline`, `snes`, `xnes`, `cma-es`
119+
- Discrete: `umda-bernoulli`, `pbil-frequency`, `cga-frequency`, `bmda`, `mimic-chow-liu`, `boa-ebna`, `hboa-network`
120+
- Continuous: `gaussian-diag`, `gaussian-full`, `normalizing-flow`, `gmm`, `kde`, `copula-baseline`, `snes`, `xnes`, `cma-es`
118121
- Permutation: `ehm`, `plackett-luce`, `mallows`
119122

120123
### Representations
@@ -131,10 +134,21 @@ Implementation status:
131134
### Problems (`./edaf list problems`)
132135

133136
- `onemax`
137+
- `knapsack`
138+
- `maxsat`
134139
- `sphere`
135140
- `rosenbrock`
136141
- `rastrigin`
137142
- `small-tsp`
143+
- `tsplib-tsp`
144+
- `cec2014`
145+
- `zdt`
146+
- `dtlz`
147+
- `nguyen-sr`
148+
- `boolean-function`
149+
- `boolean-function-permutation`
150+
- `boolean-function-tree`
151+
- `boolean-function-mo`
138152
- `mixed-toy`
139153

140154
## Getting Started
@@ -183,9 +197,18 @@ Top-level help:
183197

184198
```bash
185199
./edaf batch -c configs/batch-v3.yml
200+
./edaf batch -c configs/batch-benchmark-core-v3.yml
201+
./edaf batch -c configs/batch-benchmark-crypto-v3.yml
202+
./edaf batch -c configs/batch-stat-sample-v3.yml
186203
```
187204

188-
`configs/batch-v3.yml` contains a list of experiment config paths.
205+
`configs/batch-v3.yml` is a compact sanity batch.
206+
`configs/batch-benchmark-core-v3.yml` is the serious cross-domain benchmark batch
207+
(OneMax, Knapsack, MAX-SAT, TSPLIB TSP, CEC2014, ZDT, DTLZ, Nguyen SR).
208+
`configs/batch-benchmark-crypto-v3.yml` runs the boolean-function cryptography suite
209+
(truth-table, permutation-balanced, token-tree, and multi-objective variants).
210+
`configs/batch-stat-sample-v3.yml` demonstrates experiment-level repetition orchestration for statistical significance
211+
with deterministic seed streams and auto-suffixed run ids.
189212

190213
### 3) Resume from Checkpoint
191214

@@ -497,21 +520,42 @@ Alternative command (direct module POM invocation):
497520
EDAF_DB_URL="jdbc:sqlite:$(pwd)/edaf-v3.db" mvn -q -f edaf-web/pom.xml spring-boot:run
498521
```
499522

523+
If Maven reports `No plugin found for prefix 'spring-boot'`, run the fully-qualified goal:
524+
525+
```bash
526+
EDAF_DB_URL="jdbc:sqlite:$(pwd)/edaf-v3.db" mvn -q -pl edaf-web -am org.springframework.boot:spring-boot-maven-plugin:run
527+
```
528+
500529
Stop the server with `Ctrl+C` in that terminal.
501530

502531
Open:
503532

504533
- [http://localhost:7070](http://localhost:7070)
505534

535+
Core UI pages:
536+
537+
- `/` run explorer
538+
- `/experiments` experiment explorer (grouped multi-run view)
539+
- `/runs/{runId}` run detail
540+
- `/experiments/{experimentId}` experiment-level analytics (box-plot, profiles, significance tables)
541+
- `/coco` COCO campaign explorer
542+
506543
REST API:
507544

545+
- `GET /api/experiments`
508546
- `GET /api/runs`
509547
- `GET /api/runs/{runId}`
510548
- `GET /api/runs/{runId}/iterations`
511549
- `GET /api/runs/{runId}/events`
512550
- `GET /api/runs/{runId}/checkpoints`
513551
- `GET /api/runs/{runId}/params`
514552
- `GET /api/facets`
553+
- `GET /api/experiments/{experimentId}`
554+
- `GET /api/experiments/{experimentId}/runs`
555+
- `GET /api/experiments/{experimentId}/analysis`
556+
- `GET /api/experiments/{experimentId}/latex`
557+
- `GET /api/analysis/problem/{problemType}`
558+
- `GET /api/analysis/problem/{problemType}/latex`
515559
- `GET /api/coco/campaigns`
516560
- `GET /api/coco/campaigns/{campaignId}`
517561
- `GET /api/coco/campaigns/{campaignId}/optimizers`
@@ -520,6 +564,8 @@ REST API:
520564

521565
`/api/runs` supports search/filter/sort/pagination (`q`, `algorithm`, `model`, `problem`, `status`, `from`, `to`, `minBest`, `maxBest`, `page`, `size`, `sortBy`, `sortDir`).
522566

567+
`/api/experiments` supports search/filter/sort/pagination (`q`, `algorithm`, `model`, `problem`, `from`, `to`, `page`, `size`, `sortBy`, `sortDir`).
568+
523569
`/api/coco/campaigns` supports `q`, `status`, `suite`, `page`, `size`, `sortBy`, `sortDir`.
524570

525571
## Docker Usage
@@ -616,6 +662,8 @@ Coverage includes:
616662
- [docs/configuration.md](docs/configuration.md) - complete config reference
617663
- [docs/algorithms.md](docs/algorithms.md) - algorithm-level details and status
618664
- [docs/representations.md](docs/representations.md) - representation contracts and parameters
665+
- [docs/problem-suites.md](docs/problem-suites.md) - non-COCO benchmark suites and extension rules
666+
- [docs/crypto-boolean-problems.md](docs/crypto-boolean-problems.md) - boolean-function cryptography suite and criteria
619667
- [docs/coco-integration.md](docs/coco-integration.md) - COCO campaign workflow, DB model, and comparison protocol
620668
- [docs/logging-and-observability.md](docs/logging-and-observability.md) - events, sinks, metrics
621669
- [docs/database-schema.md](docs/database-schema.md) - DB schema, relations, indexes, query model
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
experiments:
2+
- umda-onemax-v3.yml
3+
- benchmarks/knapsack-umda-v3.yml
4+
- benchmarks/maxsat-umda-v3.yml
5+
- benchmarks/tsplib-berlin52-ehm-v3.yml
6+
- benchmarks/cec2014-f10-cma-v3.yml
7+
- benchmarks/zdt1-mo-v3.yml
8+
- benchmarks/dtlz2-mo-v3.yml
9+
- benchmarks/nguyen1-tree-eda-v3.yml
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
experiments:
2+
- benchmarks/crypto-boolean-umda-v3.yml
3+
- benchmarks/crypto-boolean-permutation-ehm-v3.yml
4+
- benchmarks/crypto-boolean-tree-eda-v3.yml
5+
- benchmarks/crypto-boolean-mo-v3.yml
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
defaultRepetitions: 30
2+
defaultSeedStart: 91800
3+
4+
experiments:
5+
- config: umda-onemax-v3.yml
6+
runIdPrefix: significance-umda-onemax
7+
- config: benchmarks/onemax-pbil-v3.yml
8+
runIdPrefix: significance-pbil-onemax

configs/batch-stat-sample-v3.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
defaultRepetitions: 30
2+
3+
defaultSeedStart: 20270000
4+
5+
experiments:
6+
- config: umda-onemax-v3.yml
7+
runIdPrefix: stats-umda-onemax-v3
8+
- config: gaussian-sphere-v3.yml
9+
runIdPrefix: stats-gaussian-sphere-v3
10+
- config: ehm-tsp-v3.yml
11+
runIdPrefix: stats-ehm-tsp-v3
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
schema: "3.0"
2+
3+
run:
4+
id: benchmark-cec2014-f10-cma-v3
5+
name: CEC2014 f10 on CMA-ES (v3)
6+
masterSeed: 20260220
7+
deterministicStreams: true
8+
checkpointEveryIterations: 0
9+
10+
representation:
11+
type: real-vector
12+
length: 20
13+
lower: -100.0
14+
upper: 100.0
15+
16+
problem:
17+
type: cec2014
18+
functionId: 10
19+
dimension: 20
20+
instanceId: 1
21+
22+
algorithm:
23+
type: cma-es
24+
populationSize: 48
25+
elitism: 0
26+
selectionRatio: 0.5
27+
28+
model:
29+
type: cma-es
30+
initialSigma: 8.0
31+
minSigma: 1.0e-12
32+
maxSigma: 20.0
33+
restartEnabled: true
34+
restartPatience: 28
35+
restartSigmaMultiplier: 2.0
36+
37+
selection:
38+
type: truncation
39+
40+
replacement:
41+
type: generational
42+
43+
stopping:
44+
type: max-iterations
45+
maxIterations: 180
46+
47+
constraints:
48+
type: repair
49+
50+
localSearch:
51+
type: none
52+
53+
restart:
54+
type: none
55+
56+
niching:
57+
type: none
58+
59+
observability:
60+
metricsEveryIterations: 10
61+
emitModelDiagnostics: true
62+
63+
persistence:
64+
enabled: true
65+
sinks: [console, csv, jsonl, db]
66+
outputDirectory: ./results/benchmarks
67+
database:
68+
enabled: true
69+
url: jdbc:sqlite:edaf-v3.db
70+
user: ""
71+
password: ""
72+
73+
reporting:
74+
enabled: false
75+
formats: [html]
76+
outputDirectory: ./reports/benchmarks
77+
78+
web:
79+
enabled: false
80+
port: 7070
81+
pollSeconds: 3
82+
83+
logging:
84+
modes: [console, jsonl, file, db]
85+
verbosity: normal
86+
jsonlFile: ./results/benchmarks/benchmark-cec2014-f10-cma-v3-events.jsonl
87+
logFile: ./edaf-v3.log
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
schema: "3.0"
2+
3+
run:
4+
id: benchmark-crypto-boolean-mo-v3
5+
name: Crypto Boolean Function Multi-Objective baseline (v3)
6+
masterSeed: 20260304
7+
deterministicStreams: true
8+
checkpointEveryIterations: 0
9+
10+
representation:
11+
type: bitstring
12+
length: 64
13+
14+
problem:
15+
type: boolean-function-mo
16+
n: 6
17+
criteria: [balancedness, nonlinearity, algebraic-degree]
18+
objectiveWeights: [0.30, 0.50, 0.20]
19+
20+
algorithm:
21+
type: mo-eda-skeleton
22+
populationSize: 260
23+
elitism: 2
24+
selectionRatio: 0.40
25+
26+
model:
27+
type: umda-bernoulli
28+
smoothing: 0.01
29+
30+
selection:
31+
type: truncation
32+
33+
replacement:
34+
type: elitist
35+
36+
stopping:
37+
type: max-iterations
38+
maxIterations: 180
39+
40+
constraints:
41+
type: identity
42+
43+
localSearch:
44+
type: none
45+
46+
restart:
47+
type: none
48+
49+
niching:
50+
type: none
51+
52+
observability:
53+
metricsEveryIterations: 10
54+
emitModelDiagnostics: true
55+
56+
persistence:
57+
enabled: true
58+
sinks: [console, csv, jsonl, db]
59+
outputDirectory: ./results/benchmarks
60+
database:
61+
enabled: true
62+
url: jdbc:sqlite:edaf-v3.db
63+
user: ""
64+
password: ""
65+
66+
reporting:
67+
enabled: false
68+
formats: [html]
69+
outputDirectory: ./reports/benchmarks
70+
71+
web:
72+
enabled: false
73+
port: 7070
74+
pollSeconds: 3
75+
76+
logging:
77+
modes: [console, jsonl, file, db]
78+
verbosity: normal
79+
jsonlFile: ./results/benchmarks/benchmark-crypto-boolean-mo-v3-events.jsonl
80+
logFile: ./edaf-v3.log

0 commit comments

Comments
 (0)