Featured image of post كيفية حل مشكلة بائع المتجول (TSP) باستخدام Mathematica

كيفية حل مشكلة بائع المتجول (TSP) باستخدام Mathematica

نشرح كيفية حل مشكلة بائع المتجول (TSP) باستخدام نظام المعالجة الرياضية Mathematica. نقدم خطوات إنشاء مصفوفة المسافات بين المدن باستخدام دالة SparseArray وإيجاد أقصر مسار باستخدام FindShortestTour.

حل مشكلة البائع المتجول باستخدام Mathematica

مشكلة

حل

1
d=SparseArray[{{1,2}->10,{2,1}->10,{1,5}->15,{5,1}->15,{1,4}->12,{4,1}->12,{1,3}->20,{3,1}->20,{2,5}->10,{5,2}->10,{3,4}->10,{4,3}->10,{3,8}->30,{8,3}->30,{3,7}->20,{7,3}->20,{3,6}->25,{6,3}->25,{4,5}->15,{5,4}->15,{4,8}->20,{8,4}->20,{5,9}->18,{9,5}->18,{5,8}->15,{8,5}->15,{6,7}->5,{7,6}->5,{7,8}->35,{8,7}->35,{8,9}->12,{9,8}->12},{9,9},Infinity];

إنشاء مصفوفة باستخدام وظيفة SparseArray. يمثل كل عنصر المسافة بين المدن في صف وعمود هذا العنصر. على سبيل المثال، العنصر الأول {1,2}->10 يعني أن المسافة بين 1 و 2 هي 10. العنصر قبل الأخير {9,9} يشير إلى حجم المصفوفة، والعنصر الأخير Infinity يعني أن طول المسار بين المدن غير المحددة لا نهائي. وبعبارة أخرى، يعني أنه لا يوجد مسار.

1
{len,tour}=FindShortestTour[{1,2,3,4,5,6,7,8,9},DistanceFunction->(d[[#1,#2]]&)]

يمكنك بسهولة حل مشكلة البائع المتجول باستخدام وظيفة FindShortestTour. تمثل {1,2,3,4,5,6,7,8,9} أرقام المدن. تمرر DistanceFunction->(d[[#1,#2]]&) المصفوفة d التي تمثل المسافات بين المدن.

انتاج

1
{137, {1, 2, 5, 9, 8, 7, 6, 3, 4}}

المخرجات هي أقصر مسافة والمسار في ذلك الوقت. أقصر مسافة هي 137، والمسار هو 1→2→5→9→8→7→6→3→4→1. إذا تم تغيير الترتيب إلى ABC، فسيصبح A, B, E, I, H, G, F, C, D.

comments powered by Disqus
مبني بستخدام Hugo
قالب Stack مصمم من Jimmy