Geführte Tour
DispatchAtlas verwandelt ein Scheduling-Problem in vier Stufen in öffentliche, reproduzierbare Belege: eine Benchmark-Instanz generieren, sie lösen, die Läufe analysieren und alles über den Katalog erkunden. Diese Tour durchläuft den gesamten Bogen in kleinem Maßstab mit einem Ausschnitt je Stufe; die Tutorials machen aus jeder Stufe ein vollständiges, ausführbares Skript.
Falls noch nicht geschehen, führe zuerst den Schnellstart aus — seine Smoke-Kampagne erzeugt die Laufaufzeichnungen, die die Analyse-Stufe unten liest.
1️⃣ Generieren — eine Benchmark-Instanz
Eine Benchmark-Instanz ist ein Scheduling-Problem: Aufgaben, die Ressourcen, die sie ausführen, Ziele und Nebenbedingungen. Der mitgelieferte Smoke-Katalog materialisiert kleine, deterministische Instanzen aus einem einzigen Seed, sodass derselbe Seed stets dasselbe Problem liefert.
from dispatchatlas.bench import smoke_benchmark_provider
provider = smoke_benchmark_provider(root_seed=20260527)
problem = provider.get_problem(provider.list_problem_ids()[0])
print(problem.spec.id, len(problem.spec.tasks), "tasks")Der vollständige Atlas umfasst klassische Scheduling-Familien und ein Kontinuum von Edge–Fog–Cloud-Familien, die jeweils zitatgestützte Metadaten und eine Verteilungsabstands-Bewertung tragen. → Benchmark-Modell
2️⃣ Lösen — einen Solver darauf ausführen
Ein Solver weist Aufgaben über die Zeit Ressourcen zu und gibt einen Zeitplan zurück. Die Registry wählt Solver aus, die dein Ziel unterstützen und auf einer bestimmten Belegstufe sichtbar sind, und konstruiert dann einen zur Ausführung.
from dispatchatlas.core import DisclosureLabel, TerminationPolicy, derive_seed
from dispatchatlas.solve import default_solver_registry
registry = default_solver_registry()
candidate = registry.select(objective="makespan", disclosure_label=DisclosureLabel.CORE)[0]
solver = registry.create(candidate.solver_id)
run = solver.solve(
problem=problem,
stop=TerminationPolicy(max_iterations=candidate.default_stop.max_iterations),
seed=derive_seed(20260527, "tour", 0),
)
print(run.result.feasible)Die Registry enthält konstruktive Baselines, exakte Adapter, Metaheuristiken, eine diversifizierte Konkurrenzmenge und eine native Solver-Familie — jeder Eintrag mit einem fehlerschließenden Zitatvertrag. → Solver-System · Algorithmen
3️⃣ Analysieren — Läufe in Belege verwandeln
Das Lösen vieler Probleme mit vielen Solvern erzeugt eine Kampagne von Laufaufzeichnungen. Die Analyseschicht lädt eine abgeschlossene Kampagne und berechnet deskriptive Zusammenfassungen, benannte nichtparametrische Tests samt Effektstärken, korrigierter Signifikanz und Solver-Rangfolgen — niemals einen bloßen p-Wert.
from pathlib import Path
from dispatchatlas.analytica import load_campaign_dataset, summarize_dataset
campaign_dir = Path("experiments") / "results" / "smoke-pilot"
dataset = load_campaign_dataset(campaign_dir)
summary = summarize_dataset(dataset)
print([s.solver_id for s in summary.solver_summaries])Dieselbe Zusammenfassung speist deterministische SVG- und PGFPlots-Abbildungen sowie offenlegungsgefilterte Belegpakete. → Kampagnen-Engine · Analyse-Exporte
4️⃣ Katalog — den Atlas erkunden
Alles, was die Tour erzeugt hat, ist ohne Programmieren durchsuchbar. Das interaktive Portal lässt dich den Benchmark-Atlas anhand seiner Metadaten suchen und filtern, die deklarierten Fähigkeiten jedes Solvers inspizieren, Ergebnisse in der Vorschau ansehen und die offenlegungsgefilterten Datensätze hinter jeder Seite herunterladen.
- Benchmark-Katalog — filtere und lade Benchmark-Instanzen anhand ihrer Metadaten herunter.
- Solver-Empfehler — eine erklärbare, rein metadatenbasierte Rangfolge, welche Solver zu einem Problem passen.
- Ergebnisse und Plattform-Inspektion — sieh die Belege und die eigene Fähigkeitsoberfläche der Plattform in der Vorschau.
🧭 Wohin als Nächstes
- Arbeite die Tutorials für die vollständige ausführbare Version jeder Stufe durch.
- Konfiguriere mit Prüfpunkten versehene, fortsetzbare Läufe im Arbeitsbereich der reproduzierbaren Kampagnen.
- Lies die Domänenverträge für die Typen, die jedes Paket teilt.