• 0
eleen

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

سؤال

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

2 إجابة على هذا السؤال .

  • 0

 اختي السائلة

 

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
~التطبيق العملى لمشكلة البائع المتجول ~

 

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

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

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[i]=Double.parseDouble(line[1]);y[i]=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[i] = 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
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .