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

در علوم رایانه، یک **گماشته نرم‌افزاری** یا یک **عامل نرم‌افزاری**  یک برنامه ی رایانه‌ای است که برای کاربر یا برنامه‌های دیگر، به صورت یک نماینده (agency) عمل می‌کند. در اینجا نماینده یا وکیل (agency) (که از لغت لاتین agere به معنی انجام‌دادن (to do) گرفته شده است)، به معنی «قبول برای کارکردن از جانب یک شخص می‌باشد». این «کارکردن از جانب» به معنی ضمنی اختیاراتی برای تصمیم گیری در مورد آن است که «کدام عمل» مناسب می‌باشد. 

## مقدمه
در دانش رایانه، software agentها یا همان عامل‌های نرم‌افزاری بخشی از یک نرم‌افزارند که جهت کمک به کاربر یا نرم‌افزاری دیگر در چارچوب روابط واسطه‌ای کار می‌کنند. در واقع کاربران به عامل‌ها همانند یک واسط (گماشته)، قدرت تصمیم‌گیری برای این که در هر زمان چه اقدامی باید صورت بگیرد را وامی گذارند. یعنی همان‌طور که برای خرید یک خانه با رجوع به یک واسطه (آژانس یا Agency)، همهٔ اختیارات مربوط به تحقیق، بررسی، مقایسه مشتریان و … تا خرید را به آن واسطه (آژانس) تفویض می‌کنیم، در این‌جا نیز در یک زمینهٔ خاص کلیهٔ اختیارات را به یک عامل (Agent) می‌دهیم. به عامل ها در زبان محاوره ای بات (bot) گفته می شود، که از کلمه ی روبات گرفته شده است. این  عامل ها (بات ها) می توانند در سیستم های دیگر قرار داده شوند، مثل موقعی که عامل نرم افزاری (بات) برای اجرا، در بدنه ی یک روبات قرار می گیرد، یا موقعی که یک نرم افزار chatbox (مثل Siri) روی گوشی موبایل یا روی دیگر وسایل ارتباطی قرار می گیرد. فقط باید بدانیم که وظیفهٔ عامل (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:**
این عامل‌ها کار را با تأکید بر یادگیری و خودمختاری انجام می‌دهند. عامل در اینجا عملی را که توسط کاربر انجام می‌شود را مشاهده می‌کند و سعی می‌کند راه‌های جدید را یاد بگیرد و سپس سعی می‌کند راه‌های بهتر برای انجام همان کار را پیشنهاد کند.
این عاملها، کار خود را از طریق ۴ راه انجام می‌دهند:
#  از طریق مشاهده و تقلید از کاربر
#  از طریق دریافت بازخورهای مثبت و منفی از کاربر
#  دریافت دستورالعمل‌های صریح از کاربر
#  با درخواست advice از دیگر عامل‌ها
* **2-Collaborative Agents**: هدف از کاربرد این عامل‌ها رسیدن به بالاترین اثر کلی از طریق بکارگیری تک تک اعضا است. هوش مصنوعی توزیع شده که زیرمجموعه‌ای از هوش مصنوعی است مربوط به مسائلی است که برای آن‌ها یک حل‌کنندهٔ مسئله کافی نیست، بلکه نیاز به همکاری بین موجودیت‌های مستقل حل مسئله می‌باشد.
* 3- **Information Agents**
رشد سریع اطلاعات در وب موجب رشد عامل‌های اطلاعاتی شده‌است با این امید که این عامل‌ها به ما کمک کنند، اطلاعات منابع مختلف را مدیریت، دستکاری و جمع‌آوری کنیم.
* 4-**Reactive Agents**
یک گروه ویژه از عامل‌ها هستند که دارای مدل‌های سمبلیک و درونی از محیط نیستند، بلکه به صورت محرک- پاسخ عمل می‌کنند.
* 5-**Hybrid Agents**
عاملهایی که سرشت آن‌ها ترکیبی از ۲ یا چند عامل است.
* 6-**Mobile Agents**
یک عامل نرم‌افزاری زمانی یک Mobile Agent است که توانایی مهاجرت از یک host به host در یک محیط شبکه ناهمگون را داشته باشد.

## منابع

# http://en.wikipedia.org/wiki/Software_agent
# S.Franklin, and A.Grasser. “Is it and agent or just o program? A Taxonomy for Autonomous Agents”.In Proceedings of the Third International Workshop On Agents Theories, Architecture and Language,Springer-Verlag,1996.
# Russell,Stuart J. and Peter Norvng. “Artificial Intelligence: A modern Approach”. Englewood Cliffs, NJ: Prentice Hall,1995.
# H.Qusay. “Software Agents: Characteristics and Classification”.

رده:هوش مصنوعی
رده:نرم‌افزار عامل-بنیان