مسألة #304
المؤلف:IOAI 2026 Organizing Team
الصعوبة
أفضل نتيجة لك
غير متوفر
أنتم تدرّبون روبوت توصيل على خريطة حضرية تتكون من 8 × 8 خلايا. في كل حلقة، يبدأ الروبوت من خلية حرة، ويصل إلى المستودع الذي يوجد فيه الطرد، ويلتقطه، وينتقل إلى مستودع آخر — الوجهة — ثم يسلّمه. تحتوي كل خريطة على ستة مستودعات وثماني خلايا محجوبة.
الهدف هو تعلّم سلوك الروبوت من عدد صغير عمدًا من عروض الخبراء. هذه مسألة استنساخ سلوكي: تدرّبون نموذجًا على أمثلة ملاحظة/إجراء، ثم تشغّلونه خطوة بخطوة في حلقات جديدة.
تُفهرس المستودعات بالقيم 0..5 وتُوسم بالقيم A..F. تنتهي الحلقة بنجاح عندما ينفذ الروبوت إجراء dropoff صالحًا عند الوجهة وهو يحمل الطرد. يُسمح بحد أقصى قدره 120 actions.
| ID | الإجراء |
|---|---|
| 0 | جنوب |
| 1 | شمال |
| 2 | شرق |
| 3 | غرب |
| 4 | التقاط الطرد (pickup) |
| 5 | تسليم الطرد (dropoff) |
لا يغير التحرك إلى داخل جدار أو إلى خارج الخريطة موضع الروبوت، لكنه يستهلك خطوة واحدة. ينجح pickup فقط عند مستودع الطرد، عندما لا يكون الروبوت حاملًا للطرد بالفعل. ينجح dropoff فقط عند الوجهة، عندما يكون الروبوت حاملًا للطرد. لا يغيّر pickup أو dropoff غير الصالح state ويستهلك خطوة واحدة.
تحتوي كل ملاحظة تدريب على:
grid: موتر float32 بالشكل (6, 8, 8);vector: 13 قيمة عددية مطبّعة؛action_mask: ست قيم منطقية تشير إلى actions الصالحة؛state: (row, column, package_field, destination).تمثل قنوات موتر grid ما يلي:
يحتوي vector، بالترتيب، على: صف الروبوت وعموده المطبّعين، وحقل الطرد، والوجهة، ومؤشر الحمل، وصف الهدف الحالي وعموده، والفروق بالنسبة إلى الهدف، ثم أربعة مؤشرات للحركة المحجوبة بالترتيب جنوب، شمال، شرق، غرب.
تحتوي مجموعة البيانات العامة على:
تستخدم حزمة المنصة JSON ومصفوفات NumPy الآمنة بدلًا من ملفات Python pickle. راجعوا starter_kit.py لمعرفة الأسماء الدقيقة وتعليمة التحميل. حمّلوا ملفات NumPy باستخدام allow_pickle=False.
يكون كل layout_id مشتركًا بين أربع حلقات. ويكون المفتاح الفريد دائمًا:
(layout_id, episode_seed)درّبوا نموذجًا حتميًا يتنبأ بالإجراء التالي من الملاحظة الحالية. شغّلوا النموذج عبر حلقات كاملة، وأنشئوا تسلسل إجراءات واحدًا لكل سيناريو اختبار.
يمكنكم استخدام العروض المقدمة للتدريب. لا يُسمح لكم بالحصول على تسميات خبراء لمجموعات التحقق أو الاختبار، كما لا يجوز لكم إنشاء عروض خبراء إضافية من خلال البحث أو التخطيط أو نموذج خبير آخر. قد تراجع اللجنة العلمية الحلول القائمة على القواعد أو المكتوبة صراحةً بترميز ثابت. قد يطلب المنظمون الـ notebook أو الشفرة المصدرية المستخدمة في إنشاء التسليم.
أرسلوا أرشيف ZIP باسم predictions.zip، يحتوي على ملف واحد بالضبط في جذره: predictions.json.
يجب أن يحتوي الملف على مصفوفة JSON تضم 1,600 كائن بالضبط، كائنًا واحدًا لكل حلقة اختبار:
[ {"layout_id":"test_0000","episode_seed":300000,"actions":[1,1,2,4,0,5]}]المتطلبات:
(layout_id, episode_seed)، لا حسب ترتيب الصفوف؛actions قائمة JSON من أعداد صحيحة — لا قيم منطقية — بين 0 و5؛تُرفض الأرشيفات غير الصالحة أو التسليمات غير المكتملة.
المقياس هو معدل نجاح الحلقات:
SR = successful deliveries / evaluated episodesscore = 100 × SRلا تُمنح نقاط جزئية للوصول إلى الطرد أو الاقتراب من الهدف أو استخدام عدد أقل من الخطوات.
بالنسبة إلى لوحة صدارة المنصة، تُقسّم خرائط الاختبار بصورة حتمية:
أثناء المسابقة، تُعرض النتيجة الجزئية، بينما تستخدم لوحة الصدارة النهائية المجموعة الكاملة. لا تتضمن البيانات العامة الانتماء إلى المجموعتين الفرعيتين. قد يظهر متوسط عدد الخطوات ومحاولات pickup/dropoff غير الصالحة في سجلات المقيّم، لكنها لا تؤثر في النتيجة.
مقتبس من «أكاديمية التوصيل الروبوتي: البرنامج التحضيري» (IOAI 2026, Home Task 2). تمثل طريقة العرض الآمنة للبيانات وقواعد التحقق وتقسيم لوحة الصدارة والمقيّم تعديلات خاصة بمنصة MLCompete.