جولة إرشادية
يحوّل DispatchAtlas مسألة جدولة إلى أدلّة عامة قابلة لإعادة الإنتاج عبر أربع مراحل: توليد نسخة مرجعية (benchmark)، وحلّها، وتحليل عمليات التشغيل، واستكشاف كل شيء عبر الكتالوج. تمرّ هذه الجولة عبر القوس بأكمله على نطاق صغير بمقتطف واحد لكل مرحلة؛ وتحوّل الدروس التعليمية كل مرحلة إلى نص برمجي كامل قابل للتشغيل.
إن لم تكن قد فعلت ذلك بعد، شغّل أولًا البدء السريع — فحملته الدخانية تنتج سجلّات التشغيل التي تقرأها مرحلة التحليل أدناه.
1️⃣ التوليد — نسخة مرجعية
النسخة المرجعية هي مسألة جدولة واحدة: مهام، والموارد التي تشغّلها، وأهداف، وقيود. يجسّد كتالوج الدخان المضمّن نسخًا حتمية صغيرة من بذرة واحدة، فتنتج البذرة نفسها دائمًا المسألة نفسها.
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")يمتدّ الأطلس الكامل عبر عائلات الجدولة الكلاسيكية وسلسلة متصلة من عائلات Edge–Fog–Cloud، تحمل كلٌّ منها بيانات وصفية مدعومة بالاستشهادات ودرجةً لمسافة التوزيع. → نموذج النسخة المرجعية
2️⃣ الحلّ — شغّل حلّالًا عليها
يخصّص الحلّال المهام للموارد عبر الزمن ويعيد جدولًا. يختار السجلّ الحلّالات التي تدعم هدفك والمرئية عند مستوى أدلّة معيّن، ثم يبني واحدًا لتشغيله.
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)يضمّ السجلّ خطوط أساس بنائية، ومحوّلات حلّ دقيقة، وخوارزميات ميتاهيوريستية، ومجموعة منافِسين متنوّعة، وعائلة حلّالات أصلية — كل مدخل بعقد استشهاد يفشل إلى الإغلاق. → نظام الحلّالات · الخوارزميات
3️⃣ التحليل — تحويل عمليات التشغيل إلى أدلّة
يؤدّي حلّ مسائل كثيرة بحلّالات كثيرة إلى حملة من سجلّات التشغيل. تحمّل طبقة التحليل حملةً مكتملة وتحسب ملخّصات وصفية، واختبارات لا معلمية مُسمّاة مصحوبةً بأحجام الأثر، ودلالةً مصحَّحة، وترتيبًا للحلّالات — ولا تكتفي أبدًا بقيمة p وحدها.
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])يشغّل الملخّص نفسه أشكالًا حتمية بصيغتي SVG وPGFPlots وحِزَم أدلّة مُرشَّحة وفق الإفصاح. → محرّك الحملات · صادرات التحليل
4️⃣ الكتالوج — استكشف الأطلس
كل ما أنتجته الجولة قابل للتصفّح دون كتابة شيفرة. تتيح لك البوابة التفاعلية البحث في أطلس النسخ المرجعية وتصفيته حسب بياناته الوصفية، وفحص القدرات المعلَنة لكل حلّال، ومعاينة النتائج، وتنزيل مجموعات البيانات المُرشَّحة وفق الإفصاح خلف كل صفحة.
- كتالوج النسخ المرجعية — صفِّ وحمّل النسخ المرجعية حسب بياناتها الوصفية.
- موصي الحلّالات — ترتيب قابل للتفسير ومعتمد على البيانات الوصفية فقط لأيّ الحلّالات يناسب مسألةً ما.
- النتائج وفحص المنصّة — عاين الأدلّة وسطح القدرات الخاص بالمنصّة نفسها.
🧭 إلى أين تتّجه بعد ذلك
- اعمل على الدروس التعليمية للحصول على النسخة الكاملة القابلة للتشغيل من كل مرحلة.
- اضبط عمليات تشغيل قابلة للاستئناف وذات نقاط تفتيش في مساحة عمل الحملات القابلة لإعادة الإنتاج.
- اقرأ عقود المجال للاطّلاع على الأنواع التي تتشاركها كل حزمة.