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

September 29, 2007 12:03 AM

با طرح تعاریفی در مورد عاملها (Agents)  در این نوشته می خواهم نگاهی به سیستمهای چند عامله ،  Multi Agent System،  داشته باشم.  بسیاری از  سیستم های تجاری اولیه عامل را برای هدف جستجو مورد استفاده قرار دادند . در این سیستم ها عاملهای منفرد به مراکز معینی متصل می شدند ، اطلاعات لازم را جمع آوری می کردند و در نهایت به نزد کاربر درخواست کننده بر می گشتند. به عبارت دیگر عاملها یک کار انفرادی  داشتند و در مقیاس بسیار کمی – اگر بود – با عاملهای دیگر تعامل داشتند. این روش باوجودیکه کاربردهای زیاد خاص خود را دارد نمی تواند به تنهایی یک اجتماع یا یک سازمان ایجاد کند که بتواند نیازهای دیگر کاربران را برآورده سازد . در عوض در محیط های انسانی ما یک شبکه از افراد را داریم که برای منظورهای مختلف با یکدیگر در تعامل می باشند. بدین ترتیب برای ایجاد یک جامعه از عاملها نه تنها نیاز است که بین آنها ارتباط برقرار کرد بلکه عاملها باید بتوانند با یکدیگر هماهنگ هم باشند. این هماهنگی می تواند جنبه های مختلف همکاری و یا رقابتی داشته باشد. این جوامع، سیستمهای چند عامله (MAS) نامیده می شوند.
به عبارت دیگر "یک سیستم چند عامله یک  پیاده سازی با تاکید بر همکاری از برنامه ها (عاملها) است که با یکدیگر هماهنگ شده اند برای رسیدن به همگرایی روی  پاسخ یک یا چند وظیفه"

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

Ali Vahed | 12:03 AM

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

August 6, 2007 3: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 | 3:43 PM

مذاکره ( Negotiation)

April 20, 2005 2:47 AM

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

اما این مطلب چه ربطی به فنآوری اطلاعات و ارتباطات دارد!!؟ هیچ!

ربطش آنست که دو سال پیش تحقیقی نسبتا مفصل داشتم در زمینه مذاکره بین عاملها (Agent Negotiation). آن روز ها برایم خیلی مهم بود که تعریفی جامع و مانع برای "مذاکره" پیدا کنم. تعاریف زیر تلاش هایی در این زمینه است. تعاریفی که تعریف مذاکره را از یک مکالمه ساده دور می کنند و به یک چانه زنی  نزدیک تر می کنند.
در تعريف مذاكره آمده است:
 "نوعي از تصميم گيري كه در آن دو يا چند طرف مشتركا و با هدف رسيدن به يك اجماع به دنبال يك راه حل احتمالی مي گردند“
بدین ترتیب،  دلیل اینکه یک مذاکره اتفاق می افتد چنین بیان شده است :
"مذاکره به یکی از دو دلیل ذیل رخ می دهد :
1-برای ایجاد چیز جدیدی که هیچکدام از طرفین نمی توانند آن را به تنهایی بسازند.
2-برای حل مساله یا مشاجره بین طرفین"

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

-در تحلیل های تصمیم گیری و مذاکره : یک تعریف در این دیدگاه چنین است :" مذاکره نوعی تصمیم گیری است که دو یا چند عامل به صورت فعال که خود نمی توانند به صورت مستقل تصمیم بگیرند ، در آن شرکت دارند و بنابراین باید بپذیرند که روی این تصمیم با یکدیگر مصالحه کنند."
در این دیدگاه مشخصات عمومی یک مذاکره چنین آمده است:
1-در مذاکره دو یا چند طرف شرکت می کنند. این طرفین می توانند افراد مستقل، گروهها و با سازمانها باشند.
2-بین علاقه های دو یا چند طرف یک تضاد وجود دارد. بدین معنی که چیزی که یکی می خواهد لزوما جیزی نیست که دیگری نیز بخواهد و طرفین بایستی به دنبال راه حلی بگردند که این تضاد را برطرف کنند.
3- طرفین مذاکره می کنند چون آنها فکر می کنند می توانند از شکلی از تاثیر استفاده کنند تا معامله بهتری نسبت به زمانی که به سادگی هر چیزی که طرف مقابل داوطلبانه به آنها می دهد، قبول کنند، داشته باشند.
4-طرفین مذاکره حداقل برای یک لحظه ترجیح می دهند که دنبال یک توافق جستجو کنند تا اینکه آشکار مبارزه کنند، تسلیم طرف مقابل شوند، به طور همیشگی قرار داد را فسخ کنند، یا بحث خود را به حدی بالاتری از اقتدار خود برای حل آن ببرند. مذاکره زمانی رخ می دهد که هیچ سیستم و هیچ مجموعه قواعد یا روالهای مشخص ثابت برای رفع اختلاف وجود نداشته باشد.
5-زمانی که مذاکره می کنیم ما فرض می کنیم که می دهیم و می گیریم.
6-مذاکره موفق شامل مدیریت نامحسوسها به همان خوبی محسوسات است (برای مثال قیمت یا عبارات توافق)"

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

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

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

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

-‌ سيستم هاي چند عامله : و بدین ترتیب می توان در این دیدگاه مذاکره را چنین تعریف کرد : "مذاكره پردازشي است كه گروهي از عامل ها در يك موضوع مشخص به يك توافق قابل قبول براي همه دست يابند“.

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

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

همین!

Ali Vahed | 2:47 AM