حل مشكلة البائع المتجول باستخدام خوارزميات القوة المفرطة وبرمجة الأعداد الصحيحة المختلطة - كتاب الذكاء الإصطناعي - الصف 12 - الفصل 1 - المملكة العربية السعودية

الكتاب: كتاب الذكاء الإصطناعي - الصف 12 - الفصل 1 | المادة: الذكاء الإصطناعي | المرحلة: الصف 12 | الفصل الدراسي: 1

الدولة: المملكة العربية السعودية | المنهج: المنهج السعودي - وزارة التعليم

الدرس: استخدام برمجة الأعداد الصحيحة المختلطة لحل مشكلة البائع المتجول

📚 معلومات الصفحة

الكتاب: كتاب الذكاء الإصطناعي - الصف 12 - الفصل 1 | المادة: الذكاء الإصطناعي | المرحلة: الصف 12 | الفصل الدراسي: 1

الدولة: المملكة العربية السعودية | المنهج: المنهج السعودي - وزارة التعليم

نوع المحتوى: درس تعليمي

مستوى الصعوبة: متوسط

📝 ملخص الصفحة

تشرح هذه الصفحة طريقتين لحل مشكلة البائع المتجول (TSP): خوارزمية القوة المفرطة وبرمجة الأعداد الصحيحة المختلطة (MIP).

تستخدم خوارزمية القوة المفرطة حساب المسافة الإجمالية لكل طريق محتمل لتحديد الأقصر، لكنها غير عملية للمشكلات الكبيرة بسبب النمو المضاعف لعدد الطرق مع زيادة المواقع، حيث يصل عدد الطرق إلى 87,178,291,200 لـ 15 موقعًا.

تتطلب طريقة MIP صياغة رياضية مع دالة موضوعية وقيود، باستخدام متغيرات قرار ثنائية x_ij لتمثيل الانتقالات بين المواقع، حيث يشير 1 إلى تضمين الانتقال و0 إلى استبعاده. يتم حساب عدد الانتقالات الممكنة بـ (N-1) × N لـ N موقع.

يتم توضيح تطبيق هذه الطرق عبر أمثلة برمجية في Python، مثل استخدام مصفوفات numpy للتعامل مع البيانات واستخدام itertools لحساب الانتقالات المحتملة، مما يساعد في فهم التطبيق العملي.

📋 المحتوى المنظم

📖 محتوى تعليمي مفصّل

نوع: محتوى تعليمي

تحسب خوارزمية حل القوة المفرطة المسافة الإجمالية لكل طريق، وتُظهر في النهاية الطريق ذا المسافة الأقصر. يُطبق المقطع البرمجي التالي خوارزمية الحل على نسخة مشكلة البائع المتجول التي تم إنشاؤها سابقًا:

نوع: محتوى تعليمي

brute_force_solver(dist_matrix, location_ids, startstop)

نوع: محتوى تعليمي

([3, 5, 2, 7, 1, 4, 0, 6, 3], 73.0)

نوع: محتوى تعليمي

على غرار خوارزميات حل القوة المفرطة التي تم توضيحها في الدروس السابقة، لا تُطبق هذه الخوارزمية إلا على نسخ مشكلة البائع المتجول الصغيرة؛ لأن عدد الطرق الممكنة يتزايد أضعافًا مضاعفة كلما زاد العدد N، ويساوي ! (N-1). وعلى سبيل المثال، عندما يكون 15 = N، فإن عدد الطرق الممكنة يساوي 87,178,291,200 = !14.

نوع: محتوى تعليمي

استخدام برمجة الأعداد الصحيحة المختلطة لحل مشكلة البائع المتجول

نوع: محتوى تعليمي

Using MIP to Solve the Traveling Salesman Problem

نوع: محتوى تعليمي

لاستخدام برمجة الأعداد الصحيحة المختلطة (MIP) لحل مشكلة البائع المتجول (TSP)، يجب إنشاء صيغة رياضية تغطي كلا من الدالة الموضوعية وقيود مشكلة البائع المتجول. تتطلب الصيغة متغير قرار ثنائي x_ij لكل انتقال محتمل i ← j من موقع i إلى موقع آخر j. وإذا كانت المشكلة بها عدد N من المواقع، فإن عدد الانتقالات الممكنة يساوي (N-1) × N. إذا كانت x_ij تساوي 1، فإن الحل يتضمن الانتقال من الموقع i إلى الموقع j، وخلاف ذلك إذا كانت x_ij تساوي 0، فلن يُدرج هذا الانتقال في الحل. يُمكن الوصول بسهولة إلى العناصر في مصفوفة numpy ثنائية الأبعاد عبر الصيغة البرمجية [i,j]. فعلى سبيل المثال:

نوع: محتوى تعليمي

arr = numpy.full(((4,4), 0) # creates a 4x4 array full of zeros

نوع: محتوى تعليمي

[[0 0 0 0] [0 0 0 0] [0 0 0 0] [0 0 0 0]]

نوع: محتوى تعليمي

print(arr) arr[0, 0] = 1 arr[3, 3] = 1 print() print(arr)

نوع: محتوى تعليمي

[[1 0 0 0] [0 0 0 0] [0 0 0 0] [0 0 0 1]]

نوع: محتوى تعليمي

يستخدم المقطع البرمجي الأداة ()product من المكتبة itertools لحساب جميع انتقالات المواقع المحتملة، فعلى سبيل المثال:

نوع: محتوى تعليمي

ids = {0, 1, 2} for i, j in list(product(ids, ids)): print(i, j)

نوع: محتوى تعليمي

0 0 0 1 0 2 1 0 1 1 1 2 2 0 2 1 2 2

نوع: METADATA

وزارة التعليم Ministry of Education 289 2023 - 1447

🔍 عناصر مرئية

وزارة التعليم

Logo of the Ministry of Education, including the text 'Ministry of Education', page number '289', and the years '2023 - 1447'.

📄 النص الكامل للصفحة

تحسب خوارزمية حل القوة المفرطة المسافة الإجمالية لكل طريق، وتُظهر في النهاية الطريق ذا المسافة الأقصر. يُطبق المقطع البرمجي التالي خوارزمية الحل على نسخة مشكلة البائع المتجول التي تم إنشاؤها سابقًا:brute_force_solver(dist_matrix, location_ids, startstop)([3, 5, 2, 7, 1, 4, 0, 6, 3], 73.0)على غرار خوارزميات حل القوة المفرطة التي تم توضيحها في الدروس السابقة، لا تُطبق هذه الخوارزمية إلا على نسخ مشكلة البائع المتجول الصغيرة؛ لأن عدد الطرق الممكنة يتزايد أضعافًا مضاعفة كلما زاد العدد N، ويساوي ! (N-1). وعلى سبيل المثال، عندما يكون 15 = N، فإن عدد الطرق الممكنة يساوي 87,178,291,200 = !14.استخدام برمجة الأعداد الصحيحة المختلطة لحل مشكلة البائع المتجولUsing MIP to Solve the Traveling Salesman Problemلاستخدام برمجة الأعداد الصحيحة المختلطة (MIP) لحل مشكلة البائع المتجول (TSP)، يجب إنشاء صيغة رياضية تغطي كلا من الدالة الموضوعية وقيود مشكلة البائع المتجول. تتطلب الصيغة متغير قرار ثنائي x_ij لكل انتقال محتمل i ← j من موقع i إلى موقع آخر j. وإذا كانت المشكلة بها عدد N من المواقع، فإن عدد الانتقالات الممكنة يساوي (N-1) × N. إذا كانت x_ij تساوي 1، فإن الحل يتضمن الانتقال من الموقع i إلى الموقع j، وخلاف ذلك إذا كانت x_ij تساوي 0، فلن يُدرج هذا الانتقال في الحل. يُمكن الوصول بسهولة إلى العناصر في مصفوفة numpy ثنائية الأبعاد عبر الصيغة البرمجية [i,j]. فعلى سبيل المثال:arr = numpy.full(((4,4), 0) # creates a 4x4 array full of zeros[[0 0 0 0] [0 0 0 0] [0 0 0 0] [0 0 0 0]]print(arr)arr[0, 0] = 1 arr[3, 3] = 1print() print(arr)[[1 0 0 0] [0 0 0 0] [0 0 0 0] [0 0 0 1]]يستخدم المقطع البرمجي الأداة ()product من المكتبة itertools لحساب جميع انتقالات المواقع المحتملة، فعلى سبيل المثال:ids = {0, 1, 2} for i, j in list(product(ids, ids)): print(i, j)0 0 0 1 0 2 1 0 1 1 1 2 2 0 2 1 2 22023 - 1447--- VISUAL CONTEXT ---Table Structure: Headers: N/A Data: N/A Context: Page footer/metadata

🎴 بطاقات تعليمية للمراجعة

عدد البطاقات: 5 بطاقة لهذه الصفحة

إذا كانت x_ij تساوي 1، ماذا يعني ذلك في سياق استخدام برمجة الأعداد الصحيحة المختلطة لحل مشكلة البائع المتجول؟

الإجابة: يعني أن الحل يتضمن الانتقال من الموقع i إلى الموقع j.

الشرح: القيمة '1' للمتغير الثنائي x_ij تشير إلى تفعيل هذا الانتقال ضمن المسار الذي تحاول الخوارزمية إيجاده.

تلميح: ما هو دور المتغير الثنائي x_ij في تمثيل المسار؟

ما هي الوظيفة الأساسية لخوارزمية حل القوة المفرطة في مشكلة البائع المتجول؟

الإجابة: تحسب خوارزمية حل القوة المفرطة المسافة الإجمالية لكل طريق ممكن، وتُظهر في النهاية الطريق ذا المسافة الأقصر.

الشرح: الهدف الرئيسي للخوارزمية هو إيجاد الحل الأمثل عن طريق فحص جميع الاحتمالات المتاحة وتقييمها بناءً على معيار محدد وهو المسافة الإجمالية.

تلميح: ما هي العملية التي تقوم بها الخوارزمية لتقييم الطرق المختلفة؟

لماذا لا تُطبق خوارزمية حل القوة المفرطة إلا على نسخ مشكلة البائع المتجول الصغيرة؟

الإجابة: لأن عدد الطرق الممكنة يتزايد أضعافًا مضاعفة كلما زاد عدد المواقع (N)، ويساوي !(N-1)، مما يجعل الحسابات تستغرق وقتاً طويلاً جداً أو تصبح مستحيلة.

الشرح: التعقيد الحسابي لخوارزمية القوة المفرطة مرتفع جداً بسبب التزايد الأسي لعدد الاحتمالات. على سبيل المثال، 15 موقعاً يتطلب حساب أكثر من 87 مليار طريق.

تلميح: ما هي العلاقة بين عدد المواقع وعدد الطرق الممكنة؟

لحل مشكلة البائع المتجول باستخدام برمجة الأعداد الصحيحة المختلطة (MIP)، ما هو نوع المتغير الذي يجب إنشاؤه لكل انتقال محتمل بين موقعين؟

الإجابة: يجب إنشاء متغير قرار ثنائي (binary decision variable) لكل انتقال محتمل i ← j من موقع i إلى موقع آخر j.

الشرح: المتغيرات الثنائية (0 أو 1) مناسبة لتمثيل خيارات الاختيار (نعم/لا) أو (يُدرج/لا يُدرج) في الحل، وهو ما ينطبق على تحديد ما إذا كان الانتقال بين موقعين جزءاً من المسار الأمثل.

تلميح: ما هي طبيعة هذا المتغير الذي يحدد ما إذا كان الانتقال سيُستخدم أم لا؟

ما هي وظيفة الدالة ()product من المكتبة itertools المذكورة في النص؟

الإجابة: تُستخدم لحساب جميع الانتقالات الممكنة بين المواقع، مما يساعد في توليد جميع أزواج (i, j) الممكنة لتمثيل الانتقالات.

الشرح: الدالة product تُنشئ حاصل الضرب الديكارتي للمجموعات المدخلة، مما يسمح بإنتاج جميع التوافقات الممكنة بين عناصر مجموعتين، وهذا ضروري لتحديد جميع الانتقالات المحتملة بين المواقع.

تلميح: كيف تساعد هذه الدالة في بناء الصيغة الرياضية للانتقالات؟