بایگانی ماهیانه: نوامبر 2007

هوش مصنوعی در رباتیک

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

روبات ۴ پا

توی این قطعه یک روبات ۴ پا رو می بینید. توی ربات های ۴ پا و ۲ پا حفظ تعادل و تولید الگوی حرکت بسیار سخته. شاید در ابتدا زیاد ملموس نباشه.
برای همین مثال می زنم:
توی بازار عروسک های بسیار زیادی وجود داره. به عنوان مثال فرض کنید یک عروسک اسب گرفتید. حالا سعی کنید اون رو روی ۴ تا پاش ایستاده نگه دارید. بعد می بینید با یک ضربه ی کوچک عروسک می افته.
حالا فرض کنید بجای یک عروسک اسب یک عروسک دو پا مثل باربی می گرفتید. حالا بعد از کلی تلاش برای ایستاده نگه داشتن عروسک می بینید با یک تکان خیلی کوچک تعادل عروسک بهم می خوره!
خوب این ها در مقیاس کوچیک بودند! توی مقیاس های بزرگ تر حفظ تعادل بسیار سخت تره!
علاوه بر اون تولید الگوی حرکتی هم سخته. یک روبات تعدادی موتور داره! برای راه رفتن باید دقیقا بدونیم در چه زمانی هر کدام از موتور ها چه سرعت زاویه ای داشته باشند. شاید هنوز به سختی و پیچیدگی موضوع پی نبرده باشید! اگر بخواهیم یک آدم رو ساده سازی کنیم حدود ۲۰ درجه ی آزادی داره. یعنی ۲۰ موتور. حالا برای راه رفتن ما باید تعیین کنیم در هر لحظه هر کدوم از این موتور ها چه سرعت زاویه ای داشته باشند. این ساده ترین حالت هست که زمین صاف باشه. اگر کمی زمین شیب داشته باشه تمام اون سرعت ها عوض می شوند! یا مثلا اگر جنس زمین و اصطکاکش فرق کنه یا یه نیروی خارجی به هر نقطه از بدنه ی ربات وارد بشه! ما نمی تونیم همه ی این حالت ها رو دونه دونه محاسبه کنیم! اینجاست که هوش مصنوعی به کمک ما می آید!
همونطوری که یک بچه ی تازه به دنیا رسیده کم کم راه رفتن رو یاد می گیره کامپیوتر هم میتونه همین کار رو بکنه که در پست های بعدی در این رابطه و راه های مختلف تولید الگو های راه رفتن بیشتر توضیح میدم.
در حال حاضر مسابقاتی به نام Soccer3D چندین بار در سال بصورت اپن و یک بار بصورت جهانی برگزار میشه که موضوع اون دقیقا همین مسئله ، یعنی راه رفتن ربات های دو پا هست که در این مورد هم در پست های آینده بیشتر توضیح میدم.
فعلا برای مشاهده ی قدرت هوش مصنوعی و علاقه مند تر شدن به اون قطعه ی تصویری زیر رو ببینید!

RHex

این موجود هم به نظرم جالب اومد. توی مسابقات ربوکاپ آتلانتا هم حضور داشت و خیلی ها رو به خودش جذب کرد و هزینه ی خیلی زیادی هم روش شده اما به نظر نتیجه ی خیلی خوبی هم داشته!
توی این روبات برای کم کردن خطای مسیری که میره و تنظیم پره هاش برای حفظ تعادل از هوش مصنوعی استفاده شده.

لینک های خارجی

طراحی شبکه ی دیده بانی کیفیت آب توسط الگوریتم ژنتیک

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

  • نمایانگر حوزه ی آبگیر
  • نظارت کننده ی منابع آلودگی
  • نشان دهنده ی نیاز آبی
  • برآورد کننده ی استاندارد های کیفیت آب
  • تست تغییرات کیفیت آب
  • براورد کننده ی بار آلودگی

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

تشریح محدوده

در این مقاله محدوده ی رودخانه ی Nakdong بررسی شده که دومین رودخانه ی کره از نظر بزرگی است. شاخه ی اصلی این رودخانه ۵۲۱٫۵ کیلومتر طول دارد.

ارتباط GIS و GA

مراحل کلی فرایند ژنتیک الگوریتم:

برای این بهینه سازی باید یک سیستم اطلاعات جغرافیایی (Geographic Information System) داشته باشیم که در اینجا از ArcView 3.2 به عنوان GIS استفاده شده. همچنین از library به نام GAlib و محیط برنامه نویسی VC++ برای اجرای عملیات الگوریتم ژنتیک استفاده شده.به منظور بهینه سازی هر مدلی توسط الگوریتم ژنتیک ابتدا باید موارد زیر به دقت تعیین شوند:

  • ژن ها چه چیزی را نشان می دهند؟
  • کرومزوم به چه شکل است و طولش چقدر می باشد؟
  • تابع fitness چیست؟

در این مقاله ابتدا منطقه ی مورد نظر را توسط ابزاری در ArcView جدول بندی کرده و به هر یک از خانه ها یک عدد یکتا داده شده است.

هر ژن می تواند یکی از آن عدد های یکتا باشد. مجموعه ای از این ژن ها یک کرومزم را تشکیل می دهند. تعداد ژن های هر کرومزم بستگی به تعداد ایستگاه هایی دارد که می خواهیم داشته باشیم. به عنوان مثال در این مقاله می خواهیم ۱۱۰ ایستگاه داشته باشیم، پس تعداد ژن های هر کرومزم ۱۱۰ عدد می باشد.
هر کرومزوم دارای یک fitness می باشد. هر چه این fitness بالاتر باشد نشان دهنده ی نزدیک تر بودن آن به حالت مورد نظر ما می باشد.

Question level 4 ببخشید! شما گفتید که کل نقشه را جدول بندی می کنیم! که شامل رودخانه و خشکی می شود. اما اینطوری که من متوجه شدم ایستگاه ها حتما باید در کنار رودخانه باشند پس به نظر من درست این بود که فقط قسمت هایی که رودخانه در آن قرار دارد را شماره دهی کنیم!
Answer ” نکته ی خیلی خوبی را اشاره کردید. یکی از راه ها برای حل این مشکل راهی بود که شما به آن اشاره کردید که کمی سخت است. در این مقاله به جای این کار در قسمت fitness دهی به خانه هایی که رودخانه در آنها نیست ضریب صفر داده می شود و در نتیجه به خاطر سلامتی صفر خود به خود حذف خواهند شد! “

پس هر کرومزوم نشان دهنده ی مکان تمامی ایستگاه ها و هر ژن نشان دهنده ی مکان یک ایستگاه می باشد! حال باید تابع fitness را تعریف کنیم.در بالا گفته شد هر ایستگاه باید دارای ۶ خاصیت باشد. تابع سلامت باید هر شش خاصیت را بپوشاند. در این مقاله ۶ خاصیت در ۴ تابع گنجانده شده و تابع سلامت هر ژن به صورت مجموع این چهار تابع با یک وزن مشخص تعیین گردیده:

و در نهایت سلامت هر کرومزوم از مجموع سلامت تمامی ژن ها بدست می آید. چهار تابع سلامت به صورت زیر تعریف شده است:

در الگوریتم ژنتیک همیشه یک سری کرومزم به عنوان جمعیت اولیه داریم که پس از محاسبه ی سلامت هر یک از آنها عملیات ترکیب و جهش روی آنها انجام شده و جمعیت جدید بوجود می آید.
همانطور که می دانیم کرومزومی که سلامت بیشتری دارد امکان ترکیب و بقایش بیشتر می باشد.
ترکیب بصورت تعویض چند ژن در دو کرومزم و جهش با تغییر تصادفی یک ژن صورت می گیرد. در هر نسل تعدادی جمعیت در فرایند ترکیب بوجود آمده و ما بقی مانند جمعیت اولیه تولید می شوند.
اینجا سوال پیش می آید که تعداد جمعیت اولیه و درصد ترکیب و جهش در هر دوره چه مقدار باشد تا بهترین نتیجه حاصل شود!
معمولا بهترین حالت برای این موارد با آزمایش و خطا بدست می آید. تجربه نشان داده که بهترین حالت معمولا با درصد ترکیب بالا و درصد جهش پایین بدست می آید.
در این مقاله چهار حالت زیر امتحان شده و پس از گذشت ۴۰۰۰ نسل بهترین نتیجه در مورد دوم با جمعیت اولیه ی ۳۰۰ و در صد ترکیب و جهش به ترتیب ۸۰% و ۱% مشاهده شده.

در زیر نمودار سلامت کرومزم های هر چهار حالت را مشاهده می کنید:

در زیر نتیجه ی نهایی این مقاله (در سمت راست) و حالت فعلی قرار گیری ایستگاه ها (در سمت چپ) را می توانید ببینید:

در این ۱۱۰ ایستگاه محل ۳۵ ایستگاه بین حالت بدست آمده و حالت موجود یکی می باشد و بقیه ی آنها با هم متفاوت می باشد که به این معنا است که برای بهبود سودمندی شبکه باید در بقیه ی آنها تغییر مکان ایجاد شود.
در نهایت نتیجه ی این مقاله در صورتی که تعداد ایستگاه ها ۱۳۰، ۱۵۰، ۱۷۰، ۱۹۰ و ۲۱۰ عدد می بود ارائه شده که به شکل زیر می باشد:

لینک های داخلی

لینک های خارجی