بایگانی برچسب برای: gh; o

الگوریتم کلونی مورچه‌ها

الگوریتم کلونی مورچه ها یا ACO همان‌طور که می‌دانیم مسئله یافتن کوتاهترین مسیر، یک مسئله بهینه سازیست که گاه حل آن بسیار دشوار است و گاه نیز بسیار زمانبر. برای مثال مسئله فروشنده دوره گرد را نیز می‌توان مطرح کرد. در این روش(ACo)، مورچه‌های مصنوعی به‌وسیلهٔ حرکت بر روی نمودار مسئله و با باقی گذاشتن نشانه‌هایی بر روی نمودار، همچون مورچه‌های واقعی که در مسیر حرکت خود نشانه‌های باقی می‌گذارند، باعث می‌شوند که مورچه‌های مصنوعی بعدی بتوانند راه‌حل‌های بهتری را برای مسئله فراهم نمایند. همچنین در این روش می‌توان توسط مسائل محاسباتی-عددی بر مبنای علم احتمالات بهترین مسیر را در یک نمودار یافت.

الگوریتم کلونی مورچه ها

روش که از رفتار مورچه‌ها در یافتن مسیر بین محل لانه و غذا الهام گرفته شده؛ اولین بار در ۱۹۹۲ توسط مارکو دوریگو (Marco Dorigo) در پایان نامهٔ دکترایش مطرح شد.

 مقدمه

الگوریتم کلونی مورچه ها

الگوریتم کلونی مورچه الهام گرفته شده از مطالعات و مشاهدات روی کلونی مورچه هاست. این مطالعات نشان داده که مورچه‌ها حشراتی اجتماعی هستند که در کلونی‌ها زندگی می‌کنند و رفتار آنها بیشتر در جهت بقاء کلونی است تا درجهت بقاء یک جزء از آن. یکی از مهمترین و جالبترین رفتار مورچه‌ها، رفتار آنها برای یافتن غذا است و بویژه چگونگی پیدا کردن کوتاهترین مسیر میان منابع غذایی و آشیانه. این نوع رفتار مورچه‌ها دارای نوعی هوشمندی توده‌ای است که اخیراً مورد توجه دانشمندان قرار گرفته است در دنیای واقعی مورچه‌ها ابتدا به طور تصادفی به این سو و آن سو می‌روند تا غذا بیابند. سپس به لانه بر می‌گردند و ردّی از فرومون (Pheromone) به جا می‌گذارند. چنین ردهایی پس از باران به رنگ سفید در می‌آیند و قابل رویت اند. مورچه‌های دیگر وقتی این مسیر را می‌یابند، گاه پرسه زدن را رها کرده و آن را دنبال می‌کنند. سپس اگر به غذا برسند به خانه بر می‌گردند و رد دیگری از خود در کنار رد قبل می‌گذارند؛ و به عبارتی مسیر قبل را تقویت می‌کنند. فرومون به مرور تبخیر می‌شود که از سه جهت مفید است:

مسیر حرکت مورچه ها برای یافتن غذا

  • باعث می‌شود مسیر جذابیت کمتری برای مورچه‌های بعدی داشته باشد. از آنجا که یک مورچه در زمان دراز راه‌های کوتاه‌تر را بیش تر می‌پیماید و تقویت می‌کند هر راهی بین خانه و غذا که کوتاه‌تر (بهتر) باشد بیشتر تقویت می‌شود و آنکه دورتر است کمتر.
  • اگر فرومون اصلاً تبخیر نمی‌شد، مسیرهایی که چند بار طی می‌شدند، چنان بیش از حد جذّاب می‌شدند که جستجوی تصادفی برای غذا را بسیار محدود می‌کردند.
  • وقتی غذای انتهای یک مسیر جذاب تمام می‌شد رد باقی می‌ماند.
یافتن کوتاه ترین مسیر بین غذا و لانه

لذا وقتی یک مورچه مسیر کوتاهی (خوبی) را از خانه تا غذا بیابد بقیهٔ مورچه‌ها به احتمال زیادی همان مسیر را دنبال می‌کنند و با تقویت مداوم آن مسیر و تبخیر ردهای دیگر، به مرور همهٔ مورچه‌ها هم مسیر می‌شوند. هدف الگوریتم مورچه‌ها تقلید این رفتار توسط مورچه‌هایی مصنوعی ست که روی نمودار در حال حرکت اند. مسئله یافتن کوتاه‌ترین مسیر است و حلالش این مورچه‌های مصنوعی اند.

از کابردهای این الگوریتم، رسیدن به راه حل تقریباً بهینه در مسئله فروشنده دوره‌گرد است. به طوری که انواع الگوریتم کلونی مورچه‌ها برای حل این مسئله تهیه شده. زیرا این روش عددی نسبت به روشهای تحلیلی و genetic در مواردی که نمودار مدام با زمان تغییر کند یک مزیت دارد؛ و آن این که الگوریتمی ست با قابلیت تکرار؛ و لذا با گذر زمان می‌تواند جواب را به طور زنده تغییر دهد؛ که این خاصیت در روتینگ شبکه‌های کامپیوتری و سامانه حمل و نقل شهری مهم است.
در مسئله فروشنده دوره گرد باید از یک شهر شروع کرده، به شهرهای دیگر برود و سپس به شهر مبدأ بازگردد بطوریکه از هر شهر فقط یکبار عبور کند و کوتاهترین مسیر را نیز طی کرده باشد. اگر تعداد این شهرها n باشد در حالت کلی این مسئله از مرتبه (n-1)! است که برای فقط ۲۱ شهر زمان واقعاً زیادی می‌برد:

روز۱۰۱۳*۷/۱ = S۱۰۱۶*۴۳۳/۲ = ms۱۰*۱۰۱۸*۴۳۳/۲ =!۲۰

با انجام یک الگوریتم برنامه سازی پویا برای این مسئله، زمان از مرتبه نمایی بدست می‌آید که آن هم مناسب نیست. البته الگوریتم‌های دیگری نیز ارائه شده ولی هیچ‌کدام کارایی مناسبی ندارند. ACO الگوریتم کامل و مناسبی برای حل مسئله TSP است.

الگوریتم کلونی مورچه ها بهترین روش برای حل مسئله ی فروشنده ی دوره گرد

مسئله فروشنده دوره گرد

مزیتهای الگوریتم کلونی مورچه ها

<تبخیر شدن فرومون> و <احتمال-تصادف>به مورچه‌ها امکان پیدا کردن کوتاهترین مسیر را می‌دهد. این دو ویژگی باعث ایجاد انعطاف در حل هرگونه مسئله بهینه‌سازی می‌شوند. مثلاً در گراف شهرهای مسئله فروشنده دوره گرد، اگر یکی از یالها (یا گره‌ها) حذف شود الگوریتم این توانایی را دارد تا به سرعت مسیر بهینه را با توجه به شرایط جدید پیدا کند. به این ترتیب که اگر یال (یا گره‌ای) حذف شود دیگر لازم نیست که الگوریتم از ابتدا مسئله را حل کند بلکه از جایی که مسئله حل شده تا محل حذف یال (یا گره) هنوز بهترین مسیر را داریم، از این به بعد مورچه‌ها می‌توانند پس از مدت کوتاهی مسیر بهینه (کوتاهترین) را بیابند.

کاربردهای الگوریتم کلونی مورچه ها

از کاربردهای الگوریتم کلونی مورچه ها می‌توان به بهینه کردن هر مسئله‌ای که نیاز به یافتن کوتاهترین مسیر دارد، اشاره نمود:

۱. مسیر یابی داخل شهری و بین شهری.

۲. مسیر یابی بین پست‌های شبکه‌های توزیع برق ولتاژ بالا.

۳. مسیر یابی شبکه‌های کامپیوتری. ۴-استفاده ازوب. ۵-استفاده ازACOدربهینه سازی شبکه‌های توزیع آب و…

الگوریتم

پروسهٔ پیدا کردن کوتاه‌ترین مسیر توسط مورچه‌ها، ویژگی‌های بسیار جالبی دارد، اول از همه قابلیت تعمیم زیاد و خود- سازمانده بودن آن است. در ضمن هیچ مکانیزم کنترل مرکزی ای وجود ندارد. ویژگی دوم قدرت زیاد آن است. سیستم شامل تعداد زیادی از عواملی است که به تنهایی بی‌اهمیت هستند بنابراین حتی تلفات یک عامل مهم، تأثیر زیادی روی کارایی سیستم ندارد. سومین ویژگی این است که، پروسه یک فرایند تطبیقی است. از آنجا که رفتار هیچ‌کدام از مورچه‌ها معین نیست و تعدادی از مورچه‌ها همچنان مسیر طولانی‌تر را انتخاب می‌کنند، سیستم می‌تواند خود را با تغییرات محیط منطبق کند و ویژگی آخر اینکه این پروسه قابل توسعه است و می‌تواند به اندازهٔ دلخواه بزرگ شود. همین ویژگی‌ها الهام بخش طراحی الگوریتم‌هایی شده‌اند که در مسائلی که نیازمند این ویژگی‌ها هستند کاربرد دارند. اولین الگوریتمی که بر این اساس معرفی شد، الگوریتم ABC بود. چند نمونه دیگر از این الگوریتم‌ها عبارتند از: AntNet,ARA,PERA,AntHocNet.

انواع مختلف الگوریتم بهینه‌سازی مورچگان

در پایین تعدادی از انواع شناخته شده از الگوریتم بهینه‌سازی مورچگان را معرفی می‌کنیم:

۱- سیستم مورچه نخبگان: در این روش بهترین راه حل کلی در هر تکرار فرمون آزاد می‌کند. همچنین این روش برای تمام مورچه‌های مصنوعی باید انجام شود.

۲- سیستم مورچه ماکسیموم – مینیمم: یک مقدار کمینه و بیشینه برای فرمون تعیین کرده و فقط در هر مرحله بهترین جواب این مقدار را آزاد می‌کند و تمام گره‌های مجاور ان به مقدار فرمون بیشینهمقدار دهی اولیه می‌شوند.

۳- سیستم کلونی مورچه: که در بالا توضیحات کافی داده شده است.

۴- سیستم مورچه بر اساس رتبه: تمام راه حل‌های بدست آماده بر اساس طول جواب رتبه‌بندی می‌شوند و بر اساس همین رتبه‌بندی مقدار فرمون آزاد سازی شده توسط آنها مشخص خواهد شد و راه حل با طول کمتر از راه حل دیگر با طول بیشتر مقدار فرمون بیشتری آزاد می‌کند.

۵ – سیستم مورچه متعامد مداوم: در این روش مکانیزم تولید فرمون به مورچه اجازه می‌دهد تا برای رسیدن به جواب بهتر و مشترک با بقیه مورچه‌ها جستجو انجام دهد با استفاده از روش طراحی متعامد مورچه می‌تواند در دامنه تعریف شده خود به صورت مداوم برای بدست آوردن بهترین جواب جستجو کند که این عمل به هدف رسیدن به جواب بهینه و صحیح ما را نزدیک می‌کند. روش طراحی متعامد می‌تواند به دیگر روش‌های جستجو دیگر گسترش پیدا کنند تا به مزیت‌های این روش‌های جستجو اضافه کند.

منبع


انسان هميشه براي الهام گرفتن به جهان زنده پيرامون خود نگريسته است. يکي از بهترين طرح هاي شناخته شده، طرح پرواز انسان است که ابتدا لئورناردو داوينچي(1519-1452) طرحي از يک ماشين پرنده را بر اساس ساختمان بدن خفاش رسم نمود. چهار صد سال بعد کلمان آدر ماشين پرنده اي ساخت که داراي موتور بود و بجاي بال از ملخ استفاده مي کرد.

هم اکنون کار روي توسعه سيستم هاي هوشمند با الهام از طبيعت از زمينه هاي خيلي پرطرفدار هوش مصنوعي است. الگوريتمهاي ژنتيک که با استفاده از ايده تکاملي دارويني و انتخاب طبيعي مطرح شده، روش بسيار خوبي براي يافتن مسائل بهينه سازيست. ايده تکاملي دارويني بيانگر اين مطلب است که هر نسل نسبت به نسل قبل داراي تکامل است و آنچه در طبيعت رخ مي دهد حاصل ميليون ها سال تکامل نسل به نسل موجوداتي مثل مورچه است.

الگوريتم کلونی مورچه براي اولين بار توسط دوريگو (Dorigo) و همکارانش به عنوان يک راه حل چند عامله (Multi Agent) براي مسائل مشکل بهينه سازي مثل فروشنده دوره گرد     (TSP :Traveling Sales Person) ارائه شد.

عامل هوشند(Intelligent Agent) موجودي است که از طريق حسگر ها قادر به درک پيرامون خود بوده و از طريق تاثير گذارنده ها مي تواند روي محيط تاثير بگذارد.

الگوريتم کلونی مورچه الهام گرفته شده از مطالعات و مشاهدات روي کلونی مورچه هاست. اين مطالعات نشان داده که مورچه ها حشراتي اجتماعي هستند که در کلونی ها زندگي مي کنند و رفتار آنها بيشتر در جهت بقاء کلونی است تا درجهت بقاء يک جزء از آن. يکي از مهمترين و جالبترين رفتار مورچه ها، رفتار آنها براي يافتن غذا است و بويژه چگونگي پيدا کردن کوتاهترين مسير ميان منابع غذايي و آشيانه. اين نوع رفتار مورچه ها داراي نوعي هوشمندي توده اي  است که اخيرا مورد توجه دانشمندان قرار گرفته است.بايد تفاوت هوشمندي توده اي(کلونی) و هوشمندي اجتماعي را روشن کنيم.

در هوشمندي اجتماعي عناصر ميزاني از هوشمندي را دارا هستند. بعنوان مثال در فرآيند ساخت ساختمان توسط انسان، زماني که به يک کارگر گفته ميشود تا يک توده آجر را جابجا کند، آنقدر هوشمند هست تا بداند براي اينکار بايد از فرغون استفاده کند نه مثلا بيل!!! نکته ديگر تفاوت سطح هوشمندي افراد اين جامعه است. مثلا هوشمندي لازم براي فرد معمار با يک کارگر ساده متفاوت است.

در هوشمندي توده اي عناصر رفتاري تصادفي دارند و بين آن ها هيچ نوع ارتباط مستقيمي وجود ندارد و آنها تنها بصورت غير مستقيم و با استفاده از نشانه ها با يکديگر در تماس هستند. مثالي در اين مورد رفتار موريانه ها در لانه سازيست.

جهت علاقه مند شدن شما به اين رفتار موريانه ها وتفاوت هوشمندي توده اي و اجتماعي توضيحاتي را ارائه مي دهم :

فرآيند ساخت لانه توسط موريانه ها مورد توجه دانشمندي فرانسوي به نام گرس قرار گرفت. موريانه ها براي ساخت لانه سه فعاليت مشخص از خود بروز مي دهند. در ابتدا صدها موريانه به صورت تصادفي به اين طرف و آن طرف حرکت مي کنند. هر موريانه به محض رسيدن به فضايي که کمي  بالاتر از سطح زمين قرار  دارد شروع به ترشح بزاق مي کنند و خاک را به بزاق خود آغشته مي کنند. به اين ترتيب گلوله هاي کوچک خاکي با بزاق خود درست مي کنند. عليرغم خصلت کاملا تصادفي اين رفتار، نتيجه تا حدي منظم است.

در پايان اين مرحله در منطقه اي محدود تپه هاي بسيار کوچک مينياتوري از اين گلوله هاي خاکي آغشته به بزاق شکل مي گيرد. پس از اين، همه تپه هاي مينياتوري باعث مي شوند تا موريانه ها رفتار ديگري از خود بروز دهند. در واقع اين تپه ها به صورت نوعي نشانه  براي موريانه ها عمل مي کنند. هر موريانه به محض رسيدن به اين تپه ها با انرژي بسيار بالايي شروع به توليد گلوله هاي خاکي با بزاق خود مي کند. اين کار باعث تبديل شدن تپه هاي مينياتوري به نوعي ستون مي شود. اين رفتار ادامه مي يابد تا زماني که ارتفاع هر ستون به حد معيني برسد. در اين صورت  موريانه ها رفتار سومي از خود نشان مي دهند. اگر در نزديکي ستون فعلي ستون ديگيري نباشد بلافاصله آن ستون را رها مي کنند در غير اين صورت يعني در حالتي که در نزديکي اين ستون تعداد قابل ملاحظه اي ستون ديگر باشد، موريانه ها شروع به وصل کردن ستونها و ساختن لانه مي کنند.

تفاوتهاي هوشمندي اجتماعي انسان با هوشمندي توده اي موريانه را در همين رفتار ساخت لانه مي توان مشاهده کرد. کارگران ساختماني کاملا بر اساس يک طرح از پيش تعيين شده عمل مي کنند، در حالي که رفتار اوليه موريانه ها کاملا تصادفي است. علاوه بر اين ارتياط مابين کارگران سختماني مستقيم و از طريق کلمات و … است ولي بين موريانه ها هيچ نوع ارتباط مستقيمي وجود ندارد و آنها تنها بصورت غير مستقيم و از طريق نشانه ها با يکديگر در تماس اند. گرس نام اين رفتار را Stigmergie گذاشت، به معني رفتاري که هماهنگي مابين موجودات را تنها از طريق تغييرات ايجاد شده در محيط ممکن مي سازد.

 بهينه سازي مسائل به روش کلونی مورچه ها (ACO) :

همانطور که مي دانيم مسئله يافتن کوتاهترين مسير، يک مسئله بهينه سازيست که گاه حل آن بسيار دشوار است و گاه نيز بسيار زمانبر. بعنوان مثال مسئله فروشنده دوره گرد(TSP). در اين مسئله فروشنده دوره گرد بايد از يک شهر شروع کرده، به شهرهاي ديگر برود و سپس به شهر مبدا بازگردد بطوريکه از هر شهر فقط يکبار عبور کند و کوتاهترين مسير را نيز طي کرده باشد. اگر تعداد اين شهرها n باشد در حالت کلي اين مسئله از مرتبه (n-1)! است که براي فقط 21 شهر زمان واقعا زيادي مي برد:

روز1013*7/1 =  S1016*433/2 = ms10*1018*433/2 = !20

با انجام يک الگوريتم برنامه سازي پويا براي اين مسئله ، زمان از مرتبه نمايي بدست مي آيد که آن هم مناسب نيست. البته الگوريتم هاي ديگري نيز ارائه شده ولي هيچ کدام کارايي مناسبي ندارند. ACO الگوريتم کامل و مناسبي براي حل مسئله TSP است.

مورچه ها چگونه مي توانند کوتاهترين مسير را پيدا کنند؟

مورچه ها هنگام راه رفتن از خود ردي از ماده شيميايي فرومون(Pheromone) بجاي مي گذارند البته اين ماده بزودي تبخير مي شد ولي در کوتاه مدت بعنوان رد مورچه بر سطح زمين باقي مي ماند. يک رفتار پايه اي ساده در مورچه هاي وجود دارد :

آنها هنگام انتخاب بين دو مسير بصورت احتمالاتي( Statistical)  مسيري را انتخاب مي کنند که فرومون بيشتري داشته باشد يا بعبارت ديگر مورچه هاي بيشتري قبلا از آن عبور کرده باشند. حال دقت کنيد که همين يک تمهيد ساده چگونه منجر به پيدا کردن کوتاهترين مسير خواهد شد :

همانطور که در شکل 1-1 مي بينيم مورچه هاي روي مسير AB در حرکت اند (در دو جهت مخالف) اگر در مسير مورچه ها مانعي قرار ديهم(شکل 2-1) مورچه ها دو راه براي انتخاب کردن دارند. اولين مورچه ازA  مي آيد و بهC  مي رسد، در مسير هيچ فروموني نمي بيند بنابر اين براي مسير چپ و راست احتمال يکسان مي دهد و بطور تصادفي و احتمالاتي مسير CED را انتخاب مي کند. اولين مورچه اي که مورچه اول را دنبال مي کند زودتر از مورچه اولي که از مسير CFD رفته به مقصد مي رسد. مورچه ها در حال برگشت و به مرور زمان يک اثر بيشتر فرومون را روي CED حس مي کنند و آنرا بطور احتمالي و تصادفي ( نه حتما و قطعا)  انتخاب مي کنند. در نهايت مسير CED بعنوان مسير کوتاهتر برگزيده مي شود. در حقيقت چون طول مسير CED کوتاهتر است زمان رفت و برگشت از آن هم کمتر مي شود و در نتيجه مورچه هاي بيشتري نسبت به مسير ديگر آنرا طي خواهند کرد چون فرومون بيشتري در آن وجود دارد.

نکه بسيار با اهميت اين است که هر چند احتمال انتخاب مسير پر فرومون ت توسط مورچه ها بيشتر است ولي اين کماکان احتمال است و قطعيت نيست. يعني اگر مسير CED پرفرومون تر از CFD باشد به هيچ عنوان نمي شود نتيجه گرفت که همه مورچه ها از مسيرCED  عبور خواهند کرد بلکه تنها مي توان گفت که مثلا 90% مورچه ها از مسير کوتاهتر عبور خواهند کرد. اگر فرض کنيم که بجاي اين احتمال قطعيت وجود مي داشت، يعني هر مورچه فقط و فقط مسير پرفرومون تر را انتخاب ميکرد آنگاه اساسا اين روش ممکن نبود به جواب برسد. اگر تصادفا اولين مورچه مسيرCFD(مسير دورتر) را انتخاب مي کرد و ردي از فرومون بر جاي مي گذاشت آنگاه همه مورچه ها بدنبال او حرکت مي کردند و هيچ وقت کوتاهترين مسير يافته نمي شد. بنابراين تصادف و احتمال نقش عمده اي در ACO بر عهده دارند.

نکته ديگر مسئله تبخير شدن فرومون بر جاي گذاشته شده است. برفرض اگر مانع در مسير  AB برداشته شود و فرومون تبخير نشود مورچه ها همان مسير قبلي را طي خواهند کرد. ولي در حقيقت اين طور نيست. تبخير شدن فرومون و احتمال به مورچه ها امکان پيدا کردن مسير کوتاهتر جديد را مي دهند.

1-1
پیدا کردن کوتاه ترین مسیر 1

2-1

پیدا کردن کوتاه ترین مسیر 2

3-1

پیدا کردن کوتاه ترین مسیر 3

4-1

پیدا کردن کوتاه ترین مسیر 4

مزيت هاي ACO :

همانطور که گقته شد «تبخير شدن فرومون» و «احتمال-تصادف» به مورچه ها امکان پيدا کردن کوتاهترين مسير را مي دهند. اين دو ويژگي باعث ايجاد انعطاف در حل هرگونه مسئله بهينه سازي مي شوند. مثلا در گراف شهرهاي مسئله فروشنده دوره گرد، اگر يکي از يالها (يا گره ها) حذف شود الگوريتم اين توانايي را دارد تا به سرعت مسير بهينه را با توجه به شرايط جديد پيدا کند. به اين ترتيب که اگر يال (يا گره اي) حذف شود ديگر لازم نيست که الگوريتم از ابتدا مسئله را حل کند بلکه از جايي که مسئله حل  شده تا محل حذف يال (يا گره) هنوز بهترين مسير را داريم، از اين به بعد مورچه ها مي توانند پس از مدت کوتاهي مسير بهينه(کوتاهترين) را بيابند.

کاربردهاي ACO :

از کاربردهاي  ACO مي توان به بهينه کردن هر مسئله اي که نياز به يافتن کوتاهترين مسير دارد ، اشاره نمود :

1. مسير يابي داخل شهري و بين شهري
2. مسير يابي بين پست هاي شبکه هاي توزيع برق ولتاژ بالا

3. مسير يابي شبکه هاي کامپيوتري

مسير يابي شبکه هاي کامپيوتري با استفاده از ACO :

اطلاعات بر روي شبکه بصورت بسته هاي اطلاعاتي کوچکي (Packet) منتقل مي شوند. هر يک از اين بسته ها بر روي شبکه در طي مسير از مبدا تا مقصد بايد از گره هاي زيادي که مسيرياب (Router) نام دارند عبور مي کنند. در داخل هر مسيرياب جدولي قرار دارد تا بهترين و کوتاهترين مسير بعدي تا مقصد از طريق آن مشخص مي شود، بنابر اين بسته هاي اطلاعاتي حين گذر از مسيرياب ها با توجه به محتويات اين جداول عبور داده مي شوند.

روشي بنام ACR : Ant Colony Routering پيشنهاد شده که بر اساس ايده کلونی مورچه به بهينه سازي جداول مي پردازيد و در واقع به هر مسيري با توجه به بهينگي آن امتياز مي دهد. استفاده از ACR به اين منظور داراي برتري نسبت به ساير روش هاست که با طبيعت ديناميک شبکه سازگاري دارد، زيرا به عنوان مثال ممکن است مسيري پر ترافيک شود يا حتي مسير يابي (Router) از کار افتاده باشد و بدليل انعطاف پذيري که ACO در برابر اين تغييرات دارد همواره بهترين راه حل بعدي را در دسترس قرار مي دهد.

الگوریتم کلونی مورچه ها قسمت 1
الگوریتم کلونی مورچه ها قسمت 2
الگوریتم کلونی مورچه ها قسمت 3

منطق فازی (fuzzy logic) چیست؟

منطق فازی (Fuzzy Logic) قسمت 1
منطق فازی (Fuzzy Logic) قسمت 2

فشرده سازی تصویر (Image Compression)، کاربردی از فشرده سازی اطلاعات در تصاویر دیجیتال است. هدف از آن کاهش افزونگی (redundancy) محتویات تصویر است برای ذخیره کردن یاانتقال اطلاعات به شکل بهینه.

فشرده سازی تصویر می‌تواند به صورت بی اتلاف (Lossless) و با اتلاف (Lossy) صورت گیرد. فشرده سازی بی اتلاف برای بعضی تصاویر مثل نقشه‌ های فنی و آیکون‌ها ترجیح داده می‌شود، به این دلیل که فشرده سازی با اتلاف خصوصاً وقتی برای نرخ بیت‌های پایین استفاده شود به کیفیت تصویر لطمه می‌زند. روش‌های فشرده سازی بی اتلاف همچنین ممکن است برای محتویات پر ارزش مثل تصاویر پزشکی یا تصاویر اسکن شده برای بایگانی شدن نیز ترجیح داده شوند. روش با اتلاف مخصوصاً برای تصاویر طبیعی مناسب است که از دست رفتن کیفیت برای دست یافتن به کاهش نرخ بیتقابل توجه باشد.

روش‌های فشرده سازی بدون اتلاف عکس‌ها عبارتند از

– کدگذاری بر اساس طولِ ران (run-length encoding)، استفاده شده در روش‌های پیش‌فرض در dcx و یکی از امکانات TIFF ,TGA ,BMP

– entropy coding

– الگوریتم‌های مطابق واژه‌نامه مثل lzw استفاده شده در GIF,TIFF

– کاهش اعتبار (deflation) استفاده شده در TIFF ,MNG ,PNG

روش‌های فشرده سازی پراتلاف عبارتند از

کاهش فضای رنگی

کاهش فضای رنگی برای رنگهایی که بیشتر در عکس استفاده شده‌اند. رنگی که انتخاب شده در پالت رنگ در بالای عکس فشرده شده مشخص می‌شود. هرپیکسل فقط به شاخص رنگ در پالت رنگ اشاره داده می‌شود.

chroma subsampling

این روش براساس این واقعیت است که چون چشم انسان تغییرات مکانی روشنایی را سخت تر از رنگ درک می‌کند به وسیلهٔ میانگین‌گیری یا حذف کردن برخی از اطلاعات رنگ تابی یک عکس عمل فشرده سازی صورت گیرد.

تغییر شکل دادن کدگذاری (transform coding)

این روش بطور عادی بیشترین استفاده را دارد.

fractal compression

بهترین کیفیت عکس در یک نرخ بیت (یا نرخ فشرده سازی) معین هدف اصلی از فشرده سازی عکس است.

به هر حال ویژگی‌های مهم دیگری از رویه‌های فشرده سازی عکس وجود دارد که عبارتند از: ‘

مقیاس پذیری (scability)

به‌طور کلی به کاهش کیفیت حاصل شده در اثر دستکاری گروه بیتی یا فایل گفته می‌شود. (بدون بازیابی). نام‌های دیگر برای مقیاس پذیری،progressive coding یا embedded biststream است. با وجود خلاف واقعی بودنش مقیاس‌پذیری نیز می‌تواند در رمز گذارهای (codec) بدون اتلاف یافت شود. مقیاس‌پذیری خصوصاَ برای پیش نمایش عکس‌ها در حال دریافت کردن آن‌ها یا برای تهیه کیفیت دستیابی متغیر در پایگاه‌های داده مفید است.

انواع مختلف مقیاس پذیری عبارتند از :

 کیفیت مترقی(progressive quality)

یا لایه مترقی (layer progressive) گروه بیتی پی در پی عکس را از نو می‌سازد.

وضوح مترقی (progressive resoloution)

ابتدا یک عکس وضوح پایین را کدگذاری می کند سپس تفاوت‌های وضوح بالاتر را کدگذاری می‌کند.

مؤلفه مترقی (progressive component)

ابتدا رنگ را کدگذاری می‌کند.

ناحیه

جذاب کدگذاری (region of interest coding) نواحی خاصی از عکس باکیفیت بالاتری نسبت به سایر نقاط کد گذاری می‌شوند و می‌تواند با مقیاس‌پذیری (کدگذاری ابتدایی یک بخش و دیگران بعداً) ترکیب شود.

اطلاعات

غیر نمادین(meta information) داده‌های فشرده شده می‌توانند شامل اطلاعاتی در رابطه با عکس باشد که می‌توان برای طبقه‌بندی کردن، جستجو یا بررسی عمومی عکس از آن‌ها استفاده کرد. مانند اطلاعاتی که می‌توانند شامل رنگ و الگو و پیش نمایش کوچکتر عکس‌ها و اطلاعات خالق و کپی رایت باشد.

قدرت

پردازش(processing power) الگوریتم‌های فشرده سازی اندازه‌های متفاوتی از قدرت پردازش را برای کدگذاری و کدگشایی درخواست می‌کنند. بعضی از الگوریتم‌های فشرده‌سازی عالی قدرت پردازش بالا می‌خواهند.

کیفیت

روش فشرده سازی اغلب به وسیلهٔ سیگنال ماکزیمم به نسبت پارازیت (peak signal-to-noise ratio) اندازه‌گیری می شونداندازه پارازیت‌ها نشان دهند؟ فشرده سازی پراتلاف عکس است به هر حال قضاوت موضوع گرایانه بیننده همیشه بیان کنند؟ اهمیت اندازه‌گیری است.

Jpeg2000

Jpeg2000 یک استاندارد فشرده سازی عکس براساس wavelet (wavelet-basedاست؛ و در سال 2000 به‌وسیله کمیته Joint Photographic Experts Group با نیت جایگزین کردن با استاندارد اصلیJpegکه براساس تغییر گسسته(discrete cosine transform-based) است (محصول سال1991) تولید شده‌است. jpeg2000 زمان بیشتری را برای عملیات باز کردن فشردگی نسبت به JPEG طلب می‌کند.

اثبات از بالا به پایین محصولات فشرده سازی JPEG 2000: شماره‌ها نشان‌دهنده ضریب تراکم استفاده شده‌است.برای مقایسه بهتر شکل بدون مقیاس را نگاه کنید. محصولات JPEG 2000 به فرم JPEG متفاوت به نظر می‌رسند و یک جلوه صیقلی روی عکس وجود دارد و برای نمایان شدن سطوح فشرده سازی بالاتری اختیار می کنند. اغلب یک عکس گرفته شده می‌تواند به اندازه اندازه فایل اصلی خود(bitmapفشرده نشده) بدون متحمل شدن اثر نمایان شدن فشرده شوند

منبع


فشرده سازی با اتلاف داده و بدون اتلاف داده

بسیاری از افراد احساس می‌کنند که تنها باید از فرمت‌های تصاویری استفاده شود که از تکنولوژی فشرده سازی بدون اتلاف داده بهره می‌برند. این نوع فشرده سازی برای بسیاری از تصاویر مناسب است اما در بسیاری از موارد نیازی به آن نیست. استفاده از این نوع فشرده سازی به این معناست که همه داده‌ها از فایل اولیه حفظ شوند اما فشرده سازی با اتلاف داده برخی داده‌ها را از فایل اولیه حذف می‌کند و تصویر را با حجم کم ذخیره می‌کند. در فشرده سازی با اتلاف داده شما می‌توانید بگویید نرخ فشرده سازی تصاویر چقدر باشد و چه میزان از داده‌ها در نظر گرفته نشود.

فشرده سازی بدون اتلاف داده

روش‌های کمی برای فشرده سازی بدون اتلاف داده وجود دارد. روش اولکدگذاری طول اجرا (run-length encoding) است که برای فایل‌های BMP استفاده می‌شود. این روش داده‌های متوالی با مقادیر یکسان را می‌گیرد و آن‌ها را با یک متغیر count که بیانگر طول داده‌های یکسان است، ذخیره می‌کند. این روش برای فایل‌های گرافیکی مناسب است زیرا مقادیر داده یکسان بسیاری دارند.

فشرده سازی بدون اتلاف

روش دیگر فشرده سازی بدون اتلاف داده، DEFLATE نام دارد که برای تصاویر PNG نیز استفاده می‌شود. این روش از ترکیب الگوریتم کدینگ هافمن و LZ77 ساخته شده است. از این روش در فشرده سازی gzip و ZIP نیز استفاده می‌شود. الگوریتم Lempel-Ziv-Welch یا LZW هم یکی دیگر از روش‌های فشرده سازی است بدون اتلاف داده است که روی داده‌ها یک آنالیز ساده و محدود انجام می‌دهد. از این روش در فرمت‌های TIFF و GIF استفاده می‌شود.

فشرده سازی با اتلاف داده

روش‌های فشرده سازی با اتلاف داده محدود هستند، برخی از آن‌ها با روش‌های بدون اتلاف داده هم ترکیب می‌شوند تا فایل‌هایی با اندازه کوچک‌تر ایجاد کنند. یکی از این روش‌ها، کاهش فضای رنگ تصویر به متداول‌ترین رنگ‌های داخل تصویر است. از این روش برخی اوقات در فرمت تصاویر PNG و GIF استفاده می‌شود.

فشرده سازی با اتلاف

یک روش دیگر، تبدیل رمزگذاری (Transform encoding) است که برای تصاویر JPEG استفاده می‌شود. در این روش تصاویر با روش DCT یا تبدیل کسینوس گسسته به بلوک‌هایی تقسیم می‌شوند و در نهایت تصویری ایجاد می‌کنند که رنگ‌هایی کمتر از تصویر اولیه داشته باشد.

نمونه‌برداری کروما (Chroma subsampling) نام روش دیگری است که بر مبنای این اصل عمل می‌کند: «چشم انسان تغییرات در روشنایی را سخت‌تر از تغییر رنگ متوجه می‌شود.» نمونه‌برداری کروما اطلاعات روشنایی را نگه‌می‌دارد و برخی از اطلاعات رنگ را حذف می‌کند. از این روش در تصاویر JPEG و برخی الگوریتم‌های کاهش حجم ویدئو استفاده می‌شود.

انواع مختلف فایل‌ها

در این مقاله سه فرمت مشترک در طراحی وب یعنی PNG ،JPEG و GIF را معرفی می‌کنیم. غیر از این سه، تعداد زیادی فرمت دیگر هم وجود دارند که از روش‌های فشرده سازی استفاده می‌کنند، مثل: TIFF ،PCX ،TGA و غیره.

فرمت GIF

GIF یا فرمت تبادل گرافیکی (Graphics Interchange Format) در سال ۱۹۸۷ به‌وسیله CompuServe معرفی شد و یک فرمت تصویربرداری است. این فرمت تا ۸ بیت در هر پیکسل را پشتیبانی می‌کند، یعنی یک تصویر می‌تواند تا ۲۵۶ رنگ RGB مختلف داشته باشد. یکی از بزرگ‌ترین ویژگی‌های این فرمت توانایی ایجاد تصاویر متحرک است.

انواع فایل

فرمت JPEG

JPEG یا Joint Photographic Experts Group فرمتی برای تصاویر است که از فشرده سازی با اتلاف داده استفاده می‌کند. یکی از بزرگ‌ترین مزیت‌های JPEG این است که به طراح اجازه می‌دهد مقدار فشرده سازی را به میزان لازم تنظیم کند. این کار نتیجه بهتری درباره کیفیت و اندازه مناسب به دست می‌دهد. چون JPEG از فشرده سازی با اتلاف داده استفاده می‌کند، تصاویری که با این فرمت ذخیره می‌شوند مصنوعی به نظر می‌رسند و می‌توان هاله نور عجیبی در قسمت‌های خاصی از آن‌ها دید. همچنین در بسیاری از قسمت‌های یک تصویر می‌توان کنتراست شدیدی بین رنگ‌ها مشاهده کرد.

انواع فایل

فرمت PNG

PNG یا Portable Network Graphics یک فرمت تصویر است که از فشرده سازی بدون اتلاف داده استفاده می‌کند و برای جایگزین شدن فرمت GIF ایجاد شده است. این فرمت برای مدت طولانی در اینترنت اکسپلورر پشتیبانی نمی‌شد که به همین دلیل فرمت‌های JPEG و GIF متداول‌تر شدند؛ اگرچه در حال حاضر PNG در همه مرورگرها پشتیبانی می‌شود. یکی از بزرگ‌ترین مزیت‌های PNG این است که از تنظیمات متفاوت شفافیت (transparency)، مانند شفافیت کانال آلفا (alpha channel transparency)، پشتیبانی می‌کند.

انواع فایل

 انتخاب یک فرمت فایل مناسب

هر کدام از فرمت‌هایی که در بالا ذکر شد، برای انواع متفاوتی از تصاویر مناسب هستند. انتخاب فرمت مناسب منجر به کیفیت بالاتر و اندازه فایل کوچک‌تر می‌شود. انتخاب یک فرمت اشتباه به این معناست که تصاویر شما کیفیت متناسبی با حجمشان ندارند.

برای تصاویر گرافیکی ساده مانند لوگوها یا ترسیم خطوط، فرمت GIF بهتر کار می‌کند زیرا GIF پالت رنگ محدودی دارد. اگر پیچیدگی بیشتر باشد بهتر است از فرمت دیگری استفاده شود.

فرمت مناسب

برای تصاویر با گرادیان، فرمت GIF مناسب نیست. در این موارد فرمت JPEG هنگامی مفید است که تصویر کنتراست شدیدی نداشته باشد. برای تصاویری با کنتراست بالا یا تصاویر شفاف، فرمت PNG بهترین فرمت است. در اغلب موارد اندازه تصاویر PNG از JPEG بزرگ‌تر است. توجه کنید که فایل‌های PNG از روش بدون اتلاف داده استفاده می‌کنند و کیفیت تصویر اولیه حفظ می‌شود.

فرمت مناسب

در زیر به طور خلاصه، فرمت مناسب برای انواع تصویر را مرور می‌کنیم:

فرمت GIF

اگر در تصویری، انیمیشن، رسم خط یا تصویر گرافیکی ساده نیاز باشد، GIF بهترین گزینه است اما برای تصاویر گرادیان این فرمت مناسب نیست.

فرمت JPEG

برای اغلب تصاویر دوربین که کنتراست بالا ندارند یا برای بازی‌ها و فیلم‌ها این فرمت مناسب است. فرمت JPEG برای تصاویر دارای کنتراست بالا یا جزئیات بالا مناسب نیست، به طور مثال برای دیاگرام یا اینفوگرافیک. همچنین برای تصاویر گرافیکی ساده (به دلیل حجم بالا) بهتر است از فرمت GIF استفاده شود.

فرمت PNG

برای تصاویر حاوی خطوط، تصاویر دارای کنتراست شدید، تصاویر دارای شفافیت (transparency)، دیاگرام‌ها، اینفوگرافیک‌ها و اسکرین‌شات‌ها، فرمت PNG مناسب است. این فرمت برای تصاویر با کنتراست پایین، به دلیل افزایش حجم فایل، توصیه نمی‌شود.

فشرده سازی در پرینت تصاویر

آنچه در بالا گفته شد مربوط به انتخاب فرمت مناسب برای فشرده سازی تصاویر در طراحی وب بود ولی هنگام پرینت گرفتن داستان متفاوت است. الگوریتم فشرده سازی با اتلاف داده برای پرینت گرفتن مناسب نیست و در صورت استفاده، کیفیت افت فاحشی خواهد کرد. برای مثال یک تصویر JPEG ممکن است در مانیتور خوب نمایش داده شود اما هنگام چاپ افت کیفیتش نامطلوب باشد.

به منظور پرینت تصاویر فرمت TIFF یا Tagged Image File Format اغلب بهترین گزینه است. در این حالت باید از فرمت‌هایی (مانند LZW) استفاده کرد که فشرده سازی بدون اتلاف داده به حساب می‌آیند.

منبع

فشرده سازی تصویر قسمت 1
فشرده سازی تصویر قسمت 2

سیستم های چندعاملی (Multi Agent Systems)

سیستم های چندعاملی (Multi Agent Systems) یا به اختصار MAS روش نوینی برای حل مسائل و پیاده‌سازی پروژه‌های نرم‌افزاری رایانه‌ای می باشد.

با اینکه زمان زیادی از پیدایش این گونه سیستم‌ها نمی‌گذرد ولی استفاده از روش‌های طراحی بر اساس عامل یکی از موفق‌ترین راه‌حل‌های موجود بوده و حاصل این شیوه طراحی یعنی سیستم‌ حل مسائل به صورت توزیع‌شده از بهترین سیستم‌ها به شمار می‌آید و به عنوان ابزار جدیدی برای حل انواع فرآیندهای انسانی شناخته می‌شود.

این نوع سیستم‌ها نسبت به سیستم‌های معمولی و تک‌عاملی، مزایای زیادی دارند؛ از جمله اینکه در اکثر شرایط کار می‌کنند. به این معنا که چون مغز متفکر واحد ندارند و تصمیم‌گیری در آنها به صورت توزیع‌شده است، چنانچه حتی بخشی از آنها نیز از کار بیفتد باز هم به کار خود ادامه می‌دهند.

همچنین این نوع سیستم‌ها برای محیط‌هایی با مقیاس وسیع(Large Scale) و محیط‌های ناشناخته نیز گزینه مناسبی نسبت به سیستم‌های تک‌عاملی به شمار می‌آیند.

سیستم‌های مبتنی بر عامل، پردازش موازی را آسان کرده و به راحتی موازی می‌شوند. منظور از پردازش موازی این است که به جای انجام یک پروژه با محاسبات زیاد و پردازش‌های سنگین توسط یک پردازشگر، همان پروژه را به پردازش‌‌های کوچکتر با حجم محاسبات کمتر شکسته و آن را توسط چندین عامل انجام دهیم. مثلاً میزی را تصور کنید که برای بلند کردنش به 100 نیوتن نیرو احتیاج داریم،

حال هم می‌توانیم آن را توسط یک نفر که توانایی اعمال 100 نیوتن نیرو را دارد، بلند کنیم و هم این کار را به کمک چهار نفر که هر کدام 25 نیوتن نیرو به اشتراک می‌گذارند، انجام دهیم. در نتیجه، هزینه‌ها در چنین سیستمی پایین می‌آید و نیازی به صرف هزینه کلان جهت ایجاد امکان پردازش سنگین برای یک عامل نیست.

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

تعریف سیستم چندعاملی

قبل از تعریف سیستم مبتنی بر چندعامل، لازم است ابتدا خود عامل را معرفی کنیم. عامل یا agent یک سیستم کامپیوتری‌ است که قادر به انجام اعمال مستقل و خودکار از طرف کاربر یا صاحب خود است. نکته اصلی در مورد عامل‌ها، خودمختاری آنهاست، به این معنا که عامل‌ها قادرند به طور مستقل عمل کنند و کنترلی روی حالات داخلی خود داشته باشند.

بدین ترتیب تعریف دیگری که برای عامل می‌توان داشت این است که یک عامل یک برنامه کامپیوتری‌ است که در بعضی محیط‌ها قادر به انجام کارهای خودمختار یا به اصطلاح autonomous است.

در دسته‌بندی ساده‌ای از عامل‌ها می‌توان به دو نوع عامل اشاره کرد، یکی عامل‌های ساده و کم‌اهمیت‌تر (Trivial Agents) که مثال ساده آن، ترموستات‌ها هستند و دوم عامل‌های هوشمند (Intelligent Agents ) که در واقع همان برنامه کامپیوتری‌ است که در بعضی محیط‌ها قادر به انجام اعمال خودمختار و انعطاف‌پذیر است.
در اینجا منظور از انعطاف‌پذیر، انجام اعمال واکنش‌دار (دارای عکس‌العمل) و پیش‌بینی یک واکنش و انجام زودتر عمل مناسب است.

به عنوان اولین تعریف برای یک سیستم چندعاملی می‌توان گفت: سیستم چندعاملی به سیستمی گفته می‌شود که از تعدادی عامل (agent) تشکیل‌شده‌ است. این عامل‌ها هر کدام به نوبه خود فعل و انفعالات داخلی داشته و در محیط خارج نیز با یکدیگر ارتباط دارند.

در بیشتر موارد، عامل، با داشتن اطلاعات خاص و محرک‌های مختلف، از طرف کاربر عمل می‌کند و در واقع یک عامل، می‌تواند نماینده‌ای از طرف انسان باشد که در محیط‌های مجازی مانند او به تصمیم‌گیری و انجام کارهای مختلف می‌پردازد.

برای داشتن ارتباطات داخلی موفق بین عامل‌ها، آنها نیاز دارند که با یکدیگر همکاری کنند، هماهنگ باشند و مذاکره دوطرفه داشته باشند. درست به همان اندازه که انسان‌ها در ارتباطات روزانه خود با هم ارتباط دارند و به مذاکره و داد و ستد می‌پردازند.

دو مسئله کلیدی در طراحی سیستم های چندعاملی

دو مسئله کلیدی که در طراحی سیستم‌ های چندعاملی مطرح است: اول طراحی عامل و دوم طراحی محیطی برای عملکرد و ارتباط میان عامل‌ها. در طراحی عامل، چگونگی ساخت عاملی که قادر به انجام کارهای مستقل و اعمال خودمختار باشد مدنظر است.

به گونه‌ای که بتواند کارهایی که بر عمده‌اش گذاشته‌ایم را با موفقیت انجام دهد. در طراحی اجتماع یا محیط عامل‌ها، نکته اساسی این است که چگونه عامل‌هایی طراحی کنیم که قادر به برقراری ارتباط با یکدیگر باشند.

منظور از این ارتباط همان همکاری، هماهنگی و مذاکره بین عامل‌هاست. این کار برای انجام موفقیت‌آمیز وظایفی که بر عهده آنها گذاشته‌ایم، ضروری است؛ چرا که همه عامل‌ها اهداف مشترک ندارند یا نمی‌توانند با علایق یکسان ساخته شوند.

مثالی از کاربرد عامل‌ها کنترل سفینه فضایی (Aircraft control) است. وقتی یک کاوشگر فضایی (سفینه فضایی) برای انجام کارهای تحقیقاتی به فضا یا به کرات دیگر عزیمت می‌کند، یک سفر طولانی‌مدت در پیش دارد.

از زمانی که این سفینه و گروه تحقیقاتی، پرواز خود را از سطح کره زمین آغاز می‌کند یک تیم زمینی با تعداد افراد زیاد لازم است تا به طور مدام مراحل پیشرفت و حرکت سفینه را دنبال و بررسی کنند و در مورد حوادث غیرمنتظره که ممکن است برای سفینه پیش‌آید تصمیم بگیرند.

این امر بسیار پرهزینه است و اگر نیاز به تصمیم‌گیری فوری و ضروری داشته ‌باشد کارایی چندانی ندارد. به همین دلیل سازمان‌های هوایی و فضایی مانند NASA به طور جدی مشغول تحقیق و بررسی روی امکان ساخت کاوشگری فضایی هستند که بیشتر خودکار باشد تا بتوانند تنها در مواقع ضروری تصمیمات فوری را به صورت بهینه بگیرند و به نظارت کنترلی و مراقبت 24ساعته از روی زمین نیاز نداشته باشند.

این امر یک افسانه یا داستان نیست و مهندسین NASA مشغول بررسی و ساخت چنین سفینه‌ای بر اساس سیستم های چندعاملی هستند. طبق اطلاعات موجود و خواص سیستم‌ های چندعاملی، برای دستیابی به این هدف عامل‌ها ابزار بسیار مناسبی شناخته شده‌اند.

ارتباط بین عامل ها در سیستم های چند عاملی

دو مثال از کاربرد سیستم‌ های چندعاملی

مثال دیگری از کاربرد عامل‌ها، جست‌وجوی اینترنت است که توسط عامل‌های اینترنتی انجام می‌شود. جست‌وجو در اینترنت برای یافتن جواب یک سئوال خاص، می‌تواند پروسه طولانی و خسته‌کننده‌ای باشد. بنابراین چرا این اجازه را به برنامه‌های کامپیوتری- عامل- ندهیم که عمل جست‌وجو را برای ما انجام دهند.

به عنوان مثال، می‌توان سئوال یا مسئله‌ای را به یک عامل داد که پاسخ آن نیازمند ترکیبی از اطلاعات اینترنتی‌ است و لازم است که منابع مختلفی در وب جست‌وجو شود. این عمل به راحتی می‌تواند توسط برنامه تحت وبی که ما می‌نویسیم و عاملی که بر روی اینترنت ایجاد می‌کنیم، انجام شود.

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

سیستم‌های خبره به طور معمول بدون بدنه و ساختاری بیرونی هستند که در یک زمینه خاصی متخصص و یا به اصطلاح خبره می‌شوند. برای مثال سیستم MYCIN نمونه‌ای از یک سیستم خبره است که مطالب زیادی درباره بیماری‌های خونی انسان‌ها می‌داند. در این سیستم، اطلاعات بسیار وسیعی در مورد بیماری‌ها و امراض خونی به فرم یک سری قاعده و دستورات ذخیره شده که می‌تواند با گرفتن مشخصات بیمار و شرایط موجود، نوع بیماری را تشخیص دهد. یک پزشک به راحتی می‌تواند با دادن واقعیت‌های موجود به سیستم، توصیه‌های تخصصی و در اکثر مواقع قابل‌اعتمادی را از این ماشین دریافت کند.
تفاوت اصلی سیستم‌های خبره با سیستم‌ های چندعاملی را می‌توان در دو مورد زیر بیان کرد:

1- عامل‌ها در محیطی قرار می‌گیرند که می‌توانند روی آن تاثیرگذار باشند و از آن تاثیر بپذیرند؛ در حالی که عملکرد سیستم‌های خبره مانند MYCIN کاملاً مستقل از محیط بوده و از دنیای اطراف آگاه نیست و اطلاعات به دست آمده از سیستم خبره مبتنی بر پایگاه دانش‌اش و سئوالاتی است که از کاربر می‌پرسد.

2- عامل به عنوان نماینده‌ای از طرف کاربر، عملی را انجام می‌دهد ولی سیستم خبره مانند MYCIN هیچ عملی در محیط یا روی بیمار انجام نمی‌دهد.

یک سیستم خبره به جای انجام عملیات ریاضی و استدلال، بر پایه دانش انسانی تعقل می‌کند. در این روش، دانش در لفاف یک زبان مخصوص، درون برنامه نگهداری می‌شود که به عنوان پایگاه دانش سیستم خبره شناخته می‌شود. پس به زبانی ساده، یک سیستم خبره را می‌توان به صورت زیر تعریف کرد:

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

عامل‌های هوشمند و هوش مصنوعی (AI)

سئوالی که در مورد سیستم‌ های چندعاملی و هوش مصنوعی به ذهن می‌آید این است که آیا طراحی سیستم‌ های چندعاملی همان پروژه‌های مطرح در هوش مصنوعی است؟ آیا ساختن یک عامل تماماً همان موضوعات مورد بحث در هوش مصنوعی نیست؟

در جواب باید گفت، هدف هوش مصنوعی، ساختن سیستم‌های هوشمندی است که بتوانند به خوبی زبان طبیعی را بفهمند، احساس را درک کنند و قادر به استفاده از حواس پنج‌گانه انسانی بوده، دارای فکر خلاق باشند و غیره… که کار بسیار مشکلی است. پس آیا ساخت یک عامل توسط الگوریتم‌های هوش مصنوعی که بتواند همه این کارها را انجام دهد، نیازمند حل همه این الگوریتم‌ها نیست؟ مسلماً جواب مثبت است.

ولی ما در هنگام ساخت یک عامل، به طور ساده سیستمی می‌خواهیم که بتواند در یک محیط محدود عمل مناسب و درست را انتخاب کرده و انجام دهد. بنابراین برای ساخت یک عامل ما ملزم به حل همه مسائل موجود در هوش مصنوعی نیستیم.

همانطور که گفته شد با وجود عمر کم سیستم‌های مبتنی بر چندعامل، به دلیل قابلیت بالا در موازی‌سازی، روش طراحی براساس عامل و حل مسائل به صورت توزیع‌شده جزء موفق‌ترین روش‌های حل مسئله است و این سیستم‌ها ابزار بسیار بدیعی برای شبیه‌سازی کامپیوتری فراهم آورده‌اند که می‌تواند نور امیدی برای روشن شدن انواع مسائل مربوط به انسان و زندگی او باشد.
منبع


استاندارد Onvif چیست؟

استاندارد Onvif یا (فروم واسط تصویری بر اساس شبکه باز) یک استاندارد باز است، که به دوربین مدار بسته و دیگر دستگاه های شبکه IP امکان می دهد تا از طریق یک استاندارد پلت فرم باز یکپارچه، کنترل و مدیریت شوند.

هدف از ایجاد این استاندارد ، رسیدن به قابلیت کار کردن بین دوربین های IP و دیگر دستگاه های شبکه است صرف نظر از اینکه چه سازنده ویا تولید کننده آنها را تولید کرده باشد. اساس کار Onvif ، استاندارد نمودن کاربر و واسط شبکه بین دستگاه های شبکه ویدئویی است که یک چارچوب ارتباطی را بر اساس IETF و استانداردهای خدمات وب مربوطه از جمله ملزومات پیکربندی IP و امنیتی تعریف می کند.

مزیت اصلی  این استاندارد، آزادی عمل برای انتخاب سخت افزار از هر سازنده است که با این استاندارد کار می کند. با این استاندارد، دیگر کاربر به یک راه حل و تکنولوژی اختصاصی و منحصر به فرد وابسته نیست. پلت فرم Onvif اکثر مزایایی که دوربین هایIP ارائه می دهند را با خود به همراه دارد و همانطور که دستگاه های Onvif گسترش یافته و به عنوان یک جریان اصلی شناخته شدند ، تامین کنندگان نرم افزارها، وقت کم تری را صرف ادغام برنامه های راه اندازی اختصاصی می کنند و درمقابل قابلیت های جدید را توسعه می دهند.

معایب Onvif

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

  • کیفیت و بهره وری اجرای پروتکل Onvif
  • رعایت کردن قوانینی در طراحی نرم افزار برای ارتباط دهی هرچه بهتر میان دستگاه ها با پروتکل Onvif

ممکن است هنگامی که از نرم افزار استفاده می کنید برخی از ویژگی ها و ارتقاسازی های دوربین IP موجود نباشد. برای استفاده بهینه از این ویژگی ها ممکن است نیاز باشد تا از نرم افزار اختصاصی خود سازندگان استفاده نمایید یا نرم افزاری را انتخاب کنید که این ارتقا سازی را پشتیبانی می کند.

ارتقا سازی انتقالی

ارتقا سازی در یک سیستم بر پایه Onvif می تواند در مراحل مختلف انجام شود. دوربین های آنالوگ می توانند با سیستم های نظارت تصویری Onvif با استفاده از یک رمزگشای مطابق با Onvif ادغام شوند ، یا اینکه شما می توانید دوربین های آنالوگ را با دوربین های مطابق با Onvif که خروجی های آنالوگ دارند جابه جا نمائید، سپس در مرحله بعد می توانید دی وی آر را با یک NVR جابه جا نمائید. اضافه کردن یک دوربین Onvif  به مثابه اضافه کردن یک کامپیوتر جدید محسوب می شود ، تنها نیاز دارید که آن را به یک پورت LAN وصل نمایید.