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

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

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

الدرس: نسخة مشكلة البائع المتجول مع قيود الاتصال

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

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

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

نوع المحتوى: example

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

📝 ملخص الصفحة

تتناول هذه الصفحة مشكلة البائع المتجول (TSP) مع التركيز على إضافة قيود الاتصال لضمان وجود طريق واحد متصل بدلاً من طرق متعددة غير متصلة. تبدأ بشرح أن الصيغة الكاملة للمشكلة تتطلب قيودًا إضافية لحساب الطرق المتصلة، حيث يُفترض أن الموقع 0 هو موقع الانطلاق والتوقف. في المثال المقدم، أقصر طريق ممكن هو 0 ← 3 ← 4 ← 1 ← 2 بمسافة إجمالية 24، ولكن بدون قيود الاتصال، قد يظهر حل غير مقبول يتضمن طريقين غير متصلين مثل 0 ← 3 ← 4 ← 0 و 1 ← 2.

لحل هذه المشكلة، يتم إضافة متغيرات قرار جديدة y_i لكل موقع i للحفاظ على ترتيب الزيارة في الحل. على سبيل المثال، في الحل 0 ← 3 ← 4 ← 1 ← 2 ← 0، تكون قيم y كالتالي: y_1 = 2، y_2 = 3، y_3 = 0، y_4 = 1، مع تجاهل قيمة y للموقع 0. تُستخدم هذه المتغيرات لفرض قيود الاتصال من خلال إضافة متباينات لكل انتقال i ← j لا يشمل موقع الانطلاق والتوقف، مثل y[j] - y[i] >= (N+1) * x[i, j] - N.

يشرح النص أن هذه القيود تضمن أن المواقع التي تُزار لاحقًا لها قيم y أعلى، مما يمنع الحلول ذات الطرق غير المتصلة. على سبيل المثال، إذا كان الموقع بداية ونهاية الطريق، فلا يمكن أن تكون قيمة y له هي الأكبر والأصغر في نفس الوقت، مما يستبعد الحلول غير المتصلة. الشكل 5.8 المرافق يوضح شبكة من العقد والروابط ذات الأوزان لتمثيل المشكلة بصريًا.

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

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

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

تشمل الصيغة الكاملة لمشكلة البائع المتجول نوعًا إضافيًا آخرًا من القيود لضمان حساب الطرق المتصلة، ففي نسخة مشكلة البائع المتجول الواردة في الشكل 5.8 يُفترض أن الموقع 0 هو موقع الانطلاق والتوقف. في هذا المثال، أقصر طريق ممكن هو 0 ← 3 ← 4 ← 1 ← 2، بمسافة سفر إجمالية قدرها 24. ولكن عند وجود قيد اتصال سيكون هناك حل صحيح آخر يشمل طريقين غير متصلين هما: 0 ← 3 ← 4 ← 0 و 1 ← 2. وهذا الحل المتمثل في وجود طريقين يمثل قيود الوصول والمغادرة التي تم تعريفها في المقطع البرمجي السابق؛ لأن كل موقع يدخل له ويخرج منه مرة واحدة فقط، ولكن هذا الحل غير مقبول لمشكلة البائع المتجول. يمكن فرض حل يشمل طريقًا واحدًا متصلاً بإضافة متغير القرار y_i لكل موقع i، وستحافظ هذه المتغيرات على ترتيب زيارة كل موقع في الحل.

شكل 5.8: نسخة مشكلة البائع المتجول

نوع: FIGURE_REFERENCE

شكل 5.8: نسخة مشكلة البائع المتجول

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

# adds a decision variable for each location y = [solver.add_var(var_type = INTEGER) for i in location_ids]

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

على سبيل المثال، إذا كان الحل هو: 0 ← 3 ← 4 ← 1 ← 2 ← 0، فستكون قيم y كما يلي: 2 = y_1، 3 = y_2، 0 = y_3، 1 = y_4، والموقع 0 هو موقع الانطلاق والتوقف، ولذلك لا تؤخذ قيمة y الخاصة به بعين الاعتبار. يمكن استخدام متغيرات القرار الجديدة هذه لضمان الاتصال من خلال إضافة قيد جديد لكل انتقال i ← j لا يشمل موقع startstop (الانطلاق والتوقف).

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

# adds a connectivity constraint for every transition that does not include the startstop for (i, j) in product(location_ids - {startstop}, location_ids - {startstop}): # ignores transitions from a location to itself if i != j: solver += y[j] - y[i] >= (N+1) * x[i, j] - N

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

إذا كانت 1 = x_ij وتم إدراج هذا الانتقال i ← j في الحل، فإن المتباينة الواردة في الأعلى تصبح 1 + y[i] >= y[j]، ومعنى ذلك أن المواقع التي ستُزار لاحقًا لا بد أن تكون قيمة y الخاصة بها أعلى، بالإضافة إلى قيود الوصول والمغادرة. وسيكون الطريق الذي لا يشمل موقع الانطلاق والتوقف صحيحًا فقط إذا: • بدأ وانتهى بالموقع نفسه؛ لضمان أن يكون لكل موقع وصول واحد ومغادرة واحدة فقط. • خصصت قيم y أعلى لكل المواقع التي ستُزار لاحقًا؛ لأن y[j] يجب أن تكون أكبر من y[i] لكل الانتقالات التي تم إدراجها في الطريق. ويؤدي هذا أيضًا إلى تجنب إضافة الحافة نفسها من اتجاه مختلف، على سبيل المثال: i ← j و j ← i. ولكن إذا كان الموقع يمثل بداية الطريق ونهايته، فلا بد أن تكون قيمة y الخاصة به هي أكبر وأصغر من قيم كل المواقع الباقية في الطريق. ونظرًا لاستحالة هذا الأمر، فستؤدي إضافة قيد الاتصال إلى استبعاد أية حلول بها طرق لا تشمل موقع الانطلاق والتوقف.

نوع: METADATA

وزارة التعليم 291 2025 - 1447

🔍 عناصر مرئية

شكل 5.8: نسخة مشكلة البائع المتجول

A network diagram representing an instance of the Traveling Salesperson Problem. It shows 6 nodes labeled 0, 1, 2, 3, 4, 5. Node 0 is the starting and stopping point. The nodes are connected by edges with associated weights (distances/costs).

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

تشمل الصيغة الكاملة لمشكلة البائع المتجول نوعًا إضافيًا آخرًا من القيود لضمان حساب الطرق المتصلة، ففي نسخة مشكلة البائع المتجول الواردة في الشكل 5.8 يُفترض أن الموقع 0 هو موقع الانطلاق والتوقف. في هذا المثال، أقصر طريق ممكن هو 0 ← 3 ← 4 ← 1 ← 2، بمسافة سفر إجمالية قدرها 24. ولكن عند وجود قيد اتصال سيكون هناك حل صحيح آخر يشمل طريقين غير متصلين هما: 0 ← 3 ← 4 ← 0 و 1 ← 2. وهذا الحل المتمثل في وجود طريقين يمثل قيود الوصول والمغادرة التي تم تعريفها في المقطع البرمجي السابق؛ لأن كل موقع يدخل له ويخرج منه مرة واحدة فقط، ولكن هذا الحل غير مقبول لمشكلة البائع المتجول. يمكن فرض حل يشمل طريقًا واحدًا متصلاً بإضافة متغير القرار y_i لكل موقع i، وستحافظ هذه المتغيرات على ترتيب زيارة كل موقع في الحل.--- SECTION: شكل 5.8: نسخة مشكلة البائع المتجول --- شكل 5.8: نسخة مشكلة البائع المتجول# adds a decision variable for each location y = [solver.add_var(var_type = INTEGER) for i in location_ids]على سبيل المثال، إذا كان الحل هو: 0 ← 3 ← 4 ← 1 ← 2 ← 0، فستكون قيم y كما يلي: 2 = y_1، 3 = y_2، 0 = y_3، 1 = y_4، والموقع 0 هو موقع الانطلاق والتوقف، ولذلك لا تؤخذ قيمة y الخاصة به بعين الاعتبار. يمكن استخدام متغيرات القرار الجديدة هذه لضمان الاتصال من خلال إضافة قيد جديد لكل انتقال i ← j لا يشمل موقع startstop (الانطلاق والتوقف).# adds a connectivity constraint for every transition that does not include the startstop for (i, j) in product(location_ids - {startstop}, location_ids - {startstop}): # ignores transitions from a location to itself if i != j: solver += y[j] - y[i] >= (N+1) * x[i, j] - Nإذا كانت 1 = x_ij وتم إدراج هذا الانتقال i ← j في الحل، فإن المتباينة الواردة في الأعلى تصبح 1 + y[i] >= y[j]، ومعنى ذلك أن المواقع التي ستُزار لاحقًا لا بد أن تكون قيمة y الخاصة بها أعلى، بالإضافة إلى قيود الوصول والمغادرة. وسيكون الطريق الذي لا يشمل موقع الانطلاق والتوقف صحيحًا فقط إذا: • بدأ وانتهى بالموقع نفسه؛ لضمان أن يكون لكل موقع وصول واحد ومغادرة واحدة فقط. • خصصت قيم y أعلى لكل المواقع التي ستُزار لاحقًا؛ لأن y[j] يجب أن تكون أكبر من y[i] لكل الانتقالات التي تم إدراجها في الطريق. ويؤدي هذا أيضًا إلى تجنب إضافة الحافة نفسها من اتجاه مختلف، على سبيل المثال: i ← j و j ← i. ولكن إذا كان الموقع يمثل بداية الطريق ونهايته، فلا بد أن تكون قيمة y الخاصة به هي أكبر وأصغر من قيم كل المواقع الباقية في الطريق. ونظرًا لاستحالة هذا الأمر، فستؤدي إضافة قيد الاتصال إلى استبعاد أية حلول بها طرق لا تشمل موقع الانطلاق والتوقف.2025 - 1447--- VISUAL CONTEXT --- **DIAGRAM**: شكل 5.8: نسخة مشكلة البائع المتجول Description: A network diagram representing an instance of the Traveling Salesperson Problem. It shows 6 nodes labeled 0, 1, 2, 3, 4, 5. Node 0 is the starting and stopping point. The nodes are connected by edges with associated weights (distances/costs). Data: The diagram illustrates a graph with nodes and weighted edges. The nodes are: 0, 1, 2, 3, 4, 5. The edges and their weights are: (0,2,5), (0,3,3), (0,4,7), (1,2,5), (1,3,5), (1,4,6), (2,4,4), (3,4,5). Key Values: Nodes: 0, 1, 2, 3, 4, 5, Edge (0,2) weight: 5, Edge (0,3) weight: 3, Edge (0,4) weight: 7, Edge (1,2) weight: 5, Edge (1,3) weight: 5, Edge (1,4) weight: 6, Edge (2,4) weight: 4, Edge (3,4) weight: 5 Context: This diagram visually represents the problem described in the text, showing the locations (nodes) and the connections (edges) with their associated costs or distances (weights) for the Traveling Salesperson Problem. It is used to explain the constraints and decision variables in the context of finding an optimal path.

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

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

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

الإجابة: إضافة متغير قرار y_i لكل موقع i، بحيث تحافظ هذه المتغيرات على ترتيب زيارة كل موقع في الحل، ومن ثم استخدامها لضمان الاتصال من خلال إضافة قيد جديد لكل انتقال i ← j لا يشمل موقع الانطلاق والتوقف.

الشرح: هذه المتغيرات y_i تمكن النظام من تتبع التسلسل الزمني لزيارة المواقع، مما يساعد في فرض قيود الاتصال بينها.

تلميح: فكر في كيفية تمثيل ترتيب الزيارات للمواقع المختلفة.

كيف تعمل المتباينة `y[j] - y[i] >= (N+1) * x[i, j] - N` في ضمان اتصال المسار؟

الإجابة: إذا كان الانتقال `i ← j` مدرجًا في الحل (أي `x[i, j] = 1`)، فإن المتباينة تفرض أن تكون قيمة `y[j]` أكبر من `y[i]` (بشكل عام `y[j] >= y[i] + 1` عند `N` كبير). هذا يعني أن المواقع التي تُزار لاحقًا يجب أن تكون لها قيمة `y` أعلى، مما يضمن تسلسل الزيارات وتجنب المسارات المنفصلة.

الشرح: هذه المتباينة هي المفتاح لفرض شرط الاتصال. عندما تكون `x[i, j] = 1`، فإنها تجبر `y[j]` على أن تكون أكبر من `y[i]`، مما يعني أن `j` تأتي بعد `i` في التسلسل، وبالتالي تضمن اتصال المسار.

تلميح: ماذا يحدث لقيمة `y[j]` بالنسبة لقيمة `y[i]` عندما يتم تضمين الانتقال `i → j` في الحل؟

ما هي الشروط التي يجب أن يحققها الطريق الذي لا يشمل موقع الانطلاق والتوقف ليكون صحيحًا وفقًا لقيد الاتصال؟

الإجابة: يجب أن يبدأ وينتهي بالموقع نفسه (لضمان وصول واحد ومغادرة واحدة فقط لكل موقع)، وأن تكون قيم `y` للمواقع اللاحقة أكبر من قيم المواقع السابقة لكل الانتقالات المدرجة في الطريق.

الشرح: الشرط الأول يضمن أن هذا الجزء من الطريق هو مسار مغلق بحد ذاته. الشرط الثاني يفرض ترتيب الزيارات داخل هذا المسار المغلق، مما يتكامل مع قيود الوصول والمغادرة العامة.

تلميح: كيف يمكن ضمان أن يكون لكل موقع مدخل ومخرج واحد فقط ضمن جزء من الطريق؟

كيف يؤدي إضافة قيد الاتصال إلى استبعاد الحلول التي بها طرق غير متصلة لا تشمل موقع الانطلاق والتوقف؟

الإجابة: قيد الاتصال يفرض أن قيمة `y` للموقع الذي يتم زيارته لاحقًا يجب أن تكون أكبر من قيمة الموقع الذي تم زيارته قبله. إذا كان هناك طريقان منفصلان لا يشملان موقع الانطلاق والتوقف، فسيحدث تعارض في تعيين قيم `y` لهذه المواقع، حيث لا يمكن لجميع المواقع في كلا المسارين أن تحقق شرط `y` المتزايد بشكل فريد، مما يؤدي إلى استبعاد هذه الحلول.

الشرح: الهدف هو ضمان أن كل الموقع في المسار المراد الحصول عليه لديه قيمة `y` فريدة وتمثل ترتيب زيارته. في حال وجود مسارات متعددة ومنفصلة، يصبح تحقيق هذا الشرط مستحيلاً، مما يدفع النظام إلى استبعادها.

تلميح: فكر في التناقض الذي يحدث عند محاولة تعيين قيم متزايدة بشكل فريد لمواقع في مسارين منفصلين.