WEBVTT

00:00.150 --> 00:02.010
أهلا ومرحبا بكم في هذا البرنامج التعليمي.

00:02.040 --> 00:04.870
تهانينا مرة أخرى على الانتهاء من الثلاثة.

00:04.900 --> 00:06.170
انظر ، لقد صنعناها.

00:06.180 --> 00:08.180
لقد صنعنا العقول ونقوم بتدريبهم.

00:08.190 --> 00:14.940
لكن لا يزال يتعين علينا الآن إنشاء عامل اختبار ، والذي لن يقوم بتحديث النموذج على الإطلاق ، ولكنه

00:14.940 --> 00:19.260
سيستخدم النموذج المشترك فقط لإجراء استكشافاته الخاصة.

00:19.290 --> 00:24.690
وبالطبع ، في هذا الكود ، سنقوم بتسجيل بعض مقاطع الفيديو وستكون هذه مقاطع فيديو لعامل

00:24.690 --> 00:27.660
الاختبار هذا وهو يلعب الاختراق بدرجة معينة.

00:28.560 --> 00:30.710
لذلك دعنا نذهب من خلال هذا الرمز.

00:30.720 --> 00:31.980
تم الانتهاء الأكثر أهمية.

00:31.980 --> 00:37.320
لذا كما أخبرتك ، لن نقوم بترميزها سطراً بسطر ، لكنني أعتقد أنه من المهم أن تفهم

00:37.320 --> 00:38.520
ما يحدث هنا.

00:38.520 --> 00:40.710
لذلك ها نحن نذهب مع هذا الرمز.

00:40.740 --> 00:47.280
في القسم الأول ، كما لاحظت ، نستورد المكتبات ثم نحدد وظيفة الاختبار هذه التي ستجعل

00:47.280 --> 00:52.170
عامل الاختبار هذا إلى استكشافه الخاص ويلعب لعبة الاختراق.

00:52.350 --> 00:53.070
لذا ها نحن ذا.

00:53.070 --> 00:55.230
تأخذ وظيفة الاختبار هذه ثلاث حجج.

00:55.230 --> 01:01.950
الأول هو الترتيب ، ولا يزال يتعين عليك مزامنة وكيل الاختبار كما فعلنا مع وكلاء التدريب.

01:01.950 --> 01:05.100
ثم لدينا معاييرنا ، بالطبع ، لأننا سنحتاج إلى بعضها.

01:05.100 --> 01:12.150
وبالطبع لدينا النموذج المشترك لأن عامل الاختبار هذا سيستخدم النموذج المشترك للقيام بالاستكشاف

01:12.150 --> 01:13.140
الخاص به.

01:13.170 --> 01:18.150
حسنًا ، ثم ندخل داخل الوظيفة في سطر الكود هذا ، وقمنا بمزامنة عامل الاختبار

01:18.150 --> 01:20.190
تمامًا كما فعلنا من قبل.

01:20.520 --> 01:22.950
ثم نستورد البيئة.

01:22.950 --> 01:28.530
لذلك أذكر أنه في الكود الرئيسي ، والذي سيكون في البرنامج التعليمي التالي ، سيتم استبدال

01:28.530 --> 01:35.010
نهاية الاسم هنا بالاختراق بصفر حتى نتمكن من الدخول في بيئة الاختراق صفر ولعب اللعبة.

01:35.010 --> 01:39.960
ويعني الفيديو يساوي صحيحًا أننا سنحصل على مقاطع الفيديو الخاصة باختراق خط الأنابيب.

01:39.960 --> 01:46.410
يعني هذا السطر من التعليمات البرمجية بشكل إجمالي أننا نشغل بيئة واحدة بالفيديو.

01:46.830 --> 01:53.160
ثم في السطر التالي من الكود ، قمنا بمزامنة هذه البيئة بالضبط نفس المبدأ كما هو الحال في وظيفة

01:53.160 --> 01:54.090
مدربة.

01:54.450 --> 02:02.100
ثم نحصل على نموذجنا ، وللقيام بذلك ، نقوم بإنشاء كائن من الفئة النشطة وإدخال شكل الإدخال

02:02.100 --> 02:06.330
مع بيئتنا ، والملاحظة ، والفضاء ، والشكل صفر.

02:06.330 --> 02:13.590
لذلك تمامًا مثل وظيفة القطار ومخرجاتنا ، وهي الإجراءات مع مساحة العمل.

02:13.590 --> 02:17.310
لذلك بالضبط مثل ما قبل ذلك الحين شيء جديد هنا.

02:17.310 --> 02:23.400
نظرًا لأننا انتهينا من التدريب ، لا نريد وضع النموذج في وضع القطار لأننا ببساطة

02:23.400 --> 02:29.640
لا نريده أن يتدرب ، نريد وضعه في وضع VAL وهذا ما نفعله هنا بنموذج النقطة فال.

02:29.640 --> 02:36.960
هذا فقط لوضع عامل الاختبار في الوضع الذي سيختبره بشكل أساسي ، ويختبر أدائه الذي يتم

02:36.960 --> 02:37.950
تقييمه.

02:38.460 --> 02:45.510
ثم هنا نحصل على حالات الإدخال الخاصة بنا والتي هي صور المدخلات من اللعبة ، والتي يتم إجراؤها في هذه المرحلة بواسطة

02:45.510 --> 02:46.560
المصفوفات.

02:46.560 --> 02:49.230
ثم هنا نقوم بتحويلها إلى مستشعرات شعلة.

02:49.230 --> 02:51.750
هنا نبدأ بعض المكافآت.

02:52.080 --> 02:54.960
هنا نقوم بالتهيئة إلى صحيح.

02:54.960 --> 02:58.770
لذلك لا يزال مثل المرة السابقة ، ثم شيء جديد مرة أخرى.

02:58.770 --> 03:05.730
نقدم متغير الوقت الثالث هذا مع وظيفة من وقت لآخر لقياس وقت العمليات الحسابية.

03:06.000 --> 03:11.760
وذلك لأننا نريد الحصول على نقطة البداية هنا للإجراءات التي نستخدمها نوعًا عمليًا جدًا من الإشارات

03:11.760 --> 03:16.410
التي تسمح بإضافة عنصر إلى قائمة الانتظار من اليمين أو من اليسار.

03:16.410 --> 03:21.930
هذا عملي للغاية وسأعطيك الرابط المرجعي في الإصدار الموصى به من الكود.

03:21.930 --> 03:27.060
لذا ستلقي نظرة على ماهية قائمة الانتظار هذه اليوم ، وهذا ما يتيح لنا القيام بذلك.

03:27.210 --> 03:33.300
ثم نقوم بتهيئة طول الحلقة بصفر ، بالطبع ، وبعد ذلك سنزيد الحجم في حلقة

03:33.300 --> 03:34.620
البئر هذه.

03:34.620 --> 03:42.240
لذلك نستخدم نفس الحيلة هنا بينما تكون صحيحة وفي الحلقة نزيد طول الحلقة بمقدار واحد.

03:42.240 --> 03:48.660
عندما تنتهي اللعبة ، عندما تنتهي اللعبة ، نعيد تحميل المجموعة الأخيرة من النموذج المشترك.

03:48.690 --> 03:51.330
النموذج المشترك الذي تم تحديثه بواسطة النماذج الأخرى.

03:51.330 --> 03:54.750
تذكر أنه هنا لم يعد يتم تحديث هذا النموذج المشترك.

03:54.960 --> 04:00.270
ثم لا يزال ، إذا انتهت اللعبة ، وإذا انتهت اللعبة ، فنحن نلعب فيها.

04:00.270 --> 04:09.750
نعيد تهيئة حالات الخلية ، ونرى x والحالات المخفية h x وإلا إذا لم تنته اللعبة ، حسنًا ، نحتفظ بنفس حالات الخلية

04:09.930 --> 04:15.810
والحالات المخفية ، لكننا نتأكد من وجودها في متغير إجمالي بحيث يمكن

04:15.810 --> 04:18.030
أن تكون تعلق على التدرج.

04:18.360 --> 04:24.030
هذا شيء فعلناه بالفعل في وظيفة القطار ثم ما زلنا في الحلقة البرية.

04:24.030 --> 04:30.270
وبعد تحديث حالات الخلية في الحالات المخفية بالطريقة الصحيحة ، اعتمادًا على الحالتين

04:30.270 --> 04:30.780
هنا.

04:30.780 --> 04:31.800
حسنًا ، ماذا سنفعل؟

04:31.800 --> 04:34.260
نحصل على تنبؤات النموذج.

04:34.260 --> 04:37.230
هذا هو بالضبط ما نفعله هنا بهذا السطر من التعليمات البرمجية.

04:37.530 --> 04:42.600
لذلك نحصل على القيمة ، وهي ناتج الناقد ، وقيمة الإجراء ، وهي ناتج الممثل

04:42.600 --> 04:47.610
، ثم الجزء العلوي ، كل الحالات المخفية ، h ، x وحالة الخلية ترى x.

04:48.030 --> 04:53.550
ثم نقوم بإنشاء توزيع احتمالات الإجراءات التي لها قيمة إجراء قيم Q

04:53.580 --> 04:54.060
هنا.

04:54.060 --> 04:56.280
ونفعل ذلك باستخدام دالة max.

04:56.280 --> 05:01.290
وبالطبع لا نحتاج إلى الحصول على احتمالات السجل هنا لأن هذا مخصص فقط لتدريب

05:01.290 --> 05:02.520
وكيل الاختبار.

05:02.520 --> 05:08.670
ستلعب فقط الإجراءات التي سنستخدمها فقط مثل الموت ، جسد أقصى ناعم للعبها.

05:08.670 --> 05:12.240
لكننا لا نقوم بأي تدريب هنا ، لذلك لدينا فقط الدعامة.

05:12.240 --> 05:18.960
ومن هذا المسبار نلعب الإجراء من خلال أخذ الحد الأقصى لهذه الاحتمالات مباشرة.

05:18.960 --> 05:22.530
أي أنه يأخذ الإجراء الذي له أعلى احتمال.

05:22.530 --> 05:26.610
والسبب هو أن عامل الاختبار لا يقوم بأي استكشاف.

05:26.610 --> 05:28.140
تذكر أننا نريد ذلك.

05:28.260 --> 05:34.170
لديك فرصة لالتقاط بعض الإجراءات ذات الاحتمالات المنخفضة عندما نريد القيام ببعض الاستكشاف لهذه

05:34.170 --> 05:39.560
الإجراءات الأخرى ، كما تعلم ، لا نتخذ الإجراء الذي يحتوي على أعلى احتمالية في كل مرة.

05:39.600 --> 05:42.240
لكن هنا عامل الاختبار لن يقوم بأي استكشاف.

05:42.240 --> 05:46.800
وبالتالي ، هذا هو سبب قيامنا مباشرة بالإجراء الذي يحتوي على أقصى احتمال.

05:47.520 --> 05:54.990
وبعد ذلك بمجرد أن نلعب الإجراء ، نصل إلى الحالة التالية ونحصل على المكافأة التالية ويتم تحديث ما إذا كانت

05:54.990 --> 05:56.870
اللعبة قد انتهت أم لا.

05:56.880 --> 06:03.450
لذلك حصلنا على كل هذا مع هذا السطر من التعليمات البرمجية من خلال تشغيل الإجراء بعد تحديده مع الحد الأقصى

06:03.720 --> 06:04.550
هنا.

06:04.560 --> 06:10.980
لذلك نحن نلعب العمل هنا ونحصل على الدولة ، نحصل على المكافأة ويتم تحديثها.

06:11.610 --> 06:17.970
وبعد ذلك ، نظرًا لأننا حصلنا للتو على مكافأة جديدة ، فسنقوم بتحديث مجموع المكافأة ببساطة عن طريق إضافة هذه المكافأة

06:17.970 --> 06:18.900
الجديدة.

06:18.900 --> 06:21.420
وأخيرًا ، عندما تنتهي اللعبة.

06:21.420 --> 06:27.510
لذا ، إذا تم ذلك يعني انتهاء اللعبة ، وعندما تنتهي منظمة العفو الدولية من لعب اللعبة

06:27.510 --> 06:35.100
، حسنًا ، سنقوم بطباعة النتائج مع الوقت ، وتكافئ الحلقة طول الحلقة وهي المدة التي استغرقتها آخر استراحة

06:35.100 --> 06:37.140
في اللعب خارج؟

06:37.140 --> 06:42.690
وهذه هي الطريقة التي نطبع بها كل هذه المتغيرات باستخدام حيل الوقت هذه.

06:42.690 --> 06:43.890
هذا هو الوقت المناسب.

06:43.890 --> 06:49.050
ثم مكافأة البعض هي مجرد متغير لمجموع المكافآت وطول الحلقة هو المتغير

06:49.050 --> 06:50.400
لطول الحلقة.

06:51.130 --> 06:57.370
OC وبعد ذلك بمجرد طباعة جميع النتائج ، حسنًا ، نظرًا لأن اللعبة قد انتهت ونريد بدء لعبة جديدة

06:57.370 --> 07:02.020
، فسنقوم بإعادة تهيئة كل شيء يمثل مجموع المكافأة إلى الصفر.

07:02.050 --> 07:03.940
طول الحلقة إلى الصفر.

07:03.970 --> 07:07.660
سنقوم بإعادة بدء جميع الإجراءات باستخدام هذه الوظيفة الواضحة.

07:07.960 --> 07:13.330
أعد تعيين صور الإدخال التي تعرفها ، عن طريق إعادة تجميع كل الطوب معًا.

07:13.330 --> 07:21.550
وأخيرًا ، نستخدم هذا الوقت الذي ينام 60 ثانية لأخذ استراحة لمدة دقيقة واحدة للسماح للوكلاء الآخرين بالتدرب

07:21.550 --> 07:29.650
وأنه إذا انتهت اللعبة ، وفي النهاية لدينا هذا السطر الأخير من الكود الذي سيوفر لنا الحالة الجديدة ، ثم

07:29.650 --> 07:32.110
يمكننا المضي قدما.

07:32.110 --> 07:34.030
يمكننا الاستمرار في هذه اللعبة الجديدة.

07:34.300 --> 07:35.710
لذا ها نحن ذا.

07:35.710 --> 07:40.360
هذه هي وظيفة الاختبار ، والتي بفضلها سنرى مقاطع الفيديو في برنامج تعليمي واحد أو اثنين.

07:40.360 --> 07:43.900
آمل أن نكون جميعًا معًا مثل آخر مرة لمشاهدة النتائج.

07:43.900 --> 07:46.210
هذا معك ، أنا وكارول.

07:46.210 --> 07:47.260
ذلك سيكون ممتعا.

07:47.260 --> 07:50.260
وأنا أخبركم ، توقعوا رؤية نتائج جيدة.

07:50.260 --> 07:54.820
لكن ضع في اعتبارك أن لعبة الاختراق هذه كانت صعبة للغاية.

07:54.820 --> 07:58.330
اعتقدنا أنها كانت أبسط لعبة نلعبها أولاً ، لكن ليس على الإطلاق.

07:58.330 --> 08:03.790
لقد تبين أنه أصعب بكثير من Doom ، ولهذا السبب وضعناه في الوحدة الأخيرة.

08:03.940 --> 08:11.740
لكن على أي حال ، دعنا نجعل هذه الوظيفة الرئيسية في البرنامج التعليمي التالي لنقول أن هذه ليست هي الأكثر أهمية هنا.

08:11.740 --> 08:14.440
الآن بعد أن تم تنفيذ a3c بالكامل.

08:14.440 --> 08:16.120
لذلك لن نقوم بترميزها سطراً بسطر.

08:16.120 --> 08:20.320
سأقوم بتوسيع الكود وسرعان ما سنصل إلى النتائج.

08:20.320 --> 08:21.610
حتى ذلك الحين ، استمتع.

08:21.610 --> 08:21.970
أنا.
