HW2_Pr.pdf

‫دانطگاه صنعتي ضريف‬
‫دانطکذه مهنذسي کامپيوتر‬
‫هوش مصنوعي‬
‫تمرين عملي ضماره ‪2‬‬
‫توضيحات‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪1‬‬
‫ایي توشیي دس هجوَع داسای ‪ً 70‬وشُ ‪ً 15 +‬وشُ اضبفی است‪.‬‬
‫هَػذ تحَیل توشیي تب سبػت ‪ 22‬سٍص ‪ 11‬فشٍسدیي است‪.‬‬
‫جَاة توشیي ػولی سا ثِ آدسس ‪ [email protected]‬ثب ػٌَاى ‪ HW2-StudentID‬اسسبل ًوبیيذ‪.‬‬
‫ثِ اصای ّش سٍص تبخيش ‪ً %10‬وشُ کسش خَاّذ ضذ‪.‬‬
‫ثِ توشیيّبی کپی ًوشُ صفش تؼلق خَاّذ گشفت‪.‬‬
‫معرفي مساله‬
‫فشٍضٌذُای هی خَاّذ ثب خَدسٍ ضخصی خَد ثشای فشٍش هحصَالتص ثِ چٌذ ضْش سفش کٌذ‪ .‬دس ایي سفش اٍ هیخَاّذ ثيطتشیي سَد سا ثجشد ٍ‬
‫ثٌبثشایي قصذ داسد تب هیتَاًذ دس ّضیٌِّبی سفش صشفِ جَیی کٌذ‪ .‬ثشای ایي کبس ایي فشٍضٌذُ تصوين گشفتِ است کِ هسيشی سا اًتخبة کٌذ کِ ضوي‬
‫ایيکِ اص توبم ضْشّب یکثبس هیگزسد ٍ دس ًْبیت ثِ ضْش ضشٍع هی سسذ‪ّ ،‬ضیٌِ ایي هسيش ًيض حذاقل ثبضذ‪ .‬هتبسفبًِ دس توبم ضْشّب پوپ ثٌضیي ٍجَد‬
‫ًذاسد ٍ تٌْب دس تؼذادی اص آًْب پوپ ثٌضیي ٍجَد داسد ٍ ثٌبثشایي هوکي است اگش اص ضْشّبیی کِ پوپ ثٌضیي داسًذ ثِ هَقغ ػجَس ًکٌذ‪ ،‬دس ثيي ساُ‬
‫ثوبًذ‪ .‬ایي ضخص ًقطِ ضْشّبیی سا کِ ثبیذ ثِ آًْب سفش کٌذ سا داسد ٍ ًيض هیداًذ دس کذام ضْشّب پوپ ثٌضیي ٍجَد داسد‪.‬‬
‫دس ایي توشیي قشاس است دٍ الگَسیتن جستجَی ‪ simulated annealing ٍ genetic‬سا ثشای ّش یک اص حبالت صیش پيبدُسبصی کٌيذ ٍ ًتبیج تب حذ‬
‫هوکي هٌبسجی ثشای ایي هسبئل اسائِ کٌيذ‪.‬‬
‫‪1‬‬
‫بخص اول‬
‫‪1.1‬‬
‫اثتذا فشض کٌيذ کِ دس ّش ضْشی کِ پوپثٌضیي ٍجَد داضتِ ثبضذ‪ ،‬فشٍضٌذُ ثٌضیي هیصًذ ٍ ثبکص سا پش هیکٌذ‪ .‬ضوب قشاس است هسيشی ثب هطخصبت‬
‫هطشح ضذُ دس صَست سَال پيذا کٌيذ کِ طَل حذاقل ًيض داضتِ ثبضذ‪ .‬ثؼذ اص ثذست آٍسدى هسيش ثب استفبدُ اص تبثغ استبتيکی کهِ دس ‪ TSP‬تؼشیه‬
‫ضذُ است هسيش سا رخيشُ کٌيذ (ًتيجِ دس فبیلی ثِ ًبم ‪ resultA.txt‬رخيشُ خَاّذ ضذ)‪ .‬دس ًظش داضتِ ثبضيذ ّضیٌِ ًْبیی ثشاثش است ثب ّضیٌِ طهی‬
‫هسيش ثؼالٍُی ثٌضیي ثبقيوبًذُ دس ثبک خَدسٍ‪.‬‬
‫بخص دوم‬
‫‪2.1‬‬
‫حبل فشض کٌيذ کِ دس ّش ضْشی کِ پوپ ثٌضیي ٍجَد داضتِ ثبضذ‪ ،‬فشٍضٌذُ لضٍهبً ثٌضیي ًوی صًذ ٍلی اگش ثٌضیي ثضًذ‪ ،‬ثبکص سا پش هیکٌذ‪ .‬ضوب قهشاس‬
‫است هسيشی ثب هطخصبت هطشح ضذُ دس صَست سَال پيذا کٌيذ کِ هقذاس ثٌضیي صدُ ضذُ طی ایي هسيش حذاقل ثبضذ‪ .‬ثؼذ اص ثذست آٍسدى هسيش ثب‬
‫استفبدُ اص تبثغ استبتيکی کِ دس ‪ TSP‬تؼشی ضذُ است هسيش سا رخيشُ کٌيذ (ًتيجِ دس فبیلی ثِ ًهبم ‪ resultB.txt‬رخيهشُ خَاّهذ ضهذ)‪ .‬دس ًظهش‬
‫داضتِ ثبضيذ ّضیٌِ ًْبیی ثشاثش است ثب ّضیٌِ طی هسيش ثؼالٍُی ثٌضیي ثبقيوبًذُ دس ثبک خَدسٍ‪.‬‬
‫تَضيحبت کذ ‪:‬‬
‫ًقطِ ٍ هکبى پوپ ثٌضیيّب ثِ صَست یک فبیل هتٌی دس اختيبس هب قشاس داسد‪ .‬فشض کٌيذ دس ًقطِ ضشٍع ثبک ثٌضیي فشٍضٌذُ پش است‪ّ .‬وچٌيي هقذاس‬
‫ثٌضیي هصشفی دس ّش کيلَهتش یک ليتش ثبضذ‪ .‬ثشای ایٌکِ ضوب دغذغِ ای جض پيذا کشدى هسيش ًذاضتِ ثبضيذ هتذی سا ًَضتين کِ ایي فبیل سا خَاًذُ ٍ‬
‫آى سا ثِ صَست صیش دس اختيبس ضوب قشاس هیدّذ‪ .‬ثشای استفبدُ اص فبیلی کِ دس اختيبستبى قشاس هیگيشد یک ضی اص کالس ‪ TSP‬هیسبصیذ (اگش هسيش‬
‫فبیل سا تغييش دادیذ هسيش سا ثِ ػٌَاى پبساهتش ثِ سبصًذُ (‪ )constructor‬اسسبل کٌيذ)‪ .‬ایي کالس ضبهل تَاثغ صیش است ‪:‬‬
‫)‪ : getDistances(i,j‬فبصلِ ثيي دٍ ضْش ‪ j ٍ i‬سا ثش حست کيلَهتش ثشهیگشداًذ‪.‬‬
‫)(‪ : getNoCity‬تؼذاد ضْشّب سا ثشهیگشداًذ‪.‬‬
‫)(‪ : getInitCity‬ضْش آغبصیي سا ثشهیگشداًذ‪.‬‬
‫)(‪ : getFuel‬حجن ثبک ثٌضیي خَدسٍ سا ثش حست ليتش ًطبى هیدّذ‪.‬‬
‫)‪ : isGasStation(i‬ثب دسیبفت ضوبسُ ضْش ثِ ضوب هیگَیذ ایي ضْش داسای پوپ ثٌضیي ّست یب خيش (‪ true‬یب ‪ false‬ثشهیگشداًذ)‪.‬‬
‫)‪ : Static save(int[] seq‬تبثغ استبتيک ثشای رخيشُسبصی ًتيجِ ًْبیی ثخص اٍل‪ .‬ثِ ػٌَاى پبساهتش ثبیذ یک آسایِای اص اػذاد صحيح کِ تَالی‬
‫ضْشّبیی کِ ثبیذ فشٍضٌذُ اص آى ػجَس کٌذ سا ًطبى هیدّذ‪.‬‬
‫)‪ : Static save(int[][] seq‬تبثغ استبتيک ثشای رخيشُسبصی ًتيجِ ًْبیی ثخص دٍم‪ .‬ثِ ػٌَاى پبساهتش ثبیذ یک آسایِای دٍ ثؼذی اص اػذاد صحيح‬
‫کِ دس ][]‪ seq[0‬آى تَالی ضْشّبیی کِ ثبیذ فشٍضٌذُ اص آى ػجَس کٌذ ٍ دس ][]‪ seq[1‬تَالی سَختگيشی سا ًطبى هیدّذ ثِ ایي صَست کِ دس ّش‬
‫ضْش کِ ثبیذ سَختگيشی اًجبم ضَد ‪ ٍ 1‬دس ضْشی کِ ًجبیذ سَختگيشی اًجبم ضَد صفش قشاس هیگيشیذ‪.‬‬
‫ًکبت هْن ‪:‬‬
‫‪-‬‬
‫تَجِ داضتِ ثبضيذ کِ ضْش آغبصیي حتوب ثبیذ دس اثتذا دًجبلِای کِ ثذست هیآٍسیذ قشاس داضتِ ثبضيذ‪.‬‬
‫‪-‬‬
‫کذ خَد سا دس دٍ کالس ‪ SA ٍ GA‬دادُ ضذُ ثٌَیسيذ‪.‬‬
‫‪-‬‬
‫دس کالس ‪ Chromosome‬هیتَاًيذ ضکل طىّب ٍ کَسٍهَصم سا تؼييي کٌيذ‪ .‬حبلت پيصفشض آسایِای اص اػذاد صحيح است کِ تَالی‬
‫ضْشّب سا ًطبى هیدّذ‪.‬‬
‫‪-‬‬
‫ثشای اجشا کذّب یک ضی اص ایي دٍ کالس ایجبد هیضَد ٍ سپس تبثغ ‪ main‬آًْب فشاخَاًی خَاّذ ضذ ٍ ًتيجِ ثبیذ دس فبیل هَسد ًظش قشاس‬
‫ثگيشد‪.‬‬
‫‪2‬‬
‫‪-‬‬
‫تَاثغ خَد سا دس ثخص ‪ My function‬اضبفِ کٌيذ‪.‬‬
‫‪-‬‬
‫هتغيشّب سا ثب کبهٌتگزاسی تَضيح دّيذ‪.‬‬
‫‪-‬‬
‫ًبم تَاثغ پيصفشض سا تغييش ًذّيذ ٍلی اگش الصم داسیذ هیتَاًيذ پبساهتشّبی اسسبلی سا تغييش دّيذ (ّيچ تغييشی دس کالس ‪ً TSP‬ذّيذ)‪.‬‬
‫‪-‬‬
‫دس گضاسش خَد ثبیذ دس هَسد جضئيبت گبمّبی الگَسیتن طًتيکی کِ هَسد استفبدُ قشاس دادیذ (ًحَُی اسصیبثی‪ ،‬اًتخبة کشٍهَصٍمّب دس ّش‬
‫ًسل ٍ جضئيبت ػولگشّبی ‪ ٍ )mutation ٍ cross-over‬هقذاس پبساهتشّبی اًتخبة ضذُ تَضيح دّيذ‪ .‬فشض کٌيذ تؼذاد اػضبی جوؼيت‬
‫یک ًسل ‪ 500‬است ٍ الگَسیتن ‪ً 1000‬سل یب دٍس اجشا هیضَد‪ّ .‬وچٌيي دس هَسد ًحَُی تؼشی‬
‫ّوسبیگی ٍ تٌظين دهب دس صهبىّبی‬
‫هختل ثشای الگَسیتن ‪ simulated annealing‬تَضيح دّيذ‪ .‬گضاسش ثبیذ ضبهل تَاثؼی کِ خَدتبى ًيض ًَضتِایذ ًيض ثبضذ‪.‬‬
‫‪-‬‬
‫ثشای ایٌکِ ثتَاًيذ ثشًبهِ خَد سا تست کٌيذ هیتَاًيذ اص تبثغ صیش ثشای ایجبد یک هسئلِ تصبدفی استفبدُ ًوبیيذ‪:‬‬
‫) ‪ : TSPGenerator( int noCity ,double p ,double f‬کِ دس آى پبساهتش اٍل تؼذاد ضْشّب سا هطخص هیکٌذ (ثيي ‪ 10‬تب ‪100‬‬
‫ضْش‪ ،‬ثشای تست سؼی کٌيذ صیش ‪ 20‬ضْش اًتخبة کٌيذ تب صهبى کوتشی ثشای تست صشف ضَد)‪ .‬پبساهتش دٍم تؼذاد پوپ ثٌضیيّب ًسجت ثِ‬
‫تؼذاد ضْشّب سا ًطبى هیدّذ( ثيي ‪ 0.2‬تب ‪ .)0.2‬پبساهتش سَم هيضاى سَخت سا ًسجت ثِ طَالًیتشیي هسيش ثيي دٍ ضْش هطخص هیکٌذ‬
‫(ثيي ‪ 1.2‬تب ‪.)1.5‬‬
‫‪3‬‬