JADE چیست ؟

(JADE -Java Agent Development Framework)  یک قالب توسعه ­ی نرم ­افزاری است که هدف از آن توسعه­ ی سامانه­ های چندعاملی و برنامه­ های مطابق با معیارهای فیپا برای عاملهای هوشمند می باشد. این قالب شامل دو محصول اصلی است: یک پلتفرم عاملی مطابق فیپا و یک بسته برای توسعه­ ی عاملهای جاوا. JADE تماماً با جاوا کدنویسی شده و یک برنامه نویس عامل ، برای اینکه از این قالب استفاده کند، باید عامل های خود را با جاوا بنویسد و برای این کار می بایست از راهنماهای موجود دراین راهنمای برنامه­نویس استفاده نماید. این راهنما فرض بر این دارد که خواننده با استانداردهای فیپا ، حدّاقل با مشخّصات مدیریت عامل  (فیپا شماره 61)، زبان ارتباطی عاملی ، و ساختار پیام ACL (فیپا شماره 61) آشناست. JADE با زبان برنامه­نویسی جاوا نوشته شده و متشکل از بسته­های مختلف جاواست که به برنامه­نویسان کاربردی تکه­های آماده­ی کاربردی و واسطهای انتزاعی برای وظایف سفارشی، مبتنی بر کاربرد می دهد. از جاوا به علّت ویژگیهای جالب آن، بخصوص جهت­گیری آن به سمت برنامه­نویسی شی­ء گرا در محیطهای توزیع­ شده ­ی گوناگون استفاده می شود؛ برخی از این ویژگیها عبارتند از سریال سازی شی­ء ، واسط برنامه­نویسی انعکاسی  و فراخوانی از دور متد RMI . JADE از بسته­های اصلی ذیل تشکیل یافته است:

Jade.core کرنل سیستم را پیاده­سازی می کند. این بخش شامل کلاس Agent است که می بایست توسّط برنامه­نویسان کاربردی توسعه داده شود. بعلاوه، سلسله مراتبی از کلاس Behaviour در زیربسته­ی jade.core.behaviours واقع است. رفتارها  وظایف، یا مقاصد یک عامل را پیاده سازی می کنند. آنها واحدهای منطقی فعالیت هستند که می توانند به طرق مختلفی ایجاد گردند تا الگوهای اجرایی پیچیده بدست آید و همچنین این واحدها می توانند به صورت همزمان اجرا شوند. برنامه­نویسان کاربردی عملیات عامل را با نوشتن رفتارها و مسیرهای اجرایی عاملی متصل کننده­ی آنها تعریف می نمایند. JADE به همراه دسته­ای از ابزار عرضه می شود که کار مدیریت پلتفرم و توسعه­ی برنامه­ی کاربردی را آسان می سازند. هر ابزار در زیربسته­ی مجزّایی از jade.tools واقع شده است. در حال حاضر ابزارهای ذیل موجود هستند: عامل مدیریت دور، که به اختصار RMA گفته می شود و به عنوان یک کنسول گرافیکی برای مدیریت و کنترل پلتفرم به کار می رود. یک نمونه­ی اوّلیه از یک RMA می تواند با یک گزینه­ی خط فرمانی (-gui) شروع به کار کند، امّا آن گاه بیش از یک GUI می تواند فعال شود. JADE به وسیله­ی ارسال وقایع به همگی RMAها  انسجام بین آنها را حفظ می کند، کنسول RMA قادر به راه­اندازی دیگر ابزارهای JADE است. عامل قلابییک ابزار نظارتی و اشکالزدایی، متشکل از یک واسط کاربری گرافیکی و یک عامل زیرین JADE است. با استفاده از واسط کاربری گرافیکی می توان پیغامهای ACL را ایجاد کرد و به دیگر عامل ها فرستاد؛ همچنین می توان لیست تمامی پیغام­های ACL فرستاده شده یا دریافت شده را که با اطلاعات «مهر زمانی» تکمیل می شوند تا امکان ضبط و تکرار مکالمه­ی عاملی فراهم شود، نمایش داد.

Sniffer؛ این عامل، زمانی که پیغامهای ACL در راه هستند، می تواند راه آنها را ببندد، و به شکل گرافیکی آنها را با استفاده از نمایشی شبیه دیاگرامهای دنباله­ای UML نمایش می دهد. این عامل با ملاحظه­ی چگونگی ردّ و بدل پیغامهای ACL توسّط جوامع عامل برای اشکالزدایی آنها قابل استفاده است.

Introspector  عاملی است که امکان نظارت بر چرخه­ی حیات یک عامل، پیامهای رد  و بدل شده­ی ACL آن و رفتارهای در حال اجرا را فراهم می کند.

ویژگی­های JADE:

موارد ذیل لیستی از ویژگیهایی است که JADE به برنامه­ نویس عامل ارائه می نماید: پلتفرم عاملی توزیع شده. پلتفرم عاملی می تواند میان چندین میزبان توزیع شود. تنها یک برنامه­ی کاربردی جاوا، و بنابراین تنها یک ماشین مجازی جاوا، بر روی هر میزبان اجرا می گردد. عامل­ها به عنوان نخ­های جاوا پیاده­سازی می شوند و در داخل «حامل­های عامل»  که پشتیبانی زمان اجرا برای اجرای عامل فراهم می کنند به حیات خود ادامه می دهند.

  • واسط کاربری گرافیکی برای مدیریت چندین عامل و حامل عامل از یک میزبان دور.
  • ابزارهای اشکالزدایی برای کمک به توسعه­ی برنامه­های چندعاملی مبتنی بر JADE.
  • قابلیت جابجایی بین پلتفرمی، از جمله انتقال حالت و کد عامل (در صورت نیاز).
  • پشتیبانی از اجرای فعالیت­های موازی و همزمان به وسیله­ی مدل رفتاری. JADE رفتارهای عاملی را با یک روش غیرپیشگیرانه زمان بندی می کند.
  • پلتفرم عاملی منطبق با FIPA، که شامل AMS (سیستم مدیریت عامل ) و DF (تسهیل کننده­ی دایرکتوری ) می باشد. این اجزا به شکل خودکار در زمان شروع به کار پلتفرم عامل فعّال می گردند.

بسیاری از DF های منطبق با FIPA می توانند در زمان اجرا شروع به کار کنند تا برنامه­های کاربردی چنددامنه­ای پیاده سازی کنند، که در آنها یک دامنه دسته­ای منطقی از عاملهایی است که سرویس­های آنها به واسطه­ی یک تسهیلگر عمومی تبلیغ می شود. هر تسهیلگر دایرکتوری یک واسط کاربری گرافیکی و تمامی قابلیت­های استاندارد تعریف شده توسّط فیپا (قابلیت ثبت، حذف، تغییر و جستجوی توضیحات عامل­ها؛ و قابلیت یگانه­سازی در داخل شبکه­ای از DF ها) را  به ارث می برد. انتقال مناسب پیغام­های ACL در داخل پلتفرم عاملی یکسان. در حقیقت، پیغام­ها به شکل اشیاء کدشده­ی جاوا منتقل می شوند، و نه به شکل رشته، تا از روال­های جمع­آوری و پراکنده سازی جلوگیری شود. در زمان گذشتن از مرزهای پلتفرمی، پیغام به صورت خودکار به سینتکس، کدگذاری و پروتکل منطبق با FIPA تبدیل می شود و یا عکس این فرایند صورت می پذیرد(کدگشایی). این تبدیل برای آن دسته از پیاده­سازان عامل روشن است که تنها نیاز دارند با اشیاء جاوا کار کنند.

سيستم چندعاملي (Multi Agent Systems):

سيستم چندعاملي (Multi Agent Systems) يا به اختصار MAS روش نويني براي حل مسائل و پياده‌سازي پروژه‌هاي نرم‌افزاري رايانه‌اي است. با اينکه زمان زيادي از پيدايش اين گونه سيستم‌ها نمي‌گذرد ولي استفاده از روش‌هاي طراحي بر اساس عامل يکي از موفق‌ترين راه‌حل‌هاي موجود بوده و حاصل اين شيوه طراحي يعني سيستم‌ حل مسائل به صورت توزيع‌شده از بهترين سيستم‌ها به شمار مي‌آيد و به عنوان ابزار جديدي براي حل انواع فرآيندهاي انساني شناخته مي‌شود. اين نوع سيستم‌ها نسبت به سيستم‌هاي معمولي و تک‌عاملي، مزاياي زيادي دارند؛ از جمله اينکه در اکثر شرايط کار مي‌کنند. به اين معنا که چون مغز متفکر واحد ندارند و تصميم‌گيري در آنها به صورت توزيع‌شده است، چنانچه حتي بخشي از آنها نيز از کار بيفتد باز هم به کار خود ادامه مي‌دهند. همچنين اين نوع سيستم‌ها براي محيط‌هايي با مقياس وسيع(Large Scale) و محيط‌هاي ناشناخته نيز گزينه مناسبي نسبت به سيستم‌هاي تک‌عاملي به شمار مي‌آيند. سيستم‌هاي مبتني بر عامل، پردازش موازي را آسان کرده و به راحتي موازي مي‌شوند. منظور از پردازش موازي اين است که به جاي انجام يک پروژه با محاسبات زياد و پردازش‌هاي سنگين توسط يک پردازشگر، همان پروژه را به پردازش‌‌هاي کوچکتر با حجم محاسبات کمتر شکسته و آن را توسط چندين عامل انجام دهيم. مثلاً ميزي را تصور کنيد که براي بلند کردنش به ۱۰۰ نيوتن نيرو احتياج داريم، حال هم مي‌توانيم آن را توسط يک نفر که توانايي اعمال ۱۰۰ نيوتن نيرو را دارد، بلند کنيم و هم اين کار را به کمک چهار نفر که هر کدام ۲۵ نيوتن نيرو به اشتراک مي‌گذارند، انجام دهيم. در نتيجه، هزينه‌ها در چنين سيستمي پايين مي‌آيد و نيازي به صرف هزينه کلان جهت ايجاد امکان پردازش سنگين براي يک عامل نيست. در اين صورت، چندين عامل با قدرت پردازشي کمتر همان کار را حتي سريع‌تر انجام مي‌دهند. البته اين نوع سيستم‌ها به نوبه خود معايبي نيز دارند که استفاده از آنها را محدود مي‌کند. مهمترين عيب اين سيستم‌ عامل‌ها، کندي اندک در کار طراحي آنها و موازي‌سازي است که به نتيجه رساندن پروژه را به تعويق مي‌اندازد.

هدف از این پروژه

هدف اصلی این پروژه ایجاد یک سیستم چند عامله برای خرید و فروش کتاب است. هدف این پروژه آشنایی شما با چارچوب نرم افزاری JADE و نوشتن یک برنامه اولیه با آن است. این پروژه در دو بخش کلی تقسیم بندی می شود که به زبان جاوا و فریمورک قدرتمند jade نوشته شده است . این پروژه قابلیت اجرای سناریوهای اول و دوم را دارد

سناریو اول:

سناریوی اول : در این پروژه هدف پیاده سازی یک سیستم چند عامله است. در این سیستم دو نوع عامل وجود دارد : عامل خریدار  (Buyer)و عامل فروشنده (Seller) –  عامل فروشنده از اجناس  A  و B هر کدام به تعداد 2 عدد دارند. عاملهای خریدار نیز هر کدام تقاضای یکی از محصولات را میکنند.  در صورتیکه عامل خریدار از فروشنده کالای A یا B را درخواست کرد ( با ارسال یک پیام به فروشنده)، عامل فروشنده نیز با هر فروش، یک مورد از آن را کم میکند –  در صورتیکه عامل فروشنده هیچ کالایی برای فروش نداشته باشد باید پیغامی را برای خریدار ارسال کند مبنی بر اینکه کالای مورد نظر موجود نمیباشد. در انتها باید عامل فروشنده ، لیست نام خریدارهایی که از او خرید کرده اند را چاپ نماید و خریداران نیز در انتها باید لیست محصولات خریداری شده خود را چاپ نمایند. برای پیاده سازی این سناریو یک عامل از نوع خریدار ایجاد کنید – سپس تعداد 4 خریدار با نامهای B1 تا B4 ایجاد کنید. این شرطها را نیز اعمال کنید : عامل فروشنده حق فروش کالای B را به خریدار B3 ندارد.

سناریو دوم

در این پروژه هدف پیاده سازی یک سیستم چند عامله کتابفروشی کتابهای دست دوم است . در این سناریو هر کسی کتابهای دست دوم خود به فروش میگذارد. برای هر کتاب نیز یک قیمت پایه تعیین میشود. مثلا  یک فروشنده کتاب سیستم عامل دست دوم نویسنده تننباوم را با قیمت 5000 تومان به فروش میگذارد. (البته مشخصات ظاهری کتاب در قالب توضیحات را به خریدار ارائه میدهد) . برای این کتاب ممکن است خریداران زیادی باشد که درنهایت باید کتاب به یک خریدار فروخته شود. تا اینجای کار شبیه به یک سیستم مزایده است که توسط عاملهای هوشمند انجام می شود. عامل فروشنده باید یک خریدار را از بین همه خریداران ممکن انتخاب نماید. استراتژی فروش به این صورت است که باید به خریداری که بیشترین قیمت را ارائه کرده است، کتاب فروخته شود. برای اجرای سناریو، فروشنده ها لیست کتابها به همراه قیمت آنها را در DF ثبت میکنند. خریداران در DF جستجو کرده و کتاب مورد نظر خود را خریداری میکنند و در صورت علاقه به یک کتاب ، درخواست خرید خود را برای فروشنده میفرستند. فروشنده هم در صورتی که تعداد درخواستها از جانب خریدار به تعداد 3 خرید رسید ( این عدد دلخواه است)، فرایند انتخاب خریدار را اجرا کرده و کتاب را به یک خریدار فروخته و مابقی در مناقصه رد خواهند شد.

نحوه اجرای سناریو : برای اجرای سناریو   عامل خریدار   پیاده سازی شده و هم عامل فروشنده  .. یک نفر  عامل خریدار و نفر دوم عامل فروشنده است.

قابلیت های این پروژه:
مشاهده بیشتر

نظرات

متوسط امتیازات

5
5.00 2 رای
40,000 تومان
2 نقد و بررسی

جزئیات امتیازات

5 ستاره
2
4 ستاره
0
3 ستاره
0
2 ستاره
0
1 ستاره
0

2 دیدگاه برای سیستم های چند عاملی با کتابخانه Jade

  1. مصطفی علی محمدی

    سلام، امکان آموزش برنامه نویسی با Jade برایتان مقدور (به صورت حضوری )هست؟

  2. مصطفی علی محمدی

    سلام، روزتون بخیر ، من یک پروژه کنترل توزیع شده با استفاده از سیستم های چند عاملی با استفاده از JADE دارم، امکان انجام یا آموزش اون رو دارید.ممنون

دیدگاه خود را بنویسید