📋 المحتوى المنظم
📖 محتوى تعليمي مفصّل
4
نوع: QUESTION
أنتج خوارزمية حل البحث المحلي لمشكلة التباطؤ الموزون للآلة الواحدة، من خلال إكمال المقطع البرمجي التالي بحيث تستخدم الدالة البحث المحلي لإيجاد تبديل الجدولة الأمثل.
local_search_solver function
نوع: محتوى تعليمي
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(______________________)# 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 = ____________________ (problem, greedy_heuristic) # remembers 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(____________________): # for each of the given iterations
# chooses which two positions to swap
pos1,pos2=____________________ (best_schedule)
new_schedule = best_schedule.____________________ ()# creates a copy of the
schedule
# swaps jobs at positions pos1 and pos2
new_schedule[pos1], new_schedule[pos2] = best_schedule[pos2], best_
schedule[pos1]
# computes the new tardiness after the swap
new_tardiness, new_finish_times = compute_schedule_tardiness(problem,
new_schedule)
# if the new schedule is better than the best one so far
if new_tardiness < best_tardiness:
# the new_schedule becomes the best one
best_schedule = ____________________
best_tardiness = ____________________
best_finish_times=____________________
# returns the best solution
return {'schedule':best_schedule,
'tardiness':best_tardiness,
'finish_times':best_finish_times}
نوع: METADATA
281
نوع: METADATA
وزارة التعليم
Ministry of Education
2025 - 1447
📄 النص الكامل للصفحة
--- SECTION: 4 ---
أنتج خوارزمية حل البحث المحلي لمشكلة التباطؤ الموزون للآلة الواحدة، من خلال إكمال المقطع البرمجي التالي بحيث تستخدم الدالة البحث المحلي لإيجاد تبديل الجدولة الأمثل.--- SECTION: local_search_solver function ---
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(______________________)# 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 = ____________________ (problem, greedy_heuristic) # remembers 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(____________________): # for each of the given iterations
# chooses which two positions to swap pos1,pos2=____________________ (best_schedule)new_schedule = best_schedule.____________________ ()# creates a copy of the schedule
# swaps jobs at positions pos1 and pos2
new_schedule[pos1], new_schedule[pos2] = best_schedule[pos2], best_
schedule[pos1]
# computes the new tardiness after the swap new_tardiness, new_finish_times = compute_schedule_tardiness(problem,
new_schedule)
# if the new schedule is better than the best one so far if new_tardiness < best_tardiness:
# the new_schedule becomes the best one best_schedule = ____________________
best_tardiness = ____________________
best_finish_times=____________________# returns the best solution return {'schedule':best_schedule,
'tardiness':best_tardiness,
'finish_times':best_finish_times}2025 - 1447
📝 أسئلة اختبارية
عدد الأسئلة: 9
سؤال 4: new_schedule = best_schedule.____________________ ()
- أ) copy
- ب) clone
- ج) duplicate
- د) replicate
الإجابة الصحيحة: copy
الشرح: يجب استخدام الدالة copy() لإنشاء نسخة من الجدولة الحالية
تلميح: ما هي الدالة التي تنشئ نسخة من القائمة؟
سؤال 4: best_schedule = ____________________
- أ) new_schedule
- ب) best_schedule
- ج) greedy_sol['schedule']
- د) schedule
الإجابة الصحيحة: new_schedule
الشرح: يجب تعيين new_schedule كأفضل جدولة عندما تكون أفضل من السابقة
تلميح: ما هو المتغير الذي يحتوي على الجدولة الجديدة؟
سؤال 4: greedy_sol = ____________________ (problem, greedy_heuristic)
- أ) greedy_solver
- ب) brute_force_solver
- ج) local_search_solver
- د) compute_schedule_tardiness
الإجابة الصحيحة: greedy_solver
الشرح: يجب استدعاء الدالة greedy_solver للحصول على الجدولة الأولية
تلميح: ما اسم الدالة التي تحل المشكلة باستخدام الخوارزمية الجشعة؟
سؤال 4: for i in range(____________________):
- أ) max_iterations
- ب) job_num
- ج) len(problem)
- د) best_tardiness
الإجابة الصحيحة: max_iterations
الشرح: يجب استخدام max_iterations لتحديد عدد التكرارات في البحث المحلي
تلميح: ما هي المعلمة التي تحدد الحد الأقصى لعدد التكرارات؟
سؤال 4: pos1,pos2=____________________ (best_schedule)
- أ) swap_selector
- ب) greedy_heuristic
- ج) compute_schedule_tardiness
- د) local_search_solver
الإجابة الصحيحة: swap_selector
الشرح: يجب استدعاء الدالة swap_selector لاختيار المواقع التي سيتم تبديلها
تلميح: ما هي الدالة المسؤولة عن اختيار المواقع للتبديل؟
سؤال 4: أنتج خوارزمية حل البحث المحلي لمشكلة التباطؤ الموزون للآلة الواحدة، من خلال إكمال المقطع البرمجي التالي بحيث تستخدم الدالة البحث المحلي لإيجاد تبديل الجدولة الأمثل.
الإجابة الصحيحة: انظر الأسئلة الفرعية
الشرح: هذا سؤال رئيسي يحتوي على أسئلة فرعية تتعلق بإكمال الكود البرمجي
تلميح: راجع الأسئلة الفرعية أدناه لإكمال الأجزاء الناقصة في الكود
سؤال 4: job_num = len(______________________)
- أ) durations
- ب) weights
- ج) deadlines
- د) problem
الإجابة الصحيحة: durations
الشرح: يجب استخدام durations للحصول على عدد الوظائف لأنها تحتوي على مدة كل وظيفة
تلميح: ما هي القائمة التي تحتوي على معلومات جميع الوظائف؟
سؤال 4: best_tardiness = ____________________
- أ) new_tardiness
- ب) best_tardiness
- ج) greedy_sol['tardiness']
- د) tardiness
الإجابة الصحيحة: new_tardiness
الشرح: يجب تعيين new_tardiness كأفضل قيمة تأخير عندما تكون أفضل من السابقة
تلميح: ما هو المتغير الذي يحتوي على قيمة التأخير الجديدة؟
سؤال 4: best_finish_times=____________________
- أ) new_finish_times
- ب) best_finish_times
- ج) greedy_sol['finish_times']
- د) finish_times
الإجابة الصحيحة: new_finish_times
الشرح: يجب تعيين new_finish_times كأفضل أوقات الانتهاء عندما تكون أفضل من السابقة
تلميح: ما هو المتغير الذي يحتوي على أوقات الانتهاء الجديدة؟
🎴 بطاقات تعليمية للمراجعة
عدد البطاقات: 5 بطاقة لهذه الصفحة
في سياق الدالة `local_search_solver`، ما هو الغرض من `max_iterations`؟
الإجابة: المتغير `max_iterations` يحدد الحد الأقصى لعدد التكرارات التي سيقوم بها البحث المحلي في محاولة لتحسين الجدولة. هذا يمنع الخوارزمية من الدوران إلى ما لا نهاية ويضمن لها وقتاً محدوداً للتشغيل.
الشرح: تحديد عدد التكرارات أمر ضروري لضمان إنهاء الخوارزمية. في البحث المحلي، قد تتطلب بعض التحسينات وقتاً طويلاً، لذا يتم وضع حد لعدد المحاولات.
تلميح: فكر في سبب تحديد حد زمني أو عددي لعملية تكرارية.
ما هو الدور الرئيسي للدالة `local_search_solver` في سياق جدولة المهام؟
الإجابة: الدالة `local_search_solver` تُستخدم لإنتاج خوارزمية حل للبحث المحلي بهدف إيجاد تبديل جدولة أمثل لمشكلة التباطؤ الموزون للآلة الواحدة، وذلك عن طريق تحسين جدولة أولية تم الحصول عليها باستخدام خوارزمية جشعة.
الشرح: الدالة تستقبل مشكلة جدولة، دالة استدلال جشعة، دالة لاختيار التبادلات، وأقصى عدد للتكرارات. تبدأ بجدولة جشعة ثم تقوم بتكرار تبديل المهام في أماكن مختلفة لتحسين إجمالي التأخير.
تلميح: فكر في الهدف الأساسي من استخدام البحث المحلي لتحسين النتائج الأولية.
كيف تحصل الدالة `local_search_solver` على جدولة أولية؟
الإجابة: تحصل الدالة `local_search_solver` على جدولة أولية باستخدام "الدالة الجشعة" (greedy_heuristic) التي يتم تمريرها كمعامل لها.
الشرح: البحث المحلي غالباً ما يبدأ من حل أولي، وفي هذه الحالة، يتم الاعتماد على دالة استدلال جشعة لإنشاء هذا الحل الأولي قبل البدء في عملية التحسين التكراري.
تلميح: ارجع إلى كيفية بدء عملية التحسين في البحث المحلي.
ما هو الهدف الأساسي من استدعاء الدالة `compute_schedule_tardiness` داخل حلقة البحث المحلي؟
الإجابة: الهدف هو حساب مقدار التأخير الإجمالي (`new_tardiness`) وأوقات الانتهاء (`new_finish_times`) للجدولة الجديدة بعد إجراء تبديل في المواقع. هذا يسمح بمقارنة هذه الجدولة الجديدة مع أفضل جدولة تم العثور عليها حتى الآن.
الشرح: التأخير هو المقياس الرئيسي الذي تحاول خوارزمية البحث المحلي تقليله. لذلك، من الضروري حساب التأخير بدقة لكل جدولة جديدة يتم إنشاؤها.
تلميح: ما هي المعيار الذي نستخدمه لتقييم جودة الجدولة؟
في دالة `local_search_solver`، ما هي المعلومات التي يتم الحصول عليها من متغير `problem`؟
الإجابة: يتم الحصول على معلومات حول المدة الزمنية (`durations`)، والأوزان (`weights`)، والمواعيد النهائية (`deadlines`) من متغير `problem`.
الشرح: يتم استخراج قيم `durations`، `weights`، و `deadlines` مباشرةً من القاموس `problem` باستخدام مفاتيحها.
تلميح: راجع السطر الأول من الدالة `local_search_solver`
التصنيف: مفهوم جوهري | المستوى: متوسط