ذكاء اصطناعي بسيط لتعليم ديناصور Google Chrome غير المتصل بالإنترنت القفز على نبات الصبار، باستخدام الشبكات العصبية وخوارزمية جينية بسيطة.
شاهد هذا الفيديو لمشاهدته عمليًا، وتعرف على كيفية عمله: الذكاء الاصطناعي مع ديناصور Google
قم بتثبيت Node.js
على جهاز الكمبيوتر الخاص بك.
استنساخ/تنزيل هذا المجلد على جهاز الكمبيوتر الخاص بك.
قم بتشغيل npm install
داخل هذا المجلد
افتح لعبة الديناصورات في Chrome واترك الوحدة الطرفية جانبًا (يجب أن تكون على نفس الشاشة) (نصيحة: انتقل إلى أدوات المطورين، وتحت الشبكة، اضبط على وضع عدم الاتصال)
قم بتشغيل node index
داخل هذا المجلد. إذا تم تحديد موقع اللعبة، فسوف يحرك مؤشر الماوس إلى أصل floor
الدينو. اضغط على مفتاح s
في المحطة لبدء التعلم.
لدينا 3 مدخلات مختلفة يتم قراءتها من بكسلات الشاشة:
لدينا أيضًا مخرج واحد بثلاث حالات محتملة:
يتكون كل جيل من 12 شبكة عصبية (جينومات).
يتم اختبار كل جينوم مع اللعبة، من خلال تعيين مدخلات القراءة من اللعبة باستمرار إلى مدخلات الشبكة العصبية، ومن خلال الحصول على الإخراج/التنشيط من الشبكة وتطبيقها على مفاتيح لوحة المفاتيح.
أثناء اختبار كل جينوم، نقوم بتتبع "ملاءمته" من خلال حساب عدد نباتات الصبار التي قفزت في اللعبة.
عند اكتمال جيل كامل، نقوم بإزالة أسوأ الجينومات حتى نصل إلى الجينوم N
باستخدام تلك الجينومات N
، نختار بعد ذلك اثنين بشكل عشوائي، ونقارن قيمهما/تكويناتهما. بعد ذلك، نقوم بتطبيق طفرات عشوائية في قيم/تكوينات الشبكة العصبية، مما يؤدي إلى إنشاء جينوم جديد.
نقوم بعملية التقاطع/الطفرة حتى نحصل على 12 جينومًا مرة أخرى، ونكررها باستمرار.
تم تنفيذ جميع العمليات باستخدام Node.js، مع Synaptic (مكتبة الشبكة العصبية)، وRobotJs (مكتبة لقراءة وحدات البكسل ومحاكاة الضغط على المفاتيح).
هناك بعض الملفات في المشروع:
index.js
: يقوم بربط كل الأشياء معًا.
Scanner.js
: طبقة التجريد الأساسية أعلى مكتبة RobotJs التي تقرأ الشاشة مثل تتبع الأشعة. لديها أيضا بعض وظائف المرافق.
UI.js
: النطاق العالمي لإدارة واجهة المستخدم. يقوم بتهيئة الشاشة وتحديثها أيضًا بناءً على التغييرات.
GameManipulator.js
: يحتوي على جميع التعليمات البرمجية اللازمة لقراءة أجهزة الاستشعار وتطبيق المخرجات على اللعبة. مسؤول أيضًا عن حساب النقاط والحصول على حالة اللعبة وتحفيز عمليات رد الاتصال/المستمعين للتنفيذ الحقيقي.
Learner.js
: هو التنفيذ الأساسي للخوارزمية الجينية. هذا هو المكان الذي يحدث فيه "السحر"، عن طريق تعاقب الأجيال، والقيام بالانتقاء "الطبيعي"، والتهجين، والطفرة...
genomes
بامتداد .json
enter
(ثم، للبدء، اضغط على s
)o
لحفظ الجيلCc
لإنهاء العمليةتحتوي لعبة الديناصورات على خطأ مزعج: فهي تبدأ في "الانجراف" إلى اليمين مع مرور الوقت مما يجعل الديناصور مخطئًا من أصل اللعبة. وهذا يجعل البرنامج يقرأ الدينو على أنه صبار، لأنه نفس اللون.
يمكنك إصلاح ذلك عن طريق تحديث الصفحة باستمرار، أو عن طريق لصق هذا الرمز داخل وحدة التحكم في مفتش العناصر:
// Make sure the dino does not drift to the right
setInterval(function (){Runner.instance_.tRex.xPos = 21}, 2000)
من فضلك، اتبع دليل أسلوب Node.js من Felix. إنها ليست معقدة، ولها نمط بسيط رائع للأشياء.