چیتشیت
بهینهسازی ازدحام و یادگیری تقویتی چندایجنت (MARL) برای ایجنتها
Swarm Optimization and MARL for Agents
PSO و ACO برای پرامپتها و مسیریابی، ازدحامهای مبتنی بر صف، و مقایسه شانهبهشانهی MADDPG، QMIX، MAPPO و خودبازی.
فهرست مطالب
مقایسهی PSO در برابر ACO
مقایسه| فاکتور | PSO | ACO |
|---|---|---|
| مسئله | فضای جستجوی پیوسته | مسیریابی یا انتخاب مسیر |
| حافظه | p_best و g_best | فرومون به ازای هر نوع وظیفه × ایجنت |
| کاربرد در ایجنت | LMPSO، مدلهای ازدحامی (Model Swarms) | مسیریابی AMRO-S |
| بهبود گزارششده | 13.3% نسبت به 12 خط مبنا | 4.7 برابر افزایش سرعت |
| جمعیت | 10 تا 30 ذره | 3 ایجنت، 4 نوع وظیفه در دمو |
| قاعدهی بهروزرسانی | اینرسی + شناختی + اجتماعی | واپاشی، سپس رسوبگذاری مشروط |
| تابع دمو | run_lmpso() | run_amro_s() |
الگوریتمهای MARL
مقایسه| فاکتور | MADDPG | QMIX | MAPPO |
|---|---|---|---|
| سال و محل انتشار | NeurIPS 2017 | ICML 2018 | NeurIPS 2022 |
| محیط | همکارانه، رقابتی، ترکیبی | فقط همکارانه | همکارانه |
| سیگنال آموزش | ناقد هر ایجنت تمام کنشها را میبیند | ترکیبکنندهی یکنوای Qهای هر ایجنت | تابع ارزش متمرکز |
| نوع سیاست | برونسیاست | برونسیاست | همسیاست PPO |
| بستر آزمون | Particle World | SMAC | فوتبال، Hanabi، و MPE |
| محدودیت | بیشتر از ~10 ایجنت، ناقدها بزرگ میشوند | پاداش باید یکنوا باشد | خط مبنای پیشفرضی که باید شکستش داد |
| دمو | run_maddpg_style | run_qmix_style | run_mappo_style |
رژیمهای MARL
مقایسه| فاکتور | IQL / IPPO | CTDE | خودبازی | بازی لیگ |
|---|---|---|---|---|
| ایده | دیگران محیط محسوب میشوند | ناقد متمرکز، سیاست محلی | نسخهای از خود در گذشته | جمعیتی از سیاستهای گذشته |
| مناسب برای | وظایف با جفتشدگی ضعیف | ناوبری همکارانه | بازیهای جمعصفر | چرخههای استراتژی |
| نمونهها | Q مستقل | MADDPG، COMA، MAPPO، QMIX | AlphaZero | AlphaStar |
| نکته | همگرایی نظری: ندارد | رایجترین پارادایم امروزی | ممکن است در چرخهی برتریجویی گیر کند | بهرهبردارها و بهرهبردارهای اصلی را اضافه میکند |
ازدحام مبتنی بر صف در برابر انتساب ثابت
مقایسه| فاکتور | ترتیبی | انتساب ثابت | ازدحام |
|---|---|---|---|
| چهکسی کار را انتخاب میکند | یک کارگر | شناسهی ازپیشتعیینشدهی کارگر | کارگران از یک صف مشترک کار میکشند |
| تابع | run_sequential | run_fixed_assignment | run_swarm |
| توازن بار | هیچ | کارگران سریع بیکار میمانند | خودکار |
| مناسب برای | صرفاً خط مبنا | مدتزمان از قبل مشخص باشد | بسیاری از وظایف مستقل |
| نقطهضعف | زمان واقعی | کارگر 0 تمام وظایف کند را دریافت میکند | ترتیب و دیباگ |
زمان استفاده از هر روش
مفهومها- PSO
- پارامترهای پیوسته، ارزیابی برازش خودکار و ارزان، جمعیت 10 تا 30.
- ACO
- مسیریابی تکرارشونده در طول زمان با نیاز به شواهد تفسیرپذیر.
- هیچکدام
- برازش نیازمند بازبینی انسانی است یا تاخیر باید کاملاً دقیق باشد.
- الگوریتم ژنتیک
- فضای گسستهی ترکیبیاتی که توسط PSO پوشش داده نمیشود.
- ازدحام
- تعداد زیادی وظیفه مستقل با مدتزمان متغیر.
- سرپرست
- وظیفه به یک نقشهی جامع و هماهنگ نیاز دارد.
- MAPPO
- نقطهی شروع پیشنهادی برای MARL همکارانه.
- خودبازی
- بازیهای جمعصفر. بازی لیگ در شرایط چرخش استراتژیها.
اجرای الگوها
کار و کد| وظیفه | کد |
|---|---|
| اجرای هر دموی درس | python3 code/main.py |
| PSO روی 2 پارامتر پرامپت | history = run_lmpso() |
| مسیریابی ACO در برابر تصادفی | run_amro_s(n_tasks=200, seed=0) |
| چاپ ردپا | print_pheromone_table(router) |
| گامها تا هدف به ازای هر سبک MARL | `bench(label, runner)` over 500 trials |
| دریافت کار از صف مشترک | run_swarm(tasks, n_workers) |
| Q مستقل روی گرید | independent_q(episodes=1500) |
| Q مشترک روی 16 کنش | joint_q_learning(episodes=1500) |
بهروزرسانی PSO
کدpython
w, c1, c2 = 0.6, 1.2, 1.2 # اینرسی، شناختی، اجتماعی
r1, r2 = rng.random(), rng.random()
cognitive = c1 * r1 * (p.p_best[d] - p.x[d])
social = c2 * r2 * (g_best_x[d] - p.x[d])
p.v[d] = w * p.v[d] + cognitive + social
p.x[d] += p.v[d]
p.x[d] = max(bounds[d][0], min(bounds[d][1], p.x[d])) # محدودسازی در بازه (clamp)
f = fitness(p.x) # صرفاً ارزیاب، بدون گرادیان
if f > p.p_best_fit: # سپس بررسی g_best_fit
مسیریاب ACO
کدpython
router = PheromoneRouter(task_types, agents) # هر مسیر از 1.0 شروع میشود
aco_agent = router.choose(tt, rng) # نمونهگیری بر اساس وزن فرومون
aq = simulate_task(aco_agent, tt, rng)
router.deposit(tt, aco_agent, aq)
self.pheromones[task_type][a] *= (1.0 - self.decay) # واپاشی برای تمام ایجنتها
if quality >= self.quality_threshold: # فیلتر کیفیت
self.pheromones[task_type][agent] += self.reinforce * quality
الگوی CTDE
معماریپیشفرضها در کد درس
پیشفرضها| تنظیم | پیشفرض | نکته |
|---|---|---|
n_particles | 20 | جمعیت run_lmpso |
iterations | 30 | تکرارهای PSO |
decay | 0.05 | واپاشی فرومون در هر رسوبگذاری |
reinforce | 0.2 | رسوب برابر است با تقویت ضرب در کیفیت |
quality_threshold | 0.6 | هیچ رسوبی پایینتر از آن انجام نمیشود |
n_tasks | 200 | وظایف مسیریابیشده در run_amro_s |
epsilon | 0.15 | اکتشاف در independent_q |
gamma | 0.95 | تخفیف، با alpha برابر 0.1 |
حالتهای شکست
عیبیابیقفل شدن مسیریاب روی یک ایجنت بد
- علت
- ایجنت سریع اما غلط فرومون گرفته است
- راهحل
- اعمال فیلتر کیفیت روی رسوبگذاریها
واگرایی بهترین برازش
- علت
- انحراف فاجعهبار پس از تغییر توزیع داده
- راهحل
- بازنشانی یا دوبرابر کردن نرخ واپاشی
ازدحام راهحلهای خوب را فراموش میکند
- علت
- واپاشی بیش از حد سریع
- راهحل
- واپاشی کندتر، پایش بهترین برازش
وظایف طولانی هرگز اجرا نمیشوند
- علت
- قحطی در صف
- راهحل
- صف اولویتدار با کهنهگی (aging)
خروجی وظیفه دو بار ظاهر میشود
- علت
- کرش کردن کارگر در حین اجرا
- راهحل
- کارگران بیاثر در تکرار، صف بادوام
تعقیب بیحاصل ایجنتها توسط یکدیگر
- علت
- دریفت سیاست، نامانایی
- راهحل
- ناقد متمرکز، نرخهای یادگیری پایین
بازپخش قدیمی به یادگیری آسیب میزند
- علت
- انتقالها از حریفان منسوخ شدهاند
- راهحل
- برچسبگذاری مجدد یا وزندهی بر اساس تازگی
ایجنتهای مزایده پیشنهاد صفر میدهند
- علت
- دور زدن پاداش از طریق هماهنگی تبهکارانه
- راهحل
- طراحی دقیق پاداش، اعمال قیود
پرسشها
پرسش و پاسخ- چرا روشهای بدون گرادیان برای پرامپتها؟
- پرامپت یک رشتهی گسسته است. PSO و ACO فقط به یک ارزیاب نیاز دارند.
- هزینهی یک PSO با 20 ذره و 50 تکرار چقدر است؟
- حدود $20 با فرض ~$0.02 به ازای هر فراخوانی.
- چرا QMIX نامتمرکز عمل میکند؟
- ترکیب یکنوا به هر ایجنت اجازه میدهد به طور مستقل argmax خود را بگیرد.
- چرا MARL را برای ایجنتهای LLM آموزش نمیدهیم؟
- بیشتر سیستمها سیاستها را پرامپت میکنند. آموزش فقط با داده، پاداش و زیرساخت انجام میشود.
- چرا مقیاسپذیری دموی joint-Q کند است؟
- فضای کنش آن برای دو ایجنت برابر با
|A|² = 16است.
چکلیست استقرار
نکتهها- با 10 تا 20 ذره و 20 تا 50 تکرار شروع کنید.
- فرومونها یا g_best را در هر تکرار ثبت کنید.
- یک متریک هزینه-به-ازای-تکرار صادر کنید.
- به هر وظیفه در ازدحام یک شناسهی ردگیری اختصاص دهید. با رشد صف، فشار معکوس اعمال کنید.
- مسیر اجرا را محدود کنید که فقط
o_iرا ببیند. - جریان مشاهده و کنش تکتک ایجنتها را لاگ کنید.