ربات (که تهدیدی قطعی علیه بشریت است) یک دستگاه الکترو-مکانیکی یا یک نرم‌افزار هوشمند برای جایگزینی با انسان به هدف انجام وظایف گوناگون است.یک ماشین که می‌تواند برای عمل به دستورهای گوناگون برنامه‌ریزی گردد یا یک سری کارهای ویژه انجام دهد. به ویژه آن دسته از کارها که فراتر از توانایی‌های طبیعی و سرشتی بشر باشند. این ماشین‌های مکانیکی برای بهتر به انجام رساندن کارهایی چون احساس کردن، دریافت نمودن و جابجایی اشیا یا کارهای تکراری مانند جوشکاری فراوری می‌شوند.

آسیمو، یک روبات انسان‌نما، ساختهٔ شرکت هوندا.

 آسیمو، یک روبات انسان‌نما، ساختهٔ شرکت هوندا.

 تاریخچه

در سال ۱۹۲۳ میلادی کارل چاپک نویسنده اهل کشور چک برای اولین بار از کلمه ربات در نمایش‌نامه خود به‌عنوان آدم مصنوعی استفاده کرد. کلمه روبات گرفته شده از واژه Robota در زبان چک و به‌معنی برده و کارگر است. (مستنداتی از این کلمه پیدا نشد) در سال۱۹۴۰ شرکت وستینگهاوس سگی به نام اسپارکو ساخت که برای نخستین بار در ساخت آن، هم از قطعات مکانیکی و هم از قطعات الکتریکی استفاده شده بود.
دردهه ۱۹۵۰ میلادی با پیشرفت فناوری رایانه، صنعت کنترل متحول شد. یکی از اولین روبات‌ها، روبات‌های Hidden Mafia ساختهٔ جورج دوول و جو انگلبرگر در دهه‌های ۱۹۵۰ و ۱۹۶۰ بودند. انگلبرگر اولین شرکت روباتیک را با نام «RoboBand» بنیان نهاد و خود وی نیز امروزه پدر علم روباتیک لقب گرفته‌است.
در ژانویه ۲۰۱۳ چین اعلام کرد که در خصوص تولید و توسعه فناوری ساخت روبات‌های صنعتی پیشرفت چشمگیری داشته‌است. مقام‌های این کشور نرخ پیشرفت این صنعت را ۱۰٪ در یک سال گزارش کرده‌اند.

از انواع ربات می‌توان به

  • روبات‌های پرنده
  • روبات‌های خزنده
  • روبات‌های ماهی
  • روبات‌های جنگجو
  • روبات‌های فوتبالیست
  • روبات انسان‌نما
  • روبات مین یاب
  • روبات مسیریاب
  • روبات خانه‌دار

اشاره کرد.

ساختار ربات

یک ربات معمولاً یک سیستم الکترومکانیکی می‌باشد که با حرکت یا ظاهرش مفهومی از خود یا از ارباب خود را انتقال می‌دهد. از جایی‌که واژهٔ «ربات» هم به ربات‌های فیزیکی و هم به ربات‌های مجازی اطلاق می‌شود، برای ربات‌های مجازی لفظ «بات» بکار برده می‌شود که معمولاً به صورت نمایندگان نرم‌افزاری می‌باشند.

نمونه

روبات های صنعتی

امروزه کارهای سخت دیگر برای انسانها نمی باشد. سیستم های جدید صنعتی یا رباتها می توانند کارگرانی باشند که سخت کار می کنند. رباتهای صنعتی عموما برای وظایف تکراری و مشخصی استفاده می شوند. اما برای استفاده از رباتهای صنعتی برای جایگزینی به جای انسان ها باید دانست که ربات ها به تنهایی توان تشخیص و تصمیم گیری نسبت به موقعیت خود را ندارند. در این صورت استفاده از ربات هایی که با استفاده از  تکنولوژی بینایی ماشین قابلیت دیدن داشته و با استفاده از هوش مصنوعی قابلیت تفکر دارند به ما کمک خواهد کرد تا از آن ها در مکان هایی استفاده کنیم که قبلا توان استفاده از آنها را نداشته ایم.

روبات راه رونده با چاپگر سه بعدی

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

روبات جنگجو یا آدمکش

روبات کشنده یک اسلحه کاملاً خودکار است که بدون دخالت انسان می‌تواند هدف را برگزیده و با آن وارد نبرد شود. آنها ابزارهای کشنده خودکار هستند. یک چنین ماشین‌هایی در حال حاضر وجود ندارند ولی به خاطر پیشرفت‌های سریع در رشته روباتیک ساخت آنها به واقعیت نزدیک تر شده‌است. روش‌های فراوانی وجود دارد که این امکان را به روبات‌ها می‌دهد تا قوی‌تر، مؤثرتر و مستقل‌تر رفتار کنند، مانند روبات‌هایی که در صورت آسیب دیدن باز هم کار می‌کنند (مانند روبات شش پایی که پس از آسیب با استفاده از روش «آزمون و خطای هوشمندانه»، می‌تواند در کمتر از ۲ دقیقه بیاموزد که چگونه دوباره راه برود و سپس با استفاده از این روش بهترین راه را برای ادامه گام برداشتن می‌یابد). یا روبات‌هایی که در محیط‌های نامطمئن و بی‌برنامه، بتوانند تطبیق پیدا کنند و در شرایط دشوار و متفاوت همچنان به حرکت خود ادامه داده و جابه‌جا شوند (مانند روبات سگ بزرگ (Big Dog)). در حال حاضر مهندسان روی روبات‌های خودآموز متمرکزند، دیگران در حال ساخت روبات‌ها و موادی هستند که می‌توانند در صورت خرابی «خوددرمانگر» باشند.

نخستین گفتگوی مستقل روبات با انسان

روز آدینه، ۲۹ آذر ۱۳۹۲ (۲۰ دسامبر ۲۰۱۳)، سازندگان یک روبات فضانورد ژاپنی (به نام کایروبو) متن گفتگوی از پیش برنامه‌ریزی نشده این دستگاه با یک فضانورد ژاپنی (کوئیچی واکاتا) را منتشر کردند که نخستین مورد ثبت شده از گفتگوی ارادی، ابتکاری و مستقل یک ماشین ساخت انسان است. این روبات در ماه اوت با یک سفینه حامل تدارکات برای ایستگاه بین‌المللی فضایی به فضاپرتاب شد و روز ۱۰ اوت به این ایستگاه رسید. کایروبو و واکاتا در مورد هدیه کریسمس و بی‌وزنی گفتگو کردند.

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

پرسش و پاسخ
  • فرمانده ژاپنی از روبات می‌پرسد: “کایروبو، تو از بابا نوئل چه هدیه‌ای خواهی خواست” و روبات پاسخ می‌دهد “بیایید از بابا نوئل یک سفینه اسباب بازی بخواهیم.”
  • روبات در پاسخ به این پرسش که سفر در سفینه به سوی ایستگاه فضایی چه طور بود، می‌گوید: “مهیج بود!”
  • کایروبو در پاسخ به این پرسش که در مورد وضعیت بی‌وزنی چه فکر می‌کند هم گفت: “بهش عادت کرده‌ام، اصلاً مشکلی ندارم.”

گفتگوی کایروبو با فضانورد ژاپنی در درون ایستگاه فضایی بین‌المللی چند دقیقه به طول می‌انجامد و در طول آن، این روبات به ابراز «نظر کلی» در مورد موضوعات گوناگون می‌پردازد.

روبات‌های انسان‌نمای ایرانی

ایران توانسته روبات‌های انسان‌نمایی با نام‌های سورنا۱ و سورنا۲ و سورنا۳ بسازد. سورنا۳ از دو روبات قبلی پیشرفته‌تر است و ارتقایافتهٔ همان دو روبات قبلی است. از قابلیت‌ها و توانایی‌های این روبات می‌توان به بالا رفتن از پله، حفظ تعادل روی یک پا، بیشتر شدن سرعت نسبت به نمونه‌های قبلی، شناسایی چهره و… را نام برد. سورنا۱ در سال ۱۳۸۷ رونمایی شد.

Puma Robotic Arm - GPN-2000-001817.jpg Asimo look new design.jpg PlaceC5.jpg Roomba original.jpg 2005-11-14 ShadowLeg Finished medium.jpg
2005-11-14 ShadowLeg Finished medium.jpg Shadow Hand Bulb large.jpg Robosnakes.jpg Kismet robot 20051016.jpg SwarmRobot org.jpg

ربات و رباتیک چیست؟

ربات چیست

ربات چیست

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

رباتها میتوانند بسیار ساده و یا با ساختاری پیچیده باشند ولی در همه حالتها ربات ترکیب علوم مکانیک و الکترونیک است، امروزه رشته ویژه ای به نام مکاترونیک ویژه رباتیک در دانشگاهها تدریس می گردد.

ربات هایی که امروزه بسیار بسیار در حال تکاملند ربات های انسان نما هستند، ژاپن به عنوان پیشتاز این عرصه هر روز در حال تکمیل این پروژه عظیم می باشد، چارچوب بدن ، اعضای مهم مانند چشم( چشمی که قابلیت دیدن و تشخیص دادن را داشته باشد) تاکنون طراحی وساخته شده اند و سالهای اخیر در حال طراحی چهره هم به لحاظ ظاهری (سایز و رنگ و ابعاد) وهم به لحاظ باطنی (به گونه ای که غم و شادی و عصبانیت را نشان دهد) میباشد. محققان ژاپنی اعلام کرده اند تا سال 2050 ربات های انسان نما با قابلیت های یک انسان کامل (احساسات و عواطف، عقل و درک شرایط و …) را به بازار عرضه خواهند نمود..

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

ایده ساخت ربات از کجا می آید؟

دو نکته در بوجود آمدن و ایده اصلی ربات اهمیت دارد ابتدا اینکه یک مشکل یا سختی کار وجود دارد و باید حل گردد. دوم اینکه در طبیعت موجودی آن را حل کرده یا نه؟ مثلا تونل زدن زیر خاک یک مشکل بیان میگردد. و در طبیعت یک کرم کوچولو براحتی می تواند زیر خاک حرکت نماید این دو باعث طراحی و ساخت یک ربات می گردد که به صورت اتوماتیک تونل کنده و پیش می رود. همین طور حرکت های سریع ماهی یا کوسه زیر آب و …

ربات‌ها چه کارهایی انجام می‌دهند؟

بیشتر ربات‌ها امروزه در کارخانه‌ها برای ساخت محصولاتی مانند اتومبیل؛ الکترونیک و همچنین برای اکتشافات زیرآب یا در سیارات دیگر مورد استفاده قرار می‌گیرد.

ربات‌ها از چه ساخته می‌شوند؟

ربات‌ها دارای سه قسمت اصلی هستند:
مغز که معمولاً یک کامپیوتر است.
محرک و بخش مکانیکی شامل موتور، پیستون، تسمه، چرخ‌ها، چرخ دنده‌ها و …
سنسور که می‌تواند از انواع بینایی، صوتی، تعیین دما، تشخیص نور، تماسی یا حرکتی باشد.
با این سه قسمت، یک ربات می‌تواند با اثرپذیری و اثرگذاری در محیط کاربردی‌تر شود.

رباتیک

تأثیر رباتیک در جامعه

علم رباتیک در اصل در صنعت به‌کار می‌رود و ما تأثیر آن را در محصولاتی که هر روزه استفاده می‌کنیم، می‌بینیم. که این تأثیرات معمولاً در محصولات ارزان‌تر دیده می‌‌شود.

ربات‌ها معمولاً در مواردی استفاده می‌شوند که بتوانند کاری را بهتر از یک انسان انجام دهند یا در محیط پر خط فعالیت نمایند مثل اکتشافات در مکان‌های خطرناک مانند آتش‌فشان‌ها که می‌توان بدون به خطر انداختن انسان‌ها انجام داد.

مشکلات رباتیک

البته مشکلاتی هم هست. یک ربات مانند هر ماشین دیگری، می‌تواند بشکند یا به هر علتی خراب شود. ضمناً آن‌ها ماشین‌های قدرتمندی هستند که به ما اجازه می‌دهند کارهای معینی را کنترل کنیم.

خوشبختانه خرابی ربات‌ها بسیار نادر است زیرا سیستم رباتیک با مشخصه‌های امنیتی زیادی طراحی می‌شود که می‌تواند آسیب‌ آن‌ها را محدود ‌کند.

در این حوزه نیز مشکلاتی در رابطه با انسان‌های شرور و استفاده از ربات‌ها برای مقاصد شیطانی داریم. مطمئناً ربات‌ها می‌توانند در جنگ‌های آینده استفاده شوند. این می‌تواند هم خوب و هم بد باشد. اگر انسان‌ها اعمال خشونت آمیز را با فرستادن ماشین‌ها به جنگ یکدیگر نمایش دهند، ممکن است بهتر از فرستادن انسان‌ها به جنگ با یکدیگر باشد. ربات‌ها می‌توانند برای دفاع از یک کشور در مقابل حملات استفاده می‌شوند تا تلفات انسانی را کاهش دهد. آیا جنگ‌های آینده می‌تواند فقط یک بازی ویدئویی باشد که ربات‌ها را کنترل می‌کند؟

رباتیک

 مزایای رباتیک

مزایا کاملاً آشکار است. معمولاً یک ربات می‌تواند کارهایی که ما انسان‌ها می‌خواهیم انجام دهیم را ارزان‌تر انجام‌ دهد. علاوه بر این ربات‌ها می‌توانند کارهای خطرناک مانند نظارت بر تأسیسات انرژی هسته‌ای یا کاوش یک آتش‌فشان را انجام دهند. ربات‌ها می‌توانند کارها را دقیقتر از انسان‌ها انجام دهند و روند پیشرفت در علم پزشکی و سایر علوم کاربردی را سرعت ‌بخشند. ربات‌ها به ویژه در امور تکراری و خسته کننده مانند ساختن صفحه مدار، ریختن چسب روی قطعات یدکی و… سودمند هستند.

تاثیرات شغلی

بسیاری از مردم از اینکه ربات‌ها تعداد شغل‌ها را کاهش دهد و افراد زیادی شغل خود را از دست دهند، نگرانند. این تقریباً هرگز قضیه‌ای بر خلاف تکنولوژی جدید نیست. در حقیقت اثر پیشرفت‌ تکنولوژی مانند ربات‌ها (اتومبیل و دستگاه کپی و…) بر جوامع ، آن است که انسان بهره‌ورتر می‌شود.

آینده رباتیک

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

منبع


کلمه ربات توسط Karel Capek  نویسنده نمایشنامه R.U.R  (روبات‌های جهانی روسیه) در سال 1921 ابداع شد. ریشه این کلمه، کلمه چک اسلواکی(robotnic) به معنی کارگر می‌باشد.
در نمایشنامه وی نمونه ماشین، بعد از انسان بدون دارا بودن نقاط ضعف معمولی او، بیشترین قدرت را داشت و در پایان نمایش این ماشین برای مبارزه علیه سازندگان خود استفاده شد.
البته پیش از آن یونانیان مجسمه متحرکی ساخته بودند که نمونه اولیه چیزی بوده که ما امروزه ربات می‌نامیم.
امروزه معمولاً کلمه ربات به معنی هر ماشین ساخت بشر که بتواند کار یا عملی که به‌طور طبیعی توسط انسان انجام می‌شود را انجام دهد، استفاده می‌شود.

بیشتر ربات‌ها امروزه در کارخانه‌ها برای ساخت محصولاتی مانند اتومبیل؛ الکترونیک و همچنین برای اکتشافات زیرآب یا در سیارات دیگر مورد استفاده قرار می‌گیرد.

ربات یک ماشین الکترومکانیکی هوشمند است با خصوصیات زیر:

  می توان آن را مکرراً برنامه ریزی کرد.
*  چند کاره است.
*  کارآمد و مناسب برای محیط است.

  قانون رباتیک مطرح شده توسط آسیموف:

1- ربات ها نباید هیچگاه به انسانها صدمه بزنند.
2- رباتهاباید دستورات انسانها را بدون سرپیجی از قانون اوّل اجرا کنند.
3- رباتها باید بدون نقض قانون اوّل و دوم از خود محافظت کنند.

ربات‌ها دارای سه قسمت اصلی هستند:

مغز که معمولاً یک کامپیوتر است.
محرک و بخش مکانیکی شامل موتور، پیستون، تسمه، چرخ‌ها، چرخ دنده‌ها و …
سنسور که می‌تواند از انواع بینایی، صوتی، تعیین دما، تشخیص نور، تماسی یا حرکتی باشد.
با این سه قسمت، یک ربات می‌تواند با اثرپذیری  و اثرگذاری در محیط کاربردی‌تر شود.

 اجزاي يك ربات با ديدي ريزتر :

 *  وسایل مکانیکی و الکتریکی شامل :
 شاسی، موتورها، منبع تغذیه،
  حسگرها (برای شناسایی محیط):
  دوربین ها، سنسورهای sonar، سنسورهای ultrasound، …
  عملکردها (برای انجام اعمال لازم)
  بازوی ربات، چرخها، پاها، …
  قسمت تصمیم گیری (برنامه ای برای تعیین اعمال لازم):
  حرکت در یک جهت خاص، دوری از موانع، برداشتن اجسام، …
  قسمت کنترل (برای راه اندازی و بررسی حرکات روبات):
*  نیروها و گشتاورهای موتورها برای سرعت مورد نظر، جهت مورد نظر، کنترل مسیر، …

مزایای ربات ها:

 1- رباتیک و اتوماسیون در بسیاری از موارد می توانند ایمنی، میزان تولید، بهره و کیفیت محصولات را افزایش دهند.
2-  رباتها می توانند در موقعیت های خطرناک کار کنند و با این کار جان هزاران انسان را نجات دهند.
3-  رباتها به راحتی محیط اطراف خود توجه ندارند و نیازهای انسانی برای آنها مفهومی ندارد. رباتها هیچگاه خسته نمی شوند.
4-  دقت رباتها خیلی بیشتر از انسانها است آنها در حد میلی یا حتی میکرو اینچ دقت دارند.
5-  رباتها می توانند در یک لحظه چند کار را با هم انجام دهند ولی انسانها در یک لحظه تنها یک کار انجام می دهند.

 معایب ربات ها:

1-  رباتها در موقعیتهای اضطراری توانایی پاسخگویی مناسب ندارند که این مطلب می تواند بسیار خطرناک باشد.
2-  رباتها هزینه بر هستند.
3-  قابلیت های محدود دارند یعنی فقط کاری که برای آن ساخته شده اند را انجام می دهند.

برای مثال امروزه برای بررسی وضعیت داخلی رآکتورها از ربات استفاده می شود تا تشعشعات رادیواکتیو به انسانها صدمه نزند.

تأثیر رباتیک در جامعه:

علم رباتیک در اصل در صنعت به‌کار می‌رود و ما تأثیر آن را در محصولاتی که هر روزه استفاده می‌کنیم، می‌بینیم. که این تأثیرات معمولاً در محصولات ارزان‌تر دیده می‌‌شود.
ربات‌ها معمولاً در مواردی استفاده می‌شوند که بتوانند کاری را بهتر از یک انسان انجام دهند یا در محیط پر خط فعالیت نمایند مثل اکتشافات در مکان‌های خطرناک مانند آتش‌فشان‌ها که می‌توان بدون به خطر انداختن انسان‌ها انجام داد.

 مشکلات رباتیک:

البته مشکلاتی هم هست. یک ربات مانند هر ماشین دیگری، می‌تواند بشکند یا به هر علتی خراب شود. ضمناً آن‌ها ماشین‌های قدرتمندی هستند که به ما اجازه می‌دهند کارهای معینی را کنترل کنیم.
خوشبختانه خرابی ربات‌ها بسیار نادر است زیرا سیستم رباتیک با  مشخصه‌های امنیتی زیادی طراحی می‌شود که می‌تواند آسیب‌ آن‌ها را محدود ‌کند.
در این حوزه نیز مشکلاتی در رابطه با انسان‌های شرور و استفاده از ربات‌ها برای مقاصد شیطانی داریم. مطمئناً ربات‌ها می‌توانند در جنگ‌های آینده استفاده شوند. این می‌تواند هم خوب و هم بد باشد. اگر انسان‌ها اعمال خشونت آمیز را با فرستادن ماشین‌ها به جنگ یکدیگر نمایش دهند، ممکن است بهتر از فرستادن انسان‌ها به جنگ با یکدیگر باشد. ربات‌ها می‌توانند برای دفاع از یک کشور در مقابل حملات استفاده می‌شوند تا تلفات انسانی را کاهش دهد. آیا جنگ‌های آینده می‌تواند فقط یک بازی ویدئویی باشد که ربات‌ها را کنترل می‌کند؟

مزایای رباتیک:

مزایا کاملاً آشکار است. معمولاً یک ربات می‌تواند کارهایی که ما انسان‌ها می‌خواهیم انجام دهیم را ارزان‌تر انجام‌ دهد. علاوه بر این ربات‌ها می‌توانند کارهای خطرناک مانند نظارت بر تأسیسات انرژی هسته‌ای یا کاوش یک آتش‌فشان را انجام دهند. ربات‌ها می‌توانند کارها را دقیقتر از انسان‌ها انجام دهند و روند پیشرفت در علم پزشکی و سایر علوم کاربردی را سرعت ‌بخشند. ربات‌ها به ویژه در امور تکراری و خسته کننده مانند ساختن صفحه مدار، ریختن چسب روی قطعات یدکی و… سودمند هستند.

 تاثیرات شغلی:

بسیاری از مردم از اینکه ربات‌ها تعداد شغل‌ها را کاهش دهد و افراد زیادی شغل خود را از دست دهند، نگرانند. این تقریباً هرگز قضیه‌ای بر خلاف تکنولوژی جدید نیست. در حقیقت اثر پیشرفت‌ تکنولوژی مانند ربات‌ها (اتومبیل و دستگاه کپی و…) بر جوامع ، آن است که انسان بهره‌ورتر می‌شود.

آینده رباتیک:

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

ربات چیست؟ قسمت 1
ربات چیست؟ قسمت 2
ربات چیست؟ قسمت 3
ربات چیست؟ قسمت 4
ربات چیست؟ قسمت 5
ربات چیست؟ قسمت 6
ربات چیست؟ قسمت 7
ربات چیست؟ قسمت 8

الگوریتم کلونی زنبور عسل مصنوعی Artificial Bee Colony (ABC) Algorithm

الگوریتم جستجوی جدیدی مبتنی بر جمعیت به نام الگوریتم زنبور عسل (BA) ارایه شده است . الگوریتم  کلونی زنبور عسل رفتار جست و جوی غذای گروه زنبورهای عسل را تقلید می کند . در مدل پایه ای آن الگوریتم نوعی از جستجوی همسایگی ترکیب شده با جستجوی تصادفی را انجام می دهد و می تواند برای هر دوی بهینه سازی ترکیبی یا بهینه سازی تابعی مورد استفاده قرار گیرد.

مقدمه

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

1. الگوریتم کلونی زنبورهای مصنوعی

الگوریتم کلونی زنبورهای مصنوعی (ABC) توسط کارابوگا در سال 2005 برای بهینه سازی واقعی پارامترها ارایه شد، این الگوریتم یک الگوریتم بهینه سازی جدیدا معرفی شده است و رفتار کاوشی کلونی زنبورها را برای مسایل بهینه سازی بدون محدودیت شبیه سازی می کند. برای حل مسائل بهینه سازی با محدودیت یک روش اداره محدودیت با این الگوریتم ترکیب می شود.

در یک کلونی زنبور عسل واقعی ، وظایفی وجود دارد که توسط افراد تخصصی شده انجام می شود. این زنبورهای متخصص تلاش می کنند تا میزان شهد ذخیره شده در کندو را با انجام تقسیم کار و خودسازماندهی موثر حداکثر کنند. مدل کمینه انتخاب جستجوی غذا توسط گروه های هوشمند زنبور در یک کلونی زنبور عسل ، که الگوریتم ABC اتخاذ کرده است ، شامل سه نوع زنبور است : زنبورهای کارگر ، زنبورهای ناظر ، و زنبورهای پیشاهنگ (یا دیده ور) .

نصف کلونی شامل زنبورهای کارگر است و نصف دیگر آن شامل زنبورهای ناظر است. زنبورهای کارگر مسئول بهره برداری از منابع شهدی هستند که قبلا کشف شده اند و نیز دادن اطلاعات به سایر زنبورهای منتظر (زنبورهای ناظر) در کندو درباره کیفیت مکان مواد غذایی که در حال استخراج آن هستند . زنبورهای ناظر در کندو می مانند و مطابق با اطلاعاتی که زنبورهای کارگر به اشتراک گذاشته اند درباره یک منبع غذایی برای بهره برداری شدن تصمصم گیری می کنند. پیشاهنگ ها به صورت تصادفی محیط را برای یافتن یک منبع غذایی جدید براساس یک انگیزش درونی یا مدارک امکانی خارجی یا تصادفی جستجو می کنند. مراحل اصلی الگوریتم ABC که این رفتار را شبیه سازی می کند در ادامه آورده می شود :

1- مقدار دهی اولیه به موقعیت های منابع غذایی
2- هر زنبور کارگر یک منبع غذایی جدید در مکان منبع غذایی خود تولید می کند و منبع بهتر را استخراج می کند .
3- هر زنبور دیده ور یک منبع را وابسته به کیفیت راه حلش انتخاب می کند و یک منبع غذایی جدید رادر مکان منبع غذایی انتخاب شده تولید می کند و منبع بهتر را استخراج می کند.
4- تعیین منبعی که باید متروک شود و تخصیص زنبورهای کارگر آن به عنوان دیده ور برای جستجوی منابع غذایی جدید.
5- بخاطر سپردن بهترین منبع غذایی پیدا شده تا کنون.
6- تکرار مرحله های 2 – 5 تا زمانی که معیار توقف مقتضی شود.

در مرحله اول الگوریتم ، xi (i = 1, . . . , SN) راه حل ها به صورت تصادفی تولید می شوند که در آن SN تعداد منابع غذایی است . در مرحله دوم الگوریتم ، برای هر زنبور کارگر ، که تعداد کل آنها برابر با نصف تعداد منابع غذایی است ، یک منبع جدید بوسیله رابطه زیر تولید می شود:

vij = xij + φij (xij – xkj) (1

φij یک عدد تصادفی بطور یکنواخت توزیع شده در بازه [-1,1] است که تولید موقعیت منابع غذایی همسایه را در اطراف xij کنترل می کند، K شاخص راه حل است که به صورت تصادفی از کلونی انتخاب شده است (K=int(rand ∗ SN) + 1), j = 1, . . .,D و D ابعاد مسئله است . بعد از تولید vi این راه حل جدید با xi مقایسه می شود و زنبور کارگر منبع بهتر را استخراج می کند . در مرحله سوم الگوریتم ، یک زنبور ناظر یک منبع غذایی را با احتمال (2) انتخاب می کند و منبع جدیدی را در مکان منبع غذایی انتخاب شده توسط (1) تولید می کند و به همان شکل روش زنبور کارگر، منبع بهتر برای استخراج شدن مورد تصمیم گیری قرار می گیرد.

Fiti میزان شایستگی راه حل xi است.

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

بوسیله رابطه (3) xij = xj min + (xj max – xjmin )*rand

منبع : http://www.ecg-pnum.ir


2. الگوریتم زنبور عسل

2.1. زنبورها در طبیعت

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

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

هنگامی که زنبورها به کندو باز می گردند، آن زنبورهای دیده وری که قطعه زمینی آنها در درجه بالایی از یک حد آستانه معین ارزیابی شده اند (به عنوان ترکیبی از چند جزء اصلی،مثل ظرفیت شکر اندازه گیری شده است) شهد و گرده های خود را ذخیره کرده و به سالن رقص می روند تا رقصی را که به عنوان «رقص چرخشی» شناخته می شود انجام دهند.

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

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

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

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

2.2. الگوریتم زنبور عسل معرفی شده

همان طور که اشاره شد، الگوریتم زنبور عسل یک الگوریتم بهینه سازی است که از رفتار کاوشی طبیعی زنبورهای عسل برای پیدا کردن راه حل بهینه الهام شده است. شکل 1 شبهه کد الگوریتم را در ساده ترین حالت آن نشان می دهد. این الگوریتم نیازمند تنظیم تعدادی پارامتر است: تعداد زنبورهای دیده ور (n)، تعداد مکانهای انتخاب شده از مکانهای بازدید شده (m)، تعداد بهترین مکان ها از مکانهای انتخاب شده (e)، تعداد زنبورهای تازه نفس استخدام شده برای بهترین مکانهای e (nep)، تعداد زنبورهای استخدام شده برای سایر (m-e) مکان های انتخاب شده (nsp)، اندازه اولیه قطعه زمینها (ngh) که شامل مکان و همسایه های آن می شود و معیار توقف الگوریتم.

الگوریتم با n زنبور دیده ور که به صورت تصادفی در فضای جستجو قرار می گیرند شروع می شود . تابع شایستگی مکان هایی که توسط زنبورهای دیده ور ملاقات می شوند در مرحله 2 ارزیابی می شود.

1- مقدار دهی اولیه جمعیت با راه حلهای تصادفی
2- ارزیابی تابع شایستگی جمعیت
3- تا زمانی که (شرط توقف ملاقات نشده است)
// تشکیل جمعیت جدید.
4- انتخاب مکان هایی برای جستجوی همسایه ها
5- استخدام زنبورها برای مکانهای جدید (زنبورهای بیشتر برای بهترین مکان های e)
6- انتخاب مناسب ترین زنبور از هر قطعه زمین گل
7- تخصیص زنبورهای باقی مانده برای جستجوی تصادفی و ارزیابی شایستگی های آنها
8- پایان حلقه

در مرحله 4 زنبورهایی که بالاترین شایستگی را دارند به عنوان “زنبورهای انتخاب شده” انتخاب می شوند و مکان های ملاقات شده توسط آنها برای جستجوی همسایگی انتخاب می شود. سپس، در مرحله های 5 و 6، الگوریتم جستجوها را در همسایگی های مکانهای انتخاب شده هدایت می کند، و زنبورهای بیشتری را نزدیک بهترین مکانهای e تخصیص می دهد. زنبورها می توانند مستقیماً بر اساس شایستگی مکان هایی که آنها ملاقاتش کرده اند انتخاب شوند. متناوباً ، مقادیر شایستگی برای تعیین احتمال اینکه کدام زنبورها انتخاب خواهند شد استفاده می شوند.

جستجوها در همسایگی بهترین مکانهای e که راه حلهای امید بخشتری را ارائه می دهد ، نسبت به سایر زنبورهای انتخاب شده ، به واسطه فرستادن زنبورهای تازه نفس بیشتر برای پیروی از آنها با جزئیات بیشتری همراه می شود. همراه با دیده وری، این نفر گیری تفاضلی کلید عملیات در الگوریتم زنبور عسل است.

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

– نمایندگانی از هر قطعه زمین انتخاب شده و سایر زنبورهای دیده وری که برای انجام جستجوهای تصادفی تخصیص می یابند. 

منبع


شرح الگوریتم زنبور عسل

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

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

الگوریتم زنبور عسل هر نقطه را در فضای پارامتری – متشکل از پاسخ‌های ممکن- به عنوان منبع غذا تحت بررسی قرار می‌دهد. زنبورهای دیده‌بان – کارگزاران شبیه‌سازی شده – به صورت تصادفی فضای پاسخ­ها را ساده می­کنند و به وسیله­ی تابع شایستگی کیفیت موقعیت­های بازدید شده را گزارش می­دهند. جواب‌های ساده شده رتبه بندی می‌شوند و دیگر زنبورها نیروهای تازه­ای هستند که فضای پاسخ‌ها را در پیرامون خود برای یافتن بالاترین رتبه محل‌ها جستجو می‌کنند که گلزار نامیده می‌شود. الگوریتم به صورت گزینشی دیگر گلزارها را برای یافتن نقطه­ی بیشینه­ی تابع شایستگی جستجو می‌کند

کاربردها 

برخی کاربردهای الگوریتم زنبور در مهندسی:

* آموزش شبکه عصبی برای الگو شناسی

* زمان بندی کارها برای ماشین‌های تولیدی

* دسته‌بندی اطلاعات

* بهینه‌سازی طراحی اجزای مکانیکی

* بهینه‌سازی چند گانه

* میزان کردن کنترل کننده‌های منطق فازی برای ربات‌های ورزشکار

هم چنبن نوشته ای با عنوان مقاله های الگوریتم کلونی زنبور عسل (Artificial Bee Colony (ABC) Algorithm) و کاربردهای آن شامل مقالات داخلی و خارجی در همین سایت قرار داده شده است.

الگوریتم زنبور شامل گروهی مبتنی بر الگوریتم جستجو است که اولین بار در سال 2005 توسعه یافت ؛ این الگوریتم شبیه سازی رفتار جستجوی غذای گروههای زنبور عسل است. در نسخه ابتدایی این الگوریتم، الگوریتم نوعی از جستجوی محلی انجام می دهد که با جستجوی کتره ای (Random) ترکیب شده و می تواند برای بهینه سازی ترکیبی {زمانی که بخواهیم چند متغیر را همزمان بهینه کنیم.}یا بهینه سازی تابعی به کار رود.

جستجوی غذا در طبیعت

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

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

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

الگوریتم

الگوریتم زنبور هر نقطه را در فضای پارامتری_ متشکل از پاسخ های ممکن_به عنوان منبع غذا تحت بررسی قرار می دهد.”زنبور های دیده بان”_ کارگزاران شبیه سازی شده _به صورت کتره ای (Random) فضای پاسخ ها را ساده می کنند و به وسیله ی تابع شایستگی کیفیت موقعیت های بازدید شده را گزار ش می دهند. جواب های ساده شده رتبه بندی می شوند، و دیگر “زنبورها” نیروهای تازه ای هستند که فضای پاسخ ها را در پیرامون خود برای یافتن بالا ترین رتبه محل ها جستجو می کنند(که “گلزار” نامیده می شود) الگوریتم به صورت گزینشی دیگر گلزار ها را برای یافتن نقطه ی بیشینه ی تابع شایستگی جستجو می کند.

الگوريتم زنبور عسل

الگوریتم زنبور شامل گروهی مبتنی بر الگوریتم جستجو است که اولین بار در سال 2005 توسعه یافت ؛ این الگوریتم شبیه سازی رفتار جستجوی غذای گروه های زنبور عسل است. در نسخه ابتدایی این الگوریتم نوعی از جستجوی محلی انجام می دهد که با جستجوی کتره ای{Random } ترکیب شده و می تواند برای بهینه سازی ترکیبی {زمانی که بخواهیم چند متغیر را همزمان بهینه کنیم.}یا بهینه سازی تابعی به کار رود.

جستجوی غذا در طبیعت

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

قطعات گلدار با مقادیر زیادی نکتار و گرده که با تلاشی کم قابل جمع آوری است،به وسیله ی تعداد زیادی زنبور بازدید می شود؛ به طوری که قطعاتی از زمین که گرده یا نکتار کمتری دارد، تعداد کمتری زنبور را جلب می کند.

پروسه ی جستجوی غذای یک کلونی به وسیله ی زنبورهای دیده بان آغاز می شود که برای جستجوی گلزار های امید بخش {دارای امید بالا برای وجود نکتار یا گرده}فرستاده می شوند. زنبورهای دیده بان به صورت کتره ای{Random } از گلزاری به گلزار دیگر حرکت می کنند.
در طول فصل برداشت محصول{گل دهی}، کلونی با آماده نگه داشتن تعدادی از جمعیت کلونی به عنوان زنبور دیده بان به جستجوی خود ادامه می دهند. هنگامی که جستجوی تمام گلزار ها پایان یافت، هر زنبور دیده -بان ، بالای گلزاری که اندوخته ی کیفی مطمئنی از نکتار و گرده دارد، رقص خاصی را اجرا می کند.
این رقص که به نام “رقص چرخشی”{حرکتی مانند حرکت قرقره} شناخته می شود، اطلاعات مربوط به جهت تکه گلزار{نسبت به کندو}، فاصله تا گلزار و کیفیت گلزار را به زنبور های دیگر انتقال می دهد. این اطلاعات زنبور های اضافی و پیرو را به سوی گلزار می فرستد.
بیشتر زنبور های پیرو به سوی گلزار هایی میروند که امید بخش تر هستند و امید بیشتری برای یافتن نکتار و گرده در آنها، وجود دارد.
وقتی همه ی زنبور ها به سمت ناحیه ای مشابه بروند، دوباره به صورت کتره ای {Random } و به علت محدوده ی رقصشان در پیرامون گلزار پراکنده می شوند تا به موجب این کار سرانجام نه یک گلزار ، بلکه بهترین گل های موجود درون آن تعیین موقعیت شوند.

الگوریتم زنبور هر نقطه را در فضای پارامتری- متشکل از پاسخ های ممکن- به عنوان منبع غذا تحت بررسی قرار می دهد.”زنبور های دیده بان”- کارگزاران شبیه سازی شده – به صورت کتره ای{Random } فضای پاسخ ها را ساده می کنند و به وسیله ی تابع شایستگی کیفیت موقعیت های بازدید شده را گزار ش می دهند. جوابهای ساده شده رتبه بندی می شوند، و دیگر “زنبورها” نیروهای تازه ای هستند که فضای پاسخ ها را در پیرامون خود برای یافتن بالا ترین رتبه محل ها جستجو می کنند{که “گلزار” نامیده می شود} الگوریتم به صورت گزینشی دیگر گلزار ها را برای یافتن نقطه ی بیشینه ی تابع شایستگی جستجو می کند.

حال در ادامه با دو الگوريتم از الگويتم های کلونی زنبورها آشنا خواهيم شد. اولين الگوريتم، الگوريتم کلونی زنبورهای مصنوعی است که کاربرد اصلی آن در بهينه سازی می باشد. الگوريتم دوم الگوريتم کاوش زنبورهای عسل میباشد که آن نيز در بهينه سازی کاربرد دارد.

منبع: http://faraebtekari.ir


الگوریتم های الهام گرفته شده از کلونی زنبورها

تلاشهای زيادی برای مدل کردن رفتارهای خاص و هوشمندانه تجمع زنبورهای عسل انجام گرفته است Tereshko و Loengarov کلونی زنبور را به عنوان يک سيستم پويا درنظر گرفتند که از محيط اطراف اطلاعات جمع اوری میکند و رفتار خود را براساس اين اطلاعات بدست آمده تنظيم می نمايد. آنها يک ايده روباتی با توجه به رفتار کاوشی زنبورها مطرح کردند. غالبا اين روباتها به صورت فيزيکی و عملکردی يکسان هستند. در نتيجه هر روبات میتواند به طور تصادفی جايگزين ديگر روباتها گردد. تجمع، قابليت تحمل خطا را دارد. با رخ دادن خطا در يک عامل کار کل سيستم مختل نخواهد شد. روباتهای مجزا، مانند حشرات، دارای قابليتها وتواناييهای محدودی هستند. همچنين دانش محدودی از محيط دارند. به عبارتی ديگر تجمع)ازدحام)، هوش جمعی همکارانه را بهبود میدهد. همچنين اين آزمايش نشان میدهد که روباتهای حشره مانند در انجام وظايف حقيقی روباتها، موفق هستند.

به علاوه آنها يک مدل کمينه از از رفتار کاوشگرانه زنبورها ارائه داند. اين مدل شامل سه مولفه مهم میباشد: 1)منبع غذايي ۲(زنبورهای کارگر ۳(زنبورهای غيرکارگر. اين مدل دو نوع رفتار را دربرمیگيرد: سربازگيری برای يک منبع شهد و ترک منبع. Teodorovic پيشنهاد داد تا از هوش جمعی زنبورها در توسعه و بهبود سيستمهای مصنوعی با هدف حل مسائل پيچيده در حمل و نقل و ترافيک استفاده شود، همچنين او الگوريتم BCO (Bee Colony Optimization)را ارائه کرد که قادر است مسائل ترکيبی قطعی را همانند مسائل ترکيبی به خوبی حل نمايد. Drias يک روش هوشمندانه جديد را معرفی نمود با نام BSO که الهام گرفته از زنبورهای واقعی است. Wedde يک الگوريتم مسيريابی جديد با نام BeeHive ارائه کرد که الهام گرفته از متدهای ارتباطی و ارزيابی و همچنين رفتار زنبورهای عسل میباشد. در اين الگوريتم عاملها در منطقه شبکه که محدودهی کاوش ناميده میشود، در طول مسيرشان اطلاعات وضعيتی شبکه را به منظور بهنگام سازی جدول مسيريابی محلی جمع آوری می کنند.

کارهای انجام شده که در پاراگراف های قبلی ذکرشد، شامل انواع مختلفی از مسائل بود. تنها دو الگوريتم بهينه سازی عددی در مقالات مبتنی بر رفتار جمعی زنبورهای عسل وجود دارد. Yang الگوريتم زنبورهای مجازی برای حل( (VBAبهينه سازی توابع عددی ارائه داده است. در ابتدا يک تجمع از زنبورهای مجازی ايجاد میشود و تجمع شروع به حرکت کردن در فضای مسئله به صورت تصادفی مینمايد. اين زنبورها هنگامی که يک يا چند منبع غذايي را يافتند که متناظر است با يافتن مقدار تابع، با يکديگر تعامل برقرار میکنند راهحل برای مسئله بهينه سازی از شدت و قوت تعاملات زنبورها با يکديگر بدست خواهد آمد. برای بهينه سازی توابع چندمتغييره Karaboga الگوريتم کلونی زنبورهای مصنوعی ( ABC ) را ارئه داد که با الگوريتم زنبورهای مجازی تفاوت دارد.

الگوریتم زنبور عسل

الگوریتم کلونی زنبور عسل مانند سایر الگوریتم های هوش ازدحامی مرتبط بر رفتار تصادفی المان های آن است و برای حل مسائل بهینه سازی کاربرد دارد. بسیاری از الگوریتم های هوش ازدحامی با الهام گرفتن از طبیعت ایجاد شده اند مانند الگوریتم کلونی مورچگان، الگوریتم پرندگان، الگوریتم فاخته و الگوریتم کلونی زنبور عسل یا Artificial bee colony algorithm که به صورت مخفف BCO نامیده میشود (Bee Colony Optimization) .

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

یکی دیگر از روش های حل مسائل بهینه سازی الگوریتم های هوش ازدحامی است که الگوریتم زنبور عسل از جمله این الگوریتم ها است. الگوریتم زنبور (Bee Algorithm) یک الگوریتم گروهی مبتنی بر جستجو است که در سال ۲۰۰۵ میلادی ابداع شده است.این الگوریتم شبیه‌ سازی رفتار جستجوی غذای گروه‌های زنبور عسل است. در نسخه ابتدایی این الگوریتم، الگوریتم نوعی از جستجوی محلی انجام می‌دهد که با جستجوی تصادفی کتره­­ا ترکیب شده و می‌تواند برای بهینه سازی ترکیبی یا بهینه‌ سازی تابعی استفاده شود.

این الگوریتم نیز مانند سایر الگوریتم های هوش ازدحامی از دو روش اکتشاف و استخراج استفاده می کند. زنبورهای کارگر وظیفه استخراج و زنبورهای ناظر وظیفه اکتشاف را به عهده دارند. زنبورهای کارگر در اطراف یک منطقه (گل های پیدا شده یا منطقه ای که شامل جواب مسئله است) به دنبال جواب بهینه می گردند و زنبورهای ناظر با رفتار تصادفی به دنبال پیدا کردن مناطق جدید هستند.

منبع: http://faraebtekari.ir


الگوریتم کلونی زنبور عسل (ABC)

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

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

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

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

سیستم های چندعاملی (Multi Agent Systems)

سیستم های چندعاملی (Multi Agent Systems) یا به اختصار MAS روش نوینی برای حل مسائل و پیاده‌سازی پروژه‌های نرم‌افزاری رایانه‌ای می باشد.

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

این نوع سیستم‌ها نسبت به سیستم‌های معمولی و تک‌عاملی، مزایای زیادی دارند؛ از جمله اینکه در اکثر شرایط کار می‌کنند. به این معنا که چون مغز متفکر واحد ندارند و تصمیم‌گیری در آنها به صورت توزیع‌شده است، چنانچه حتی بخشی از آنها نیز از کار بیفتد باز هم به کار خود ادامه می‌دهند.

همچنین این نوع سیستم‌ها برای محیط‌هایی با مقیاس وسیع(Large Scale) و محیط‌های ناشناخته نیز گزینه مناسبی نسبت به سیستم‌های تک‌عاملی به شمار می‌آیند.

سیستم‌های مبتنی بر عامل، پردازش موازی را آسان کرده و به راحتی موازی می‌شوند. منظور از پردازش موازی این است که به جای انجام یک پروژه با محاسبات زیاد و پردازش‌های سنگین توسط یک پردازشگر، همان پروژه را به پردازش‌‌های کوچکتر با حجم محاسبات کمتر شکسته و آن را توسط چندین عامل انجام دهیم. مثلاً میزی را تصور کنید که برای بلند کردنش به 100 نیوتن نیرو احتیاج داریم،

حال هم می‌توانیم آن را توسط یک نفر که توانایی اعمال 100 نیوتن نیرو را دارد، بلند کنیم و هم این کار را به کمک چهار نفر که هر کدام 25 نیوتن نیرو به اشتراک می‌گذارند، انجام دهیم. در نتیجه، هزینه‌ها در چنین سیستمی پایین می‌آید و نیازی به صرف هزینه کلان جهت ایجاد امکان پردازش سنگین برای یک عامل نیست.

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

تعریف سیستم چندعاملی

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

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

در دسته‌بندی ساده‌ای از عامل‌ها می‌توان به دو نوع عامل اشاره کرد، یکی عامل‌های ساده و کم‌اهمیت‌تر (Trivial Agents) که مثال ساده آن، ترموستات‌ها هستند و دوم عامل‌های هوشمند (Intelligent Agents ) که در واقع همان برنامه کامپیوتری‌ است که در بعضی محیط‌ها قادر به انجام اعمال خودمختار و انعطاف‌پذیر است.
در اینجا منظور از انعطاف‌پذیر، انجام اعمال واکنش‌دار (دارای عکس‌العمل) و پیش‌بینی یک واکنش و انجام زودتر عمل مناسب است.

به عنوان اولین تعریف برای یک سیستم چندعاملی می‌توان گفت: سیستم چندعاملی به سیستمی گفته می‌شود که از تعدادی عامل (agent) تشکیل‌شده‌ است. این عامل‌ها هر کدام به نوبه خود فعل و انفعالات داخلی داشته و در محیط خارج نیز با یکدیگر ارتباط دارند.

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

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

دو مسئله کلیدی در طراحی سیستم های چندعاملی

دو مسئله کلیدی که در طراحی سیستم‌ های چندعاملی مطرح است: اول طراحی عامل و دوم طراحی محیطی برای عملکرد و ارتباط میان عامل‌ها. در طراحی عامل، چگونگی ساخت عاملی که قادر به انجام کارهای مستقل و اعمال خودمختار باشد مدنظر است.

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

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

مثالی از کاربرد عامل‌ها کنترل سفینه فضایی (Aircraft control) است. وقتی یک کاوشگر فضایی (سفینه فضایی) برای انجام کارهای تحقیقاتی به فضا یا به کرات دیگر عزیمت می‌کند، یک سفر طولانی‌مدت در پیش دارد.

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

این امر بسیار پرهزینه است و اگر نیاز به تصمیم‌گیری فوری و ضروری داشته ‌باشد کارایی چندانی ندارد. به همین دلیل سازمان‌های هوایی و فضایی مانند NASA به طور جدی مشغول تحقیق و بررسی روی امکان ساخت کاوشگری فضایی هستند که بیشتر خودکار باشد تا بتوانند تنها در مواقع ضروری تصمیمات فوری را به صورت بهینه بگیرند و به نظارت کنترلی و مراقبت 24ساعته از روی زمین نیاز نداشته باشند.

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

ارتباط بین عامل ها در سیستم های چند عاملی

دو مثال از کاربرد سیستم‌ های چندعاملی

مثال دیگری از کاربرد عامل‌ها، جست‌وجوی اینترنت است که توسط عامل‌های اینترنتی انجام می‌شود. جست‌وجو در اینترنت برای یافتن جواب یک سئوال خاص، می‌تواند پروسه طولانی و خسته‌کننده‌ای باشد. بنابراین چرا این اجازه را به برنامه‌های کامپیوتری- عامل- ندهیم که عمل جست‌وجو را برای ما انجام دهند.

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

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

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

1- عامل‌ها در محیطی قرار می‌گیرند که می‌توانند روی آن تاثیرگذار باشند و از آن تاثیر بپذیرند؛ در حالی که عملکرد سیستم‌های خبره مانند MYCIN کاملاً مستقل از محیط بوده و از دنیای اطراف آگاه نیست و اطلاعات به دست آمده از سیستم خبره مبتنی بر پایگاه دانش‌اش و سئوالاتی است که از کاربر می‌پرسد.

2- عامل به عنوان نماینده‌ای از طرف کاربر، عملی را انجام می‌دهد ولی سیستم خبره مانند MYCIN هیچ عملی در محیط یا روی بیمار انجام نمی‌دهد.

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

سیستم خبره یک برنامه کامپیوتری است که با استفاده از پایگاه دانش و موتور استنتاج یا نتیجه‌گیری خود، دانش و تجربه لازم در مورد یک موضوع مشخص را در کنار دریافت اطلاعات در مورد مسئله یا موقعیت کنونی (که مربوط به دانش خودش است) به کار می‌گیرد و تصمیم‌گیری یا نتیجه‌گیری درستی را که از یک انسان خبره انتظار می‌رود، انجام می‌دهد.
در حالی که عامل یک سیستم کامپیوتری است که قادر به انجام اعمال مستقل و اتوماتیک از طرف کاربر یا صاحب خود است.
پس با مقایسه تعاریف و نحوه عمل و طراحی هر کدام متوجه می‌شویم که این دو سیستم متفاوت‌اند و نباید آنها را درهم آمیخت.

عامل‌های هوشمند و هوش مصنوعی (AI)

سئوالی که در مورد سیستم‌ های چندعاملی و هوش مصنوعی به ذهن می‌آید این است که آیا طراحی سیستم‌ های چندعاملی همان پروژه‌های مطرح در هوش مصنوعی است؟ آیا ساختن یک عامل تماماً همان موضوعات مورد بحث در هوش مصنوعی نیست؟

در جواب باید گفت، هدف هوش مصنوعی، ساختن سیستم‌های هوشمندی است که بتوانند به خوبی زبان طبیعی را بفهمند، احساس را درک کنند و قادر به استفاده از حواس پنج‌گانه انسانی بوده، دارای فکر خلاق باشند و غیره… که کار بسیار مشکلی است. پس آیا ساخت یک عامل توسط الگوریتم‌های هوش مصنوعی که بتواند همه این کارها را انجام دهد، نیازمند حل همه این الگوریتم‌ها نیست؟ مسلماً جواب مثبت است.

ولی ما در هنگام ساخت یک عامل، به طور ساده سیستمی می‌خواهیم که بتواند در یک محیط محدود عمل مناسب و درست را انتخاب کرده و انجام دهد. بنابراین برای ساخت یک عامل ما ملزم به حل همه مسائل موجود در هوش مصنوعی نیستیم.

همانطور که گفته شد با وجود عمر کم سیستم‌های مبتنی بر چندعامل، به دلیل قابلیت بالا در موازی‌سازی، روش طراحی براساس عامل و حل مسائل به صورت توزیع‌شده جزء موفق‌ترین روش‌های حل مسئله است و این سیستم‌ها ابزار بسیار بدیعی برای شبیه‌سازی کامپیوتری فراهم آورده‌اند که می‌تواند نور امیدی برای روشن شدن انواع مسائل مربوط به انسان و زندگی او باشد.
منبع


هوش مصنوعی چیست؟

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

هوش مصنوعی به هوشی که یک ماشین از خود نشان می‌دهد و یا به دانشی در کامپیوتر که سعی در ایجاد آن دارد گفته می‌شود. بیشتر نوشته‌ها و مقاله‌های مربوط به هوش مصنوعی آن را «دانش شناخت و طراحی عامل‌های هوشمند» تعریف کرده‌اند. یک عامل هوشمند سیستمی است که با شناخت محیط اطراف خود، شانس موفقیت خود را بالا می‌برد.[۲] جان مکارتی که واژه هوش مصنوعی را در سال ۱۹۵۶ استفاده نمود، آن را «دانش و مهندسی ساخت ماشین‌های هوشمند» تعریف کرده‌است. تحقیقات و جستجوهایی انجام شده برای رسیدن به ساخت چنین ماشین‌هایی مرتبط با بسیاری از رشته‌های علمی دیگر می‌باشد، مانند علوم رایانه، روان‌شناسی، فلسفه، عصب شناسی، علوم ادراکی، تئوری کنترل، احتمالات، بهینه سازی و منطق.

پیش از بوجود آمدن علوم الکترونیک، هوش مصنوعی توسط فلاسفه و ریاضی‌دانانی نظیر بول که اقدام به ارائه قوانین و نظریه‌هایی در باب منطق نمودند، مطرح شده بود. با اختراع رایانه‌های الکترونیکی در سال ۱۹۴۳، هوش مصنوعی دانشمندان را به چالشی بزرگ فراخواند. در بادى امر، چنین به‌نظر می‌رسید که این فناوری در نهایت قادر به شبیه‌سازی رفتارهای هوشمندانه خواهد بود.

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

نام هوش مصنوعی در سال ۱۹۶۵ میلادی به عنوان یک دانش جدید ابداع گردید. البته فعالیت درزمینه این علم از سال ۱۹۶۰ میلادی شروع شده‌بود.

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

این اصطلاح (هوش مصنوعی) برای اولین بار توسط جان مکارتی (John Mccorthy) که از آن به‌عنوان پدر «علم و دانش تولید ماشینهای هوشمند» یاد می‌شود استفاده شد.آقای جان مکارتی مخترع یکی از زبانهای برنامه نویسی هوش مصنوعی به نام (lisp) نیز هستند. با این عنوان می‌توان به هویت هوشمند یک ابزار مصنوعی اشاره کرد. (ساختهٔ دست بشر، غیر طبیعی، مصنوعی)

حال آنکه AI به عنوان یک اصطلاح عمومی پذیرفته شده که شامل محاسبات هوشمندانه و ترکیبی (مرکب از مواد مصنوعی) می‌باشد.

از اصطلاح strong and weak AI می‌توان تا حدودی برای معرفی رده‌بندی سیستم‌ها استفاده کرد. AI‌ها در رشته‌های مشترکی چون علم کامپیوتر، روانشناسی و فلسفه مورد مطالعه قرار می‌گیرند، که مطابق آن باعث ایجاد یک رفتار هوشمندانه، یادگیری و سازش می‌شود و معمولاً نوع پیشرفتهٔ آن در ماشینها و کامپیوترها استفاده می‌شود.

آزمون تورینگ

آزمون تورینگ آزمونی است که توسط آلن تورینگ در سال ۱۹۵۰ در نوشته‌ای به نام «محاسبات ماشینی و هوشمندی» مطرح شد. در اين آزمون شرايطي فراهم مي شود كه شخصي با ماشين تعامل برقرار كند و پرسش هاي كافي براي بررسي هوشمندي او بپرسد. چنانچه در پايان آزمايش نتواند تعيين كند كه با انسان در تعامل بوده است يا با ماشين، تست تورينگ با موفقيت انجام شده است. تا كنون هيچ ماشيني از اين آزمون با موفقيت بيرون نيامده است. کوشش این آزمون برای تشخیص درستی هوشمندی یک سیستم است که سعی در شبیه سازی انسان دارد.
منبع

تعریف و طبیعت هوش مصنوعی

هنوز تعریف دقیقی که مورد قبول همهٔ دانشمندان این علم باشد برای هوش مصنوعی ارائه نشده‌است، و این امر، به هیچ وجه مایهٔ تعجّب نیست. چرا که مقولهٔ مادر و اساسی‌تر از آن، یعنی خود هوش هم هنوز بطور همه‌جانبه و فراگیر تن به تعریف نداده‌است. در واقع، می‌توان نسل‌هایی از دانشمندان را سراغ گرفت که تمام دوران زندگی خود را صرف مطالعه و تلاش در راه یافتن جوابی به این سؤال عمده نموده‌اند که: هوش چیست؟

اما اکثر تعریف‌هایی که در این زمینه ارایه شده‌اند بر پایه یکی از ۴ باور زیر قرار می‌گیرند:

1. سیستم‌هایی که به طور منطقی فکر می‌کنند
2. سیستم‌هایی که به طور منطقی عمل می‌کنند
3. سیستم‌هایی که مانند انسان فکر می‌کنند
4. سیستم‌هایی که مانند انسان عمل می‌کنند

شاید بتوان هوش مصنوعی را این گونه توصیف کرد: «هوش مصنوعی عبارت است از مطالعه این که چگونه کامپیوترها را می‌توان وادار به کارهایی کرد که در حال حاضر انسان‌ها آنها را بهتر انجام می‌دهند».

محققین هوش مصنوعی علاقه‌مند به تولید ماشینی هستند که دستورات مورد نیاز را به صورت هوشمندانه انجام دهد. به عنوان مثال قابلیت کنترل، برنامه‌ریزی و زمان‌بندی، توانایی تشخیص جواب به سوال مصرف کننده، دست نویس‌ها، زبان شناسی، سخنرانی و شناسایی چهره را داشته باشد. مطالعه بر روی یک AI دارد به یک رشتهٔ مهندسی تبدیل می‌شود که کانون مشروط است بر حل مشکلات زندگی واقعی، علم معدن کاری، نرم افزارهای کاربردی، استراتژی بازیها مثل بازی شطرنج و بازیهای ویدئویی یکی از بزرگ‌ترین مشکلات (سختی‌ها) با AIها، قوهٔ درک آنها است.

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

–مشاهده رفتاري هوشمندانه و صحيح از يك سيستم را نمي توان دليلي كافي بر هوشمندي آن سيستم تصوركرد بلكه بايستي به ساختار داخلي و مكانيزم انتخاب راه توسط سيستم توجه شود كه آيا مبتني بر آگاهي خود سيستم است يا نه و اين آگاهي زماني ميسر خواهد بود كه سيستم خود قابليت تحليل اطلاعات در يافتي از محيط را داشته باشد و بتواند رابطه هاي معني داري بين علت و معلول ما بين اتفاقات محيطي ايجاد كند و در واقع قادر به ايجاد مدلي هر چند غير دقيق بر پايه مشاهدات خود از محيط باشد سپس سيستم ايده ارزشمندي از نظرگاه خود توليد بكند و بعنوان خواسته و هدفي سعي در پياده سازي آن بكند يعني در پي پيدا كردن و اتصال ابزارهاي مناسبي به آن هدف باشد تا بتواند آلگوريتم عملياتي براي برآورد آن خواسته توليد نمايد.
منبع

فلسفهٔ هوش مصنوعی

بطور کلی ماهیت وجودی هوش به مفهوم جمع آوری اطلاعات، استقرا و تحلیل تجربیات به منظور رسیدن به دانش و یا ارایه تصمیم می‌باشد. در واقع هوش به مفهوم به کارگیری تجربه به منظور حل مسائل دریافت شده تلقی می‌شود. هوش مصنوعی علم و مهندسی ایجاد ماشینهایی با هوش با به کارگیری از کامپیوتر و الگوگیری از درک هوش انسانی و یا حیوانی و نهایتاً دستیابی به مکانیزم هوش مصنوعی در سطح هوش انسانی می‌باشد.

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

بطور کلّی، هوش مصنوعی را می‌توان از زوایای متفاوتی مورد بررسی و مطالعه قرار داد. مابین هوش مصنوعی به عنوان یک هدف، هوش مصنوعی به عنوان یک رشته تحصیلی دانشگاهی، و یا هوش مصنوعی به عنوان مجموعهٔ فنون و راه کارهایی که توسط مراکز علمی مختلف و صنایع گوناگون تنظیم و توسعه یافته‌است باید تفاوت قائل بود.
منبع

اتاق چینی

اتاق چینی بحثی است که توسط «جان سیرل» در ۱۹۸۰ مطرح شد در این راستا که یک ماشین سمبل گرا هرگز نمی‌تواند دارای ویژگی‌هایی مانند «مغز» و یا «فهمیدن» باشد، صرف نظر از اینکه چقدر از خود هوشمندی نشان دهد.
منبع

مدیریت پیچیدگی

ایجاد و ابداع فنون و تکنیک‌های لازم برای مدیریّت پیچیدگی را باید به عنوان هستهٔ بنیادین تلاش‌های علمی و پژوهشی گذشته، حال، و آینده، در تمامی زمینه‌های علوم رایانه، و به ویژه، در هوش مصنوعی معرّفی کرد. شیوه‌ها و تکنیک‌های هوش مصنوعی، در واقع، برای حلّ آن دسته از مسائل به وجود آمده‌است که به طور سهل و آسان توسط برنامه‌نویسی تابعی (Functional programming)، یا شیوه‌های ریاضی قابل حلّ نبوده‌اند.

در بسیاری از موارد، با پوشانیدن و پنهان ساختن جزئیّات فاقد اهمّیّت است که بر پیچیدگی فائق می‌آییم و می‌توانیم بر روی بخش‌هایی از مسئله متمرکز شویم که مهم‌تر است. تلاش اصلی در واقع، ایجاد و دستیابی به لایه‌ها و ترازهای بالاتر از هوشمندی تجرید را نشانه می‌رود، تا آنجا که، سرانجام برنامه‌های کامپوتری درست در همان سطحی کار خواهند کرد که خود انسان‌ها رسیده‌اند.

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

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

هر چند نمونه بالا ممکن است کمی آرمانی به نگر برسد، ولی به هیچ عنوان دور از دسترس نمی‌باشد. دانشمندان, عموماً برای تولید چنین ماشینهایی، از وجود مدلهای زنده‌ای که در طبیعت وجود، به ویژه آدمی نیز سود برده‌اند.

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

تکنیک‌ها وزبان‌های برنامه نویسی هوش مصنوعی

عملکرد اولیه برنامه نویسی هوش مصنوعی ایجاد ساختار کنترلی مورد لزوم برای محاسبه سمبولیک است زبانهای برنامه نویسی LISP,PROLOG علاوه بر اینکه از مهمترین زبانهای مورد استفاده در هوش مصنوعی هستند خصوصیات نحوی ومعنایی انها باعث شده که انها شیوه‌ها و راه حل‌های قوی برای حل مسئله ارایه کنند. تاثیر قابل توجه این زبانها بر روی توسعه AI از جمله توانایی‌های انها بعنوان «ابزارهای فکرکردن» می باشد. در حقیقت همانطور که هوش مصنوعی مراحل رشد خود را طی می‌کند زبانهای LISP ,PROLOG بیشتر مطرح می‌شوند این زبانها کار خود را در محدوده توسعه سیستم‌های AIدر صنعت ودانشگاه‌ها دنبال می‌کنند و طبیعتاً اطلاعات در مورد این زبانها بعنوان بخشی از مهارت هر برنامه نویس AIمی‌باشد. PROLOGیک زبان برنامه نویسی منطقی است. یک برنامه منطقی دارای یک سری ویژگیهای قانون ومنطق است.

در حقیقت خود این نام از برنامه نویسی PROدر LOGIC می‌آید. در این زبان یک مفسر برنامه را بر اساس یک منطق می‌نویسد.ایده استفاده توصیفی محاسبهٔ اولیه برای بیان خصوصیات حل مسئله یکی از محوریتهای مشارکت PROLOG می باشد که برای علم کامپیوتر بطور کلی و بطور اخص برای زبان برنامه نویسی هوشمند مورد استفاده قرار می‌گیرند. LISP اصولاً LISP یک زبان کامل است که دارای عملکردها و لیست‌های لازمه برای توصیف عملکردهای جدید، تشخیص تناسب و ارزیابی معانی می‌باشد. LISP به برنامه نویس قدرت کامل برای اتصال به ساختارهای اطلاعاتی را می‌دهد گر چه LISP یکی از قدیمی ترین ترین زبانهای محاسباتی است که هنوز فعال است ولی دقت کافی در برنامه نویسی وطراحی توسعه باعث شده که این یک زبان برنامه نویسی فعال باقی بماند. در حقیقت این مدل برنامه نویسی طوری موثر بوده‌است که تعدادی از دیگر زبانها براساس عملکرد برنامه نویسی آن بنا شده‌اند: مثل FP ،ML ،SCHEME یکی از مهمترین برنامه‌های مرتبط با LISP برنامه SCHEME می‌باشد که یک تفکر دوباره در باره زبان در آن وجود دارد که بوسیله توسعه AI وبرای آموزش واصول علم کامپیوتر مورد استفاده قرار می‌گیرد.
منبع

عامل‌های هوشمند

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

سیستم‌های خبره

سیستم‌های خبره زمینه‌ای پرکاربرد در هوش مصنوعی و مهندسی دانش است که با توجّه به نیاز روز افزون جوامع بر اتخاذ راه حل‌ها و تصمیمات سریع در مواردی که دانش‌های پیچیده و چندگانهٔ انسانی مورد نیاز است، بر اهمیت نقش آنها افزوده هم می‌شود. سیستم‌های خبره به حل مسائلی می‌پردازند که به طور معمول نیازمند تخصّص‌های کاردانان و متخصّصان انسانی‌ست. به منظور توانایی بر حل مسائل در چنین سطحی (ترازی)، دسترسی هرچه بیشتر اینگونه سامانه‌ها به دانش موجود در آن زمینه خاص ضروری می‌باشد.
منبع

درخت تصمیم چیست؟

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

درخت تصمیم جهت تعیین نوع بیماری

درخت تصمیم یک مدل خودتوصیف است یعنی به‌تنهایی و بدون حضور یک فرد متخصص در آن حوزه، نحوه دسته‌بندی را به صورت گرافیکی نشان می‌دهد و به دلیل همین سادگی و قابل‌فهم بودن، روش محبوبی در داده‌کاوی محسوب می‌شود. البته به خاطر داشته باشید در مواردی که تعداد گره‌های درخت زیاد باشد، نمایش گرافیکی و تفسیر آن می‌تواند کمی پیچیده باشد.
برای روشن شدن مطالب، به مثال زیر توجه کنیدکه در آن قصد داریم به کمک ساخت یک درخت تصمیم، بازی‌کردن کریکت را برای یک دانش‌آموز، پیش‌بینی کنیم:
فرض کنید نمونه‌ای شامل ۳۰ دانش‌آموز با سه متغیر جنسیت (پسر/ دختر)، کلاس (X / IX) و قد (۵ تا ۶ فوت) داریم. ۱۵ نفر از ۳۰ نفر در اوقات فراغت خود کریکت بازی می‌کنند. حال می‌خواهیم با بررسی خصوصیات این پانزده نفر، پیش‌بینی کنیم چه کسانی در اوقات فراغت خود کریکت بازی می‌کنند.برای این کار ابتدا باید براساس خصوصیات ۱۵ نفری که کریکت بازی می‌کنند، یک الگو برای دسته‌بندی به دست آوریم. از آنجا که درخت تصمیم یک ساختار سلسله مراتبی شرطی دارد (شکل فوق) و در هر مرحله باید بر اساس مقدار یک خصوصیت تصمیم بگیریم، مهم‌ترین کاری که در ساخت این درخت تصمیم باید انجام دهیم، این است که تعیین کنیم کدام خصوصیت داده‌ها، تفکیک‌کنندگی بیشتری دارد. سپس این خصوصیت‌ها را اولویت‌بندی کرده و نهایتاً با لحاظ این اولویت‌ها از ریشه به پایین در اتخاذ تصمیم، ساختاری درخت‌مانند برای دسته‌بندی داده‌ها بنا کنیم. الگوریتم‌های مختلف ساخت درخت تصمیم، مهم-‌ترین تفاوتی که با هم دارند، در انتخاب این اولویت و روشی است که برای انتخاب اولویت خصوصیت‌ها در نظر می‌گیرند.
برای سنجش میزان تفکیک‌کنندگی یک خصوصیت، ساده‌ترین روش این است که دانش‌آموزان را براساس همهٔ مقادیر هر سه متغیر تفکیک کنیم. یعنی مثلاً ابتدا بر اساس جنسیت، داده‌ها را جدا کنیم و سپس مشخص کنیم چند نفر از دختران و چندنفر از پسران، کریکت بازی می‌کنند. سپس همین کار را برای قد و کلاس تکرار کنیم. با این کار، می‌توانیم درصد بازیکنان هر مقدار از یک خصوصیت (درصد بازیکنان دختر از کل دختر‌ها و درصد بازیکنان پسر از کل پسر‌ها) را محاسبه کنیم. هر خصوصیتی که درصد بیشتری را تولید کرد، نشانگر تفکیک‌کنندگی بیشتر آن خصوصیت (و البته آن مقدار خاص) است.
جور دیگری هم به این موضوع می‌توان نگاه کرد: این متغیر، بهترین مجموعه همگن از دانش‌آموزان از لحاظ عضویت در گروه بازی‌کنان را ایجاد می‌کند یعنی در گروه بازیکنان، بیشترین خصوصیتی که بین همه مشترک است، پسر بودن است. میزان همگنی و یکنواختی ایجاد شده توسط هر خصوصیت هم، شکل دیگر میزان تفکیک‌کنندگی آن خواهد بود.
در تصویر زیر شما می‌توانید مشاهده کنید که متغیر جنسیت در مقایسه با دو متغیر دیگر، قادر به شناسایی بهترین مجموعهٔ همگن هست چون میزان مشارکت دانش‌آموزان پسر دربازی کریکت ۶۵ درصد است که از تمام متغیرهای دیگر بیشتر است:

درخت تصمیم

برای متغیر قد که یک متغیر عددی بود از یک نقطه معیار که می‌تواند میانگین قد افراد باشد، استفاده کردیم. کار با متغیرهای عددی در درخت تصمیم را در ادامه، به تفصیل مورد بررسی قرار خواهیم داد. همان‌طور که در بالا ذکر شد، الگوریتم‌های ساخت درخت تصمیم، تفکیک‌کننده‌ترین متغیر که دسته‌های بزرگ‌تری از داده‌ها را براساس آن می‌توانیم ایجاد کنیم یا به عبارت دیگر، بزرگ‌ترین مجموعهٔ همگن از کل داده‌ها را ایجاد می‌کند، شناسایی می‌کنند، سپس به سراغ متغییر تفکیک‌کننده بعدی می‌روند و الی آخر تا بر اساس آن‌ها، ساختار درخت را مرحله به مرحله بسازند. حال سؤالی که پیش می‌آید این است که در هر مرحله، چگونه این متغیر شناسایی‌شده و عمل تقسیم انجام گیرد؟ برای انجام این کار، درخت تصمیم از الگوریتم‌های متنوعی استفاده می‌کند که در بخش‌های بعدی به آن‌ها خواهیم پرداخت.

درخت تصمیم چگونه کار می‌کند؟

در درخت تصمیم با دنبال کردن مجموعه‌ای از سوالات مرتبط با خصوصیات داده‌ها و نگاه به داده جاری برای اتخاذ تصمیم، طبقه یا دسته آنرا تعیین می‌کنیم. در هر گره میانی درخت، یک سؤال وجود دارد و با مشخص شدن پاسخ هر سؤال به گره مرتبط با آن جواب می‌رویم و در آنجا هم سؤال دیگری پرسیده می‌شود.

هدف از الگوریتم‌های درخت تصمیم هم انتخاب درست این سؤالات است به گونه‌ای که یک دنباله کوتاه از سؤالات برای پیش‌بینی دستهٔ رکورد جدید تولید کنند.

هر گره داخلی متناظر با یک متغیر و هر یال، نمایانگر یک مقدار ممکن برای آن متغیر است. یک گره برگ، مقدار پیش‌بینی‌شدهٔ متغیر هدف (متغیری که قصد پیش‌بینی آنرا داریم)، را نشان می‌دهد یعنی برگ‌ها نشان‌دهندهٔ دسته‌بندی نهایی بوده و مسیر پیموده شده تا آن برگ، روند رسیدن به آن گره را نشان می‌دهند.

درخت تصمیم

فرآیند یادگیری یک درخت که در طی آن، گره‌ها و یال‌ها مشخص می‌شوند و درادامه به آن خواهیم پرداخت، معمولاً با بررسی مقدار یک خصوصیت در مرحله اول، به تفکیک کردن مجموعه داده به زیرمجموعه‌هایی مرتبط با مقدار آن صفت، کار خود را شروع می‌کند. این فرآیند به شکل بازگشتی در هر زیرمجموعهٔ حاصل از تفکیک نیز تکرار می‌شود یعنی در زیرمجموعه‌ها هم مجدداً براساس مقدار یک صفت دیگر، چند زیرمجموعه ایجاد می‌کنیم. عمل تفکیک، زمانی متوقف می‌شود که تفکیک بیشتر، سودمند نباشد یا بتوان یک دسته‌بندی را به همه نمونه‌های موجود در زیرمجموعهٔ به‌دست‌آمده، اعمال کرد. در این فرآیند، درختی که کمترین میزان برگ و یال را تولید کند، معمولاً گزینه نهایی ما خواهد بود.

انواع متغیر‌ها در درخت تصمیم

در مسائل مرتبط با درخت‌های تصمیم با دو نوع کلی از متغیر‌ها مواجه هستیم:

  • متغیرهای عددی یا پیوسته: مانند سن، قد، وزن و… که مقدار خود را از مجموعهٔ اعداد حقیقی می‌گیرند.
  • متغیرهای رده‌ای یا گسسته : مانند نوع، جنس، کیفیت و… که به‌صورت دو یا چند مقدار گسسته هستند. در مواردی مانند آیا این شخص دانش‌آموز است؟ که دو جواب بله و خیر داریم، این متغیر از نوع طبقه‌ای خواهد بود.

از طرفی می‌توانیم متغیر‌ها را به دون گروه کلی، متغیرهای مستقل و متغیرهای وابسته تقسیم کنیم. متغیرهای مستقل، متغیرهایی هستند که مقدار آن‌ها، مبنای تصمیم گیری ما خواهند بود و متغیر وابسته، متغیری است که بر اساس مقدار متغیرهای مستقل، باید مقدار آنرا پیش‌بینی کنیم. متغیرهای مستقل با گره‌های میانی نشان داده می‌شوند و متغیرهای وابسته، با برگ نشان داده می‌شوند. حال هر یک از این دو نوع متغیر مستقل و وابسته، می‌تواند گسسته یا پیوسته باشد.
چنانچه متغیری وابستهٔ عددی باشد دسته بندی ما یک مسالهٔ رگرسیون و چنانچه طبقه‌ای باشد، دسته بندی از نوع، رده‌بندی (Classification) است. به عبارتی دیگر، هنگامی‌که خروجی یک درخت، یک مجموعه گسسته از مجموعه مقادیر ممکن است؛ به آن درخت دسته‌بندی می‌گوییم (مثلاً مؤنث یا مذکر، برنده یا بازنده). این درخت‌ها تابع X→C را بازنمایی می‌کنند که در آن C مقادیر گسسته می‌پذیرد. هنگامی‌که بتوان خروجی درخت را یک عدد حقیقی در نظر گرفت آن را، درخت رگرسیون می‌نامیم (مثلاً قیمت خانه یا طول مدت اقامت یک بیمار در یک بیمارستان). این درختان اعداد را در گره‌های برگ پیش‌بینی می‌کنند و می‌توانند از مدل رگرسیون خطی یا ثابت (یعنی میانگین) یا مدل‌های دیگر استفاده کنند. وظیفهٔ یادگیری در درختان رگرسیون، شامل پیش‌بینی اعداد حقیقی بجای مقادیر دسته‌ای گسسته است که این عمل را با داشتن مقادیر حقیقی در گره‌های برگ خود نشان می‌دهند. بدین‌صورت که میانگین مقادیر هدف نمونه‌های آموزشی را در این گره برگ به دست می‌آورند. این نوع از درختان، تفسیر آسان داشته و می‌توانند توابع ثابت تکه‌ای را تقریب بزنند.
درخت CART (Classification And Regression Tree) نامی است که به هر دو روال بالا اطلاق می‌شود. نام CART سرنام کلمات درخت رگرسیون و دسته‌بندی است. البته نوع دیگری از درخت‌های تصمیم هم داریم که برای خوشه‌بندی (clustering) داده‌ها به کار می‌روند و به دلیل کاربرد محدود، در این مجموعه مقالات به آن‌ها نخواهیم پرداخت (بیشتر تحقیقات در یادگیری ماشین روی درختان دسته‌بندی متمرکز است).

اصطلاحات مهم مربوط به درخت تصمیم

در این بخش به معرفی اصطلاحات مهم در حوزهٔ کار با درخت تصمیم می‌پردازیم.
گره ریشه: این گره حاوی تمام نمونه‌های موجود هست و سطح بعدی اولین تقسیم مجموعهٔ اصلی به دو مجموعهٔ همگن‌تر است. در مثال قبل، گره ریشه دارای ۳۰ نمونه است.
گره تصمیم: زمانی که یک گره به زیرگره‌های بعدی تقسیم می‌شود، آن را یک گره تصمیم می‌نامیم.
برگ / گره پایانه: گره‌هایی که تقسیم نمی‌شوند یا به عبارتی تقسیم پیاپی از طریق آن‌ها پایان می‌یابد، برگ یا گره پایانه نام دارند.
در تصویر زیر، گره ریشه (Root Node) با رنگ آبی، شاخه، انشعاب (Branch) یا به عبارتی زیر درخت (Sub-Tree) با رنگ گل‌بهی، تقسیم (Splitting) و هرس (Pruning) نمایش داده‌شده‌اند. برگ‌ها هم به رنگ سبز در انتهای شاخه‌های مختلف درخت، قرار گرفته‌اند.

درخت تصمیم

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

مزایا و معایب درخت تصمیم

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

معایب درختان تصمیم

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

مقایسه درخت تصمیم و درخت رگرسیون

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

هر دو نوع درخت تصمیم و رگرسیون تقریباً مشابه هستند. در زیر به برخی شباهت‌ها و تفاوت‌های بین این دو می‌پردازیم:

ویژگی‌های درخت رگرسیون و درخت دسته‌بندی:

• زمانی که متغیر هدف ما پیوسته و عددی باشد، از درخت رگرسیون و زمانی که متغیر هدف ما گسسته یا غیرعددی باشد، از درختان تصمیم استفاده می‌کنیم.
• معیار تقسیم و شاخه زدن در درختان رگرسیون بر اساس معیار خطای عددی است.
• گره‌های برگ در درختان رگرسیون حاوی مقادیر عددی هستند که هر عدد، میانگین مقادیر دسته‌ای است که داده جاری، بیشترین شباهت را با آن‌ها داشته است اما در درختان تصمیم، مقدار برگ، متناظر با دسته‌ایست که بیشترین تکرار را با شرایط مشابه با داده داده شده، داشته است.
ن هر دو درخت، رویکرد حریصانهٔ بالا به پایین را، تحت عنوان تقسیم باینری بازگشتی دنبال می‌کنند. این روش از بالای درخت، جایی که همهٔ مشاهدات در یک بخش واحد در دسترس هستند شروع می‌شود و سپس تقسیم به دوشاخه انجام‌شده و این روال به‌صورت پی‌درپی تا پایین درخت ادامه دارد، به همین دلیل این روش را بالا به پایین می‌خوانیم. همچنین به این دلیل این روش را حریصانه می‌خوانیم که تلاش اصلی ما در یافتن بهترین متغیر در دسترس برای تقسیم فعلی است و در مورد انشعابات بعدی که به یک درخت بهتر منتهی شود، توجهی نداریم. (به عبارتی همواره بهترین انتخاب در لحظه، بهترین انتخاب در سراسر برنامه نیست و اثرات این تقسیم در تقسیم‌های آینده را در نظر نمی‌گیرد). به یاد دارید که درروش حریصانه و در مورد کوله‌پشتی نیز مورد مشابه را دیده‌ایم. در شیوه حریصانه در هر مرحله عنصری که بر مبنای معیاری معین ((بهترین)) به نظر می‌رسد، بدون توجه به انتخاب‌های آینده، انتخاب می‌شود.
• در هر دو نوع درخت، در فرآیند تقسیم این عمل تا رسیدن به معیار تعریف‌شدهٔ کاربر برای توقف عملیات، ادامه دارد. برای مثال، ما می‌توانیم به الگوریتم بگوییم که زمانی که تعداد مشاهدات در هر گره کمتر از ۵۰ شود، عملیات متوقف گردد.
• در هر دو درخت، نتایج فرآیند تقسیم، تا رسیدن به معیارهای توقف، باعث رشد درخت می‌شود. اما درخت کاملاً رشد یافته به‌احتمال‌زیاد باعث بیش‌برازش داده‌ها (over fit) خواهد شد که در این صورت، شاهدکاهش صحت و دقت بر روی ‌داده‌های آینده که قصد دسته‌بندی آن‌ها را داریم، خواهیم بود. در این زمان هرس‌کردن را بکار می‌بریم. هرس کردن، روشی برای مقابله با بیش-برازش داده‌هاست که در بخش بعد بیشتر به آن خواهیم پرداخت.

نحوهٔ تقسیم یک درخت تصمیم

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

انتخاب الگوریتم، به نوع متغیرهای هدف نیز بستگی دارد.

منبع

درخت تصمیم قسمت 1
درخت تصمیم قسمت 2
درخت تصمیم قسمت 3
درخت تصمیم قسمت 4

بگذارید برای تبیین بهتر مفهوم «درخت تصمیم (decision tree)» یک مثال کاربردی را بررسی کنیم؛ مدیریت شرکت «Stygian Chemical Industries, Ltd» می‌خواهد بین انتخاب این دو گزینه تصمیم‌گیری کند:‌ ساخت یک واحد تولیدی کوچک یا یک واحد تولیدی بزرگ برای ساخت یک محصول شیمیایی با عمر بازار (market life) برابر با ده سال. توضیح این‌که اتخاذ این تصمیم مبتنی بر تخمین اندازه بازار در آینده است.

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

اگر شرکت یک واحد تولیدی با ظرفیت عظیم ایجاد کند، بدون توجه به رفتار بازار باید تا پایان ده سال با تولیدات زیاد کنار بیاید. اگر شرکت یک واحد تولیدی کوچک در اختیار داشته باشد و بازار بعد از دو سال رشد کند، مدیریت این انتخاب را خواهد داشت که ظرفیت را توسعه دهد. در صورتی که اندازه بازار بعد از دو سال اولیه رشد نکند، شرکت با ظرفیت کنونی ادامه خواهد داد.

هیئت مدیره با تردید و نگرانی زیادی دست‌وپنجه نرم می‌کند. شرکت طی سال‌های 1۹4۰ تا 1۹۵۰ رشد مناسبی داشته و با سرعت مطابق با نیاز بازار رشد کرده است. اگر بازار محصول جدید واقعا بزرگ باشد این شانس برای شرکت وجود دارد تا به سرعت وارد عرصه عظیمی از سود سرشار گردد. مهندس پروژه توسعه (development project engineer) مصرانه به دنبال ترغیب مدیریت به ساخت واحد تولیدی با ظرفیت زیاد است. این واحد علاقه دارد اولین واحد غول‌پیکر طراحی شده توسط خود را به جهان معرفی نماید.

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

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

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

نمایش گزینه‌ها

بیایید خود را در یک صبح شنبه ابری تصور کنید که برای بعد از ظهر همان روز تعداد ۷۵ نفر را به صرف نوشیدنی دعوت کرده‌اید. خانه شما خیلی بزرگ نیست اما باغ‌ چشم‌نواز جلوی آن می‌تواند در صورتی که هوا بارانی نشود، مهمان‌پذیر مناسبی باشد. در باغ به میهمانان بیشتر خوش می‌گذرد و شما رضایت بیشتری خواهید داشت. اما اگر ناگهان در بین جشن باران بگیرد، تدارکات از بین می‌رود و برای مهمان‌ها و شما خاطره‌ای تلخ از روز شنبه باقی خواهد ماند (البته امکان پیچیده‌تر کردن مسئله وجود دارد. برای مثال، امکان پیش‌بینی هوا بر اساس شرایط چند روز گذشته و امکان تدارک میهمانی در باغ و خانه به صورت هم‌زمان را می‌توان اضافه کرد. اما همین مسئله ساده کار ما را راه خواهد انداخت!).

این تصمیم خاص را می‌توان در یک جدول انتخاب/نتیجه (payoff table) نشان داد.

انتخاب باران بیاید باران نیاید
برگزاری جشن در باغ فاجعه لذت فروان و به یاد ماندنی
برگزاری جشن در خانه لذت نسبی، شادی لذت نسبی، پشیمانی

سوالات بسیار پیچیده تصمیم‌گیری را می‌توان در چنین جدول‌هایی خلاصه کرد. با این‌حال، به‌ویژه برای تصمیمات پیچیده سرمایه‌گذاری روش مناسب دیگری برای بررسی اثرات و احتمالات تصمیم‌گیری به همراه نتایج وجود دارد: درخت تصمیم. پیر ماسی ( Pierre Massé)، مامور عالی‌رتبه آژانس تصمیم‌گیری برای تولیدات و تجهیزات فرانسه (Commissioner General of the National Agency for Productivity and Equipment Planning in France)، می‌گوید:

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

نگاره شماره یک، درخت تصمیم میهمانی را نشان می‌دهد. درخت در واقع راه دیگری برای نمایش جدول انتخاب/نتیجه است. با این‌ حال درخت تصمیم راه بهتری برای نشان دادن احتمالات و اطلاعات تصمیم‌گیری در مسائل پیچیده است.

درخت تصمیم

درخت از یک سری نقاط و شاخه‌ها تشکیل شده است. در اولین نقطه از سمت چپ، میزبان امکان انتخاب برگزاری جشن را داخل یا بیرون از منزل دارد. هر شاخه نماینده یک اتفاق ممکن یا یک مرحله تصمیم‌گیری است. در انتهای هر شاخه یک نقطه وجود دارد که یک اتفاق محتمل – آمدن یا نیامدن باران- را نشان می‌دهد. پیامد هر اتفاق ممکن در منتهی‌الیه سمت راست یا نقطه پایانی هر شاخه آمده است.

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

زنجیره تصمیم – پیشامد (Decision-event chains)

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

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

درخت تصمیم

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

اگر آنچه در حال حاضر می‌دانم،‌ در آن‌ زمان هم درست باشد، چه پیشامدی رخ خواهد داد.

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

اضافه کردن داده‌های مالی

حالا می‌توانیم به مسئله شرکت شیمیایی Stygian برگردیم. درخت تصمیم متناسب با مسئله در نگاره شماره سه نشان داده شده است. در تصمیم شماره یک، شرکت باید بین احداث یک واحد با ظرفیت پایین یا یک واحد با ظرفیت بالا یکی را انتخاب کند. هم‌اکنون تنها در این مورد باید تصمیم‌گیری شود. اما اگر بعد از تاسیس واحد کوچک‌تر، شرکت با تقاضای مناسب بازار روبرو شد می‌تواند طی دو سال طرح توسعه واحد را اجرا کند (تصمیم شماره دو).

درخت تصمیم

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

  • بررسی بازار نشان می‌دهد که شانس یک بازار بزرگ در بلند مدت برابر با ۶۰٪ و شانس یک بازار کوچک در بلند مدت برابر با 4۰٪ (ردیف دو و سه جدول) است.
پیشامد شانس یا احتمال (٪)
تقاضای اولیه بالا، تقاضای درازمدت بالا 60
تقاضای اولیه بالا، تقاضای درازمدت پایین 10
تقاضای اولیه پایین، تقاضای درازمدت پایین 30
تقاضای اولیه پایین،‌ تقاضای درازمدت بالا 0

در نتیجه، شانس این‌که بازار با تقاضای بالای اولیه رو‌به‌رو شود برابر با ۷۰٪ (۶۰ + 1۰) است. اگر تقاضا در ابتدا بالا باشد، شرکت پیش‌بینی می‌کند که احتمال ادامه‌ی میزان بالای تقاضا برابر با ۸۶٪ (۷۰ ÷ ۶۰) است. مقایسه ۸۶٪ با ۶۰٪ نشان می‌دهد که تقاضای بالای اولیه، محاسبه‌ی احتمال ادامه بازار با تقاضای بالا را دست‌خوش تغییر می‌کند. به شکل مشابه اگر تقاضا در دوره دو ساله ابتدائی پایین باشد، شانس پایین بودن تقاضا در ادامه برابر با 1۰۰٪ (3۰ ÷ 3۰) است. در نتیجه میزان فروش در دوره اولیه می‌تواند نشان‌گر خوبی برای سطح تقاضا در ادامه دوره ده ساله باشد.

تخمین درآمد در صورت پیشامد هر سناریو در ادامه آمده است.

1. یک واحد تولیدی بزرگ با تقاضای بالا درآمدی برابر با یک میلیون دلار در سال به صورت نقد خواهد داشت.

2. یک واحد تولیدی بزرگ با تقاضای پایین به دلیل هزینه‌های عملیاتی ثابت و بازده پایین تنها 1۰۰ هزار دلار در سال درآمد خواهد داشت.

3. یک واحد تولیدی کوچک با تقاضای پایین اقتصادی است و سالانه درآمدی معادل 4۰۰ هزار دلار خواهد داشت.

4. یک واحد تولیدی کوچک با تقاضای اولیه بالا در سال برابر با 4۵۰ هزار دلار درآمد خواهد داشت که در سال‌های سوم به بعد با توجه به افزایش حضور رقبا به میزان 3۰۰ هزار دلار کاهش پیدا خواهد کرد. (بازار بزرگتر خواهد شد اما بین رقبای جدید تقسیم می‌شود.)

۵. اگر واحد کوچک مطابق با افزایش تقاضا در سال‌های آتی رشد کند، سالانه ۷۰۰ هزار دلار درآمد سالانه به ارمغان خواهد آورد که کمتر از درآمد یک واحد بزرگ با درآمد یک میلیون دلار خواهد بود.

۶. اگر واحد کوچک توسعه پیدا کند اما بازار کوچک شود،‌ درآمد حاصل سالانه برابر با ۵۰ هزار دلار خواهد بود.

در ادامه با محاسبات انجام گرفته خواهیم داشت: یک واحد بزرگ نیاز به سه میلیون دلار سرمایه‌گذاری دارد. یک واحد کوچک در ابتدا 1.3 میلیون دلار و در صورت ادامه توسعه نیاز به 2.2 میلیون دلار خواهد داشت.

اگر اطلاعات جدید را به درخت تصمیم وارد کنیم، نگاره شماره چهار به دست خواهد آمد. به خاطر داشته باشید که تمام اطلاعات موجود بر اساس دانسته‌های شرکت Stygian به دست آمده‌اند اما بدون درخت تصمیم این اطلاعات ارزش و مفهوم کنونی را به دست نمی‌داند. کم‌کم متوجه می‌شوید که درخت تصمیم چه تاثیر شگرفی بر توانایی مدیران در تحلیل سیستماتیک (systematic analysis) و تصمیم‌گیری بهتر می‌گذارد. در نهایت برای ایجاد یک درخت تصمیم به موارد زیر نیازمندیم.

1. شناسایی نقاط تصمیم و انتخاب‌های ممکن در هر سطح

2. شناسایی احتمالات و بازه یا نوع پیشامدها در هر سطح

3. تخمین مقادیر عددی برای تحلیل به‌ویژه احتمال نتایج عملکرد، هزینه‌ها و سود حاصل

4. تحلیل ارزش انتخاب‌ها برای انتخاب یک مسیر

انتخاب مسیر عملکرد (Choosing Course of Action)

هم اکنون آماده‌ی برداشتن قدم بعدی برای مقایسه نتایج هر مسیر هستیم. یک درخت تصمیم جواب نهایی مسئله‌ی سرمایه‌گذاری را به مدیر نمی‌دهد بلکه به وی کمک می‌کند مسیر با بهترین سود و کمترین هزینه‌ را مشاهده کند و با مسیرهای دیگر مقایسه نماید.

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

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

حضور اهداف متعارض، ناپایدار و متعدد منجر به ایجاد سیاست اصلی شرکت شیمیایی Stygian می‌گردد و عناصر این سیاست تحت تاثیر خواست و زندگی افراد درگیر تغییر می‌کند. در ادامه بد نیست اجزاء مختلف تصمیم‌گیر را بررسی و ارزیابی نماییم.

  • چه چیزی با ریسک رو‌به‌رو است؟ سود، ادامه حیات کسب‌‌و‌کار، حفظ شغل یا شانس یک شغل بهتر؟
  • چه کسی ریسک را تحمل می‌کند؟ سرمایه‌گذار عموما به یک شکل ریسک را تحمل می‌کند. مدیریت، کارمندان و جامعه ریسک‌های متفاوتی را تجربه می‌نمایند.
  • ویژگی ریسک چیست؟ منحصر به فرد، تصادفی یا با عدم قطعیت؟ آیا اقتصاد، صنعت، شرکت یا بخشی از آن را تحت تاثیر قرار می‌دهد؟

چنین سوال‌هایی حتما ذهن مدیران عالی را درگیر می‌کند و البته درخت تصمیم نشان داده شده در نگاره شماره 4 به این سوال‌ها پاسخ نخواهد داد. اما این درخت به مدیران خواهد فهماند که کدام‌یک از تصمیمات، اهداف بلند مدت را دست‌خوش تغییر می‌کنند. ابزار مناسب در قدم بعدی تحلیل مفهوم عقبگرد (rollback) است.

مفهوم عقب‌گرد

مفهوم عقب‌گرد در این شرایط نیاز به توضیح دارد. در نقطه تصمیم گیری شماره یک در نگاره شماره چهار، مدیریت اجباری برای اخذ تصمیم شماره دو ندارد و حتی نمی‌داند مجبور به این کار خواهد شد یا نه. اما اگر قرار بر تصمیم‌گیری در نقطه دو باشد، با توجه به اطلاعات کنونی، شرکت تصمیم به توسعه ظرفیت تولید خواهد گرفت. این تحلیل در نگاره شماره ۵ نشان داده شده است. ( در این لحظه از سوال در مورد تنزیل سود آینده (discounting future profits) چشم‌پوشی می‌کنیم و در ادامه در مورد آن صحبت خواهیم کرد.) می‌بینیم که امید ریاضی کلی (total expected value) در تصمیم به توسعه ظرفیت 160 هزار دلار بیشتر از تصمیم برای عدم توسعه در هشت سال باقی‌مانده است. در نتیجه مدیریت با اطلاعات کنونی چنین تصمیمی خواهد گرفت (تصمیم تنها بر اساس سود بیشتر و به عنوان یک تصمیم منطقی اخذ می‌شود).

درخت تصمیم

ممکن است بی‌اندیشید چرا با اینکه تنها با تصمیم شماره یک روبرو هستیم، باید به جایگاه تصمیم‌گیری نقطه دو فکر کنیم. دلیل این موضوع این است که ما بایستی بتوانیم سود حاصل از تصمیم نقطه دو را محاسبه کنیم تا قادر باشیم سود حاصل از تصمیم نقطه یک (ساخت یک واحد تولیدی کوچک یا یک واحد تولید بزرگ) را با یک‌دیگر مقایسه کنیم. ارزش مالی تصمیم شماره دو را ارزش مکانی (position value) آن می‌نامیم. ارزش مکانی یک تصمیم برابر است با ارزش مورد انتظار یا امید ریاضی شاخه متناظر (در این مثال، چند شاخه یا چنگال توسعه واحد). امید ریاضی به شکل ساده برابر است با میانگین مقادیر نتایج در صورت تکرار زیاد شرایط (بازده ۵۶۰۰ دلار در سال با احتمال ۸۶٪ و 4۰۰ دلار با احتمال 14٪).

به بیان دیگر، معدل 2۶۷2 دلار سود نصیب شرکت شیمیایی Stygian تا رسیدن به نقطه دو خواهد شد. حال این سوال پیش می‌آید که با توجه به این مقادیر بهترین تصمیم در نقطه شماره یک کدام است؟

به نگاره سرمایه‌گذاری شماره ۶ نگاه کنید. در قسمت بالای درخت و سمت راست، سود حاصل از پیشامدهای مختلف در صورت ساخت یک واحد بزرگ را مشاهده می‌کنید. در قسمت پایینی شاخه‌های مربوط به واحد تولیدی کوچک را می‌بینید. اگر تمام این سودها را در احتمال آن‌ها ضرب کنیم، مقایسه زیر حاصل می‌شود:

ساخت واحد تولیدی بزرگ:

($10 ×.60) + ($2.8 ×.10) + ($1 ×.30) – $3 = $3,600 thousand

ساخت واحد تولید کوچک :

($3.6 ×.70) + ($4 ×.30) – $1.3 = $2,400 thousand

درخت تصمیم

گزینه‌ی با امید ریاضی بزرگتر (سود مورد انتظار بیشتر) متناظر با ساخت واحد تولیدی بزرگ خواهد بود.

در نظر گرفتن زمان

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

برای ساده‌سازی، نرخ تنزیل مورد نظر شرکت شیمیایی Stygian را برابر با 1۰٪ در سال در نظر می‌گیریم. با استفاده از قانون عقب‌گرد، دوباره با تصمیم شماره دو شروع می‌کنیم. با تنزیل مقادیر با نرخ 1۰٪، نتایج نگاره شماره هفت، قسمت A، به دست خواهد آمد. توجه کنید که این مقادیر، ارزش کنونی را در صورت اتخاذ تصمیم شماره دو نشان می‌دهند.

درخت تصمیم

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

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

درخت تصمیم

واحد تولیدی بزرگ دوباره به عنوان انتخاب برتر شناسایی می‌گردد. اما حاشیه سود (margin) این‌بار نسبت به مرتبه بدون تنزیل مقدار کمتری (2۹۰ هزار دلار) است.

گزینه‌های عدم قطعیت (Uncertainty Alternatives)

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

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

نتیجه‌گیری

پیتر اف دراکر (Peter F. Drucker) به زیبایی رابطه بین برنامه‌ریزی زمان حال و پیشامدهای آینده را توضیح داده است: «برنامه‌ریزی بلند مدت با تصمیمات آینده سروکار ندارد. بلکه با آینده تصمیمات حاضر مرتبط است».  تصمیمات امروز باید متاثر از نتیجه محتمل در آینده اتخاذ شوند. از آنجا که تصمیمات امروز پایه انتخاب‌های آینده را خواهند ساخت، باید تعادلی بین سودآوری و انعطاف‌پذیری ایجان نمایند؛ این تصمیمات باید بین نیاز به سرمایه‌گذاری بر فرصت‌های پرسود با ظرفیت عکس‌العمل به شرایط و نیازهای آینده تعادل برقرار نمایند.

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

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

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

منبع

 

درخت تصمیم قسمت 1

درخت تصمیم قسمت 2

درخت تصمیم قسمت 3

درخت تصمیم قسمت 4

 

Decision Tree (درخت تصمیم) چیست؟

Decision Tree مفهومی است که اگر در نظر دارید تا تصمیم پیچیده‌ای بگیرید و یا می‌خواهید مسائل را برای خودتان به بخش‌های کوچک‌تری تقسیم کرده تا به شکل بهتری قادر به حل آن‌ها گردیده و ذهن‌تان را سازمان‌دهی کنید، می‌توانید از آن استفاده نمایید. در این پست قصد داریم تا همه چیز را در مورد درخت‌های تصمیم‌گیری مورد بررسی قرار دهیم؛ از جمله اینکه این مفهوم چه هست، چه‌طور مورد استفاده قرار می‌گیرد و همچنین چگونه می‌توانیم دست به ایجاد یک درخت تصمیم‌گیری بزنیم.

آشنایی با مفهوم Decision Tree (درخت تصمیم)

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

یک درخت تصمیم‌گیری به طور معمول با یک نُود اولیه‌ شروع می‌شود که پس از آن پیامد‌های احتمالی به صورت شاخه‌هایی از آن منشعب شده و هر کدام از آن پیامد‌ها به نُود‌های دیگری منجر شده که آن‌ها هم به نوبهٔ خود شاخه‌هایی از احتمالات دیگر را ایجاد می‌کنند که این ساختار شاخه‌شاخه سرانجام به نموداری شبیه به یک درخت مبدل می‌شود. در درخت تصمیم‌گیری سه نوع Node (گِره) مختلف وجود دارد که عبارتند از:

– نُود‌های تصادفی – نُود‌های تصمیم‌گیری – نُود‌های پایانی

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

درخت تصمیم

درخت‌های تصمیم‌گیری را می‌توان با سَمبول‌ها یا علائم فلوچارت نیز رسم کرد که در این صورت برای برخی افراد، به خصوص دولوپرها، درک و فهم آن آسان‌تر خواهد بود.

چه‌طور می توان اقدام به کشیدن یک Decision Tree کرد؟

به منظور ترسیم یک درخت تصمیم، ابتدا وسیله و ابزار مورد نظرتان را انتخاب کنید (می‌توانید آن را با قلم و کاغذ یا وایت‌برد کشیده یا اینکه می‌توانید از نرم‌افزار‌های مرتبط با این کار استفاده کنید.) فارغ از اینکه چه ابزاری انتخاب می‌کنید، می‌بایست به منظور ترسیم یک درخت تصمیم اصولی، مراحل زیر را دنبال نمایید:

۱- کار با تصمیم اصلی آغاز کنید که برای این منظور از یک باکس یا مستطیل کوچک استفاده کرده، سپس از آن مستطیل به ازای هر راه‌حل یا اقدام احتمالی خطی به سمت راست/چپ کشیده و مشخص کنید که هر خط چه معنایی دارد.

درخت تصمیم

۲- نُود‌‌های تصادفی و تصمیم‌گیری را به منظور شاخ و برگ دادن به این درخت، به طریق پایین رسم کنید:

ـ  اگر تصمیم اصلی دیگری وجود دارد، مستطیل دیگری رسم کنید. ـ   اگر پیامدی قطعی نیست، یک دایره رسم کنید (دایره‌ها نمایانگر نُود‌های تصادفی هستند.) ـ  اگر مشکل حل شده، آن را فعلاً خالی بگذارید.

درخت تصمیم

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

۳- به بسط این درخت ادامه دهید تا زمانی که هر خط به نقطه‌ٔ پایانی برسد (یعنی تا جایی که انتخاب‌های دیگری وجود نداشته و پیامد‌های احتمالی دیگری برای در نظر گرفتن وجود نداشته باشد.) در ادامه، برای هر پیشامد احتمالی یک مقدار تعیین کنید که این مقدار می‌تواند یک نمرهٔ فرضی یا یک مقدار واقعی باشد. همچنین به خاطر داشته باشید که برای نشان دادن نقاط پایانی، از مثلث استفاده کنید.

درخت تصمیم

حال با داشتن یک درخت تصمیم کامل، می‌توانید تصمیمی که با آن مواجه هستید را تجزیه و تحلیل کنید.

مثالی از پروسهٔ تجزیه و تحلیل Decision Tree با محاسبهٔ سود یا مقدار مورد انتظار از هر انتخاب در درخت مد نظر خود، می‌توانید ریسک را به حداقل رسانده و احتمال دستیابی به یک پیامد یا نتیجهٔ مطلوب و مورد انتظار را بالا ببرید. به منظور محاسبهٔ سود مورد انتظار یک گزینه، تنها کافی است هزینهٔ تصمیم را از مزایای مورد انتظار آن کسر کنید (مزایای مورد انتظار برابر با مقدار کلی تمام پیامد‌هایی است که می‌توانند از یک انتخاب ناشی شوند که در چنین شرایطی هر مقدار در احتمال پیشامد ضرب شده است.) برای مثالی که در تصاویر بالا زده‌ایم، بدین صورت این مقادیر را محاسبه خواهیم کرد:

درخت تصمیم

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

درخت تصمیم

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

آشنایی با برخی مزایا و معایب Decision Tree

در میان متخصصین در صنایع مختلف، مدیران و حتی دولوپرها، درخت‌های تصمیم محبوب‌اند چرا که درک آن‌ها آسان بوده و به دیتای خیلی پیچیده و دقیقی احتیاج ندارند، می‌توان در صورت لزوم گزینه‌های جدیدی را به آن‌ها اضافه کرد، در انتخاب و پیدا کردن بهترین گزینه از میان گزینه‌های مختلف کارآمد هستند و همچنین با ابزار‌های تصمیم‌گیری دیگر به خوبی سازگاری دارند.

با تمام این‌ها، درخت‌های تصمیم ممکن است گاهی به شدت پیچیده شوند! در چنین مواردی یک به اصطلاح Influence Diagram جمع و جور‌تر می‌تواند جایگزین بهتری برای درخت تصمیم باشد به طوری که این دست نمودار‌ها توجه را به تصمیمات حساس، اطلاعات ورودی و اهداف محدود می‌کنند.

کاربرد Decision Tree در حوزه‌ٔ ماشین لرنینگ و دیتا ماینینگ

از درخت تصمیم می‌توان به منظور ایجاد مُدل‌های پیش‌بینی خودکار استفاده کرد که در حوزه‌ٔ یادگیری ماشینی، استخراج داده و آمار کاربردی هستند. این روش که تحت عنوان Decision Tree Learning شناخته می‌شود، به بررسی مشاهدات در مورد یک آیتم به جهت پیش‌بینی مقدارش می‌پردازد و به طور کلی، در چنین درخت تصمیمی، نُود‌ها نشان‌دهنده‌ٔ دیتا هستند نَه تصمیمات. این نوع درخت‌ها همچنین تحت عنوان Classification Tree نیز شناخته می‌شوند به طوری که هر شاخه در برگیرنده‌ٔ مجموعه‌ای از ویژگی‌ها یا قوانین طبقه‌بندی دیتا است و مرتبط با یک دستهٔ خاص می‌باشد که در انتهای هر شاخه یافت می‌شود.

این دست قوانین که تحت عنوان Decision Rules شناخته می‌شوند قابل بیان به صورت جملات شرطی می‌باشند (مثلاً اگر شرایط ۱ و ۲ و ۳ محقق شوند، با قطعیت می‌توان گفت که X نتیجه‌ای همچون Y برخواهد گرداند.) هر مقدار دادهٔ اضافی به مدل کمک می‌کند تا دقیق‌تر پیش‌بینی کند که مسئلهٔ مورد نظر به کدام مجموعه از مقادیر متعلق می‌باشد و این در حالی است که از این اطلاعات بعداً می‌توان به عنوان ورودی در یک مدل تصمیم‌گیری بزرگ‌تر استفاده کرد.

درخت‌های تصمیم‌گیری که پیامد‌های محتمل پی‌درپی و بی‌نهایت دارند، Regression Tree نامیده می‌شوند. به طور کلی، متدهای کاربردی در این حوزه به صورت زیر دسته‌بندی می‌شوند:

– Bagging: در این متد با نمونه‌سازی مجدد دیتای سورس، چندین درخت ایجاد شده سپس با برداشتی که از آن درختان می‌شود، تصمیم نهایی گرفته شده یا نتیجهٔ‌ نهایی به دست می‌آید.

– Random Forest: در این متد طبقه‌بندی از چندین درخت تشکیل شده که به منظور افزایش نرخ کلاسیفیکیشن طراحی شده‌اند.

– Boosted: درخت‌هایی از این جنس می‌توانند برای رگرسیون مورد استفاده قرار گیرند.

– Rotation Forest: در این متد، همگی درخت‌ها توسط یک به اصطلاح Principal Component Analysis با استفاده از بخشی از داده‌های تصادفی آموزش داده می‌شوند.

درخت تصمیم‌گیری زمانی مطلوب تلقی می‌شود که نشان‌دهنده‌ٔ بیشترین دیتا با حداقل شاخه باشد و این در حالی است که الگوریتم‌هایی که برای ایجاد درخت‌های تصمیم‌گیری مطلوب طراحی شده‌اند شامل CART ،ASSISTANT ،CLS و ID31415 می‌شوند. در واقع، هر کدام از این متد‌ها باید تعیین کنند که بهترین راه برای تقسیم داده در هر شاخه کدام است که از متد‌های رایجی که بدین منظور استفاده می‌شوند می‌توان به موارد زیر اشاره کرد:

– Gini Impurity – Information Gain – Variance Reduction

استفاده از درخت‌های تصمیم‌گیری در یادگیری ماشینی چندین مزیت عمده دارد من‌جمله هزینه یا بهای استفاده از درخت به منظور پیش‌بینی داده با اضافه کردن هر به اصطلاح Data Point کاهش می‌یابد و این در حالی است که از جمله دیگر مزایایش می‌توان به موارد زیر اشاره کرد:

– برای داده‌های طبقه‌بندی شده و عددی به خوبی پاسخگو است. – می‌تواند مسائل با خروجی‌های متعدد را مدل‌سازی کند. – می‌توان قابلیت اطمینان به درخت را مورد آزمایش و اندازه‌گیری قرار داد. – صرف‌نظر از اینکه آیا فرضیات دادهٔ منبع را نقض می‌کنند یا خیر، این روش به نظر دقیق می‌رسد.

اما Decision Tree در ML معایبی نیز دارا است که از جملهٔ مهم‌ترین آن‌ها می‌توان به موارد زیر اشاره کرد:

– حین مواجه با داده‌های طبقه‌بندی شده با سطوح مختلف، داده‌های حاصله تحت‌تأثیر ویژگی‌ها یا صفاتی که بیشترین شاخه را دارند قرار می‌گیرد. – در صورت رویارویی با پیامد‌های نامطمئن و تعداد زیادی پیامد بهم مرتبط، محاسبات ممکن است خیلی پیچیده شود. – ارتباطات بین نُود‌ها محدود به AND بوده حال آنکه یک Decision Graph این اجازه را به ما می‌دهند تا نُود‌هایی داشته باشیم که با OR به یکدیگر متصل شده‌اند.

 

درخت تصمیم قسمت 1

درخت تصمیم قسمت 2

درخت تصمیم قسمت 3

درخت تصمیم قسمت 4

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

کلیات

در آنالیز تصمیم، یک درخت تصمیم به عنوان ابزاری برای به تصویر کشیدن و آنالیز تصمیم، در جایی که مقادیر مورد انتظار از رقابت‌ها متناوباً محاسبه می‌شود، استفاده می‌گردد. یک درخت تصمیم دارای سه نوع گره‌است:

۱-گره تصمیم: به‌طور معمول با مربع نشان داده می‌شود.

۲-گره تصادفی: با دایره مشخص می‌شود.

۳-گره پایانی: با مثلث مشخص می‌شود.

Manual decision tree
Traditionally, decision trees have been created manually

نمودار درخت تصمیم گیری

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

مکان‌های مورد استفاده

درخت تصمیم، دیاگرام تصمیم و ابزارها و روش‌های دیگر مربوط به آنالیز تصمیم به دانشجویان دوره لیسانس در مدارس تجاری و اقتصادی و سلامت عمومی و تحقیق در عملیات و علوم مدیریت، آموخته می‌شود.

یکی دیگر از موارد استفاده از درخت تصمیم، در علم داده‌کاوی برای classification است.

الگوریتم ساخت درخت تصمیم‌گیری

مجموع داده‌ها را با نمایش می‌دهیم، یعنی، به قسمی که و . درخت تصمیم‌گیری سعی میکند بصورت بازگشتی داده‌ها را به قسمی از هم جدا کند که در هر گِرِه متغیرهای مستقلِ به هم نزدیک شده همسان شوند. هر گِره زیر مجموعه ای از داده هاست که بصورت بازگشتی ساخته شده است. به طور دقیقتر در گره اگر داده ما باشد سعی میکنیم یک بُعد از متغیرهایی وابسته را به همراه یک آستانه انتخاب کنیم و داده‌ها را برحسب این بُعد و آستانه به دو نیم تقسیم کنیم، به قسمی که بطور متوسط در هر دو نیم متغیرهای مستقل یا خیلی به هم نزدیک و همسان شده باشند. این بعد و آستانه را می‌نامیم. دامنه برابر است با و یک عدد صحیح است. برحسب به دو بخش و  به شکل پایین تقسیم می شود:

حال سؤال اینجاست که کدام بُعد از متغیرهای وابسته و چه آستانه‌ای را باید انتخاب کرد. به زبان ریاضی باید آن یی را انتخاب کرد که ناخالصی داده را کم کند. ناخالصی برحسب نوع مسئله تعریفی متفاوت خواهد داشت، مثلا اگر مسئله یک دسته‌بندی دوگانه است، ناخالصی می‌تواند آنتراپی داده باشد، کمترین ناخالصی زمانی است که هم و هم از یک دسته داشته باشند، یعنی در هر کدام از این دو گِرِه دو نوع دسته وجود نداشته باشد. برای رگرسیون این ناخالصی می تواند واریانس متغیر وابسته باشد. از آنجا که مقدار داده در و با هم متفاوت است میانگینی وزن‌دار از هر دو ناخالصی را به شکل پایین محاسبه می‌کنیم. در این معادله ، و :

هدف در اینجا پیدا کردن آن یی است که ناخالصی را کمینه کند، یعنی . حال همین کار را بصورت بازگشتی برای و انجام می‌دهیم. بعضی از گره ها را باید به برگ تبدیل کنیم، معیاری که برای تبدیل یک گره به برگ از آن استفاده می‌کنیم می‌تواند مقداری حداقلی برای  (تعداد داده در یک گره) و یا عمق درخت باشد به قسمی که اگر با دو نیم کردن گِره یکی از معیارها عوض شود، گِره را به دو نیم نکرده آنرا تبدیل به یک برگ میکنیم. معمولا این دو پارامتر باعث تنظیم مدل (Regularization) می‌شوند. در ابتدای کار گره شامل تمام داده‌ها می‌شود یعنی.

مسئله دسته‌بندی

اگر مسئله ما دسته‌بندی باشد و باشد تابع ناخالصی برای گره میتواند یکی از موارد پایین باشد، در این معادله‌ها

ناخالصی گینی:

ناخالصی آنتروپی:

ناخالصی خطا:

مسئله رگرسیون

در مسئله رگرسیون ناخالصی می‌تواند یکی از موارد پایین باشد:

میانگین خطای مربعات:

میانگین خطای قدر مطلق:

مزایا

در میان ابزارهای پشتیبانی تصمیم، درخت تصمیم و دیاگرام تصمیم دارای مزایای زیر هستند:

۱- فهم ساده: هر انسان با اندکی مطالعه و آموزش می‌تواند، طریقه کار با درخت تصمیم را بیاموزد.

۲- کار کردن با داده‌های بزرگ و پیچیده: درخت تصمیم در عین سادگی می‌تواند با داده‌های پیچیده به راحتی کار کند و از روی آن‌ها تصمیم بسازد.

۳-استفاده مجدد آسان: در صورتی که درخت تصمیم برای یک مسئله ساخته شد، نمونه‌های مختلف از آن مسئله را می‌توان با آن درخت تصمیم محاسبه کرد.

۴- قابلیت ترکیب با روش‌های دیگر: نتیجه درخت تصمیم را می‌توان با تکنیک‌های تصمیم‌سازی دیگر ترکیب کرده و نتایج بهتری بدست آورد.

معایب

۱- مشکل استفاده از درخت‌های تصمیم آن است که به صورت نمایی با بزرگ شدن مسئله بزرگ می‌شوند. ۲- اکثر درخت‌های تصمیم تنها از یک ویژگی برای شاخه زدن در گره‌ها استفاده می‌کنند در صورتی که ممکن است ویژگی‌ها دارای توزیع توأم باشند. ۳- ساخت درخت تصمیم در برنامه‌های داده کاوی حافظه زیادی را مصرف می‌کند زیرا برای هر گره باید معیار کارایی برای ویژگی‌های مختلف را ذخیره کند تا بتواند بهترین ویژگی را انتخاب کند.

 

منبع

 

درخت تصمیم قسمت 1

درخت تصمیم قسمت 2

درخت تصمیم قسمت 3

درخت تصمیم قسمت 4

هوش مصنوعی جدید وحشت آور سامسونگ می تواند Deepfakeهای سخنگو از یک تصویر تولید کند.

مشکل deepfake ما در مورد بدتر شدن است: مهندسان سامسونگ در حال حاضر سرهای سخنگوی واقع گرایانه ای را توسعه داده اند که می تواند از یک تصویر تولید شود، بنابراین AI حتی می تواند کلمات را در دهان مونا لیزا قرار دهد.

الگوریتم های جدید که توسط یک تیم از مرکز AI سامسونگ و موسسه علوم و فناوری Skolkovo توسعه یافته است، هر دو در مسکو به بهترین وجه با انواع تصاویر نمونه گرفته شده در زوایای مختلف کار می کنند، اما آنها می توانند تنها با یک تصویر برای کار کردن، حتی یک نقاشی، کاملا موثر باشند.

 

 

 

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

و در حالی که همه انواع برنامه های جالب وجود دارد که از تکنولوژی می توان برای آن استفاده کرد – مانند قرار دادن یک نسخه فوق واقع گرایانه از خودتان در واقعیت مجازی – این نگرانی وجود دارد که فیلم های ویدئویی کاملاً تقلبی را می توان از یک تصویر کوچک تولید کرد.

محققان در مقاله خود نوشتند: “چنین توانایی دارای کاربردهای عملی برای تلوزیون است،، از جمله ویدئو کنفرانس و بازی های چند نفره، و همچنین صنعت جلوه های ویژه.”

deepfake

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

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

 

deepfake new

 

این سیستم از یک شبکه عصبی کانولوشن، یک نوع شبکه عصبی بر اساس فرآیندهای بیولوژیکی در قشر بینایی حیوان استفاده می کند. این منحصراً در پردازش پشته های تصاویر و شناخت آنچه در آنها متخصص است – “convolution” اساساً بخش هایی از تصاویر را شناسایی و استخراج می کند (آن همچنین برای نمونه، در جستجوهای تصویری در وب و تکنولوژی خودرو خود راننده استفاده می شود).

همانند سایر ابزارهای تولید چهره هوش مصنوعی گرا که ما شاهد آن هستیم، آخرین مرحله در این فرآیند برای “واقع گرایی کامل” مورد بررسی قرار می گیرد – از لحاظ فنی یک مدل مولد رقابتی. هر فریمهایی که بیش از حد عجیب و غریب و غیر طبیعی هستند، دوباره برش داده و ارائه میشوند، ویدئو نهایی با کیفیت بهتر را به نمایش میگذارند.

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

سیستم و دیگران مانند آن، برای بهتر شدن محدود می شوند به طوریکه الگوریتم ها بهبود یابند و مدل های آموزشی موثرتر شوند – و این بدان معنی است که مجموعه ای کامل از سوالات در مورد اینکه آیا می توانید به آنچه که می بینید یا می شنوید اعتماد کنید، اگر در فرم دیجیتال باشد.

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

 

 

الگوریتم چکه آب های هوشمند یا چکاه (به انگلیسی: Intelligent Water Drops)، یک الگوریتم بهینه‌سازی بر پایه هوش گروهی است. الگوریتم چکه، الگوریتمی است که به گونه گروهی کار می‌کند و الهام گرفته از طبیعت است. این الگوریتم در اصل برای بهینه‌سازی ترکیبیاتی (Combinatorial optimization) به کار برده می‌شود ولی می‌توان آن را برای بهینه‌سازی پیوسته (Continuous optimization) نیز آماده ساخت. این الگوریتم نخستین بار در سال ۲۰۰۷ میلادی، برابر ۱۳۸۶ خورشیدی برای یافتن گشایش و راه حل برای مسأله فروشنده دوره‌گرد پیشنهاد شد. از آن پس، شماری از پژوهشگران در پی بهبود و به کار بستن این الگوریتم برای مشکل‌ها و مسئله‌های گوناگون بوده‌اند.

آشنایی

کم و بیش، هر الگوریتم چکه از دو بخش درست شده است: یک گرافی که نقش یک حافظه گسترده (distributed memory) را بازی می‌کند که بر روی آن خاک‌های لبه‌ها نگهداری می‌شود. بخش دیگر، که چندین چکه آب هوشمند (چکه‌ها) هستند که روی لبه‌ها جاری شده و از گره‌ای از گراف به گره‌ای دیگر می‌روند و با این کار خاک لبه‌های گذر کرده را دگرگون کرده و کمی به خاک در خود دارنده می‌افزایند. این چکه‌ها با همکاری و همچنین رقیبگری کاری می‌کنند تا گشایش‌های بهتری بیابند. این کار با دگرگونی خاک‌های روی گراف به گونه‌ای پیش می‌رود که گشایش‌های بهتر دسترس پذیرتر شوند. می دانیم که الگوریتم چکه دست کم نیاز به دو چکه دارد تا بتواند کار کند.

شبه-کد (pseudo-code)

الگوریتم IWD دارای دو گونه پارامتر هست: پارامترهای ایستا (static) و پویا (dynamic). پارامترهای ایستا در هنگام پردازش الگوریتم IWD، پایا (constant) هستند. پارامترهای پویا پس از هر بار تکرار الگوریتم، مقداردهی اولیه می‌شوند. میتوان شبه-کد یک الگوریتم چکاه-پایه را در هشت گام زیر بیان کرد:

1) مقداردهی اولیه‌ی پارامترهای ایستا

الف. بازنشانی مسئله در قالب یک گراف
ب. مقدار‌دهی برای پارامترهای ایستا
2) مقداردهی اولیه‌ی پارامترهای پویا: سرعت و خاک چکاه‌ها
3) پخش کردن چکاه ها روی گراف مسئله
4) ساخت راه‌حل با چکاه‌ها به همراه به روزکردن سرعت و خاک

الف. به‌روزرسانی محلی خاک در گراف
ب. به‌روزرسانی سرعت و خاک روی چکاه‌ها
5) جستجوی محلی روی هر راه‌حل چکاه(این گام دلخواه هست)
6) به‌روزکردن خاک سراسری
7) به‌روزکردن بهترین راه‌حل کلی
8) به گام ۲ برو تا زمانی‌که شرط خاتمه ارضا شود

کاربردها

برخی از کاربردهایی که با الگوریتم‌های چکه-پایه پیاده‌سازی شده‌اند در زیر آورده شده‌اند:

  • مسئله کوله‌پشتی چند بعدی
  • برنامه‌ریزی گذرگاه ربات هوایی
  • مشکل راه یابی رسانگر
  • الگوریتم راهیابیMANET
  • گسیل بار اقتصادی
  • مسئله فروشنده دوره‌گرد
  • مسئله مسیریابی وسایل نقلیه
  • سرگزینی ویژگی بافت
  • آستانه گیری خودکار چندتراز با یک سنجش بهبودیافته اتسو
  • بهینه‌سازی پیوسته
  • زمان‌ریزی فروشگاه کار
  • مسئله درخت اشتاینر
  • مشکل بیشینه همپالگان
  • درخت گردآوری داده بهینه در شبکه‌های حسگر بی سیم
  • زادگری داده آزمون بر پابه کاوش گذرگاه آزمون
  • پوشش کد و شناسه
  • بهینه کرد مدلهای فرایند زاد و کار
  • بهینه سازی پیمان نامه راهیابی
  • سرگزینی ویژگی بافه خشن
  • برنامه‌ریزی تولید و زمانبندی
  • زنجیره تأمین و مدیریت موجودیها

منبع


قطره‌های آب موجود در رودخانه‌ها می توانند به طور هوشمندانه کوتاه‌ترین مسیر را در رسیدن به دریا پیدا کنند. الگوریتم قطره های هوشمند آب در سال 2007 بر اساس این رفتار ارائه شد. در این الگوریتم قطره های آب دارای دو ویژگی مهم سرعت و میزان خاکی هستند که از زمین دریافت کرده‌اند و با خود جابه‌جا می کنند. هرچه میزان خاک آن‌ها کمتر باشد سرعت آن‌ها می‌تواند بیشتر شود. میزان خاک در واقع اطلاعاتی است که بین زمین و قطره‌های آب مبادله می‌شود. چون هرچه تعداد قطره های بیشتری از یک زمین عبور کرده باشند میزان خاک آن کمتر است یک قطره مسیری را ترجیح می دهد که خاک کمتری داشته باشد. اگر گام‌های حرکت قطره‌ها به صورت گسسته باشد می‌توان فرض کرد قطره روی نودهای یک گراف در حال حرکت است. عملکرد الگوریتم که در آن قطره‌های آب نماینده پاسخ‌های مساله هستند و به صورت رندم بر هریک از نودهای گراف مقداردهی می‌شوند به این صورت است که در تعدادی تکرار برای هر قطره مراحل زیر انجام می شود :

1) به ازای هر نود بعدی آن نود با احتمال P طوری انتخاب می شود که قبلا مشاهده نشده باشد و ضمنا شروط مساله را نیز نقض نکند. P متناسب با معکوس میزان خاک بین دو نود مربوطه است.

2) سرعت قطره به روزرسانی می شود به طوری‌که هرچه خاک بیشتری بین دو نود وجود داشته باشد مقدار کمتری به سرعت آن افزوده می‌شود.

3) میزان  خاکی که قطره از مسیر جمع‌آوری می‌کند متناسب با مقدار هیوریستیک مساله و همچنین معکوس سرعت ذره محاسبه می‌گردد. (∆soil(i,j))

4) میزان خاک موجود بین دو نود و خاکی که توسط قطره حمل می‌شود  توسط ∆soil(i,j) به روزرسانی می‌شود.

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

soil(i,j) = (1+ρIWD).soil(i,j) – ρIWD .soilIBIWD/(NIB-1)    (i,j) ϵ TIB

که در آن ρIWD پارامتر به روزرسانی سراسری، NIB تعداد نودهای بهترین مسیر در تکرار جاری و soilIBIWD قطره ای است که بهترین مسیر را پیموده است. soil(i,j) میزان خاک بین دو نود در بهترین مسیر جاری است.

همچنین بهترین مسیر سراسری با توجه به بهترین مسیر در تکرار جاری امکان دارد تغییر کند.

منبع


اصول iwd

الگوریتم مبتنی بر ذرات است. سوال اصلی چگونه پیچ و تابهای رودخانه ایجاد شده است. می خواهیم از این مکانیزم هوش طبیعی استفاده کنیم. Iwd با دو ویژگی مهم شناخته می شود:

  1. سرعت(velocity)
  2. شن(soil)

هر دو خاصیت بالا در طول عمر یک IWD بارها تغییر می کند. یک IWd از یک منبع به یک مقصد جریان می یابد. IWD سفر خود را با یک سرعت اولیه و Soil صفر آغاز می کند.در دوران سفر به سرعت خود می افزاید.

از موقعیت جاری IWD تا موقعیت بعدی سرعتش با مقدار متنایب غیر خطی تا معکوس Soilهای بین دو محل افزایش می یابد.

نابراین یک مسیر با شن کمتر iwd را با سرعت بیشتری از مسیر خاکی تر پیش می برد .مقدار شن اضافه شده به IWD خاصیت غیر خطی به معکوس زمان لازم برای iwd برای عبور از محل جاری به محل بعدی است. این بازه زمانی با قواعد ساده فیزیک برای حرکت خطی محاسبه می گردد .بنابراین زمان سپری شده متناسب با سرعت iwd و به طور معکوس با فاصله بین دو محل در نظر گرفته می شود.پس محل دارای iwd بیشتر شن کمتر دارد. پس در مورد شن حافظه دارند .یک iwd در مورد انتخاب مسیر محل بعدی یا مرحله بعدی به مکانیزم انتخاب نیاز دارد .که در این مکانیزم محل با شن کمتر ترجیح داده می شود .این رفتار انتخاب مسیر، بوسیله تحمیل یک توزیع تصادفی یکنواخت روی شنهای موجود در مسیر ، پیاده سازی می شود. پس رودخانه بهترین مسیر از بین مسیرهای ممکن از مبدأ به مقصد است .این مسیر بهینه یا نزدیک به بهینه از تراکنش قطرات آب باهم و با بستر رودخانه ایجاد می گردد.

الگوریتم IWD

الگوریتم با نمایش گرافی (N,E) است. با نودهای N و یالهای E است. پس هر IWD شروع به ساختن راه حل تدریجی بوسیله گردش در راسهای گراف در طول یالها می کند. و تا آنجا که راه حلش را کامل کند ادامه می دهد .یک تکرار الگوریتم با کامل شدن همه IWDها راه حلها تمام می شود .بعد از هر تکرار، راه حل بهترین تکرار که فرمول نامیده می شود، یافت می شود که برای بروز رسانی بهترین راه حل کلی فرمول به کار می رود .مقدار خاک در روی لبه های راه حل بهترین تکرار فرمول بر مبنای کیفیت راه حل کاهش می یابد. سپس الگوریتم با تکرار دیگر با IWDهای جدید شروع می شود .ولی با خاکهای همانند روی مسیرهای گراف و همه فرآیندها تکرار می شود .الگوریتم وقتی به ماکزیمم تکرار iter(max) می رسد و یا به کیفیت مورد نظر رسید، پایان می یابد. الگوریتم IWD دو نوع پارامتر دارد. یکی در طول عمر الگوریتم ثابت و استاتیک است. دیگری در هر تکرار الگوریتم دوباره شروع می شود و پویا است.

مراحل الگوریتم IWD عبارت است:

1- مقدار دهی اولیه پارامترهای ثابت .گراف (N,E) مساله به الگوریتم داده می شود. کیفیت راه حل کلی بهتر یعنی فرمول در ابتدا به بدترین تنطیم می شود. فرمول 1  Iter(max) بوسیله کاربر تعیین می شود .که مقدارش ابتدا به صفر مقداردهی اولیه می شود. مقدار قطرات آب فرمول 2 یک مقدار مثبت صحیح می گیرد که معمولا تعداد نودها فرمول 3 گراف است .برای بروز رسانی سرعت پارامترها cv=1 و bv=0.01 و av=1 . برای بروز رسانی پارامتر شن  cs=1 و bs=0.01 و as=1 و فرمول 4 پارامتر بروزرسانی شن محلی است که یک عدد مثبت کوچک کمتر از یک است که فرمول 5 می گیرند .پارامترهای بروز رسانی شن کلی  است .که در بازه [0,1] انتخاب می شود مثل 0.9 . همچنین مقداردهی اولیه خاک در مسیر (لبه-یال )با ثابت InitSoil مشخص میشود. مانند خاک مسیر بین هر دو نود i,j که با  initsoil=soil(i,j) سرعت اولیه هر IWD با initvel مشخص می شود. هر دو پارامتر مذکور به انتخاب کاربر و تجربی بسته به کاربرد است مثلاً ما initsoil=10000 و initvel=200 می گیریم.

2- مقداردهی اولیه پارامترهای پویا. هر IWD یک لیست نودهای ملاقات شده Vc(IWD) که ابتدا تهی است. همه IWDها به مقدار شن اولیه صفر تنطیم شده اند.

3- IWDها را به طور تصادفی در رئوس گراف به عنوان اولین نود ملاقات شده پخش می کنیم.

4- بروزرسانی لیست ملاقات شده هر IWD برای شامل کردن نودهای ملاقات شده

5- مراحل زیر یعنی 5-1 تا 5-4 را برای همه IWDها با راه حل های جزئی تکرار می شود.

   1-5- برای هر IWD مقیم در نود i، نود بعدی j  را انتخاب می کنیم. به طوری که محدودیت های پر شده را نقض نکند و در لیست نودهای ملاقات شده Vc(IWD) نباشد. با احتمال زیر :

فرمول 6

سپس نود j تازه ملاقات شده به لیست Vc(IWD) اضافه می شود.

    2-5- برای هر IWD در حال حرکت از i به j سرعتش با فرمول زیر بروزرسانی می شود.

فرمول 8

    3-5- برای هر حرکت IWD روی مسیر از i به j شن از فرمول زیر بارگذاری می شود.

فرمول 9

که میزان نامطلوبیت اکتشافی با تقریب مناسب برای مسأله تعیین می شود.

بروزرسانی شن در مسیر از i به j پیمایش شده و شن حمل شده بوسیله IWD با فرمول زیر:

فرمول 10

6- پیدا کردن بهترین راه حل تکرار جاری در بین همه راه حل های بوسیله بقیه IWDها با فرمول زیر:

فرمول 11

که تابع q کیفیت مسیر را نشان می دهد.

7- بروزرسانی شن ها در مسیرهایی که از راه حل بهتر تکرار جاری حاصل می شود.

فرمول 12

که N تعداد نودها در راه حل بهینه محلی کنونی است.

8- بروزرسانی راه حل کلی بهتر بوسیله بهترین راه حل کنونی با استفاده از فرمول زیر:

فرمول 13

9- افزایش مقدار شمارنده:

فرمول 14

10- توقف الگوریتم با مقدار بهترین راه حل کلی فرمول 15

این نشاندهنده این است که IWDها همگرایی دارند. یعنی قدرت همگرایی برای یافتن بهینه در مسائل با تکرار بسیار بالا دارد .مانند الگوریتم مورچه که فرومون بخار می شود اینجا نیز شنها در مسیر حرکتی پاک می شوند .ولی برخلاف فرمون اینجا مقدار شن ثابت نیست و به سرعت و مقدار شن موجود در مسیر بستگی دارد .همچینین سرعت IWD به الگوریتم بستگی دارد ولی در مورچه وابسته به الگوریتم نیست.

الگوریتم چکه آب های هوشمند


منابع

1.https://fa.wikipedia.org

2.http://fumblog.um.ac.ir