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

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

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

الدرس: دالة خوارزمية حل البحث المحلي Local_search_solver() Function

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

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

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

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

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

📝 ملخص الصفحة

تقدم هذه الصفحة شرحًا تفصيليًا لدالة `local_search_solver()` التي تطبق خوارزمية البحث المحلي القائمة على المبادلة لحل مشكلة التباطؤ الموزون للدالة الواحدة (SMWT).

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

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

يتم التأكيد على أن سلوك خوارزميات التحسين القائمة على البحث المحلي يتأثر بشكل كبير بالاستراتيجية المستخدمة بطريقة تكرارية لتعديل الحل، مما يجعل اختيار دالة swap_selector أمرًا بالغ الأهمية لنجاح الخوارزمية.

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

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

دالة خوارزمية حل البحث المحلي Local_search_solver() Function

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

دالة خوارزمية حل البحث المحلي Local_search_solver() Function

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

تطبق الدالة التالية (local_search_solver) خوارزمية حل البحث المحلي القائم على المبادلة لمشكلة التباطؤ الموزون للدالة الواحدة (SMWT). حيث تقبل هذه الدالة أربعة معاملات وهي:

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

• نسخة المشكلة. • خوارزمية استدلالية جشعة تستخدمها دالة ()greedy_solver لحساب حل أولي. • دالة swap_selector المستخدمة لانتقاء مهمتين سيتبادلان موقعهما في الجدول. على سبيل المثال، إذا كان الحل الحالي للمشكلة المكونة من أربع مهام هو [0, 3, 2, 1]. وقررت دالة swap_selector أن يحدث مبادلة بين المهمة الأولى والمهمة الأخيرة، سيكون الحل المرشح هو [1, 3, 2, 0]. • max_iterations عدد صحيح يحدد عدد المبادلات التي يجب تجربتها قبل أن تتوصل الخوارزمية للحل الأفضل في حينه.

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

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

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

سلوك خوارزميات التحسين القائمة على البحث المحلي يتأثر بشكل كبير بالاستراتيجية المستخدمة بطريقة تكرارية لتعديل الحل.

Python Code for local_search_solver

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

def local_search_solver(problem, greedy_heuristic, swap_selector, max_iterations): # gets the information for this problem durations, weights, deadlines=problem['durations'], problem['weights'], \ problem['deadlines'] job_num = len(durations) # gets the number of jobs # uses the greedy solver to get a first schedule # this schedule will be then iteratively refined through local search greedy_sol = greedy_solver(problem, greedy_heuristic) # the best schedule so far best_schedule, best_tardiness, best_finish_times = greedy_sol['schedule'], \ greedy_sol['tardiness'], greedy_sol['finish_times'] # local search for i in range(max_iterations): # for each of the given iterations # chooses which two positions to swap pos1, pos2 = swap_selector(best_schedule) new_schedule = best_schedule.copy() # create a copy of the schedule # swaps jobs at positions pos1 and pos2 new_schedule[pos1], new_schedule[pos2] = new_schedule[pos2], \ new_schedule[pos1]

نوع: METADATA

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

🔍 عناصر مرئية

Python Code for local_search_solver

A block of Python code implementing the local_search_solver function, including comments explaining its parts: getting problem information, using a greedy solver for an initial schedule, and an iterative local search loop for swapping job positions.

A pink rectangular box containing a highlighted statement about the behavior of local search improvement algorithms.

Ministry of Education Logo

A decorative graphic composed of green dots, resembling a stylized logo, positioned next to the 'وزارة التعليم' text in the footer.

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

دالة خوارزمية حل البحث المحلي Local_search_solver() Functionتطبق الدالة التالية (local_search_solver) خوارزمية حل البحث المحلي القائم على المبادلة لمشكلة التباطؤ الموزون للدالة الواحدة (SMWT). حيث تقبل هذه الدالة أربعة معاملات وهي:• نسخة المشكلة. • خوارزمية استدلالية جشعة تستخدمها دالة ()greedy_solver لحساب حل أولي. • دالة swap_selector المستخدمة لانتقاء مهمتين سيتبادلان موقعهما في الجدول. على سبيل المثال، إذا كان الحل الحالي للمشكلة المكونة من أربع مهام هو [0, 3, 2, 1]. وقررت دالة swap_selector أن يحدث مبادلة بين المهمة الأولى والمهمة الأخيرة، سيكون الحل المرشح هو [1, 3, 2, 0]. • max_iterations عدد صحيح يحدد عدد المبادلات التي يجب تجربتها قبل أن تتوصل الخوارزمية للحل الأفضل في حينه.في كل تكرار، تنتقي الخوارزمية مهمتين للتبديل بينهما، ثم تنشئ جدولاً جديدًا تتم فيه هذه المبادلة. وكل شيء في الجدول الجديد بخلاف ذلك سيكون مطابقًا للجدول الأصلي. إذا كان للجدول الجديد تباطؤ موزون أقل من الجدول الأفضل الذي تم إيجاده حتى الآن، فإن الجدول الجديد يصبح هو الأفضل بدلاً منه. خوارزمية الحل هذه لها نفس مخرجات خوارزمية الحل الجشعة وخوارزمية حل القوة المفرطة.سلوك خوارزميات التحسين القائمة على البحث المحلي يتأثر بشكل كبير بالاستراتيجية المستخدمة بطريقة تكرارية لتعديل الحل.--- SECTION: Python Code for local_search_solver --- def local_search_solver(problem, greedy_heuristic, swap_selector, max_iterations):# gets the information for this problem durations, weights, deadlines=problem['durations'], problem['weights'], \ problem['deadlines']job_num = len(durations) # gets the number of jobs# uses the greedy solver to get a first schedule # this schedule will be then iteratively refined through local search greedy_sol = greedy_solver(problem, greedy_heuristic) # the best schedule so far best_schedule, best_tardiness, best_finish_times = greedy_sol['schedule'], \ greedy_sol['tardiness'], greedy_sol['finish_times']# local search for i in range(max_iterations): # for each of the given iterations# chooses which two positions to swap pos1, pos2 = swap_selector(best_schedule)new_schedule = best_schedule.copy() # create a copy of the schedule# swaps jobs at positions pos1 and pos2 new_schedule[pos1], new_schedule[pos2] = new_schedule[pos2], \ new_schedule[pos1]2023 - 1447--- VISUAL CONTEXT --- **CODE_BLOCK**: Python Code for local_search_solver Description: A block of Python code implementing the local_search_solver function, including comments explaining its parts: getting problem information, using a greedy solver for an initial schedule, and an iterative local search loop for swapping job positions. Context: This code block provides a practical implementation example of the local search algorithm described in the text, demonstrating how the parameters (problem, greedy_heuristic, swap_selector, max_iterations) are used.**HIGHLIGHT_BOX**: Untitled Description: A pink rectangular box containing a highlighted statement about the behavior of local search improvement algorithms. Context: This box emphasizes a key characteristic of local search algorithms: their behavior is significantly influenced by the iterative strategy used to modify the solution.

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

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

ما هو الغرض الرئيسي من دالة `local_search_solver()`؟

الإجابة: تطبيق خوارزمية البحث المحلي القائم على المبادلة لحل مشكلة التباطؤ الموزون للدالة الواحدة (SMWT).

الشرح: الدالة مصممة خصيصاً لحل مشكلة التباطؤ الموزون للدالة الواحدة باستخدام تقنيات البحث المحلي.

تلميح: فكر في الهدف الأساسي الذي تسعى الخوارزمية لتحقيقه فيما يتعلق بالمشاكل الموزونة.

ما هي المعاملات الأربعة التي تقبلها دالة `local_search_solver()`؟

الإجابة: نسخة المشكلة، خوارزمية استدلالية جشعة، دالة swap_selector، وعدد أقصى للتكرارات (max_iterations).

الشرح: تتطلب الدالة معرفة بالمشكلة نفسها، طريقة أولية لإيجاد حل (greedy_heuristic)، آلية لتعديل الحل (swap_selector)، وحد لإيقاف البحث (max_iterations).

تلميح: تذكر أن الدالة تحتاج لمعلومات عن المشكلة، وكيفية البدء، وكيفية التحسين، وكم مرة تقوم بذلك.

اشرح آلية عمل دالة `swap_selector()` ضمن خوارزمية البحث المحلي.

الإجابة: تقوم دالة `swap_selector()` بانتقاء مهمتين سيتم تبديل مواقعهما في الجدول الحالي لإنشاء حل مرشح جديد.

الشرح: الهدف من `swap_selector` هو اقتراح تغييرات هيكلية في الجدول الحالي (الحل) عن طريق تبديل مكان مهمتين، مما يؤدي إلى توليد حل جديد ليتم تقييمه.

تلميح: ركز على الفعل الذي تقوم به هذه الدالة وماذا ينتج عنه في سياق الجدول.

كيف يتأثر سلوك خوارزميات التحسين القائمة على البحث المحلي؟

الإجابة: يتأثر سلوكها بشكل كبير بالاستراتيجية المستخدمة بطريقة تكرارية لتعديل الحل.

الشرح: الاستراتيجية المتبعة في التكرارات لتعديل الحل هي العامل الأساسي الذي يحدد كيفية استكشاف مساحة الحلول وما إذا كانت الخوارزمية ستصل إلى حل جيد.

تلميح: ما هي القوة الدافعة وراء التغييرات التي تحدث في الحل أثناء البحث؟

ما هي المعاملات التي تقبلها دالة local_search_solver؟

الإجابة: تقبل دالة local_search_solver أربعة معاملات: نسخة المشكلة، خوارزمية استدلالية جشعة، دالة swap_selector، و max_iterations.

الشرح: هذه المعاملات تحدد المشكلة المراد حلها، وكيفية إيجاد حل أولي، وكيفية تحسين هذا الحل، وعدد المحاولات لتحسينه.

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

التصنيف: مفهوم جوهري | المستوى: متوسط