الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة البائع الجوال باستخدام الخوارزميات الجينية

بدأه eleen في 14 مارس 2014 · 2 رد · 4,156 مشاهدة · في الذكاء الاصطناعي وتطبيقاته
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم...

كيف ابني داله ال fitness بلغه فيجوال بيسك دوت نت انا اعلم انه يتم حساب الكلفه بين كل مدينه واخرى بجمع هذه الكلفه لكل مسار مع بعضها ومن ثم تطبيقها ب معادله معينه على فرض ان كل جينه في الكروموسوم تمثل مدينه لكنني لااعلم كيف افعل ذلك برمجيا ارجوو المساااعده 

#2

 اختي السائلة

 

اتقصدين استخدام Genetic Algorithm لايجاد اقصر مسار في مشكلة TSP ?

#3
~التطبيق العملى لمشكلة البائع المتجول ~

 

اولا: قبل البدء فى الخوارزمية نحدد مدخلات المشكلة ومخرجاتها (المدخلات مجموعة من المدن- المخرجات اقصر رحلة يمكن ان يسلكها السائق)

اذن الخطوة الاولى : قراءة ملف المدن التى سوف يزورها السائق(لكن من اين احصل على مجموعة مدن ومسافات بينها احد الحلول توليد مجموعة عشوائية من المدن -حل اخر هناك موقع يعرض قاعدة بيانات عن مجموعة من المدن )

http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/
فلنعمل من هذا الموقع لماذا ؟ لان اى احد يقوم بعمل بحث للنشر فى هذة المشكلة يستخدم standard data ويقارن نتائجة مع الاخريين لذا احببت ان اقرأ الملفات منة لنستخدم نفس data-سوف نحمل ملف ونعمل على قرائتة

~نكتب كود لميثود لقراءة الملف

Java
 
public static void readData(){BufferedReader file;try {file = new BufferedReader(new FileReader("cities.txt"));String text=null;int  i=0;try {while((text=file.readLine())!=null){String [] line=text.split(" ");x=Double.parseDouble(line[1]);y=Double.parseDouble(line[2]);i++;  }} catch (NumberFormatException ex) {ex.printStackTrace();} catch (IOException ex) {ex.printStackTrace();}} catch (FileNotFoundException ex) {ex.printStackTrace();}}
 

بعد ما قمنا بقراءة ملف المدن نبدأ بخطوات الخوارزمية

~ تمثيل حلencoding: سوف نستخدم permutation encoding اى ان الحل عبارة عن مجموعة من الارقام التى تعبر عن رقم المدينة
الان نريد ان ننشىء حل عبارة عن مجموعة من الارقام ليست متكررة لان السائق لا يمكن ان يزور المدينة الواحدة اكثر من مرة
هذة ميثود لتوليد ارقام عشوائية ليست متكررة

Java
 
public static int[] createPermutation(int start,int end){int minValue = start;int maxValue = end;int numInts =end;  int range = maxValue - minValue;int[] randomInts = new int[numInts];int nextRandom;for (int i = 0; i < numInts; i++) {nextRandom = r.nextInt(range + 1) + minValue;randomInts = nextRandom;// now check the digits we already havefor (int j = 0; j < i; j++) {if (nextRandom == randomInts[j]) {i--; // duplicate, try againj = i; // short-circuit inner-loop}}}return randomInts;}
  

 يمكنكم تكملة  اجزاء الكود وتحويلة بأذن الله تعالى

للمزيد http://informatic-ar.com/genetic_algorithm/

تم تعديل هذه المشاركة بواسطة hommeda في 24 نوفمبر 2014 في 00:33

1

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…