با اينکه زمان زيادي از پيدايش اين گونه سيستمها نميگذرد ولي استفاده از روشهاي طراحي بر اساس عامل يکي از موفقترين راهحلهاي موجود بوده و حاصل اين شيوه طراحي يعني سيستم حل مسائل به صورت توزيعشده از بهترين سيستمها به شمار ميآيد و به عنوان ابزار جديدي براي حل انواع فرآيندهاي انساني شناخته ميشود.
اين نوع سيستمها نسبت به سيستمهاي معمولي و تکعاملي، مزاياي زيادي دارند؛ از جمله اينکه در اکثر شرايط کار ميکنند. به اين معنا که چون مغز متفکر واحد ندارند و تصميمگيري در آنها به صورت توزيعشده است، چنانچه حتي بخشي از آنها نيز از کار بيفتد باز هم به کار خود ادامه ميدهند.
همچنين اين نوع سيستمها براي محيطهايي با مقياس وسيع(Large Scale) و محيطهاي ناشناخته نيز گزينه مناسبي نسبت به سيستمهاي تکعاملي به شمار ميآيند.
سيستمهاي مبتني بر عامل، پردازش موازي را آسان کرده و به راحتي موازي ميشوند. منظور از پردازش موازي اين است که به جاي انجام يک پروژه با محاسبات زياد و پردازشهاي سنگين توسط يک پردازشگر، همان پروژه را به پردازشهاي کوچکتر با حجم محاسبات کمتر شکسته و آن را توسط چندين عامل انجام دهيم. مثلاً ميزي را تصور کنيد که براي بلند کردنش به ۱۰۰ نيوتن نيرو احتياج داريم،
حال هم ميتوانيم آن را توسط يک نفر که توانايي اعمال ۱۰۰ نيوتن نيرو را دارد، بلند کنيم و هم اين کار را به کمک چهار نفر که هر کدام ۲۵ نيوتن نيرو به اشتراک ميگذارند، انجام دهيم. در نتيجه، هزينهها در چنين سيستمي پايين ميآيد و نيازي به صرف هزينه کلان جهت ايجاد امکان پردازش سنگين براي يک عامل نيست.
در اين صورت، چندين عامل با قدرت پردازشي کمتر همان کار را حتي سريعتر انجام ميدهند. البته اين نوع سيستمها به نوبه خود معايبي نيز دارند که استفاده از آنها را محدود ميکند. مهمترين عيب اين سيستم عاملها، کندي اندک در کار طراحي آنها و موازيسازي است که به نتيجه رساندن پروژه را به تعويق مياندازد.
تعريف سيستم چندعاملي
قبل از تعريف سيستم مبتني بر چندعامل، لازم است ابتدا خود عامل را معرفي کنيم. عامل يا agent يک سيستم کامپيوتري است که قادر به انجام اعمال مستقل و خودکار از طرف کاربر يا صاحب خود است. نکته اصلي در مورد عاملها، خودمختاري آنهاست، به اين معنا که عاملها قادرند به طور مستقل عمل کنند و کنترلي روي حالات داخلي خود داشته باشند.
بدين ترتيب تعريف ديگري که براي عامل ميتوان داشت اين است که يک عامل يک برنامه کامپيوتري است که در بعضي محيطها قادر به انجام کارهاي خودمختار يا به اصطلاح autonomous است.
در دستهبندي سادهاي از عاملها ميتوان به دو نوع عامل اشاره کرد، يکي عاملهاي ساده و کماهميتتر (Trivial Agents) که مثال ساده آن، ترموستاتها هستند و دوم عاملهاي هوشمند (Intelligent Agents ) که در واقع همان برنامه کامپيوتري است که در بعضي محيطها قادر به انجام اعمال خودمختار و انعطافپذير است.
در اينجا منظور از انعطافپذير، انجام اعمال واکنشدار (داراي عکسالعمل) و پيشبيني يک واکنش و انجام زودتر عمل مناسب است.
به عنوان اولين تعريف براي يک سيستم چندعاملي ميتوان گفت: سيستم چندعاملي به سيستمي گفته ميشود که از تعدادي عامل (agent) تشکيلشده است. اين عاملها هر کدام به نوبه خود فعل و انفعالات داخلي داشته و در محيط خارج نيز با يکديگر ارتباط دارند.
در بيشتر موارد، عامل، با داشتن اطلاعات خاص و محرکهاي مختلف، از طرف کاربر عمل ميکند و در واقع يک عامل، ميتواند نمايندهاي از طرف انسان باشد که در محيطهاي مجازي مانند او به تصميمگيري و انجام کارهاي مختلف ميپردازد.
براي داشتن ارتباطات داخلي موفق بين عاملها، آنها نياز دارند که با يکديگر همکاري کنند، هماهنگ باشند و مذاکره دوطرفه داشته باشند. درست به همان اندازه که انسانها در ارتباطات روزانه خود با هم ارتباط دارند و به مذاکره و داد و ستد ميپردازند.
دو مسئله کليدي در طراحي سيستم چندعاملي
دو مسئله کليدي که در طراحي سيستمهاي چندعاملي مطرح است: اول طراحي عامل و دوم طراحي محيطي براي عملکرد و ارتباط ميان عاملها. در طراحي عامل، چگونگي ساخت عاملي که قادر به انجام کارهاي مستقل و اعمال خودمختار باشد مدنظر است.
به گونهاي که بتواند کارهايي که بر عمدهاش گذاشتهايم را با موفقيت انجام دهد. در طراحي اجتماع يا محيط عاملها، نکته اساسي اين است که چگونه عاملهايي طراحي کنيم که قادر به برقراري ارتباط با يکديگر باشند.
منظور از اين ارتباط همان همکاري، هماهنگي و مذاکره بين عاملهاست. اين کار براي انجام موفقيتآميز وظايفي که بر عهده آنها گذاشتهايم، ضروري است؛ چرا که همه عاملها اهداف مشترک ندارند يا نميتوانند با علايق يکسان ساخته شوند.
دو مثال از کاربرد سيستمهاي چندعاملي
مثالي از کاربرد عاملها کنترل سفينه فضايي (Aircraft control) است. وقتي يک کاوشگر فضايي (سفينه فضايي) براي انجام کارهاي تحقيقاتي به فضا يا به کرات ديگر عزيمت ميکند، يک سفر طولانيمدت در پيش دارد.
از زماني که اين سفينه و گروه تحقيقاتي، پرواز خود را از سطح کره زمين آغاز ميکند يک تيم زميني با تعداد افراد زياد لازم است تا به طور مدام مراحل پيشرفت و حرکت سفينه را دنبال و بررسي کنند و در مورد حوادث غيرمنتظره که ممکن است براي سفينه پيشآيد تصميم بگيرند.
اين امر بسيار پرهزينه است و اگر نياز به تصميمگيري فوري و ضروري داشته باشد کارايي چنداني ندارد. به همين دليل سازمانهاي هوايي و فضايي مانند NASA به طور جدي مشغول تحقيق و بررسي روي امکان ساخت کاوشگري فضايي هستند که بيشتر خودکار باشد تا بتوانند تنها در مواقع ضروري تصميمات فوري را به صورت بهينه بگيرند و به نظارت کنترلي و مراقبت ۲۴ساعته از روي زمين نياز نداشته باشند.
اين امر يک افسانه يا داستان نيست و مهندسين NASA مشغول بررسي و ساخت چنين سفينهاي بر اساس سيستم چندعاملي هستند. طبق اطلاعات موجود و خواص سيستمهاي چندعاملي، براي دستيابي به اين هدف عاملها ابزار بسيار مناسبي شناخته شدهاند.
مثال ديگري از کاربرد عاملها، جستوجوي اينترنت است که توسط عاملهاي اينترنتي انجام ميشود. جستوجو در اينترنت براي يافتن جواب يک سئوال خاص، ميتواند پروسه طولاني و خستهکنندهاي باشد. بنابراين چرا اين اجازه را به برنامههاي کامپيوتري- عامل- ندهيم که عمل جستوجو را براي ما انجام دهند.
به عنوان مثال، ميتوان سئوال يا مسئلهاي را به يک عامل داد که پاسخ آن نيازمند ترکيبي از اطلاعات اينترنتي است و لازم است که منابع مختلفي در وب جستوجو شود. اين عمل به راحتي ميتواند توسط برنامه تحت وبي که ما مينويسيم و عاملي که بر روي اينترنت ايجاد ميکنيم، انجام شود.
عاملها و سيستمهاي خبره (Expert Systems)
سئوالي که مطرح ميشود اين است که آيا عاملها همان سيستم خبره هستند ولي با نامي متفاوت؟ ابتدا ببينيم سيستم خبره چيست؟ سيستم خبره، يک برنامه کامپيوتري است که عمليات مربوط به تصميمگيري و استدلال و اظهار نظر در رابطه با يک موضوع را با ترکيبي از اطلاعات، تعقل و دانش و همچنين با در دست داشتن دانش و تجربه يک متخصص انجام ميدهد و بر اين اساس، وظيفه حل مشکلات يا ارائه مشاوره را بر عهده دارد.
سيستمهاي خبره به طور معمول بدون بدنه و ساختاري بيروني هستند که در يک زمينه خاصي متخصص و يا به اصطلاح خبره ميشوند. براي مثال سيستم MYCIN نمونهاي از يک سيستم خبره است که مطالب زيادي درباره بيماريهاي خوني انسانها ميداند. در اين سيستم، اطلاعات بسيار وسيعي در مورد بيماريها و امراض خوني به فرم يک سري قاعده و دستورات ذخيره شده که ميتواند با گرفتن مشخصات بيمار و شرايط موجود، نوع بيماري را تشخيص دهد. يک پزشک به راحتي ميتواند با دادن واقعيتهاي موجود به سيستم، توصيههاي تخصصي و در اکثر مواقع قابلاعتمادي را از اين ماشين دريافت کند.
تفاوت اصلي سيستمهاي خبره با سيستمهاي چندعاملي را ميتوان در دو مورد زير بيان کرد:
۱- عاملها در محيطي قرار ميگيرند که ميتوانند روي آن تاثيرگذار باشند و از آن تاثير بپذيرند؛ در حالي که عملکرد سيستمهاي خبره مانند MYCIN کاملاً مستقل از محيط بوده و از دنياي اطراف آگاه نيست و اطلاعات به دست آمده از سيستم خبره مبتني بر پايگاه دانشاش و سئوالاتي است که از کاربر ميپرسد.
۲- عامل به عنوان نمايندهاي از طرف کاربر، عملي را انجام ميدهد ولي سيستم خبره مانند MYCIN هيچ عملي در محيط يا روي بيمار انجام نميدهد.
يک سيستم خبره به جاي انجام عمليات رياضي و استدلال، بر پايه دانش انساني تعقل ميکند. در اين روش، دانش در لفاف يک زبان مخصوص، درون برنامه نگهداري ميشود که به عنوان پايگاه دانش سيستم خبره شناخته ميشود. پس به زباني ساده، يک سيستم خبره را ميتوان به صورت زير تعريف کرد:
سيستم خبره يک برنامه کامپيوتري است که با
استفاده از پايگاه دانش و موتور استنتاج يا نتيجهگيري خود، دانش و تجربه
لازم در مورد يک موضوع مشخص را در کنار دريافت اطلاعات در مورد مسئله يا
موقعيت کنوني (که مربوط به دانش خودش است) به کار ميگيرد و تصميمگيري يا
نتيجهگيري درستي را که از يک انسان خبره انتظار ميرود، انجام ميدهد.
در حالي که عامل يک سيستم کامپيوتري است که قادر به انجام اعمال مستقل و اتوماتيک از طرف کاربر يا صاحب خود است.
پس با مقايسه تعاريف و نحوه عمل و طراحي هر کدام متوجه ميشويم که اين دو سيستم متفاوتاند و نبايد آنها را درهم آميخت.
عاملهاي هوشمند و هوش مصنوعي (AI)
سئوالي که در مورد سيستمهاي چندعاملي و هوش مصنوعي به ذهن ميآيد اين است که آيا طراحي سيستمهاي چندعاملي همان پروژههاي مطرح در هوش مصنوعي است؟ آيا ساختن يک عامل تماماً همان موضوعات مورد بحث در هوش مصنوعي نيست؟
در جواب بايد گفت، هدف هوش مصنوعي، ساختن سيستمهاي هوشمندي است که بتوانند به خوبي زبان طبيعي را بفهمند، احساس را درک کنند و قادر به استفاده از حواس پنجگانه انساني بوده، داراي فکر خلاق باشند و غيره… که کار بسيار مشکلي است. پس آيا ساخت يک عامل توسط الگوريتمهاي هوش مصنوعي که بتواند همه اين کارها را انجام دهد، نيازمند حل همه اين الگوريتمها نيست؟ مسلماً جواب مثبت است.
ولي ما در هنگام ساخت يک عامل، به طور ساده سيستمي ميخواهيم که بتواند در يک محيط محدود عمل مناسب و درست را انتخاب کرده و انجام دهد. بنابراين براي ساخت يک عامل ما ملزم به حل همه مسائل موجود در هوش مصنوعي نيستيم.
همانطور که گفته شد با وجود عمر کم سيستمهاي مبتني بر چندعامل، به دليل قابليت بالا در موازيسازي، روش طراحي براساس عامل و حل مسائل به صورت توزيعشده جزء موفقترين روشهاي حل مسئله است و اين سيستمها ابزار بسيار بديعي براي شبيهسازي کامپيوتري فراهم آوردهاند که ميتواند نور اميدي براي روشن شدن انواع مسائل مربوط به انسان و زندگي او باشد.
