« اگر "بازی" نبود.... | صفحه اصلی | برنامه ریزی استراتژیک برای شرکتهای نرم افزاری 6 - یارکشی »

نگاهی به تعاریف رایج در مورد عامل ها (Agents)

August 6, 2007 03:43 PM

امروزه بکارگیری هوش مصنوعی (AI:Artificial Intelligence) در سیستمهای تجاری امری مرسوم و پرکاربرد است (هر چند در ایران هنوز این مساله به شکلی جدی مطرح نشده ، اما نمونه هایی مشاهده می شود).   عاملهای هوشمند (IA:Inteligent Agent) نیز  به عنوان یک جزء از  هوش مصنوعی توزیع شده، باعث شده است که در شبکه ها و یا رویداد های مربوط به گروه های افراد، استفاده از عاملها و عاملهای هوشمند رواج بیشتری نسبت به سایر موارد داشته باشد، به شکلی که امروزه بحث مهندسی نرم افزاری مبتنی بر عامل ها (Agent Based Software Engineering) و روشهای تجزیه تحلیل، چارچوب های برنامه سازی و محیط های توسعه آن بیشتر مورد توجه قرار گرفته است. در ادامه در سلسله مطالبی، به تعریف مبانی این گونه جدید از مهندسی نرم افزار خواهم پرداخت. علی الحساب در این نوشته نگاهی بیاندازید به تعاریف "عامل" از دیدگاه های مختلف.
در فرهنگ لغات  Agent چنین معنی می شود : "فاعل ، نماینده ، گماشته ، وکیل ، مامور ، عامل ، مباشر، واسطه ، پیشکار ، امین و کارگزار ". بدین ترتیب به عنوان یک تعریف پایه می توان Agent   را کسی دانست که به جای شخص یا چیز دیگری عمل می کند.
یک عامل دارای خصوصیات مختلفی است ؛ داشتن برخی از این خصوصیات برای یک عامل اجباری و بقیه اختیاری است. از جمله خصوصیات اجباری می توان به خواص autonomous (خودمختار بودن) ، interactive (دارای عمل متقابل بودن)  و reactive (واکنش دار بودن ) می باشد. از جمله خصوصیات اختیاری می توان به خواص mobility (متحرک بودن ) ، intelligence (هوش ) و trustworthiness (قابلیت اعتماد) اشاره کرد. این خصوصیات  عبارتند از :

-خودمختار بودن (Autonomous) : بتواند بدون دخالت یک محرک خارجی کارکند و تاحدی با استفاده از تجربه های شخصی بر حالات درونی و رفتارهای خود کنترل داشته باشد.
-دارای عمل متقابل بودن (Interactive) : با محیط و سایر عامل ها رابطه داشته باشد.
-سازگاری (Adaptive) : قابلیت پاسخگویی به محیط یا سایر عامل ها در درجات مختلف (بیشترین سازگاری زمانی است که عامل اجازه داشته باشد رفتار خود را بر اساس تجربیاتش تغییر دهد).
-اجتماعی بودن (Sociable) : با سایر عامل های دوست یا همکار تعامل خوب، دوستانه و اجتماعی داشته باشد.
-متحرک بودن (Mobile) : بتواند از یک محیط به یک محیط دیگر برود.
-وکالت (Proxy) : بتواند به عنوان وکیل شخص یا چیز دیگر عمل کند. بدین شکل که مطابق میل ان رفتار کند. یا مسؤولیت های آن را قبول کند و یا برای بدست آوردن منافع او تلاش کند.
-کنشگرا ((Proactive: هدفمند و با قصد مشخص، به عبارت دیگر صرفا در مقابل محیط واکنش های ساده نمی کند.
-هوشمند (Intelligent) : حالتها با دانشهایی شکل رسمی گرفته (مانند اعتقادات ، اهداف ، برنامه ها و فرضیات ) و عامل با سایر عاملها با یک زبان سمبولیک تعامل می کند.
-منطقی (Rational) : قابلیت آم را داشته باشد که کاری را بر اساس اهداف داخلی خود انجام دهد که وی را به این اهداف نزدیک سازد.
-غیرقابل پیش بینی (Unpredictable) : بتواند به نوعی رفتار کند که کاملا قابل پیش بینی نباشد حتی اگر شرایط آغازین کار کاملا شناخته شده باشد. به عبارت دیگر بتواند به طور غیرقطعی رفتار کند.
-پیوسته زمانی (Temporally Continuous) : فرآیند اجرای پیوسته ای داشته باشد.
-شخصیت (Character) : شخصیت و احساس قابل باوری داشته باشد.
-شفاف و قابل حساب (Transparent and Accountable) : به اندازه کافی شفاف باشد و در موقع نیاز گزارش فعالیت های خود را ثبت کند .
-هماهنگ (Coordinative) : بتواند فعالیتهایی را با سایر عاملها در یک محیط مشترک انجام دهد . این فعالیت ها اغلب در قالب یک برنامه، جریان کار و یا یک مکانیسم دیگر مدیریت پردازش ها هماهنگ شده اند.
-همکاری (Cooperative) : بتواند با سایر عاملها برای رسیدن به یک هدف مشخص هماهنگ عمل کند به طوری که شکست یا موفقیت عامل به این رابطه وابسته باشد. (مفهموم Collaboration نیز مفهومی نزدیک به این رابطه دارد.)
-رقابت (Competitive) : با سایر عاملهای دیگر چنان هماهنگ باشد که موفقیت یک عامل سبب شکست دیگری باشد . (مخالف همکاری)
-نیرومند (Rugged) : بتواند با خطاها و یا اطلاعات ناقص رفتار محکم و درستی داشته باشد.
-پقابل اعتماد (Trustworthy) : به قوانین موجود وفادار بوده، راستگو باشد.
-....

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

عامل Mubot : "لغت عامل برای نشان داده دو مفهوم متعامد به کار می رود. اولین مفهوم قابلیت اجرای خودکار عامل می باشد و دومین مفهوم قابلیت انجام دادن تصمیم گیری های مبتی بر دامنه است ."
عامل AIMA : "یک عامل چیزی است که می تواند محیط را از طریق حسگر هایش درک کند و با کمک عملگرهایش بر روی محیط تاثیر بگذارد."
عامل Maes : "عامل خودکار یک سیستم محاسباتی است که در یک محیط پیچیده پویا ساکن است. در این محیط به صورت خودکار حس می کند و بر اساس آن عمل می کند و بدین ترتیب اهدافی که بر اساس آن طراحی شده است را محقق می سازد."
عامل KidSim : "عامل بدین صورت تعریف می شود : یک موجودیت نرم افزار پایدار که برای یک هدف خاص در نظر گرفته شده است. پایداری عامل را از زیربرنامه ها متمایز می سازد؛ عاملها نظرات خاص خود را در مورد انجام یک عمل دارند . هدف خاص آنها را از سایر برنامه های چند کاره جدا می سازد؛ عاملها بسیار کوچک ترند. "
عامل Hayes-Roth : "عاملهای هوشمند به طور پیوسته سه عمل را انجام می دهند: استنباط شرایط پویا در محیط ، استدلال برای تفسیر این استنباط ها، حل مساله، ترسیم نتیجه گیری ها و تعیین اعمال ."
عامل IBM : "عاملهای هوشمند موجودیت های نرم افزاری هستند که یک سری عملیات را به عنوان نماینده یک کاربر یا یک برنامه دیگر و با درجه خاصی از استقلال یا خودمختاری برعهده دارند و برای انجام چنین کاری بخشی از دانش و یا نمایش اهداف و امیال کاربر را به کار می گیرند."
عامل Wooldridge : " سیستم کامپیوتری مبتنی بر سخت افزار و یا به طور معمول تر نرم افزاری که مشخصات زیر را داشته باشد :
• خودمختاری : عامل بدون دخالت مستقیم انسان و یا دیگران عمل می کند و تا حدودی بر عملکرد و حالات درونی خود کنترل دارد.
•قابلیت اجتماعی : عاملها با سایر عاملها (وحتی انسانها) بوسیله انواع زبانهای ارتباطی عاملها در تعامل می باشند.
•واکنشپذیری : عامل محیط خود را درک می کند (ممکن است یک کلمه باشد ، یک کاربر از طریق یک واسط کاربری باشد، مجموعه ای از عاملهای دیگر باشد ویا ترکیبی از همه اینها ) و به موقع در مقابل تغییرات اعمال شده در آن واکنش نشان می دهد.
•Pro-activeness: عاملها تنها به واسطه پاسخ به محیط عمل نمی کنند بلکه خود می توانند به واسطه اهداف خود آغاز گر یک عمل باشند. "

عامل SodaBot : "عامل های نرم افزاری ، برنامه هایی هستند که در یک گفتگو شرکت می کنند ، مذاکره می کنند و تبادل اطلاعات را هماهنگ می کنند. "
عامل Brustoloni : "عاملهای خودمختار سیستمهایی هستند که می توانند در دنیای واقعی خودمختار و هدفمند عمل کند. "
عامل Jennings : "يك عامل يك سيستم كامپيوتري كپسوله است كه در يك محيط قرار دارد و قادر به انجام عمليات خودكار و قابل انعطاف در اين محيط براي رسيدن به اهداف طراحي آن مي باشد."
تعریف اخیر تعریفی است که در عین سادگی به نظر می رسد نمایانگر مشخصات اصلی یک عامل است . در مطلب مرتبط بعدی به تعاریف سیستمهای چند عامله (Multi Agent System ) خواهم پرداخت.
همین!

Ali Vahed | 03:43 PM

 

نظرخواهی