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 همیشه بهتر است» پرهیز میکند.
محدودیتها و الزامات
- تغییر 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های بدون تغییر حفظ میشوند، موارد جدید مقداردهی میشوند و اثر تغییر منابع با نمونهگیری مجدد مدیریت میشود.
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 و معیارهای مقایسه را پیش از انتخاب الگوریتم دقیقتر کرد.