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 خرید رسید ( این عدد دلخواه است)، فرایند انتخاب خریدار را اجرا کرده و کتاب را به یک خریدار فروخته و مابقی در مناقصه رد خواهند شد.
نحوه اجرای سناریو : برای اجرای سناریو عامل خریدار پیاده سازی شده و هم عامل فروشنده .. یک نفر عامل خریدار و نفر دوم عامل فروشنده است.
قابلیت های این پروژه:
نظرات
2 دیدگاه برای سیستم های چند عاملی با کتابخانه Jade
برای فرستادن دیدگاه، باید وارد شده باشید.
مصطفی علی محمدی
سلام، امکان آموزش برنامه نویسی با Jade برایتان مقدور (به صورت حضوری )هست؟
biglearn(خریدار محصول)
با سلام. فعلا مقدور نیست
مصطفی علی محمدی
سلام، روزتون بخیر ، من یک پروژه کنترل توزیع شده با استفاده از سیستم های چند عاملی با استفاده از JADE دارم، امکان انجام یا آموزش اون رو دارید.ممنون
biglearn(خریدار محصول)
با سلام و احترام. فعلا امکان انجام پروژه های jade مقدور نیست