محاسبات نرم و مهندسی نرم افزار

Soft computing & Soft engineering

محاسبات نرم و مهندسی نرم افزار

محاسبات نرم (هوش مصنوعی) و ربوتیک
مهندسی نرم افزار
توسعه اپلیکیشن های دسکتاپ و وب
اطلاع رسانی جهت دانشجویان

آخرین نظرات
  • ۱۶ شهریور ۹۵، ۰۹:۰۲ - احسان
    tnx
نویسندگان
پیوندهای روزانه
۰۱دی۸۹
الگوریتم زنبور عسل

الگوریتم زنبور شامل گروهی مبتنی بر الگوریتم جستجو است که اولین بار در سال 2005 توسعه یافت ؛ این الگوریتم شبیه سازی رفتار جستجوی غذای گروههای زنبور عسل است. در نسخه ابتدایی این الگوریتم، الگوریتم نوعی از جستجوی محلی انجام می دهد که با جستجوی کتره ای{Random } ترکیب شده و می تواند برای بهینه سازی ترکیبی {زمانی که بخواهیم چند متغیر را همزمان بهینه کنیم.}یا بهینه سازی تابعی به کار رود.

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

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

وقتی همه ی زنبور ها به سمت ناحیه ای مشابه بروند، دوباره به صورت کتره ای {Random } و به علت محدوده ی رقصشان در پیرامون گلزار پراکنده می شوند تا به موجب این کار سرانجام نه یک گلزار ، بلکه بهترین گل های موجود درون آن تعیین موقعیت شوند.

الگوریتم

الگوریتم زنبور هر نقطه را در فضای پارامتری_ متشکل از پاسخ های ممکن_به عنوان منبع غذا تحت بررسی قرار می دهد."زنبور های دیده بان"_ کارگزاران شبیه سازی شده _به صورت کتره ای{Random } فضای پاسخ ها را ساده می کنند و به وسیله ی تابع شایستگی کیفیت موقعیت های بازدید شده را گزار ش می دهند. جواب های ساده شده رتبه بندی می شوند، و دیگر "زنبورها" نیروهای تازه ای هستند که فضای پاسخ ها را در پیرامون خود برای یافتن بالا ترین رتبه محل ها جستجو می کنند{که "گلزار" نامیده می شود} الگوریتم به صورت گزینشی دیگر گلزار ها را برای یافتن نقطه ی بیشینه ی تابع شایستگی جستجو می کند.

کاربرد ها

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

مطلب کاملی و مفیدی در مورد الگوریتم بهینه سازی زنبور عسل را در ادامه مطلب می توانید ببینید.
نویسنده: وحید عقیقی
۲۴آذر۸۹

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

قبل از عرضه ویندوز ۲۰۰۰ تمامی شبکه های مایکروسافت از مدل NetBIOS برای نامگذاری ماشین ها و سرویس ها ی موجود بر روی شبکه استفاده می کردند. NetBIOS در سال ۱۹۸۳ به سفارش شرکت IBM طراحی گردید. پروتکل فوق در ابتدا بعنوان پروتکلی در سطح لایه " حمل " ایفای وظیفه می کرد.در ادامه مجموعه دستورات NetBIOS بعنوان یک اینترفیس مربوط به لایه Session نیز مطرح تا از این طریق امکان ارتباط با سایر پروتکل ها نیز فراهم گردد. NetBEUI مهمترین و رایج ترین نسخه پیاده سازی شده در این زمینه است . NetBIOS برای شیکه های کوچک محلی با یک سگمنت طراحی شده است . پروتکل فوق بصورت Broadcast Base است . سرویس گیرندگان NetBIOS می توانند سایر سرویس گیرندگان موجود در شبکه را از طریق ارسال پیامهای Broadcast بمنظور شناخت و آگاهی از آدرس سخت افزاری کامپیوترهای مقصد پیدا نمایند. شکل زیر نحوه عملکرد پروتکل فوق در یک شبکه و آگاهی از آدرس سخت افزاری یک کامپیوتر را نشان می دهد. کامپیوتر ds۲۰۰۰ قصد ارسال اطلاعات به کامپیوتری با نام Exeter را دارد. یک پیام Broadcast برای تمامی کامپیوترهای موجود در سگمنت ارسال خواهد شد. تمامی کامپیوترهای موجود در سگمنت مکلف به بررسی پیام می باشند. کامپیوتر Exeter پس از دریافت پیام ،آدرس MAC خود را برای کامپیوتر ds۲۰۰۰ ارسال می نماید.
همانگونه که اشاره گردید استفاده از پروتکل فوق برای برطرف مشکل اسامی ( ترجمه نام یک کامپیوتر به آدرس فیزیکی و سخت افزاری ) صرفا" برای شبکه های محلی با ابعاد کوچک توصیه شده و در شبکه های بزرگ نظیر شبکه های اترنت با ماهیت Broadcast Based با مشکلات عدیده ای مواجه خواهیم شد.در ادامه به برخی از این مشکلات اشاره شده است .
بموازات افزایش تعداد کامپیوترهای موجود در شبکه ترافیک انتشار بسته های اطلاعاتی بشدت افزایش خواهد یافت .
پروتکل های مبتنی بر NetBIOS ( نظیر NetBEUI) دارای مکانیزمهای لازم برای روتینگ نبوده و دستورالعمل های مربوط به روتینگ در مشخصه فریم بسته های اطلاعاتی NetBIOS تعریف نشده است .
در صورتیکه امکانی فراهم گردد که قابلیت روتینگ به پیامهای NetBIOS داده شود ( نظیر Overlay نمودن NetBIOS بر روی پروتکل دیگر با قابلیت روتینگ ، روترها بصورت پیش فرض بسته های NetBIOS را منتشر نخواهند کرد.
ماهیت BroadCast بودن پروتکل NetBIOS یکی از دو فاکتور مهم در رابطه با محدودیت های پروتکل فوق خصوصا" در شبکه های بزرگ است . فاکتور دوم ، ساختار در نظر گرفته شده برای نحوه نامگذاری است . ساختار نامگذاری در پروتکل فوق بصورت مسطح (Flat) است .

توضیحات مفصل تر در ادامه مطلب ...

نویسنده: وحید عقیقی
۰۵آذر۸۹
نوزدهمین کنفرانس مهندسی برق ایران اردیبهشت ماه 90 در دانشگاه صنعتی امیرکبیر تهران برگزار خواهد شد.

مهلت ارسال مقاله تا 15 آذرماه 89 تمدید شده است. زمان اعلام نتایج داوری اول اسفند می باشد.

سایت کنفرانس :

http://icee2011.aut.ac.ir

نویسنده: وحید عقیقی
۰۵آذر۸۹

ششمین دوره از مسابقات سالانه بین المللی ربوکاپ آزاد ایران، فروردین ماه 1390 در محل دایمی نمایشگاه های بین المللی تهران برگزار می گردد. کمیته ملی ربوکاپ ایران و دانشگاه آزاد اسلامی قزوین برگزار کنندگان این مسابقات می باشند. 

وب سایت مسابقات :

http://2011.iranopen.ir/Default.aspx?tabid=36&language=fa-IR

نویسنده: وحید عقیقی
۱۴تیر۸۹

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

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

روش PCA به نامهای دیگری نیز معروف است. مانند:

-Karhunen Loeve Transform (KLT)

- Hotelling Transform

- Empirical Orthogonal Function (EOF)

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

روش PCA به نامهای دیگری نیز معروف است. مانند:

-Karhunen Loeve Transform (KLT)

- Hotelling Transform

- Empirical Orthogonal Function (EOF)



نویسنده: وحید عقیقی
۰۸ارديبهشت۸۹
با سلام به همه دوستان

یه مطلب بسیار مفید در مورد آموزش برنامه نویسی شبکه های عصبی MLP در Matlab

این آموزش به زبان انگلیسی است اما متنش بسیار شیوا و روونه. میشه به جرات گفت بهترین منبع برای یادگیری نحوه پیاده سازی شبکه های عصبی MLP در Matlab هستش.

لیست موضوعات : (آموزش کامل رو در ادامه مطلب بخونید)

1. PERCEPTRON

     CLASSIFICATION WITH A 2-INPUT PERCEPTRON

     CLASSIFICATION WITH A 3-INPUT PERCEPTRON

     CLASSIFICATION WITH A 2-NEURON PERCEPTRON

     CLASSIFICATION WITH A 2-LAYER PERCEPTRON

2. LINEAR NETWORKS

     PATTERN ASSOCIATION WITH A LINEAR NEURON

     TRAINING A LINEAR LAYER

     ADAPTIVE LINEAR LAYER

     LINEAR PREDICTION

     ADAPTIVE LINEAR PREDICTION

3. BACKPROPAGATION NETWORKS

     PATTERN ASSOCIATION WITH A LINEAR NEURON

نویسنده: وحید عقیقی
۱۴اسفند۸۸
الگوریتم مورچگان :

سیستم مورچه CE یک سیستم  هوشمند پر ازدحام (مانند کندوی زنبوران) است و رفتار کاوش آذوقه مورچگان را تقلید می کند که شامل تعداد زیادی عامل با رفتارهای ساده است که بطور غیر مستقیم و غیر همزمان با هم ارتباط برقرار می کنند . همه عاملها مأموریت جستجوی مسیرهای حلقه ای و گزارش کیفیت مسیر  که بوسیله مفهوم " عملکرد مسیر " تعریف می شود , را دارند.

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

*  ایجاد و نگهداری اتصال مسیرهای اولیه و پشتیبانی از هم گسیخته .

* حل مسایل مربوط به پیدا کردن و نگهداری مسیرهای مجازی در یک شبکه ارتباطات با تغییر شرایط.

* ساختار اتوماتیک سایتهای پرتال در وب .

* استفاده در مسیریاب های نرم افزاری و عاملهای موبایل  .

نویسنده: وحید عقیقی
۱۴اسفند۸۸

الگوریتم ژنتیک :

الگوریتم ژنتیک که بعنوان یکی از روشهای تصادفی بهینه یابی شناخته شده,  توسط جان هالند در سال 1967 ابداع شده است. بعدها این روش با تلاشهای گلدبرگ 1989, مکان خویش را یافته و امروزه نیز  بواسطه توانایی های خویش , جای مناسبی در میان دیگر روشها دارد. روال بهینه یابی در الگوریتم ژنتیک  براساس یک روند تصادفی- هدایت شده استوار می باشد. این روش , بر مبنای نظریه تکامل تدریجی و ایده های بنیادین داروین پایه گذاری شده است.در این روش , ابتدا برای  تعدادی ثابت که جمعیت نامیده می شود مجموعه ای از پارامترهای هدف بصورت اتفاقی تولید می شود , پس از اجرای برنامه شبیه ساز عددی را که معرف انحراف معیار و یا برازش آن مجموعه از اطلاعات است را به آن عضو از جمعیت مذکور نسبت می دهیم . این عمل را برای تک تک اعضای ایجاد شده تکرار می کنیم , سپس با فراخوانی عملگرهای الگوریتم ژنتیک از جمله لقاح , جهش و انتخاب نسل بعد را شکل می دهیم و این روال تا ارضای معیار همگرایی ادامه داده خواهد شد.(شکل 1)

بصورت متداول سه معیار بعنوان معیار توقف شمرده می شود:

I.      زمان اجرای الگوریتم

II.      تعداد نسلهایی که ایجاد می شوند

III.      همگرایی معیار خطا

منبع :

arshadmit.tripod.com

نویسنده: وحید عقیقی
۱۴اسفند۸۸

شبکه عصبی چیست؟

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

یک شبکه عصبی مصنوعی (Artificial Neural Network (ANN))  ایده ای است برای پردازش اطلاعات که از سیستم عصبی زیستی الهام گرفته شده و مانند مغز به پردازش اطلاعات می پردازد . عنصر کلیدی این ایده ، ساختار جدید سیستم پردازش اطلاعات است. این سیستم از شمار زیادی عناصر پردازشی فوق العاده بهم پیوسته تشکیل شده(neurons)که برای حل یک مسأله با هم هماهنگ عمل می کند.ANN ها ،نظیر انسانها ، با مثال یاد می گیرند . یک ANN برای انجام وظیفه ای مشخص  ، مانند شناسایی الگو ها و دسته بندی اطلاعات ، در طول یک پروسه یاد گیری ، تنظیم می شود . در سیستم های زیستی  یاد گیری  با تنظیماتی در اتصالات سیناپسی که بین اعصاب قرار دارد همراه است . این  روش ANN ها هم می باشد.

بقیه در ادامه مطلب

نویسنده: وحید عقیقی
۰۶اسفند۸۸
مطلبی رو که امروز براتون آماده کردم در مورد یکی از زمینه های مورد علاقه ام یعنی متدولوژی RUP است.

این پست شامل چند بخش است که بطور کامل در ادامه مطلب قابل دسترسی است.

بخش اول :

RUP چیست؟
با پیشرفت تکنولوژی‌های مرتبط با کامپیوتر، نیاز هر چه بیشتر به گسترش علم نرم‌افزاری نیز احساس می‌شد که با پیدایش متدولوژیهای همانند SSADM 2 و روش آبشاری3 (چیو 2000) ‎آغاز شد. در ابتدا، این روشها مناسب بود و جوابگوی نیازهای آن زمان بودند ولی با افزایش داده‌ها و پیدایش مفاهیمی همچون شبکه، وب و غیره دیگر کارآیی لازم را جهت پیاده‌سازی و هدایت پروژه‌های نرم‌افزاری نداشتند. پس مفاهیم برنامه‌نویسی شیءگرا پا به عرصه وجود گذاشتند و در سال 1991 بطور جدی مورد مطالعه و بحث قرار گرفتند. استفاده از این روشها و متدهای برنامه‌نویسی، قدرت و انعطاف بسیاری را به برنامه‌ها داد و شرکتهای نرم‌افزاری توانستند با کاهش هزینه‌ها و بهینه‌سازی کدهای خود، نرم‌افزارهای قویتری را به بازار عرضه کنند ولی این روش جدید نیز نیاز به مدیریت و یکپارچگی داشت. پس روشها و متدولوژیهای جدیدی مطرح شد که شامل Booch، OMT، OSE و ... می‌باشند. در سال 2000 شرکت Rational روشی را تحت عنوان RUP مطرح ساخت (گروه کاسمیک 2003ب) که بعد از روش MSF شرکت مایکروسافت به دنیای نرم‌افزار عرضه شد و امروزه از طرفداران بسیاری برخوردار است. فرایند یکپارچه Rational در اصل یک متدولوژی است که در جهت کنترل و انجام پروژه‌های نرم‌افزاری در نظر گرفته شده است. در اصل این چارچوبی در جهت انجام صحیح و موفق پروژه‌های نرم‌افزاری می‌باشد که کلیه مراحل انجام یک پروژه که با معماری و آنالیز سازمان شروع شده و به تست نرم‌افزار و ارائه Gold Release ختم می‌شود را در بر می‌گیرد (گروه کاسمیک 2003 الف).

 

نویسنده: وحید عقیقی