پرش به محتوای اصلی

Event-Driven Metaheuristic Optimization؛ بهینه‌سازی پویا در تخصیص منابع و زمان‌بندی

یک پروژه Python برای مسئله‌های بهینه‌سازی مقید و در حال تغییر که GA و Differential Evolution، event-driven coordination، warm-start state و benchmarkهای تکرارپذیر را کنار هم قرار می‌دهد.

زمینه

در تخصیص منابع و زمان‌بندی، مسئله ممکن است هنگام اجرا تغییر کند: job جدید وارد شود، deadline یا priority تغییر کند، یا ظرفیت منابع جابه‌جا شود. در این حالت فقط پیدا کردن یک جواب خوب کافی نیست؛ باید recovery پس از تغییر مسئله نیز قابل اندازه‌گیری باشد.

مسئله

پروژه مسئله را به شکل یک بهینه‌سازی مقید و زمان‌متغیر مدل می‌کند و سؤال اصلی آن این است که پس از تغییر مسئله، ادامه دادن از state سازگارشده چه تفاوتی با restart از صفر دارد. benchmarkها این دو راهبرد را با seedهای متعدد مقایسه می‌کنند و پروژه صریحاً از ادعای «warm-start همیشه بهتر است» پرهیز می‌کند.

صورت‌بندی بهینه‌سازی پویا
minxft(x)s.t.gi,t(x)≤0\min_x f_t(x)\quad\text{s.t.}\quad g_{i,t}(x)\le 0

محدودیت‌ها و الزامات

  • تغییر objective و constraintها در طول اجرا
  • پشتیبانی از Genetic Algorithm و Differential Evolution در هسته فعلی
  • رعایت قیود و repair در یک مسیر مشترک
  • stateful warm-start برای problem versionهای جدید
  • benchmark تکرارپذیر با seed مشخص و metricهای recovery
  • جداسازی رویداد، optimizer و transport

رویکرد

هسته الگوریتمی GA و DE را در کنار یک Random Search baseline نگه می‌دارد. state در GAState صریح است؛ هنگام تغییر مسئله، geneهای jobهای بدون تغییر حفظ می‌شوند، موارد جدید مقداردهی می‌شوند و اثر تغییر منابع با نمونه‌گیری مجدد مدیریت می‌شود.

text
Problem Change Event
        -> Apply Change
        -> Adapt GA State
        -> Continue Optimization
        -> Record Evaluation / Metrics
        -> Publish Completion Event

تصمیم‌ها و مصالحه‌ها

تصمیمدلیل
دو metaheuristic مشخص در scopeمقایسه روشن GA و DE بدون گسترش بی‌دلیل دامنه الگوریتمی.
Warm-start به‌عنوان فرضیه قابل آزمونstate قبلی به‌صورت صریح استفاده می‌شود، اما برتری آن از benchmark نتیجه‌گیری می‌شود نه از فرض اولیه.
Deterministic benchmark با seedنتایج recovery و مقایسه قابل بازتولید می‌شوند.
Event-driven orchestrationتغییر مسئله و چرخه optimization از transport خاص مستقل می‌ماند.
Kafka فقط در لایه زیرساختحضور Kafka به معنی تبدیل هر iteration داخلی optimizer به event نیست.

نتیجه

خروجی پروژه یک چارچوب قابل اجرا برای dynamic optimization است که GA، DE و Random Search، سازگاری state، event bus، Kafka adapter و benchmarkهای recovery را کنار هم قرار می‌دهد. برای هر اجرا metricهایی مانند success rate، iterations-to-target، mean/median recovery و feasible fraction ثبت می‌شوند تا مقایسه به داده متکی باشد.

عمق فنی

  • Mixed-integer chromosome در GA و DE/rand/1/bin برای بردار real-valued
  • یک مسیر مشترک برای evaluation، repair و termination
  • رویدادهای versioned با event_id، event_type، timestamp و aggregate_id
  • Kafka با semantics تحویل at-least-once و dedup در سطح consumer
  • RunRecord و GenerationMetric برای ثبت telemetry و reproducibility

شواهد

طراحی، benchmarkها و پیاده‌سازی به‌صورت عمومی در GitHub قابل بررسی هستند.

GitHub — Event-Driven Metaheuristic Optimization

README پروژه مسئله، معماری، benchmarkهای recovery و مرزهای scope را مستند کرده است.

باز کردن منبع

مسئله بهینه‌سازی شما در طول زمان تغییر می‌کند؟

می‌توان ساختار مسئله، روش recovery و معیارهای مقایسه را پیش از انتخاب الگوریتم دقیق‌تر کرد.