WEBVTT

00:01.340 --> 00:03.110
اهلا بكم جميعا ومرحبا بكم من جديد.

00:03.140 --> 00:10.070
في المحاضرة الأخيرة ، رأيت كيف نستخدم وظائفنا المساعدة لإعداد جوهر وظائفنا بالفعل لتدريب

00:10.070 --> 00:11.300
نماذجنا.

00:11.300 --> 00:16.430
لذلك كان لدينا حالتنا الطرفية ، وموقع البداية ، وإجراءنا التالي ، والموقع التالي

00:16.430 --> 00:21.460
، وأقصر مسار يحدد حقًا غالبية كيفية عمل وكيلنا أو كيفية عمل البيئة.

00:21.470 --> 00:25.520
آخر شيء يتعين علينا القيام به هو استخدام تدريبنا من أجل استخدام تدريبنا.

00:25.520 --> 00:31.940
إنه أمر واضح ومباشر بمعنى أن ما نحتاج إلى تضمينه من خلال كيفية القيام بذلك هو قصة مختلفة.

00:32.180 --> 00:36.830
ومع ذلك ، أيضًا ، إذا كنتم تستخدمون أسلوبًا مختلفًا أو إذا كنتم تريدون تخصيص هذا الأمر

00:36.830 --> 00:38.510
وتجربته ، فيوصى به بشدة.

00:38.510 --> 00:42.470
بالإضافة إلى ذلك ، إذا كنت تستخدم نهجًا مختلفًا وترغب في مناقشته ، فلا تتردد في مشاركته

00:42.470 --> 00:43.670
في الأسئلة والأجوبة.

00:43.700 --> 00:45.470
أكثر من سعيد لمناقشته معك.

00:45.470 --> 00:50.510
إنها فكرة رائعة لأن هناك العديد من الطرق لحلها وقد تجد طريقة

00:50.510 --> 00:52.220
أفضل وأكثر فائدة.

00:52.220 --> 00:55.670
يمكننا أن ننظر إلى الإيجابيات والسلبيات مرة أخرى ، وسعداء بمناقشتها.

00:55.670 --> 00:56.090
حسنا.

00:56.090 --> 00:57.290
إذن ماذا علينا أن نفعل؟

00:57.320 --> 00:59.090
علينا أن نبدأ تدريبنا.

00:59.090 --> 01:00.050
لتدريبنا.

01:00.050 --> 01:01.520
نريد استخدام إبسيلون.

01:01.520 --> 01:08.960
إذن ، النسبة المئوية التي سنتخذها من أجل أفضل إجراء لنا بدلاً من الإجراء العشوائي.

01:08.960 --> 01:15.710
لذلك دعونا نضبط epsilon الخاص بنا ودعنا نضبطه على 0. 9 وسنفعل شيئًا مشابهًا لقيمنا لعامل الخصم

01:15.710 --> 01:18.080
ومعدل التعلم لدينا.

01:18.080 --> 01:23.300
لنقم إذن بعامل خصم يساوي 0. 9.

01:23.660 --> 01:29.780
لنأخذ أيضًا معدل التعلم لدينا ونضبطه على 0. 9.

01:29.810 --> 01:33.860
سيكون هذا هو المعدل الذي سيتعلمه وكيلنا أو يجب أن يتعلمه.

01:33.860 --> 01:39.320
ونريد أيضًا أن نأخذ عدد حلقات التدريب ، دعنا نسميها حلقات تدريبية.

01:39.320 --> 01:41.330
لذلك لدينا عدد من حلقات التدريب.

01:41.330 --> 01:42.560
دعنا نضبطه على 1000.

01:42.560 --> 01:46.640
كم مرة سيتدرب فيها أو كم عدد الحلقات التي سيتدرب عليها هذا؟

01:48.140 --> 01:48.800
رائع.

01:49.010 --> 01:52.910
الآن ، ما نريد القيام به هو تكرار كل حلقة.

01:52.910 --> 02:00.100
نريد أن نأخذ نطاق عدد حلقات التدريب لدينا ونضع أساسًا إبسيلون الخاص بنا.

02:00.110 --> 02:01.820
نريد معرفة الاختلاف الزمني لدينا.

02:01.820 --> 02:04.640
لضبط ذلك ، نحتاج إلى إلقاء نظرة على بعض قيم Q السابقة.

02:04.640 --> 02:08.510
نحتاج إلى حساب موضع البداية في مؤشر العمل الخاص بنا.

02:08.510 --> 02:10.790
اذا هيا بنا نبدأ.

02:11.000 --> 02:12.500
لنأخذ حلقة for كبيرة.

02:12.500 --> 02:14.750
لذلك لدينا أربع حلقات.

02:16.840 --> 02:20.080
في نطاق عدد حلقات التدريب لدينا.

02:22.120 --> 02:22.730
ها نحن ذا.

02:22.750 --> 02:31.420
باستثناء أي خطأ نحوي من جانبي هناك ، نريد أن نأخذ فهرس الصف وفهرس العمود لشبكتنا لفهرس

02:31.420 --> 02:33.970
عمود الذرة لدينا.

02:36.110 --> 02:39.950
وضبطها على موقع البداية المستهدف.

02:39.950 --> 02:44.480
نحن بحاجة إلى موقع بداية ، لذلك دعونا نحصل على ذلك في كل حلقة.

02:45.040 --> 02:49.600
الآن يمكننا ضبط حالتنا النهائية بينما.

02:51.210 --> 02:51.990
لا.

02:52.880 --> 02:56.330
هي حالة نهائية.

02:56.360 --> 03:01.580
نريد أن ننظر إلى فهرس الصف وفهرس العمود.

03:03.020 --> 03:07.340
بعد ذلك ، دعنا نضع مؤشر الإجراء الخاص بنا لإجراءنا التالي.

03:07.340 --> 03:09.050
لذلك نحن بحاجة إلى عملنا التالي.

03:09.050 --> 03:16.790
نظرًا لأن هذا الوكيل يتكرر عبر المتاهة لمؤشر الإجراءات الخاص بنا ، فيمكننا استخدام الإجراء التالي الخاص بنا.

03:17.740 --> 03:24.760
ويمكننا استخدام فهرس عمود فهرس الصف الخاص بنا ودعنا نسمي epsilon.

03:24.760 --> 03:29.860
لذلك نريد الحصول على هذا بدلاً من الإجراء العشوائي ، فلنستخدم فهرس العمود.

03:32.020 --> 03:33.880
ونحن بحاجة إلى إبسيلون.

03:34.300 --> 03:34.910
رائع.

03:35.350 --> 03:37.510
إذا كان بإمكاني التهجئة بشكل صحيح ، فنحن هنا.

03:37.510 --> 03:39.220
هل تريد إبسيلون؟

03:39.910 --> 03:42.330
حسنًا ، دعني أحذف OC فقط.

03:42.370 --> 03:47.710
اسمحوا لي أن أحصل على بقية الكود وسنتصفحه حتى لا نضطر لمشاهدتي وأنا أكتب

03:47.710 --> 03:48.280
كل سطر.

03:48.280 --> 03:54.190
لكن ضع في اعتبارك فقط كيف نريد التعامل مع هذا من تعيين الصف القديم ، سنحتاج إلى فهرس

03:54.190 --> 03:55.120
صف قديم.

03:55.120 --> 04:00.310
نود أيضًا الحصول على مكافآت أعمدةنا وصفوفنا.

04:00.310 --> 04:05.890
نحتاج إلى إلقاء نظرة على قيم قائمة الانتظار وقيم قائمة الانتظار القديمة ونحتاج إلى حساب الاختلاف الزمني لدينا.

04:06.220 --> 04:10.000
OC حتى ترى التغيير في الكود أو التحديث على الكود.

04:10.000 --> 04:16.450
نحن نأخذ فهرس الصف القديم وفهرس العمود القديم الخاص بنا لإلقاء نظرة على فهرس الصفوف وفهرس العمود.

04:16.450 --> 04:22.300
سيكون فهرس عمود فهرس الصف لدينا مساويًا لموقعنا التالي وموقعنا التالي سيحتاج إلى فهرس الصف

04:22.300 --> 04:24.280
والعمود والفهرس والإجراء.

04:25.250 --> 04:27.410
أخيرًا ، نحن نبحث عن مكافآت.

04:27.680 --> 04:34.640
ستكون قيم Q القديمة لدينا هي قيم Q مع فهرس الصف القديم ، وفهرس العمود القديم ، ومرة أخرى ، بالإشارة

04:34.640 --> 04:40.700
إلى فهرس الإجراء الخاص بنا وحساب الفرق الزمني لدينا ، وهو مكافأتنا ، بالإضافة إلى

04:40.700 --> 04:48.440
عامل الخصم مضروبًا في قيم Q مع الصف الفهرس وفهرس العمود مطروحًا منه قيمة Q القديمة من قيمة Q السابقة.

04:50.040 --> 04:56.040
لقد تم الانتهاء تقريبًا حيث نحتاج إلى قيمة Q الجديدة ، وهي قيمة Q القديمة بالإضافة إلى معدل

04:56.040 --> 05:03.420
التعلم والأوقات والفرق الزمني وقيم Q الخاصة بنا مع فهرس الصف القديم في فهرس العمود القديم الذي يساوي قيمة

05:03.420 --> 05:04.560
Q الجديدة.

05:05.770 --> 05:09.940
إذا كنتم تريدون مناقشة هذا الأمر مرة أخرى ، فنوصيكم بشدة بالأسئلة والأجوبة.

05:09.940 --> 05:11.270
لا تتردد في الطباعة.

05:11.290 --> 05:13.660
حاول تجربة جميع المتغيرات المستخدمة هنا.

05:13.660 --> 05:17.380
إذا كنت تريد رؤية الأشكال ، انظر كيف يمكن استخدامها ، وما هي الإشارة إليها.

05:17.380 --> 05:20.620
أنا أوصي به بشدة وأنا أكثر من سعيد لمناقشته أكثر.

05:21.040 --> 05:24.640
شيء أخير يمكننا القيام به ، لذلك لدينا القليل من الإشعار.

05:24.640 --> 05:30.040
دعنا نضيف بيان طباعة حتى نعرف متى يكتمل التدريب لصفوفنا البالغ عددها 1000 صف.

05:30.040 --> 05:30.880
حسنا.

05:30.910 --> 05:34.660
إذا لم تكن هناك أخطاء في بناء الجملة من جانبي ، فيجب أن نكون على ما يرام.

05:34.690 --> 05:36.730
تمت تهيئة دفتر collab.

05:36.730 --> 05:37.770
أعدت كل شيء.

05:37.820 --> 05:38.710
اسمحوا لي أن أدير هذا.

05:38.710 --> 05:41.560
يجب أن يكون سريعًا جدًا نظرًا لأننا نستخدم numpy فقط.

05:41.590 --> 05:44.050
إنه نموذج مُحسَّن للغاية بمعنى ما.

05:44.080 --> 05:47.080
اسمحوا لي أن انقر فوق هذا وسنبحث بعد ذلك عن أقصر طريق.

05:48.400 --> 05:48.790
حسنا.

05:48.790 --> 05:50.320
لقد اكتمل تدريبنا.

05:50.530 --> 05:54.820
دعنا أيضًا نطبع أقصر مسار لبعض خيارات البدء.

05:54.820 --> 05:59.920
لذلك نبدأ من الصف الثالث ، العمود التاسع ، مع خيار أقصر مسار بأقصر مسار.

06:00.010 --> 06:06.940
نريد إلقاء نظرة على الصف الخامس والصفر والبدء من الصف التاسع والعمود رقم خمسة.

06:07.030 --> 06:08.320
دعونا نطبعها.

06:08.920 --> 06:09.430
رائع.

06:09.430 --> 06:12.430
لدينا أقصر طريق ، لكننا لم ننتهي.

06:12.430 --> 06:13.630
نحن على وشك الانتهاء.

06:13.870 --> 06:20.680
يمكننا أن نرى ساعي البريد لدينا يحصل تلقائيًا على أقصر طريق من موقع قانوني يمكننا اعتباره من مدينتنا

06:20.680 --> 06:22.840
إلى منطقة تعبئة العناصر.

06:22.840 --> 06:25.540
ولكن ماذا عن السيناريو المعاكس أو المعاكس؟

06:25.540 --> 06:31.300
بالإشارة بشكل أساسي إلى هل يستطيع ساعي البريد لدينا تسليم عنصر من أي مكان في المدينة إلى منطقة التعبئة والتغليف؟

06:31.300 --> 06:37.570
ولكن بعد العنصر ، سيتعين عليه الانتقال من تلك المنطقة ، من منطقة التعبئة والتغليف إلى موقع آخر في المدينة

06:37.570 --> 06:40.470
، لأنه سيتعين عليه التقاط العنصر التالي.

06:40.480 --> 06:43.840
إذن ما الذي يمكننا فعله لحل هذا؟

06:43.840 --> 06:45.370
وهو في الواقع بسيط جدًا.

06:45.370 --> 06:48.100
يمكنك مراجعة ترتيب أقصر طريق.

06:48.700 --> 06:52.270
حاول التفكير في ذلك لثانية ثم سيكون هذا هو الحل.

06:53.290 --> 06:55.150
يمكننا استخدام أقصر طريق.

06:55.150 --> 07:00.580
لنأخذ الصف الخامس والعمود الثاني ثم كل ما عليك فعله هو استخدام خيار العكس.

07:00.580 --> 07:04.450
باستخدام Python ، نستخدم path reverse ويمكننا طباعة المسار.

07:04.450 --> 07:06.250
إذن فنحن ننظر إلى خمسة واثنين.

07:07.080 --> 07:07.860
وها نحن ذا.

07:07.860 --> 07:13.020
لدينا أقصر طريق وهو مفيد حقًا إذا كنت تريد التقاط الصورة في الخلية وإزالتها للمقارنة

07:13.020 --> 07:14.940
وإلقاء نظرة على تلك المسارات.

07:14.940 --> 07:20.370
ولكن يمكنك في الواقع رؤية المسارات إذا قمت بإخراج البيان المطبوع ، وانظر إلى العمود

07:20.370 --> 07:23.250
بالترتيب وشاهد كيف يسافر مندوب المبيعات.

07:23.250 --> 07:25.770
هذا العمل الرائع الذي تستخدمه.

07:25.770 --> 07:26.820
س التعلم.

07:26.820 --> 07:32.640
ما تعلمناه من هذه الدورة يحتوي على القليل من سيناريو المكافآت والمرح وقسم لحل هذا النوع

07:32.640 --> 07:35.100
من مشكلة البائع المتجول بشكل أساسي.

07:35.100 --> 07:40.830
نحن نبحث عن ساعي البريد لتسليم الطرود والعناصر في المدينة للعثور على أقصر الخيارات

07:40.830 --> 07:41.880
وأقصر الطرق.

07:41.880 --> 07:47.460
أوصي بشدة بتخصيص الخيارات الأخرى واختبارها وتغيير المعلمات الفائقة ، وإذا اكتشفت

07:47.460 --> 07:53.700
أي شيء أفضل ، إذا اكتشفت أي تحسين أو أفضل معلمات لاستخدامها ، فلا تتردد في مشاركتها في الأسئلة

07:53.700 --> 07:55.200
والأجوبة.

07:55.680 --> 07:56.340
مدهش.

07:56.340 --> 07:58.260
اتمنى انكم استمتعتم حقا يا رفاق هذا.

07:58.260 --> 08:01.470
يرجى التخصيص والتجربة والاستمرار في التعلم.

08:01.470 --> 08:02.820
العمل معه ممتع للغاية.

08:02.830 --> 08:03.030
س.

08:03.030 --> 08:04.980
التعلم والاستمتاع أنا.
