در این پروژه شما با استفاده از خانواده الگوریتم‌های ژنتیک سعی می‌کنید، نقشه‌ای بهینه برای ساختمان طراحی کنید. در واقع محصول شما باید از مساحت زمین مشخص‌شده به عنوان ورودی، بهترین استفاده را برای قرار دادن اتاق‌ها بکند. تعریف دقیق مساله بر عهده خود شماست و می‌توانید دیگر معیارهای یک نقشه خوب، مثل میزان نورگیری فضاها را هم مدل‌سازی کنید.

۱. مقدمه

بشر همواره به دنبال کسب رفاه بیشتر است.این تلاش در تمام جنبه های زندگیش نمود پیدا کرده است.افق نهایی این پروژه نیز همچون گذشته، در این راستاست.هدف نهایی پروژه، هوشمند کردن طراحی نقشه ساختمانی است.به طوری که ماشین، طرح بهینه یک نقشه را بدون دخالت انسان انجام دهد.
ما در اینجا برای شروع، مساله را به اندازه کافی کوچک و محدود خواهیم کرد.برای این کار فرض میکنیم زمین و اتاق ها به شکل مستطیل است. و ورودی برنامه به این شکل خواهد بود که کاربر ابعاد زمین ، تعداد اتاق هایی که میخواهد و همچنین مساحت کوچکترین و بزرگترین اتاق را تعیین میکند.
برای این کار الگوریتم های متفاوتی وجود دارد،ما در این پروژه قصد داریم از الگوریتم ژنتیک استفاده کنیم.هدف، تولید نقشه مطلوب و مشتری پسند است.یعنی اتاق ها باید به گونه ای باشد که اولا راه دسترسی به اتاق ها صحیح باشد و ثانیا نور مناسب به هریک از بخش های خانه برسد.
از کاربردهای این پروژه، اولا می توان به تهیه نقشه های معماری به طور هوشمند و بدون دخالت انسان اشاره کرد.ثانیا میتوان از طراحی مدارات مجتمع بزرگ مقیاس نام برد.

۲. کارهای مرتبط

موضوع این پروژه به مساله تخصیص فضا مشهور است.به معماران، در بدست آوردن نظم های مختلف المان های نقشه ، کمک می کند. برای حل این مساله و خودکار کردن آن، تلاش های بسیاری انجام گرفته است. که حاصل آن بدست آوردن الگوریتم های متفاوت می باشد.یکی از این الگوریتم ها، الهام گرفته از طراحی های مدارات بزرگ مقیاس است. به این صورت که برنامه تعدادی اتاق با مشخصه ها، اولویت ها و ضوابط مختلف می گیرد و آنها را همچون بلوک های یک مدار بزرگ مقیاس در کنار یکدیگر نظم می دهد.[2]یکی دیگر از کارهایی که نسبتا جدید در این زمینه صورت گرفته است، تهیه نقشه معماری از یک آپارتمان یک خوابه است. روش کار به این صورت است که در رابطه با ارتباط اتاق ها با یکدیگر جست و جو انجام میدهد. و نتیجتا فهرستی از حالات ممکن را نمایش می دهد.[2] یکی دیگر از الگوریتم هایی که برای این کار استفاده می شود، الگوریتم ژنتیک است. در الگوریتم ژنتیک تابع ارزیابی و نسل ها وجود دارند. مکانیزم این الگوریتم برگرفته از طبیعت است. به این صورت که بالاخره ما می توانیم از توالی نسل ها، به خروجی مورد نظر برسیم.[1] یکی دیگر از الگوریتم هایی که میتواند مورد استفاده واقع شود، الگوریتم استراتژی تکاملی است.این الگوریتم برای مسائل بهینه سازی در فضای پیوسته کارایی دارد.این الگوریتم دارای بخش های جهش، ترکیب و جایگزینی است. [1]

۳. آزمایش‌ها

برای دریافت پروژه به این لینک مراجعه کنید.
در فاز پیاده سازی، فقط الگوریتم ژنتیک را پیاده سازی نمودیم.برای این کار از ماژول deap زبان پایتون استفاده شده است.
توضیحات کد:
در ابتدا از کاربر ابعاد زمین خام را میگیریم. سپس تعداد اتق ها و همچنین کمترین و بیشترین مساحت اتاق را توسط کاربر تعیین میکنیم.
سپس در محدوده ی ابعاد زمین، دنباله ی کرومزوم ها را با استفاده از توابع ماژول مورد استفاده به طور تصادفی تولید نموده ایم.در مرحله ی بعدی تابع برازندگی که خود شامل توابع دیگری است را تعریف کردیم.آنگاه با استفاده از قوانین حاکم در الگوریتم ژنتیک به تولید نسل های مختلف پرداختیم. در این آزمایش تعداد نسل ها، 80 میباشد.
آزمایش کد:
برای آزمایش ورودی های مختلف را به برنامه دادیم و خروجی برنامه که به صورت آرایه است را دریافت کردیم.آرایه شامل مختصات دوتا از گوشه های مستطیل(اتاق ها) می باشد. مشکلاتی که وجود دارد، اولا کامل نبودن تابع برازندگی است.از این جهت که نور و فضاهای مرده به طور کامل مدیریت نمی شود. اما خروجی ای که داده میشود، برهم افتادگی و همپوشانی مستطیل ها دیده می شود.برای بهبود نتیجه احتمالا تابع برازندگی را باید بهبود بخشید.

۴. کارهای آینده

۵. مراجع

  • [1] علیرضا نوریان، "طراحی نقشه ساختمان با استفاده از محاسبات تکاملی"، پایان‌نامه کارشناسی، دانشگاه علم و صنعت ایران، ۱۳۹۰. لینک

  • [2] Paul Merrel , Eric Schkufza , Vladlen Koltun ; Compute-Generated Residential Building Layouts ; Stanford University

  • [3] Suphachai Sutanthavibul , Eugene Shragowitz , Member , IEEE and J.B Rosen ; An Analitycal Approach To FloorPlan Design and Optimization

  • [4] S. Cahon, N. Melab, and E. G. Talbi, “ParadisEO: A Framework for the Reusable Design ofParallel and Distributed Metaheuristics,” Journal of Heuristics, vol. 10, pp. 357-380, May 2004.

  • [5]An algorithm for building rectangular floor-plansAuthors: Sany M. Leinwand University of Illinois, Chicago, Dept. EECSYen-Tai Lai University of Illinois, Chicago, Dept. EECS

علیرضا نوریان

نکاتی که دانشجوهای دیگه تذکر دادن دقیق هست. امیدوارم با رعایت کردن اونها در فاز بعد بتونید خروجی خوبی تولید کنید و اون خروجی رو به خوبی نمایش بدید تا مخاطب بفهمه که نقشه‌ای که شما تولید می‌کنید چطوری هست و چطور بدست اومده.

تایید شده

با سلام و خسته نباشید

کار شما خوب است اما چند نکته در مورد آن وجود دارد
بد نبوددر مورد تابع برازندگی الگوریتم ژنتیک خود در اینجا کمی توضیح می دادید تا برای خواننده مشخص شود مبنای ارزش گذاری حالات به چه شکل است.
همچنین بهتر بود در مورد نتیجه های به دست آمده در آزمایش توضیحات بیشتری می دادید. مثلا یک نمونه ورودی را آزمایش کرده و نتیجه را اینجا می نوشتید.
و در آخر و از همه مهم تر بهتر بود در مورد چگونگی مدل کردن مسئله برای الگوریتم ژنتیک توضیحات بیشتری می دادید.
ممنون و متشکر

تایید شده

سلام
۱- در بعضی قسمت های متن پروژه ی شما خطاهای نگارشی دیده می شود.
۲- بعضا غلط املایی دیده می شود "تعداد اتق ها" ، ...
۳- نیم فاصله رعایت نشده است.
۴- در خط اول کارهای مرتبط ، جمله ی شما اینگونه شروع می شود : به معماران، در بدست آوردن نظم های مختلف المان های نقشه ، کمک می کند. ! بهتر است جملات مرتبط را به درستی به هم ربط دهید مثلا : موضوع این پروژه به مساله تخصیص فضا مشهور است ، که به معماران، ... یا در جای دیگر جمله تمام شده است اما جمله ی بعدی با "که" شروع شده است :‌ تلاش های بسیاری انجام گرفته است. که حاصل آن بدست آوردن الگوریتم های متفاوت می باشد. !
۵- بعضی قسمت های متن به صورت محاوره ای نوشته شده است.
۶- بهتر است مطالب مختلف را در پاراگراف های جدا از هم توضیح دهید و برای آن ها عنوان در نظر بگیرید. هیچ پاراگراف بندی یا عنوانی در متن شما دیده نمی شود.
۷- در بسیاری از قسمت های متن شما از عبارت "مدارات مجتمع بزرگ مقیاس" استفاده شده است اما هیچ توضیحی راجع به آن داده نشده است.
۸- در فاز اول قرار بود با خواندن مقالات مختلف ، روش های گوناگون را توضیح دهید اما شما فقط از روش های مختلف نام برده اید.
۹- در قسمت آزمایش ها هیچگونه جدول یا نتیجه ای را نمایش نداده اید و ارزیابی ها قابل مشاهده نیست. دیتا ی مورد استفاده مشخص نیست.
۱۰- تحلیلی انجام نشده که کدام روش بهتر است ، خواننده پروژه‌ی شما در نهایت می‌خواهد بداند کدام روش بهتر است.
۱۱- بهتر بود کد خود را در گیتهاب می گذاشتید و مستند و داکیومنتی برای آن در نظر می گرفتید.

پروژه ی شما جای کار زیادی دارد که امیدوارم با رفع مشکلات آن به نتیجه ی مطلوبی برسید، اما تا همینجا تلاش شما خوب است.
موفق باشید.