۱۳۸۸ اردیبهشت ۳, پنجشنبه

مورچه ها و جمع آوری غذا

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


«با گذشت زمان استوانه ها در گروه های چندتایی جمع آوری می شوند [...] بنابراین برخلاف آنچه تصور می شود رفتار اعجاب آمیز مورچه ها ممکن است نتیجه ی منطق بسیار ساده ای باشد.»


در فکرم بود که چه خوب است اگر این الگوریتم به صورت شبیه سازی کامپیوتری پیاده شود. این کار، نسبت به شبیه سازی با ربات ها دو مزیت دارد؛ اول اینکه می شود آزمایش را در مقیاس بزرگتری اجرا کرد (استوانه ها و ربات های بیشتر و همین طور زمان های طولانی تر) و دوم اینکه می شود رفتارهای پیچیده تر و متفاوتی را روی برنامه ی کامپیوتری پیاده کرد.

الگوریتمی که نوشته ام به همان سادگی بود که برای ربات ها پیاده شد:

1- نقطه های ساکن (ذرات غذا) در یک صفحه به طور تصادفی پراکنده شده اند.

2- نقطه های متحرک (مورچه ها) در چهارگوشه ی صفحه پراکنده می شوند.

3- مورچه ها به طور تصادفی در صفحه حرکت می کنند

4- اگر یک مورچه به یک ذره ی غذا برخورد کند آن را بر میدارد

5- اگر مورچه ای که به یک ذره ی غذا می رسد ذره ی غذایی به همراه داشته باشد، آن را در کنار ذره ی ساکن می گذارد.


برنامه را در متلب نوشتم و اجرا کردم. در اینجا می توانید فیلم یک شبیه سازی با صدهزار گام زمانی را ببینید. در این شبیه سازی ده مورچه و دویست ذره ی غذا در یک مربع ده در ده شبیه سازی شده اند.


* در هر گام زمانی مورچه ها به مقداری تصادفی و در جهتی تصادفی تغییر جهت می دهند. حداکثر فاصله حرکت آنها قابل تعریف است.




video


هیچ نظری موجود نیست: