Problem Suites (Beyond COCO)
This document describes the built-in optimization suites now supported in EDAF v3 outside COCO campaigns, including recommended configs and extension points.
For deep details on boolean-function cryptographic optimization, see:
1) Supported Serious Minimal Set
Continuous
coco-bbob(campaign workflow inedaf-coco)cec2014(function ids1..30, CEC-style deterministic transforms)
Discrete
onemaxknapsack(0/1 with linear overweight penalty)maxsat(DIMACS CNF)tsplib-tsp(TSPLIBNODE_COORD_SECTION)- disjunct-matrix family:
disjunct-matrix(DM, exactfit1)resolvable-matrix(RM, exactfit2)almost-disjunct-matrix(ADM, exactfit3)
Multiobjective
zdt(ids1,2,3,4,6)dtlz(ids1,2,7)
Tree / Structured
nguyen-srsymbolic regression variants1..8- representation uses
variable-length-vectortoken tree encoding - algorithm/model pair:
tree-eda+token-categorical
Boolean Function / Cryptography
boolean-function(direct truth-table bitstring)boolean-function-permutation(balanced permutation encoding)boolean-function-tree(tokenized boolean expression tree)boolean-function-mo(multi-objective boolean-function variant)- built-in criteria:
balancednessnonlinearity(Walsh-spectrum based)algebraic-degree(ANF/Mobius transform based)
2) Package Organization
Problem implementations are grouped by domain:
edaf-problems/src/main/java/com/knezevic/edaf/v3/problems/continuousedaf-problems/src/main/java/com/knezevic/edaf/v3/problems/discreteedaf-problems/src/main/java/com/knezevic/edaf/v3/problems/discrete/disjunctedaf-problems/src/main/java/com/knezevic/edaf/v3/problems/multiobjectiveedaf-problems/src/main/java/com/knezevic/edaf/v3/problems/permutationedaf-problems/src/main/java/com/knezevic/edaf/v3/problems/treeedaf-problems/src/main/java/com/knezevic/edaf/v3/problems/crypto
Suite-specific helpers:
.../continuous/cec/Cec2014Functions.java.../discrete/maxsat/DimacsCnf.java.../permutation/tsplib/TsplibInstance.java.../util/ProblemResourceLoader.java
Plugin registration is centralized in:
edaf-problems/src/main/resources/META-INF/services/com.knezevic.edaf.v3.core.plugins.ProblemPlugin
3) Included Instances and Resources
- MAX-SAT default instance:
edaf-problems/src/main/resources/maxsat/uf20-01.cnf- TSPLIB default instance:
edaf-problems/src/main/resources/tsplib/berlin52.tsp
Use in config:
problem:
type: maxsat
instance: classpath:maxsat/uf20-01.cnf
problem:
type: tsplib-tsp
instance: classpath:tsplib/berlin52.tsp
4) Ready-to-Run Benchmark Configs
configs/benchmarks/ contains one config per suite:
cec2014-f10-cma-v3.ymlknapsack-umda-v3.ymlmaxsat-umda-v3.ymltsplib-berlin52-ehm-v3.ymlzdt1-mo-v3.ymldtlz2-mo-v3.ymlnguyen1-tree-eda-v3.ymldisjunct-matrix-dm-v3.ymldisjunct-matrix-rm-v3.ymldisjunct-matrix-adm-v3.ymlcrypto-boolean-umda-v3.ymlcrypto-boolean-permutation-ehm-v3.ymlcrypto-boolean-tree-eda-v3.ymlcrypto-boolean-mo-v3.yml
Batch config covering the full serious minimal set:
configs/batch-benchmark-core-v3.yml
Batch config for cryptographic boolean-function suite:
configs/batch-benchmark-crypto-v3.yml
Run all in one command:
./edaf batch -c configs/batch-benchmark-core-v3.yml
./edaf batch -c configs/batch-benchmark-crypto-v3.yml
5) Multiobjective Observability
DefaultMetricCollector now emits:
objective_countbest_obj_0,best_obj_1, ...
These are persisted in run_objectives, so ZDT/DTLZ objective vectors are queryable from DB and visible in run detail API.
6) Result Paths
After batch run:
- per-run CSV/JSONL:
results/benchmarks/ - per-run HTML reports:
reports/benchmarks/ - DB summary export:
results/benchmarks/benchmark-core-v3-summary.csvresults/benchmarks/benchmark-mo-objectives-v3.csv
7) Browser Visibility
Start web app against the repository DB:
EDAF_DB_URL="jdbc:sqlite:$(pwd)/edaf-v3.db" mvn -q -pl edaf-web -am org.springframework.boot:spring-boot-maven-plugin:run
Then open:
Use filters:
problem=cec2014problem=knapsackproblem=maxsatproblem=tsplib-tspproblem=zdtproblem=dtlzproblem=nguyen-srproblem=disjunct-matrixproblem=resolvable-matrixproblem=almost-disjunct-matrixproblem=boolean-functionproblem=boolean-function-permutationproblem=boolean-function-treeproblem=boolean-function-mo
9) Disjunct-Matrix Validation API
EDAF now ships an explicit validator for formal DM/RM/ADM properties with:
- exact enumeration for small
C(N,t)spaces - statistically bounded sampling for large spaces
- witness subsets when violations are detected
See dedicated guide:
8) How to Add a New Problem (clean extension path)
- Create class implementing
Problem<G>in domain package. - Create
ProblemPlugin<G>factory in.../problems/plugins. - Register plugin class in the service file.
- Add one config example under
configs/benchmarks/. - Add one smoke test in
edaf-problems/src/test/.... - Add one integration slice in
edaf-experiments/src/test/...(if runnable pipeline exists). - Validate with:
mvn -q -pl edaf-problems,edaf-experiments -am test
./edaf config validate configs/benchmarks/<new-problem>.yml
This keeps architecture stable while allowing incremental suite growth.
Visual Summary
flowchart LR
A["EDAF"] --> B["problem suites"]
B --> C["Configure"]
B --> D["Execute"]
B --> E["Inspect"]
E --> F["Iterate"]
Estimation of Distribution Algorithms Framework
Copyright (c) 2026 Dr. Karlo Knezevic
Licensed under the Apache License, Version 2.0.