# kvalevska/agtest-framework architecture

> Architecture diagram of the GitHub repository kvalevska/agtest-framework, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/kvalevska/agtest-framework
- Repository: https://github.com/kvalevska/agtest-framework

## Overview

AGtest-framework is a desktop workbench for configuring and analyzing multi-objective optimization experiments. The principal workflow selects a registered problem and algorithm, runs a single experiment with generation updates, then presents Pareto and quality-metric results for inspection and spreadsheet export. Separate branches support finite Cartesian Multi experiments and per-metric trajectories. The README documents optional parallel evaluation and plot controls; sampled excerpts do not expose all GUI wiring, so uncertain internal calls are omitted.

Main entry points: [`src/pymoo_gui/app.py`](https://github.com/kvalevska/agtest-framework/blob/main/src/pymoo_gui/app.py) (Main GUI), [`src/pymoo_gui/multi.py`](https://github.com/kvalevska/agtest-framework/blob/main/src/pymoo_gui/multi.py) (Multi runner), [`src/pymoo_gui/algorithms`](https://github.com/kvalevska/agtest-framework/tree/main/src/pymoo_gui/algorithms) (Optimizers), [`src/pymoo_gui/problems/registry.py`](https://github.com/kvalevska/agtest-framework/blob/main/src/pymoo_gui/problems/registry.py) (Problem registry)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Desktop interface"]
  node_gui["Main GUI<br/>[app.py]"]
end

subgraph group_domain["Experiment domain"]
  node_problem_catalog["Problem registry<br/>[registry.py]"]
  node_problem_impl["Benchmarks"]
  node_algorithm_catalog["Algorithm registry<br/>[__init__.py]"]
  node_algorithm_impl["Optimizers"]
  node_research_base["Research MOEA base<br/>[research_common.py]"]
  node_parallel["Parallel evaluation<br/>[parallel.py]"]
end

subgraph group_analysis["Results and analysis"]
  node_pareto["Pareto plots<br/>[pareto_dialogs.py]"]
  node_quality["Quality metrics<br/>[quality.py]"]
  node_metric_export["Metric export<br/>[export.py]"]
  node_metric_trajectories["Metric trajectories"]
end

subgraph group_batch["Batch execution"]
  node_multi["Multi runner<br/>[multi.py]"]
end

node_user(("Experimenter"))
node_pymoo["pymoo engine"]
node_platypus["Platypus library"]
node_external_files["XLSX files"]

node_user -->|"configures runs"| node_gui
node_gui -->|"selects problem"| node_problem_catalog
node_problem_catalog -->|"creates problem"| node_problem_impl
node_gui -->|"selects algorithm"| node_algorithm_catalog
node_algorithm_catalog -->|"creates optimizer"| node_algorithm_impl
node_algorithm_impl -->|"reuses utilities"| node_research_base
node_algorithm_impl -->|"uses engine"| node_pymoo
node_algorithm_impl -.->|"optional adapter"| node_platypus
node_gui -->|"runs experiment"| node_algorithm_impl
node_gui -.->|"optionally evaluates in parallel"| node_parallel
node_gui -->|"updates visualization"| node_pareto
node_gui -->|"computes generation metrics"| node_quality
node_gui -->|"shows metric history"| node_metric_trajectories
node_gui -->|"exports results"| node_metric_export
node_metric_export -->|"writes workbooks"| node_external_files
node_user -->|"starts batch"| node_multi
node_multi -->|"uses problem defaults"| node_problem_catalog
node_multi -->|"uses algorithm defaults"| node_algorithm_catalog
node_multi -->|"executes combinations"| node_algorithm_impl
node_multi -->|"records metrics"| node_quality
node_multi -->|"exports results"| node_metric_export

click node_gui "https://github.com/kvalevska/agtest-framework/blob/main/src/pymoo_gui/app.py"
click node_problem_catalog "https://github.com/kvalevska/agtest-framework/blob/main/src/pymoo_gui/problems/registry.py"
click node_problem_impl "https://github.com/kvalevska/agtest-framework/tree/main/src/pymoo_gui/problems"
click node_algorithm_catalog "https://github.com/kvalevska/agtest-framework/blob/main/src/pymoo_gui/algorithms/__init__.py"
click node_algorithm_impl "https://github.com/kvalevska/agtest-framework/tree/main/src/pymoo_gui/algorithms"
click node_research_base "https://github.com/kvalevska/agtest-framework/blob/main/src/pymoo_gui/algorithms/research_common.py"
click node_parallel "https://github.com/kvalevska/agtest-framework/blob/main/src/pymoo_gui/parallel.py"
click node_multi "https://github.com/kvalevska/agtest-framework/blob/main/src/pymoo_gui/multi.py"
click node_pareto "https://github.com/kvalevska/agtest-framework/blob/main/src/pymoo_gui/viz/pareto_dialogs.py"
click node_quality "https://github.com/kvalevska/agtest-framework/blob/main/src/pymoo_gui/metrics/quality.py"
click node_metric_export "https://github.com/kvalevska/agtest-framework/blob/main/src/pymoo_gui/metrics/export.py"
click node_metric_trajectories "https://github.com/kvalevska/agtest-framework/blob/main/src/pymoo_gui/viz/metric_trajectories.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_gui toneBlue
class node_problem_catalog,node_problem_impl,node_algorithm_catalog,node_algorithm_impl,node_research_base,node_parallel toneAmber
class node_pareto,node_quality,node_metric_export,node_metric_trajectories toneMint
class node_multi toneRose
class node_user,node_pymoo,node_platypus,node_external_files toneIndigo
```

## Components

### Desktop interface

- [Main GUI](https://github.com/kvalevska/agtest-framework/blob/main/src/pymoo_gui/app.py): `src/pymoo_gui/app.py`

### Experiment domain

- [Problem registry](https://github.com/kvalevska/agtest-framework/blob/main/src/pymoo_gui/problems/registry.py): `src/pymoo_gui/problems/registry.py`
- [Benchmarks](https://github.com/kvalevska/agtest-framework/tree/main/src/pymoo_gui/problems): `src/pymoo_gui/problems`
- [Algorithm registry](https://github.com/kvalevska/agtest-framework/blob/main/src/pymoo_gui/algorithms/__init__.py): `src/pymoo_gui/algorithms/__init__.py`
- [Optimizers](https://github.com/kvalevska/agtest-framework/tree/main/src/pymoo_gui/algorithms): `src/pymoo_gui/algorithms`
- [Research MOEA base](https://github.com/kvalevska/agtest-framework/blob/main/src/pymoo_gui/algorithms/research_common.py): `src/pymoo_gui/algorithms/research_common.py`
- [Parallel evaluation](https://github.com/kvalevska/agtest-framework/blob/main/src/pymoo_gui/parallel.py): `src/pymoo_gui/parallel.py`

### Results and analysis

- [Pareto plots](https://github.com/kvalevska/agtest-framework/blob/main/src/pymoo_gui/viz/pareto_dialogs.py): `src/pymoo_gui/viz/pareto_dialogs.py`
- [Quality metrics](https://github.com/kvalevska/agtest-framework/blob/main/src/pymoo_gui/metrics/quality.py): `src/pymoo_gui/metrics/quality.py`
- [Metric export](https://github.com/kvalevska/agtest-framework/blob/main/src/pymoo_gui/metrics/export.py): `src/pymoo_gui/metrics/export.py`
- [Metric trajectories](https://github.com/kvalevska/agtest-framework/blob/main/src/pymoo_gui/viz/metric_trajectories.py): `src/pymoo_gui/viz/metric_trajectories.py`

### Batch execution

- [Multi runner](https://github.com/kvalevska/agtest-framework/blob/main/src/pymoo_gui/multi.py): `src/pymoo_gui/multi.py`

### Other components

- **Experimenter**
- **pymoo engine**
- **Platypus library**
- **XLSX files**

## Connections

- Experimenter → Main GUI: configures runs
- Main GUI → Problem registry: selects problem
- Problem registry → Benchmarks: creates problem
- Main GUI → Algorithm registry: selects algorithm
- Algorithm registry → Optimizers: creates optimizer
- Optimizers → Research MOEA base: reuses utilities
- Optimizers → pymoo engine: uses engine
- Optimizers → Platypus library: optional adapter
- Main GUI → Optimizers: runs experiment
- Main GUI → Parallel evaluation: optionally evaluates in parallel
- Main GUI → Pareto plots: updates visualization
- Main GUI → Quality metrics: computes generation metrics
- Main GUI → Metric trajectories: shows metric history
- Main GUI → Metric export: exports results
- Metric export → XLSX files: writes workbooks
- Experimenter → Multi runner: starts batch
- Multi runner → Problem registry: uses problem defaults
- Multi runner → Algorithm registry: uses algorithm defaults
- Multi runner → Optimizers: executes combinations
- Multi runner → Quality metrics: records metrics
- Multi runner → Metric export: exports results
