AI-HW3.pdf

‫تمرین سری سوم درس هوش مصنوعی‬
‫مدرس‪ :‬دکتر سلیمانی‬
‫ترم دوم سال تحصیلی ‪1394-95‬‬
‫دانشکده مهندسی کامپیوتر‬
‫دانشگاه صنعتی شریف‬
‫موعد تحویل‪ 14 :‬فروردین‬
‫‪ 100‬نمره‬
‫‪ 15( -1‬نمره) هر کدام از حالت های خاص زیر معادل چه الگوریتم جستجوی محلی دیگری است؟ توضیح دهید‪.‬‬
‫‪ Local Beam Search .1.1‬با ‪K=1‬‬
‫‪ Local Beam Search .2.1‬با یک حالت شروع و بدون محدودیت در تعداد همسایههایی که نگه میدارد‬
‫‪ Simulated Annealing .3.1‬با ‪T=0‬‬
‫‪ Simulated Annealing .4.1‬با ∞=‪T‬‬
‫‪ .5.1‬الگوریتم ژنتیک با اندازه جمعیت ‪N=1‬‬
‫‪ 15( -2‬نمره) میخواهیم با استفاده از الگوریتم ‪ Hill-Climbing‬مسئله ‪( Boolean Satisfiability Problem‬یک عبارت ‪Boolean‬‬
‫روی یک تعداد متغیر ‪ Boolean‬را بررسی میکند که ببیند آیا به ازای هیچ نحوهی مقداردهی به متغیرها میتواند مقدارش صحیح باشد) را‬
‫حل کنیم‪ .‬هر وضعیت (‪ )state‬شامل نحوهای از مقدار دهی تمامی متغیرها با استفاده از صحیح یا غلط است‪ .‬تابع ‪ Successor‬حالت بعدی را‬
‫تنها با عوض کردن مقدار یکی از متغیرها تولید میکند‪ .‬برای مثال }‪ {A=true,B=false‬یک حالت مقداردهی است و همسایههای آن که‬
‫توسط تابع ‪ Successor‬تولید میشوند حالتهای }‪ {A=false,B=false‬و }‪ {A=true,B=true‬میتوانند باشند‪.‬‬
‫‪.1.2‬‬
‫تابع ‪ successor‬ما با داشتن ‪ n‬متغیر چند حالت برای حالت فعلی تولید میکند؟‬
‫‪.2.2‬‬
‫فضای جستوجوی ما با فرض داشتن ‪ n‬متغیر چه اندازه است؟‬
‫‪.3.2‬‬
‫عبارت زیر را در نظر بگیرید حالت بعدی تولید شده توسط الگوریتم در صورت وجود چیست؟ توضیح دهید‪).‬در حالت فعلی‬
‫تنها مقدار ‪ B‬صحیح است و بقیه دارای مقدار ‪ False‬هستند)‬
‫)𝐷 ∨ 𝐵¬( ∧ )𝐶¬ ∨ 𝐵( ∧ )𝐶 ∨ 𝐵( ∧ )𝐶¬ ∨ 𝐴¬( ∧ )𝐵¬ ∨ 𝐴(‬
‫‪.4.2‬‬
‫یک تابع هدف (‪ )objective‬مناسب برای این منظور پیشنهاد کنید‪.‬‬
‫‪.5.2‬‬
‫برای عبارت زیر یک حالت بیابید (حالت نهایی نباشد یعنی تمامی عبارات را ارضاء نکند) که یک حالت بهینه محلی باشد‪.‬‬
‫)𝐶¬ ∨ 𝐵 ∨ 𝐴¬( ∧ )𝐶 ∨ 𝐵 ∨ 𝐴¬( ∧ )𝐶¬ ∨ 𝐵¬ ∨ 𝐴¬( ∧ )𝐶¬ ∨ 𝐵 ∨ 𝐴(‬
‫‪.6.2‬‬
‫فرض کنید تابع ‪ Successor‬ما میتواند همسایگانی با حداکثر تغییر مقدار دو متغیر نسبت به حالت فعلی تولید کند در‬
‫این حالت تعداد همسایگانی که برای حالت فعلی تولید میشود چه مقدار است‪)n>1(.‬‬
‫‪ 13( -3‬نمره) مسئله کوله پشتی صفر و یک (اینجا) به دلیل اینکه یک مسئله ‪ np-complete‬است روشهایی مانند برنامه نویسی پویا ‪ ،‬شاخه‬
‫و حد و ‪ ...‬برای حل آن زیاد کاربردی نیستند‪ .‬یکی از بهترین روشهایی که بر روی مسئله کوله پشتی صفر یک جواب قابل قبولی میدهد الگوریتم‬
‫ژنتیک است‪ .‬نحوه حل مسئله کوله پشتی صفر‪ -‬یک توسط الگوریتم ژنتیک را توضیح دهید‪ (.‬نحوه مدل سازی ژنوم ها‪ ،‬تابع ‪Cross-، fitness‬‬
‫‪ Over‬و ‪ mutation‬را مشخص نمایید‪).‬‬
‫‪ 6( -4‬نمره) در شکل زیر نمونهای از مسئله ‪ 8-puzzle‬با حالت آغازین سمت چپ و حالت نهایی سمت راست نشان داده شده است‪:‬‬
‫‪3‬‬
‫‪2‬‬
‫‪1‬‬
‫‪2‬‬
‫‪8‬‬
‫‪3‬‬
‫‪6‬‬
‫‪5‬‬
‫‪4‬‬
‫‪1‬‬
‫‪6‬‬
‫‪4‬‬
‫‪8‬‬
‫‪7‬‬
‫‪7‬‬
‫‪5‬‬
‫‪ .1.4‬آیا اگر از روش ‪ Hill Climbing‬با استفاده از تابع هزینه (‪ )cost‬مجموع فواصل منهتن اعداد تا محل نهاییشان برای حل این‬
‫مساله استفاده کنیم (فرض کنید ‪ successor‬ها همان همسایههای یک وضعیت باشند که با اعمال یک کنش (‪ )action‬معتبر‬
‫به دست میآیند)‪ ،‬مسئله را حل کنید‪ ،‬آیا لزوما جواب بهینه به دست میآید؟ جواب غیر بهینه چه طور؟ توضیح دهید‪.‬‬
‫‪ .2.4‬آیا روش باال معادل ‪ greedy best first search‬با تابع اکتشافی (‪ )heuristic‬برابر با تابع هزینه باالست؟ توضیح دهید‪.‬‬
‫‪ 6( -5‬نمره) برای هر کدام از مسائل زیر توضیح دهید که کدامیک از روشهای *‪ A‬یا ‪ Simulated Annealing‬مناسب است؟‬
‫‪ .1.5‬متاسفانه در پارکینگی تعدادی ماشین در هم گره خوردهاند و صاحب‬
‫پارکینگ میخواهد با کمترین جابهجایی ماشینها راه ماشینی که‬
‫میخواهد از پارکینگ خارج شود را باز کند‪ .‬برای این منظور به سراغ شما‬
‫آمده و از شما درخواست راهنمایی دارد‪ .‬توجه کنید که هر ماشین فقط‬
‫میتواند به جلو و عقب جابهجا شود‪ .‬برای مثال در شکل روبرو ماشین ‪A‬‬
‫قصد خروج از پارکینگ را دارد و بدین منظور باید ماشینهای ‪ C‬و ‪ G‬و‬
‫‪ D‬به پایین حرکت کنند تا ماشین ‪ A‬بتواند از پارکینگ خارج شود‪.‬‬
‫‪ .2.5‬مساله قراردهی تعدادی ‪( IC‬به شکل مستطیل با طول و عرض مشخص) بر روی یک تخته مدار چاپی بهطوریکه که کمترین سطح‬
‫تخته به کار برده شود‪.‬‬
‫‪-6‬زمانبندی استخر (پیادهسازی ‪ 45‬نمره)‬
‫مسئله زمانبندی در حالت کلی یکی از مسائل ‪ NP-Hard‬است که میتوان آنرا با استفاده از الگوریتمهای ‪ heuristic search‬نظیر *‪ A‬حل‬
‫نمود‪ ،‬ولی این راه حل تنها برای حالتهای ساده در زمان منطقی جواب میدهد‪ .‬یکی از بهترین الگوریتمها برای حل این مسئله الگوریتم ژنتیک است‬
‫و به کمک این الگوریتم میتوان شکلهای پیچیدهتر این مسئله را نیز حل نمود‪.‬‬
‫دانشگاه قصد دارد اقدام به برگزاری کالسهای شنا برای دانشجویان بکند و بدین منظور نیازمند برنامهریزی برای استفاده گروههای مختلف از استخر‬
‫دانشگاه است‪ .‬برای این مهم باید محدودیتهای زیر رعایت شود‪.‬‬
‫‪.1‬‬
‫خانمها صبحها (‪ 8‬تا ‪ )12‬و آقایان در سانس عصر (‪ 12‬تا ‪ )18‬میتوانند از استخر استفاده کنند‪.‬‬
‫‪.2‬‬
‫تنها امکان برگزاری یک کالس در استخر در هر لحظه امکان پذیر است‪.‬‬
‫‪.3‬‬
‫به ازای برگزاری هر دو ساعت دوره یک ساعت استخر برای تمیز کردن محیط از دسترس خارج میشود‪.‬‬
‫‪.4‬‬
‫مربیان و دانشجویان در یکروز نمیتوانند بیش از دو ساعت به تمرین بپردازند‪.‬‬
‫‪.5‬‬
‫حداقل میزان اختصاص دادن زمان نباید کمتر از یکساعت در هر سانس باشد‪.‬‬
‫‪.6‬‬
‫کلیه دورهها در هفته بایست به طور کامل اجرا گردند‪.‬‬
‫‪.7‬‬
‫دانشجویان و مربیان عالقه دارند کالسشان پیوسته باشد (شکستن کالسها حداقل باشد (محدودیت نرم)‬
‫ورودیهای مسئله‪:‬‬
‫یک فایل ‪ json‬در اختیار شما قرار گرفته که در آن آرایههای زیر قرار دارد‪:‬‬
‫‪ .1‬مربیان که برای هرکدام یک نشانه منحصر به فرد و نام در نظر گرفته میشود‪.‬‬
‫‪ .2‬گروههای دانشجویی‪ :‬هر گروه دانشجویی یک نشانه و نام منحصر به فرد دارد و همینطور جنسیت اعضای گروه نیز مشخص‬
‫شده است‪.‬‬
‫‪ .3‬مهارت ‪ :‬مهارتهای مختلفی آموزش داده میشود که هرکدام دارای نام و شناسه منحصر به فرد خود است‪.‬‬
‫‪ .4‬دوره آموزشی‪ :‬دوره آموزشی نشاندهنده مشخصات دورهای است که باید ارائه گردد که شامل موارد زیر است‪:‬‬
‫‪ .1‬نشانه مربی دوره‬
‫‪ .2‬نشانه مهارت‬
‫‪ .3‬مدت زمان مورد نیاز در هفته‬
‫‪ .4‬گروه دانشجویی شرکت کننده در آن دوره‬
‫توجه کنید که زمان شروع و پایان در اختیار داشتن استخر از ساعت ‪ 8‬تا ‪ 18‬میباشد و استخر از شنبه تا چهارشنبه (پنج روز) در اختیار ماست‪.‬‬
‫برای زمانبندی به نحو بهینه در این شرایط‪ ،‬با کمک گرفتن از الگوریتم ژنتیک‪ ،‬راه حل مناسبی به دانشگاه ارائه کنید‪.‬‬
‫نکات مهم انجام سوال‪:‬‬
‫‪ .1‬برای این سوال میتوانید از زبانهای ‪ C/C++, python, Java‬استفاده کنید‪.‬‬
‫‪.2‬‬
‫خروجی کد شما باید‪ ،‬یک جدول متشکل از روزها و ساعتهای موجود در هر روز کاری باشد و دورهها را در آن جدول‪ ،‬در مکان مناسب‬
‫قرار دهید ‪.‬‬
‫‪ .3‬خروجی و توضیحات نحوه پیادهسازی شامل نحوه نمایش کروموزوم‪ ،‬تابع ‪ Cross-Over ، fitness‬و ‪ Mutation‬را در یک سند به‬
‫همراه کد خود ارسال کنید‪.‬‬
‫موفق باشید ‪‬‬