Aller au contenu
DispatchAtlas
Rechercher

Visite guidée

DispatchAtlas transforme un problème d'ordonnancement en preuves publiques et reproductibles en quatre étapes : générer une instance de benchmark, la résoudre, analyser les exécutions et tout explorer via le catalogue. Cette visite parcourt l'ensemble du cycle à petite échelle avec un extrait par étape ; les tutoriels transforment chaque étape en un script exécutable complet.

Si ce n'est pas déjà fait, exécutez d'abord le démarrage rapide : sa campagne de fumée produit les enregistrements d'exécution que lit l'étape d'analyse ci-dessous.

1️⃣ Générer — une instance de benchmark

Une instance de benchmark est un problème d'ordonnancement : des tâches, les ressources qui les exécutent, des objectifs et des contraintes. Le catalogue de fumée fourni matérialise de petites instances déterministes à partir d'une seule graine, de sorte que la même graine produit toujours le même problème.

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")

L'atlas complet couvre les familles d'ordonnancement classiques et un continuum de familles Edge–Fog–Cloud, chacune portant des métadonnées étayées par des citations et un score de distance de distribution. → Modèle de benchmark

2️⃣ Résoudre — exécuter un solveur dessus

Un solveur affecte les tâches aux ressources dans le temps et renvoie un ordonnancement. Le registre sélectionne les solveurs qui prennent en charge votre objectif et sont visibles à un niveau de preuve donné, puis en construit un pour l'exécuter.

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)

Le registre contient des bases constructives, des adaptateurs exacts, des métaheuristiques, un ensemble diversifié de concurrents et une famille de solveurs native — chaque entrée avec un contrat de citation à fermeture sûre. → Système de solveurs · Algorithmes

3️⃣ Analyser — transformer les exécutions en preuves

Résoudre de nombreux problèmes avec de nombreux solveurs produit une campagne d'enregistrements d'exécution. La couche d'analyse charge une campagne terminée et calcule des résumés descriptifs, des tests non paramétriques nommés accompagnés de tailles d'effet, une significativité corrigée et des classements de solveurs — jamais une valeur p seule.

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])

Le même résumé alimente des figures déterministes en SVG et PGFPlots ainsi que des lots de preuves filtrés par divulgation. → Moteur de campagnes · Exports d'analyse

4️⃣ Catalogue — explorer l'atlas

Tout ce que la visite a produit est consultable sans écrire de code. Le portail interactif vous permet de rechercher et de filtrer l'atlas de benchmarks par ses métadonnées, d'inspecter les capacités déclarées de chaque solveur, de prévisualiser les résultats et de télécharger les jeux de données filtrés par divulgation derrière chaque page.

🧭 Où aller ensuite

  1. Travaillez les tutoriels pour la version exécutable complète de chaque étape.
  2. Configurez des exécutions reprenables et à points de contrôle dans l'espace de travail des campagnes reproductibles.
  3. Lisez les contrats du domaine pour les types que partage chaque paquet.