📋 المحتوى المنظم
📖 محتوى تعليمي مفصّل
دالة خوارزمية حل البحث المحلي 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.
الشرح: هذه المعاملات تحدد المشكلة المراد حلها، وكيفية إيجاد حل أولي، وكيفية تحسين هذا الحل، وعدد المحاولات لتحسينه.
تلميح: تذكر العناصر التي تحدد كيفية عمل خوارزمية البحث المحلي.
التصنيف: مفهوم جوهري | المستوى: متوسط