ﺑﻪﻧﺎﻡ ﺧﺪﺍ تمرین عملی اوّل درس »مقدمهای بر هوش مصنوعی« نیمسال بهار ۸۵-۸۶ مقایسهی روشهای مختلف جستجو در مسئلهی »انباردار« موعد تحویل :دو هفته پس از اِعالن بدون تأخیر یا کار اضافی؛ سه هفته پس از اِعالن با تأخیر یا کار اضافی صفحهی ۱از ۶ ۱معرفی مسئله ۱٫۱ صورت مسئله مسئلهی »انباردار« که به نام (倉庫番) Sokobanنیز معروفست ،یک مسئلهی جستجوی آگاهانه است که در آن یک نگهبان انبار قصد دارد صرف ًا با هُل دادن تعداد جعبه ،آنها را از مکانهای اوّلیه به مقصدهای از پیش تعیین شده برساند. نقشهی این مسئله میتواند از یک حالت ساده مانند شکل روبهرو تا حاالت بسیار پیچیده طراحی شود .دقّت کنید که در هر مرحله، انباردار تنها با حرکت )در صورت امکان( به یکی از چهار خانهی مجاورش میتواند بسته به شرایط یکی از دو عمل زیر را انجام دهد: • راه رفتن :درصورتی که آن خانه خالی باشد )مانند جهت باال در شکل مقابل( ،انباردار میتواند به آنخانه راه برود. • هُل دادن :درصورتی که در آن خانه جعبهای قرار گرفته باشد ی خانهی جعبه در همان راستا خالی باشد )مانند و خانهی دقیق ًا بعد ِ جهت پایین یا جهت چپ در شکل( ،انباردار میتواند آن جعبه را در آن راستا هُل بدهد. بدیهیست که در هر خانه ،الزام ًا هر چهار راستا معتبر نمیباشند ،به عنوان مثال در همین شکل انباردار نمیتواند بهسمت راست حرکت کند! ۱٫۲حل مسئله هدف مسئله ،رساندن جعبهها به مقاصد است .البته امتیاز بیشتر برای روشیست که در آن انباردار کمترین راه را برود! بهعنوان مثال ،یه حل ۱بهینه برای مثال فوق ،دنبالهی زیر است که در آن حروف D ،R ،Uو Lبهترتیب حرکت بهسمت باال ،راست ،پایین و چپ را نمایش میدهند: DULLRUUDRR در این حل ۹ ،بار انباردار حرکت کرده است که در آن ۶بار عمل هُل دادن و ۳بار عمل راه رفتن انجام گرفتهست. ۱٫۳بیشتر! از گوگل و ویکیپدیا ] [http://en.wikipedia.org/wiki/Sokobanحتم ًا بهره بگیرید! ضمن ًا نسخهی Onlineبازی برای دست و پنجه نرمکردن ،در آدرس زیر موجود است: http://michbuze.club.fr/Boxworld/sokojs.htm solution صفحهی ۲از ۶ 1 ۲صورت تقلیل یافتهی مسئله برای پیادهسازی ۲٫۱تغییرات اصلی در این تمرین ،بهجای چند جعبه ،تنها یک جعبه و یک هدف داده میشود! البته در بند عملیات اضافه ،ذکر شدهاست که در صورت تمایل با گسترش مسئله به چند جعبه ،نمرهی تشویقی برای این منظور درنظر گرفته میشود .سایر موارد ،عموم ًا نظیر مسئلهی اصلی هستند. ۲٫۲ورودی مسئله ورودی مسئله که از ورودی استاندارد ۲باید خوانده شود .چیدمان ۳ورودی چنینست: در سطر اوّل ابتدا دو عدد nو mکه بهترتیب تعداد سطرها و تعداد ستونهای ماتریس نقشه هستند ،داده میشود. سپس در nسطر بعدی ،در هر سطر mکاراکتر نوشته میشود که این کاراکترها بیانگر عناصر نقشه هستند: • - #این کاراکتر ،دیوار را نشان میدهد. • - Sمحل قرارگیری انباردار در ابتدای کار. • @ -جعبه )درصورت تمایل به انجام کار تشویقی ،سایر جعبهها نیز مشابه ًا با Xنشان داده میشوند(. • - Xمقصد جعبه )جعبهها( • - .زمین هموار برای حرکت! یک مثال از ورودی میتواند چنین باشد: 5 12 ############ ######..X### #S....@...## ######..#### ############ دقت کنید که: • ) @ ،Sها() X ،ها( نیز مسیر هموار برای حرکت یا هُل دادن بهشمار میروند. • کارکترهای حرفی ) Sو (Xحروف بزرگ انگلیسی هستند و بههیچ وجه نباید از حروف کوچک بهجای آنها استفاده کرد. ممکنست در انتهای سطرها یا پس از آخرین سطر فاصلهی خالی وجود داشته باشد. • میتوانید مطمئن باشید که: • نقشه الزام ًا توسّط دیوارها بستهست و Sنمیتواند از نقشه خارج شود. • تعداد @ )ها( دقیق ًا برابر تعداد ) Xها( است. • مقادیر mو nاز ۱۰۰تجاوز نمیکنند. • تبدیل حالت ۴به وضعیت!۵ برای نگهداری یک موقعیت قرارگیری انباردار و جعبه)ها( یک کالس با حداقل اشیاء زیر تعریف کنید: 2 Standard Input: cin in C++ & System.in in Java Format 4 Situation 5 State 3 صفحهی ۳از ۶ { Class State int Sx, Sy; // Sokoban's Place in the Map int Bx, By; // Box's Place in the Map } درصورتی که تعداد جعبهها بیشتر از یکی باشد )کار تشویقی( ،خط دوم باید یک آرایه از مکانها باشد .این وضعیت )و تولید( آن ،که در خروجی مسئله چاپ میشود ،نمایندهی پیچیدگی و سرعت الگوریتم خواهد بود. ۲٫۳خروجی مسئله بهعنوان خروجی مسئله ،در خروجی استاندارد ،۶ابتدا سه عدد w ،tو vرا بنویسید که بهترتیب برابر طول دنبالهی حرکتی که یافتهاید ،تعداد هُلدادنهای موجود در آن دنباله و تعداد وضعیتهای مشاهده شده توسط الگوریتم( است .سپس در سطر دوم ،با استفاده از کاراکترهای B ،R ،Uو Lچنانکه گفته شد دنبالهی حرکتیتان را چاپ کنید .یک خروجی برای مثال ورودی باال ،میتواند چنین باشد: 12 3 16 RRRRRDRUULUR که عدد ،16بیانگر این امر است که الگوریتم استفاده شده ۱۶ ،وضعیت را بررسی کرده تا به وضعیت نهایی رسیده است. در صورتی که مسئله حلناشدنیست و با هیچ دنبالهای نمیتوان جعبه)ها( را به مقصد رساند ،در تنها سطر ورودی ،عدد -1و سپس تعداد وضعیتهای مشاهده شده را چاپ کنید. ۲٫۴پیادهسازی خواستهشده شما باید این مسئله را بهکمک الگوریتمهای زیر پیادهسازی کنید: BFS .۱ DFS .۲ Iterative Deepening .۳ Bidirectional Search .۴ .۵و نهایت ًا *A دقّت کنید که برنامهی شما باید شمارهی الگوریتمی که میبایست اجرا شود را از بههنگام اجرا بهعنوان آرگومان برنامه بگیرد .به عنوان مثال اگر برنامه با نام Sokoban.exeتکمیل شده باشد ،دستور زیر باید با استفاده از الگوریتم Bidirectional Searchمسئله را حل نماید: C:\AI\Proj1>Sokoban.exe 4 توجه کنید که: • در صورتی که الگوریتمی را پیادهسازی نکرده باشید و اجرای آن الگوریتم خواسته شود ،میبایست پیغام Not Implementedدر خروجی استاندارد نمایش داده شود. ۷ • از نوشتن هرگونه توضیح اضافه در خروجی استاندارد یا خروجی اشتباهات اجتناب کنید. • بهجز الگوریتم ،DFSسایر الگوریتمها باید طوری پیادهسازی شوند که یک جواب بهینه )تعریف آن در ادامه خواهد آمد( را چاپ کند. چند راهنمایی: • آرگومانهای خط فرمان در هر یک از زبانهای C++و Javaبهصورت پارامتر از نوع stringبه تابع mainارسال میشوند. Standard Output: cout in C++ & System.out in Java Standard Error: cerr in C++ & System.err in Java صفحهی ۴از ۶ 6 7 • الگوریتمها را بهترتیب خوبی پیادهسازی کنید ،چرا که ممکنست یک الگوریتم تغییراتی از الگوریتم دیگر باشد! • برای سرعت بیشتر اجرا )که مستقل از خروجیست( بهتر از دادهساختارهای پیشرفتهی زبان برنامهنویسیتان نظیر > Set<Stateدر C++یا HashMapدر Javaاستفاده کنید. ۳سیاست نمرهدهی ۳٫۱نمرهی خام از آنجا که انجام این تمرین بخشی از نمرهی اصلی شما را دارد ،شما میبایست الگوریتمهای فوق را پیادهسازی کنید اما: • جواب بهینه )= هزینهی عملیات( صرف ًا براساس طول دنباله سنجیده میشود .دو دنباله با طولهای مساوی ،مستقل از تعداد هُلدادنهایشان میتوانند برابر گرفته شوند. • میتوانید فرض کنی دقیق ًا یک جعبه داریم. • تابع مکاشفه ای که بهکار میگیرید میتوانند ساده باشند اما نباید برای تمام حالتها مقدار صفر را ۸ برگردانند! ۳٫۲نمرهی تشویقی برای هریک از اعمال زیر ،نمرهی تشویقی در نظر گرفته میشود که ضریب آن عمل ،بسته به دقت ،صحت، سرعت ،اشراف در پیادهسازی و ...خواهد داشت: • * پیادهسازی برای چند جعبه • پیادهسازی برای توابع مکاشفهی بیشتر و مقایسهی آنها • پیدا کردن دنبالهی بهینهای که از نظر تعداد هُلها نیز )در صورت تساوی طول( کمترین مقدار را داشتهباشد. • ساختن تستهای با جواب طوالنی و یا )بهتر( برنامهی تستساز • ۹ موارد پیشنهادی خودتان )هر چه سریعتر باید هماهنگ شوند( در صورت پیادهسازی مناسب و دقیق این موارد ،ممکنست شانس ارائهی گزارش آن فعالیتها به کالس را )که نمرهی جداگانهای از تمرینها دارد( بهدست بیاورید! ۳٫۳نمرهی منفی! در صورت مشاهدهی هرگونه تخلف ،مخصوص ًا گرفتن کُپـ)ـی( از سایرین و یا انجام تمرین توسط کسی غیر از دانشجوی مربوطه ،بهشدت با مورد تخلف برخورد شده و اکیدًا نمرهی منفی در پی خواهد داشت .هیچ عذر و بهانهای در این زمینه پذیرفتنی نبوده و مشکالت آتی بهتر است از قبل مطرح شوند. Heuristic Generator صفحهی ۵از ۶ 8 9 ) ( 9− d log10که 1 ≤ d ≤ 8ضرب میشود. در صورت تأخیر در ارسال تمرین ،تا یک هفته ،نمرهی تمرین در مالک روز تأخیر ،ساعت ۲۳:۵۹است؛ بدینمعنی که یک ساعت با ۲۳ساعت فرقی نمیکند! کار اضافی )تشویقی( تحویل با تأخیر نخواهد داشت. ۴تحویل ۴٫۱تحویل ارسالی فایل ارسالی شما باید الزام ًا یک فایل zipبا نام ) EX1-83101234-82101234.zipکه در آن شمارهی دانشجویی افراد نویسندهی پروژه بهجای اعداد نمونه قرار گرفتهاند( باشد. موارد مورد نیاز برای تحویل ،که میبایست در فایل zipگردآوری شوند ،عبارتند از: • کّد برنامه • یک فایل report.docیا ترجیح ًا report.pdfکه در آن توضیح جامعی دربارهی توابع، کالسها و ...دادهاید .عالوه بر آن در فایل reportشما میبایست گزارش نتایج حاصله از بررسی و مقایسهی الگوریتمهای مختلف برای ورودیهای مختلف که در سایت درس قرار خواهد گرفت، را ارائه کرده و دالیل خود را برای آنها ذکر کنید .این مقایسه میبایست همراه با نمودار و استدالل مجزا برای پیادهسازی ،زمان اجرا )به ثانیه( و تعداد حالتهای مشاهدهشده باشد .دقّت کنید که قسمت قابل مالحظهای از نمرهی تمرین شما به این بخش اختصاص مییابد. • در صورت احتیاج :یک شاخهی etcکه در آن موارد الزم دیگر )تشویقی( قرار گرفتهاند .شرح این فایلها در reportمیبایست آمده باشد. فایل ارسالی خود را حداکثر تا دو هفته پس از اِعالن به آدرس [email protected]ارسال کنید؛ در غیر اینصورت بهمدت یک هفته مشمول بند تأخیر شده و پس از آن بههیچ وجه نمرهای دریافت نخواهید کرد. درصورتی که قصد دارید موارد تشویقی را انجام دهید ،حتم ًا باید مورد)های( خود را دقیق ًا انتخاب کرده و پیش از فرا رسیدن موعد اوّل آنها را اعالم کنید .در این صورت مهلت ارسال برای شما بهمدّت یکهفته )تا پایان بند تأخیر سایرین( تمدید خواهد شد و دیگر مهلت ارسال با تأخیر نخواهید داشت. ۴٫۲تحویل حضوری • هر یک از افراد نویسندهی پروژه ،میبایست اشراف کامل و جامع بر پیادهسازی کار داشته باشند .این مهم در طی تحویل حضوری )در صورت لزوم( بررسی خواهد شد. ۵کمک! برای رفع ابهامات مسئله یا مشکالت پیادهسازی و ...در رابطه با این تمرین با [email protected]تماس بگیرید. »پایان« صفحهی ۶از ۶
© Copyright 2025 Paperzz