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

سیستم های چندعاملی (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)

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

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

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

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