📋 المحتوى المنظم
📖 محتوى تعليمي مفصّل
نوع: محتوى تعليمي
# 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 = new_schedule
best_tardiness = new_tardiness
best_finish_times = new_finish_times
# returns the best solution
return {'schedule':best_schedule,
'tardiness':best_tardiness,
'finish_times':best_finish_times}
نوع: محتوى تعليمي
جيران الحل في هذا المثال كلها حلول يتم الحصول عليها عن طريق انتقاء مهمتين داخل الحل ومبادلة موقعيهما في الجدول.
نوع: محتوى تعليمي
تطبق الدالة التالية مبادلة عشوائية بانتقاء مهمتين عشوائيتين في الجدول المعطى الذي يستوجب تبديل مكانيهما:
نوع: محتوى تعليمي
def random_swap(schedule):
job_num = len(schedule) # gets the number of scheduled jobs
pos1 = random.randint(0, job_num - 1) # samples a random position
pos2 = pos1
while pos2 == pos1: # keeps sampling until it finds a position other than pos1
pos2 = random.randint(0, job_num - 1) # samples another random position
return pos1, pos2 # returns the two positions that should be swapped
نوع: محتوى تعليمي
تستخدم الدالة التالية استراتيجية مختلفة وذلك باختيارها الدائم لمهمتين متجاورتين في الجدول لتبادلهما. على سبيل المثال، إذا كان الجدول الحالي لنسخة مشكلة مكونة من أربع مهام هو [0, 1, 3, 2]، فإن المبادلات المرشحة ستكون فقط 0<>1 و 1<>3 و 3<>2.
نوع: محتوى تعليمي
def adjacent_swap(schedule):
job_num = len(schedule) # gets the number of scheduled jobs
pos1 = random.randint(0, job_num - 2) # samples a random position (excluding the last one)
pos2 = pos1 + 1 # gets the position after the sampled one
return pos1,pos2 # returns the two positions that should be swapped
نوع: METADATA
وزارة التعليم
Ministry of Education
2023 - 1447
نوع: METADATA
276
🔍 عناصر مرئية
وزارة التعليم logo
Logo of the Ministry of Education with text 'وزارة التعليم' and 'Ministry of Education 2023 - 1447'.
📄 النص الكامل للصفحة
# 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 = new_schedule best_tardiness = new_tardiness best_finish_times = new_finish_times# returns the best solution return {'schedule':best_schedule,
'tardiness':best_tardiness,
'finish_times':best_finish_times}جيران الحل في هذا المثال كلها حلول يتم الحصول عليها عن طريق انتقاء مهمتين داخل الحل ومبادلة موقعيهما في الجدول.تطبق الدالة التالية مبادلة عشوائية بانتقاء مهمتين عشوائيتين في الجدول المعطى الذي يستوجب تبديل مكانيهما:def random_swap(schedule):
job_num = len(schedule) # gets the number of scheduled jobs pos1 = random.randint(0, job_num - 1) # samples a random position pos2 = pos1
while pos2 == pos1: # keeps sampling until it finds a position other than pos1
pos2 = random.randint(0, job_num - 1) # samples another random position return pos1, pos2 # returns the two positions that should be swappedتستخدم الدالة التالية استراتيجية مختلفة وذلك باختيارها الدائم لمهمتين متجاورتين في الجدول لتبادلهما. على سبيل المثال، إذا كان الجدول الحالي لنسخة مشكلة مكونة من أربع مهام هو [0, 1, 3, 2]، فإن المبادلات المرشحة ستكون فقط 0<>1 و 1<>3 و 3<>2.def adjacent_swap(schedule):
job_num = len(schedule) # gets the number of scheduled jobs pos1 = random.randint(0, job_num - 2) # samples a random position (excluding the last one)
pos2 = pos1 + 1 # gets the position after the sampled one return pos1,pos2 # returns the two positions that should be swapped2023 - 1447--- VISUAL CONTEXT ---Context: Identifies the publisher/source of the textbook.
🎴 بطاقات تعليمية للمراجعة
عدد البطاقات: 5 بطاقة لهذه الصفحة
ما هي وظيفة الدالة `compute_schedule_tardiness`؟
الإجابة: تحسب هذه الدالة قيمة التأخير الجديدة وجداول أوقات الانتهاء (finish times) لجدول زمني معين.
الشرح: تُستخدم الدالة `compute_schedule_tardiness` لتقييم جودة الجدول الزمني الجديد عن طريق حساب إجمالي التأخير.
تلميح: ابحث عن الكلمات التي تشير إلى حسابات متعلقة بالجدولة والتأخير.
ماذا يحدث عند العثور على جدول زمني أفضل من الأفضل الحالي؟
الإجابة: يصبح الجدول الزمني الجديد هو الجدول الأفضل (best_schedule)، ويتم تحديث قيمة التأخير الأفضل (best_tardiness) وأوقات الانتهاء الأفضل (best_finish_times).
الشرح: تُستخدم هذه العملية في خوارزميات البحث عن الحلول لتحسين الحل الحالي بالانتقال إلى حل أفضل إذا تم العثور عليه.
تلميح: فكر في عملية التحسين أو البحث عن الحل الأمثل.
ما هي الفكرة الأساسية لإنشاء "جيران" الحل في سياق هذا الكود؟
الإجابة: في هذا المثال، يتم إنشاء "جيران" الحل عن طريق انتقاء مهمتين عشوائيتين في الجدول الحالي ومبادلة مواقعهما.
الشرح: تُستخدم فكرة "الجيران" في خوارزميات البحث المحلي لاستكشاف الحلول القريبة من الحل الحالي بهدف تحسينه.
تلميح: ما هي العملية التي يتم فيها تغيير الحل الحالي بشكل بسيط للحصول على حلول مشابهة؟
ما هو الفرق بين الدالتين `random_swap` و `adjacent_swap`؟
الإجابة: تقوم `random_swap` بتبديل موقع مهمتين مختارتين عشوائياً من أي مكان في الجدول، بينما تقوم `adjacent_swap` بتبديل موقع مهمتين متجاورتين فقط في الجدول.
الشرح: تُقدم `random_swap` مرونة أكبر في استكشاف المساحة البحثية، بينما تركز `adjacent_swap` على التغييرات المحلية الصغيرة.
تلميح: ركز على نطاق اختيار المواقع للتبديل في كل دالة.
في الدالة `random_swap`، ما هو الغرض من حلقة `while pos2 == pos1`؟
الإجابة: الغرض هو التأكد من أن الموضع الثاني (`pos2`) الذي يتم اختياره لمبادلة هو مختلف عن الموضع الأول (`pos1`)، لضمان تبادل مهمتين مختلفتين.
الشرح: إذا تم اختيار نفس الموضع مرتين، فلن تحدث أي مبادلة فعلياً، ولن يتغير الجدول الزمني.
تلميح: لماذا قد يكون من المهم اختيار موقعين مختلفين للتبديل؟