کارگزار هوشمند

کنشگر هوشمند یا کارگزار هوشمند یا عامل هوشمند ، در مبحث هوش مصنوعی به موجودی گفته می‌شود که در یک محیط، اطراف خود را شناخته و اعمالی را روی محیط انجام می‌دهد و کلیه اعمالی که انجام می‌دهد در جهت نیل به اهدافش می‌باشد. این سیستم‌ها امکان یادگیری دارند و سپس از دانش اکتسابی خود برای انجام اهداف خود استفاده می‌کنند. این کنشگرها ممکن است بسیار ساده یا پیچیده باشند. بطور مثال ماشین‌های کوکی که با برخورد به دیوار، راه خود را عوض می‌کنند نمونه‌ای از کنشگرهای هوشمند هستند.
تعریف کنشگر : کنشگر هر چیزی است که می‌تواند محیطش را از طریق حسگرها درک کند و بر روی محیطش از طریق عمل‌کننده‌ها تاثیر گذارد. یک کنشگر انسانی دارای حس‌کننده‌هایی از قبیل چشم، گوش، لامسه و امثال آن می‌باشد. و میتوان از دست، پا، صحبت کردن و اعمال ارادی به عنوان عمل‌کننده‌ها نام برد. ورودی یک کنشگر نرم‌افزاری میتوانند چندین متغیر باشد که مقدار آن‌ها را کنشگر میخواند سپس بر اساس مکانیزم تصمیم‌گیری یک تصمیم اخذ می‌کند و عملگرهای آن میتوانند دستورهای مقداردهی چند متغیر دیگر باشد. به عنوان مثال فرض کنید یک کنشگر قرار است متغیر x را بخواند و توان دوم آن را حساب کند و در y قرار دهد. این کنشگر x را میخوانند و سپس توان دوم آن را حساب می‌کند و در y قرار می‌دهد.
نحوه کار کنشگر :
یک کنشگر چگونه باید بفهمد که بهترین عمل ممکن چیست؟ عمل درست عملی است که باعث شود کنشگر موفق‌ترین باشد. این امر ما را با مسئله تصمیم‌گیری در مورد چگونگی و زمان ارزیابی کردن موفقیت کنشگر روبرو میکند. اصطلاح میزان کارایی برای موفقیت کنشگر تعریف می‌کنیم. گفتنی است که میزان کارایی برای کنشگرهای مختلف متفاوت می‌باشد. نکته خیلی مهم این است که میزان کارایی یک کنشگر باید بر اساس محیط تعریف شود. به عنوان مثال فرض کنیم که یک کنشگر کارش جمع‌آوری آشغال‌ها از یک اتاق و دفع آن‌ها باشد، اگر کنشگر میزان کارایی‌اش بر حسب اشغال جمع شده تعریف شود آنگاه کنشگر می‌تواند آشغال‌ها را جمع کند و سپس دوباره در اتاق بریزد تا بهترین کارایی را کسب کند. اما اگر میزان کارایی بر اساس محیط تعریف شود آنگاه کنشگر یک بار کار تمیز کردن را انجام می‌دهد. پس یک کنشگر محیطش را حس می‌کند و سپس بر اساس آن تصمیم میگیرد. این مستلزم آن است که با کنشگر خودمختار و انواع محیط‌ها آشنا شویم.
کنشگر خودمختار
به کنشگری خودمختار میگوییم که تصمیم‌گیری‌اش بر اساس ادراکاتش باشد نه بر اساس دانش تزریق شده به آن. در واقع هر چه دانش قبلی یک کنشگر بیشتر باشد از خودمختاری آن کاهش مییابد و هر چه دانش قبلی کمتر باشد و مکانیزم یادگیری کنشگر قوی‌تر باشد، آن کنشگر خودمختارتر است.
انواع محیط‌ها:
قابل مشاهده و غیر قابل مشاهده:
اگر کنشگر به کل محیط دسترسی داشته باشد و بتواند آن را حس کند می‌گوییم محیط قابل مشاهده است، در غیر این صورت آن را غیر قابل مشاهده یا تا حدودی قابل مشاهده مینامیم. مثلا در محیط کنشگر شطرنج باز کل محیط قابل مشاهده است. طبیعی است که یک مسئله با محیط قابل مشاهده برای طراحان کنشگرها مطلوب‌تر می‌باشد.
قطعی و غیر قطعی:
اگر بتوان حالت بعدی را از حالت فعلی، عمل فعلی و کنشهایی که تاکنون انجام شده به دست بیاوریم، میگوییم که محیط قطعی است. بازهم میتوان از بازی شطرنج برای محیط قطعی مثال زد، چون با محیط فعلی و حرکت فعلی می‌شود حالت بعدی را به صورت دقیق یافت. قابل توجه است که بدانیم اگر محیط کاملا قابل مشاهده نباشد آنگاه قطعی نخواهد بود. اما اگر با یک حرکت ممکن باشد به چندین حالت برویم محیط غیر قطعی است.
دوره‌ای یا غیر دوره‌ای:
اگر هر دوره از دوره‌های دیگر مستقل باشد میگوییم محیط دوره‌ای است. مانند دوره‌های مختلف در مذاکرات چند کنشگره. محیط‌های غیر دوره‌ای به عنوان محیط‌های ترتیبی نیز یاد می‌شوند.
ایستا و پویا:
اگر محیط در زمان تصمیم‌گیری کنشگر تغییر کند آنگاه محیط پویا است. و در غیر آن صورت محیط ایستا است. اما اگر محیط در زمان تصمیم‌گیری ثابت بماند اما زمان، کارایی کنشگر را کاهش دهد، محیط را نیمه پویا مینامیم.
گسسته و پیوسته:
اگر مشاهدات و کنش‌های مختلف مجزا و تعریف شده باشند، محیط پیوسته است. مانند شطرنج. اما یک کنشگر بهینه ساز معادلات در محیط پیوسته کار میکند.
ساختار کنشگرهای هوشمند
تا کنون در مورد محیط‌ها و کلیات مربوط به کنشگرها صحبت کردیم. حال نوبت بررسی ساختارهای مختلف کنشگرها است. مهم‌ترین وظیفه ما طراحی برنامه کنشگر است. برنامه کنشگر تابعی است که ادراکات را به یک عمل‌ها نگاشت میکند. معماری کنشگر ساختاری است که برنامه محاسباتی کنشگر‌تر روی آن پیاده‌سازی می‌شود. پس در کل معماری از طریق حسگرها ورودی را میگیرد، توسط برنامه تصمیم می‌گیرد و در نهایت با عملگرها عمل می‌کند و روی محیط تاثیر میگذارد.
کنشگرهای واکنشی ساده:
در این گونه کنشگرها سعی بر این است که به ازای هر حالت ممکن در دنیا یک عمل مناسب انجام دهیم. برای این کار می‌توانیم حالت محیط را در ستون اول یک جدول قرار دهیم و عمل مربوط به آن را در ستون دوم نکه داری کنیم. به چنین کنشگری وابسته به جدول نیز می‌گویند. و به این جدول، جدول حالت-قانون نیز میگویند. در همان ابتدا مشخص می‌شود که برای طراحی چنین کنشگری محیط باید کاملا قابل مشاهده باشد. مهمترین مشکلی که در راه طراحی این کنشگر به وجود می‌آید این است در مسائل دنیای واقعی پر کردن چنین جدولی غیرممکن است. مثلا برای شطرنج 35100 حالت مختلف برای محیط وجود دارد. حال اگر فرض کنیم توانایی پر کردن جدول را داشته باشیم، آنگاه اولا حافظه لازم را نخواهیم داشت و ثانیا جستجو جهت یافتن جواب زمان زیادی خواهد گرفت. ساختار این کنشگر در شکل زیر دیده می‌شود.