عامل نرم‌افزاری

مقدمه
در دانش رایانه، software agentها یا همان عامل‌های نرم‌افزاری بخشی از یک نرم‌افزارند که جهت کمک به کاربر یا نرم‌افزاری دیگر در چارچوب روابط واسطه‌ای کار می‌کنند. در واقع کاربران به عامل‌ها همانند یک واسط (گماشته)، قدرت تصمیم گیری برای این که در هر زمان چه اقدامی باید صورت بگیرد را وامی گذارند. یعنی همان طور که برای خرید یک خانه با رجوع به یک واسطه، همه اختیارات مربوط به تحقیق، بررسی، مقایسه مشتریان و … تا خرید را به آن واسطه تفویض می‌کنیم، در این جا نیز در یک زمینه خاص کلیه اختیارات را به یک عامل (Agent) می‌دهیم. فقط باید بدانیم که وظیفه عامل (Agent)ها در بیشتر اوقات تا مرحله تصمیم‌گیری ادامه می‌یابد و تصمیم این که در بین پیشنهادها در نهایت کدام یک برگزیده شود به عهده‌ی خود کاربر است. هدف این برنامه‌ها، آسانی کشف داده‌ها در اینترنت و جایگزینی انسان در فرایند طولانی تولید دانش است.
تعریف عامل
در فرهنگ لغت عامل (Agent)به معنای «فاعل، نماینده، مامور، واسطه، عامل، امین و کارگزار» می‌باشد.به این ترتیب عامل را می‌توان کسی دانست که به جای شخص یا چیز دیگری عمل می‌کند. در تعریفی دقیق‌تر : عامل چیزی است که می‌تواند محیط را از طریق حسگرهایش درک کند و با عملگرهایش بر روی محیط اثر بگذارد
عامل نرم‌افزاری
قسمتی از یک نرم‌افزار است که به منظور کمک به یک کاربر یا نرم‌افزاری دیگر در چارچوب روابط واسطه کار می‌کنند.
یک عامل انسانی دارای چشم، گوش و.. به عنوان حسگر و دست و پا و.. به عنوان عملگر است.
یک عامل نرم‌افزاریkeystroke ، File Contents و Network Packets را به عنوان ورودی حسگر و
از طریقdisplaying on the screen، writing files و Network Packetsبر محیط عمل می‌کند.
چند مثال از عامل‌ها
در این قسمت چند مثال از agentها را ذکر می‌کنیم تا در حین آن نحوه کمک رسانی آن‌ها به کاربران را توضیح دهیم:
Agentهای خریدار: این نرم‌افزارها به کاربران اینترنتی در پیدا کردن محصولات و خدمات مورد نیازشان کمک می‌کنند. به‌طور مثال زمانی که فردی برای خرید محصولی به سایت eBay می‌رود، در پایین صفحه لیستی از محصولات است که دیگر خریدارانی که به دنبال آن محصول بودند، به آن‌ها نیز توجه داشته‌اند. انجام این عمل به این دلیل است که اعتقاد بر این است که سلیقه کاربران به صورت نسبی به هم شبیه است و آن‌ها به دنبال محصولات مشابهی هستند. به این تکنولوژی که با کمک agentها امکان پذیر است، collaborative filtering می‌گویند.
Agentهای کاربر: این عامل‌ها به منظور انجام کارهای کاربر به‌طور اتوماتیک به وجود آمده‌اند. مثلا بعضی از این agentها ایمیل‌های کاربران را با توجه به نوع درخواستشان طبقه‌بندی و مرتب می‌کنند. (مثلا عاملی به نام newshub) یا بعضی دیگر از این عامل هابه‌طور خودکار با کمک اطلاعات ذخیره شده کاربر، فرم‌های اینترنتی را پر می‌کنند. (مثلا عاملی به نام Form Filler bot)
Agentهای مراقبتی و نظارتی: این agentها برای نظارت و تهیه گزارش از نحوه عملکرد یکی از تجهیزات که معمولا سیستم‌های کامپیوتری هستند به کار می‌رود. به‌طور مثال agent‌هایی که سطح موجودی کارخانه‌ها را ثبت می‌کنند، بر روی قیمت‌های رقبا نظارت می‌کنند یا بر روند بازار بورس ناظر هستند و گزارش‌هایی به کاربران می‌دهند.
Agentهای داده کاوی: این agent که یکی از پرکاربردترین Agent هاست که از فناوری اطلاعات استفاده می‌کند تا روندها و الگوهای مختلف را از روی منابع متعدد اطلاعات کشف کند. کاربر با استفاده از این agentها می‌تواند داده‌های موجود را به شیوه مورد نظرش مرتب کند تا هر اطلاعاتی که می‌خواهد بیابد. مثالی از این نوع agent‌ها، Agent‌هایی هستند که شرایط بازار را دائما بررسی می‌کنند و آن شرایط را به کاربر یا کارخانه گزارش می‌دهند تا کاربر یا کارخانه بتواند با توجه به آن‌ها تصمیمات صحیح بگیرد.
عامل‌های هوشمند
عامل‌های مربوط به موتورهای جستجو
ویژگی‌های عامل‌ها
Software agentها برای اولین بار با هدف ایجاد شیوه‌ای راحت و مطمئن برای انجام خودکار کارهایی به نیابت از کاربر بوجود آمد. تعاریف بسیاری از agentها شده‌است که تمامی آن‌ها شامل خصوصیات زیر هستند:
ماندگاری: انجام مستمر وظایف محول شده و گرفتن تصمیمات مربوط به این که چه زمانی باید عکس العمل نشان دهد.
خودکار بودن: انجام خودکار عملیات فوق: انتخاب وظایف، تخصیص میزان اهمیت (prioritization)، رفتار هدف مدارانه، تصمیم‌گیری بدون دخالت انسان.
توانایی‌های اجتماعی: داشتن قدرت کار کردن دست جمعی و برقراری ارتباط و انجام همکاری با سایرین در هنگام انجام یک مسئولیت.
واکنش پذیری: داشتن توانایی درک نسبی مفاهیمی که برای آن‌ها کار می‌کنند و واکنش می‌دهند.
Proactive : هدفمند و با قصد مشخص است و صرفا در مقابل محیط واکنش‌های ساده نشان نمی‌دهد.
Co-operation: بتواند با سایر عامل‌ها برای رسیدن به یک هدف مشخص همکاری کند، به‌طوری‌که شکست یا موفقیت عامل به این رابطه بستگی داشته باشد.
Learning -Adaptive :رفتار خود را بر اساس تجربیات پیشین تغییر دهد.
Mobility: از یک محیط( محتوای اجرایی) به محیط دیگری برود
Flexible: اعمال عامل مکتوب نیست.
Character : یک شخصیت قابل باور و حالت احساسی
تقسیم بندی عامل‌های نرم‌افزاری
ابعاد متعددی برای طبقه‌بندی کردن عامل‌های نرم‌افزاری وجود دارد، این عامل‌ها می‌توانند متناسب با موارد زیر دسته بندی شوند.
The Tasks They Perform
The Locations of the Agent
The Nature of the intelligence
The Characteristics that cited above.
Their Control Architecture
The Range and Effectiveness of Their action
The Range of Sensitivity of their senses
و …
تقسیم بندی عامل‌ها را بر اساس سه ویژگی : Cooperate,Learn ,Autonomous
1- Interface Agent:
این عامل‌ها کار را با تاکید بر یادگیری و خودمختاری انجام می‌دهند. عامل در اینجا عملی را که توسط کاربر انجام می‌شود را مشاهده می‌کند و سعی می‌کند راه‌های جدید را یاد بگیرد و سپس سعی می‌کند راه‌های بهتر برای انجام همان کار را پیشنهاد کند.
این عاملها، کار خود را از طریق 4 راه انجام می‌دهند:
1-از طریق مشاهده و تقلید از کاربر
2-از طریق دریافت بازخورهای مثبت و منفی از کاربر
3-دریافت دستورالعملهای صریح از کاربر
4-با درخواست advice از دیگر عامل‌ها
2-Collaborative Agents : هدف از کاربرد این عامل‌ها رسیدن به بالاترین اثر کلی از طریق بکارگیری تک تک اعضا است. هوش مصنوعی توزیع شده که زیرمجموعه‌ای از هوش مصنوعی است مربوط به مسائلی است که برای آن‌ها یک حل‌کننده مسئله کافی نیست، بلکه نیاز به همکاری بین موجودیت‌های مستقل حل مسئله می‌باشد.
3- Information Agents
رشد سریع اطلاعات در وب موجب رشد عامل‌های اطلاعاتی شده‌است با این امید که این عامل‌ها به ما کمک کنند، اطلاعات منابع مختلف را مدیریت، دستکاری و جمع‌آوری کنیم.
4- Reactive Agents
یک گروه ویژه از عامل‌ها هستند که دارای مدل‌های سمبلیک و درونی از محیط نیستند، بلکه به صورت محرک- پاسخ عمل می‌کنند.
5- Hybrid Agents
عاملهایی که سرشت آن‌ها ترکیبی از 2 یا چند عامل است.
6- Mobile Agents
یک عامل نرم‌افزاری زمانی یک Mobile Agent است که توانایی مهاجرت از یک host به host در یک محیط شبکه ناهمگون را داشته باشد.