آموزش شبکه عصبی برای شخیص سرطان خون توسط الگوریتم رقابت استعماری
چکیده
الگوریتم های بهینه سازی الهام گرفته از طبیعت به عنوان روشهای هوشمند بهینه سازی در کنار روش های کلاسیک موفقیت قابل ملاحظه ای از خود نشان داده اند. از جمله این روش ها می توان به الگوریتم های ژنتیک1 (الهام گرفته از تکامل بیولوژیکی انسان و سایر موجودات)، بهینه سازی کلونی مورچه ها2 (بر مبنای حرکت بهینه مورچه ها) و روش بازپخت شبیه سازی شده3 (با الهام گیری از فرایند تبرید فلزات) اشاره نمود. این روش ها در حل بسیاری از مسائل بهینه سازی در حوزه های مختلفی چون تعیین مسیر بهینه عامل های خودکار، طراحی بهینه کنترل کننده برای پروسه های صنعتی، حل مسائل عمده مهندسی صنایع همانند طراحی چیدمان بهینه برای واحدهای صنعتی، حل مسائل صف و نیز در طراحی عامل های هوشمند استفاده شده اند.
الگوریتم های بهینه سازی معرفی شده، به طور عمده الهام گرفته از فرایند های طبیعی می باشند و در ارائه این الگوریتم ها به سایر نمودهای تکامل انسانی توجهی نشده است. در این نوشتار الگوریتم جدیدی برای بهینه سازی مطرح می شود که نه از یک پدیده طبیعی، بلکه از یک پدیده اجتماعی – انسانی الهام گرفته است. بطور ویژه این الگوریتم به فرایند استعمار، به عنوان مرحله ای از تکامل اجتماعی – سیاسی بشر نگریسته و با مدل سازی ریاضی این پدیده تاریخی، از آن به عنوان منشا الهام یک الگوریتم قدرتمند در زمینه بهینه سازی بهره می گیرد. در مدت کوتاهی که از معرفی این الگوریتم می گذرد، از آن برای حل مسائل بسیاری در حوزه بهینه سازی استفاده شده است. طراحی چیدمان بهینه برای واحد های صنعتی، آنتن های مخابراتی هوشمند، سیستم های پیشنهاددهنده هوشمند و نیز طراحی کنترل کننده بهینه برای سیستم های صنعتی شیمیایی تعدادی معدود از کاربردهای گسترده این الگوریتم در حل مسائل بهینه سازی می باشد.
یکی از کاربردهای مهم دیگر این الگوریتم استفاده از آن برای آموزش شبکه عصبی و بهینه کردن جواب خروجی شبکه عصبی میباشد.
فهرست مطالب
عنوان صفحه
1 مقدمه……………………………………………………………………..8
1-1 هدف و اهمیت مسئله 9
1-2 الگوریتم توسعه داده شده 9
1-3 مزایای الگوریتم توسعه داده شده 13
1-4 ساختار پروژه 14
2 بیماری سرطان خون………………………………………………..15
2-1 معرفی………………………………………………………………….16
2-2 انواع لوسمی…………………………………………………………16
2-3 عوامل خطر زا………………………………………………………..18
2-4 علائم بیماری………………………………………………………….20
3 استراتژی بهینه سازی مبتنی بر تکامل اجتماعی ـ سیاسی 22
3-1 مقدمه ………………………………………………………….23
3-2 مروری تاریخی بر پدیده استعمار 24
3-2-1 هند 27
3-2-2 مالزی 28
3-2-3 هندوچین فرانسه 28
3-2-4 هند شرقی (اندونزی) 29
3-3 الگوریتم پیشنهادی 30
3-3-1 شکل دهی امپراطوری های اولیه 33
3-3-2 مدل سازی سیاست جذب: حرکت مستعمره ها به سمت امپریالی…37
3-3-3 جابجایی موقعیت مستعمره و امپریالیست 40
3-3-4 قدرت کل یک امپراطوری 41
3-3-5 رقابت استعماری 42
3-3-6 سقوط امپراطوری های ضعیف ..45
3-3-7 همگرایی ….46
4 شبکه عصبی مصنوعی وکاربرد آن درتشخیص سرطان خون…..48
4-1 مقدمه……………………………………………………………………..50
4-2 اهداف کلی شبکه عصبی……………………………………………..51
4-2-1 طبقه بندی……………………………………………………………………..51
4-2-2 تخمین تابع……………………………………………………………………..51
4-2-3 پیشگویی…………………………………………………………………………53
4-2-4 خوشه کردن…………………………………………………………………….55
4-3 کاربرد شبکه های عصبی مصنوعی در پزشکی…………………55
4-3-1 سیستم های تشخیص بیماری……………………………………………..56
4-3-2 تجزیه و تحلیل های بیوشیمیایی…………………………………………..56
4-3-3 تجزیه و تحلیل تصویر برداری پزشکی………………………………….57
4-3-4 توسعه دارویی…………………………………………………………………57
4-4 آموزش شبکه عصبی………………………………………………….57
4-5 آموزش شبکه عصبی با الگوریتم رقابت استعماری…………….58
4-6 پیاده سازی و برنامه نویسی عملی در مطلب……………………58
4-7 مراحل انجام پروژه…………………………………………………..61
4-8 نتایج خروجی شبکه…………………………………………………..63
5 خلاصه، نتیجه گیری و پیشنهادات…………………………………………65
6 کدهای نوشته شده در مطلب…………………………………………….71
7 مراجع………………………………………………………………………….79
1 مقدمه
1-1 هدف و اهمیت مسئله
بهینه سازی اهمیت زیادی در بسیاری از شاخه های علوم دارد. به عنوان مثال فیزیک دانها، شیمی دانها، و مهندسان علاقه دارند تا یک طرح بهینه برای طراحی یک پروسه شیمیایی به کار برند و محصول تولید شده را با داشتن شروطی مثل هزینه و آلودگی کم، بیشینه کنند. همچنین در برازش غیر خطی مدل و منحنی نیز، به نوعی به بهینه سازی، نیاز داریم. اقتصاددانان و تحقیق کنندگان در عملیات نیز باید جایابی بهینه منابع در جامعه و صنعت را پیدا کنند. روشهای مطرح شده برای بهینه سازی می توانند در دو دسته عمده طبقه بندی شوند؛ بهینه سازی محلی و بهینه سازی فراگیر یا عام.
برای بهینه سازی عام، اغلب از روش های تکاملی استفاده می شود. این الگوریتم ها شامل الگوریتم های ژنتیک، بهینه سازی گروه ذرات، بازپخت شبیه سازی شده و… می باشند. الگوریتم های ژنتیک شناخته شده ترین الگوریتم های تکاملی هستند. قواعد اساسی الگوریتم ژنتیک برای اولین بار در سال 1962 توسط هالند معرفی گردید و تا به امروز کاربردهای فراوانی در بهینه سازی توابع و شناسایی سیستم پیدا کرده اند. آنچه که واضح است این است که تکامل فکری و فرهنگی بشر بسیار سریع تر از تکامل جسمی و ژنتیکی او صورت می پذیرد. بنابراین تکامل فرهنگی و دیدگاهی بشر نیز نادیده گرفته نشده و دسته ای از الگوریتم ها، موسوم به الگوریتم های فرهنگی معرفی شده اند. الگوریتم های فرهنگی در حقیقت یک دسته کاملاً جدید از الگوریتم ها نیستند. بلکه ایده ی اصلی این است که این الگوریتم ها با افزودن قابلیت تکامل فرهنگی (با افزودن امکان تبادل اطلاعات میان اعضای جمعیت) به الگوریتم های موجود، سرعت همگرایی آن ها را مطابق انتظار افزایش می دهند.
با توجه به این که اغلب روشهای عمده و شناخته شده محاسبات تکاملی، شبیه سازی کامپیوتری فرایندهای طبیعی و زیستی هستند، در این نوشتار یک الگوریتم جدید در زمینه محاسبات تکاملی معرفی می شود که بر مبنای تکامل اجتماعی و سیاسی انسان پایه گذاری شده است.
1-2 الگوریتم توسعه داده شده:
با در نظر گرفتن الگوریتم های بهینه سازی مطرح شده، آن چه که قابل توجه است این است که اغلب روش های بهینه سازی عام مطرح شده، شبیه سازی کامپیوتری فرایند های طبیعی هستند. شاید یک دلیل برای این کار، ملموس بودن و سادگی فرموله کردن و درک تکامل این فرایند ها است. در نقطه مقابل، در ارائه ی الگویتم های بهینه سازی، علی رغم توجه به تکامل زیستی انسان و سایر موجودات (الگوریتم های ژنتیک و …)، به تکامل اجتماعی وتاریخی او به عنوان پیچیده ترین و موفق ترین حالت تکامل، توجه چندانی نشده است. در این طرح، یک الگوریتم الهام گرفته از تکامل اجتماعی انسان، برای بهینه سازی، توسعه داده شده است. الگوریتم جدید معرفی شده با الهام گیری از یک فرایند اجتماعی سیاسی، نسبت به روش های مطرح شده دارای توانایی بالایی بوده و تا حد بسیار زیادی نیز، سریع می باشد. شکل 1-1 شمای کلی الگوریتم توسعه داده شده موسوم به الگوریتم رقابت استعماری4 (ICA) را نشان می دهد.
الگوریتم توسعه داده شده، همانند سایر روش های بهینه سازی تکاملی، با تعدادی جمعیت اولیه شروع می شود. در این الگوریتم، هر عنصر جمعیت، یک کشور نامیده می شود. کشور ها به دو دسته مستعمره و استعمار گر تقسیم می شوند. هر استعمارگر، بسته به قدرت خود، تعدادی از کشور های مستعمره را به سلطه خود درآورده و آن ها را کنترل می کند. سیاست جذب و رقابت استعماری، هسته اصلی این الگوریتم را تشکیل می دهند. مطابق سیاست جذب که به صورت تاریخی، توسط کشور های استعمارگری همچون فرانسه و انگلیس، در مستعمراتشان اعمال می شد، کشورهای استعمارگر با استفاده از روش هایی همچون احداث مدارس به زبان خود، سعی در از خود بی خود کردن کشور مستعمره، با از میان بردن زبان کشور مستعمره و فرهنگ و رسوم آن داشتند. در ارائه این الگوریتم، این سیاست با حرکت دادن مستعمرات یک امپراطوری، مطابق یک رابطه خاص صورت می پذیرد. شکل 1-2 این حرکت را نشان می دهد.
شکل 1-1: شمای کلی الگوریتم رقابت استعماری
شکل 1-2: حرکت مستعمرات به سمت امپریالیست (سیاست جذب)
اگر در حین حرکت، یک مستعمره، نسبت به استمارگر، به موقعیت بهتری برسد، جای آن دو با هم عوض می شوند. در ضمن، قدرت کل یک امپراطوری به صورت مجموع قدرت کشور استعمارگر به اضافه درصدی از قدرت میانگین مستعمرات آن تعریف می شود. یعنی
(1-1)
همانگونه که قبلاً نیز بدان اشاره شد، رقابت استعماری، بخش مهم دیگری از این الگوریتم را تشکیل می دهد. در طی رقابت استعماری، امپراطوری های ضعیف، به تدریج قدرت خود را از دست داده و به مرور زمان با تضعیف شدن از بین می روند. رقابت استعماری باعث می شود که به مرور زمان، به حالتی برسیم که در آن تنها یک امپراطوری در دنیا وجود دارد که آن را اداره می کند. این حالت زمانی است که الگوریتم رقابت استعماری با رسیدن به نقطه بهینه تابع هدف، متوقف می شود. شکل 1-3 زیر شمای کلی رقابت استعماری را نشان می دهد.
شکل 1-3: شمای کلی رقابت استعماری
1-3 مزایای الگوریتم توسعه داده شده:
الگوریتم توسعه داده شده، در وهله اول با داشتن یک دیدگاه کاملاً نو به مبحث بهینه سازی، پیوندی جدید میان علوم انسانی و اجتماعی از یک سو و علوم فنی و ریاضی از سوی دیگر، برقرار می کند. ارتباط میان این دو شاخه از علم به گونه ای می باشد که غالباً ریاضیات به عنوان ابزاری قوی و دقیق در خدمت علوم انسانی کلی نگر قرار گرفته و به درک و تحلیل نتایج آن کمک می کند. اما الگوریتم توسعه داده شده بر خلاف معمول، نقطه ی قوت علوم انسانی و اجتماعی، یعنی کلی نگری و وسعت دید آن را به خدمت ریاضیات درآورده و از آن به عنوان ابزاری برای درک بهتر ریاضیات و حل بهتر مسائل ریاضی استفاده می کند. بنابراین حتی بدون در نظر گرفتن قابلیت های ریاضی و عملی روش توسعه داده شده، پیوند ایجاد شده میان این دو شاخه به ظاهر جدا از هم، به عنوان یک پژوهش میان رشته ای، در نوع خود دارای ارزش بسیاری می باشد.
مزایای الگوریتم اجتماعی پیشنهادی را می توان به صورت زیر خلاصه کرد.
– نو بودن ایده ی پایه ای الگوریتم: به عنوان اولین الگوریتم بهینه سازی مبتنی بر یک فرایند اجتماعی ـ سیاسی
– توانایی بهینه سازی هم تراز و حتی بالاتر در مقایسه با الگوریتم های مختلف بهینه سازی، در مواجهه با انواع مسائل بهینه سازی
– سرعت مناسب یافتن جواب بهینه
1-4 ساختار پروژه
در این نوشتار ابتدا در فصل دوم توضیحی در مورد بیماری سرطان خون وهمچنین چگونگی تشخیص این بیماری و مواردی که برای تشخیص بیماری نیاز به بررسی دارند مورد بررسی قرار می گیرد. سپس در فصل سوم الگوریتم بهینه ساز معرفی شده بیان شده و جزیئات و نحوه پیاده سازی آن مورد بررسی قرار می گیرد. در فصل چهارم نیز شبکه عصبی مورد استفاده برای تشخیص بیماری سرطان خون مورد بررسی قرار میگیرد ودر انتهای این فصل چگونگی ارتباط شبکه عصبی والگوریتم رقابت استعماری توضیح داده میشود ودر فصل پنجم، نتیجه گیری و بررسی مزایا و معایب الگوریتم و پیشنهادات برای ادامه کار را خواهیم داشت.ودر انتها در فصل ششم کدها و الگوریتم مورد استفاده در برنامه مطلب نشان داده خواهد شد.
2 بیماری سرطان خون
2-1 معرفی
سرطان خون (لوسمی) سرطانی است که در بافت های خون ساز آغاز می شود.سرطان خون (لوسمی)، سرطانی است که در بافت های خونساز آغاز می شود. دانستن نحوه تشکیل گلبول های خونی طبیعی به شناخت این سرطان کمک می کند. گلبول های خونی طبیعی بیش تر گلبول های خونی را سلول هایی در مغز استخوان به نام سلول های بنیادی می سازند. مغز استخوان ماده نرمی است که در میانه بیش تر استخوان ها وجود دارد. سلول های بنیادی انواع گوناگون گلبول های خونی را می سازند که هر یک وظیفه خاصی بر عهده دارد:
گلبول های سفید خون با عفونت مقابله می کنند. گلبول های سفید به چند دسته تقسیم می شوند.گلبول های قرمز خون به تمام بافت های بدن اکسیژن می رسانند.پلاکت ها موجب لخته شدن خون می شوند که خونریزی را مهار می کند.سلول های بنیادی، با توجه به نیاز بدن گلبول های سفید، گلبول های قرمز و پلاکت ها را تولید می کندوقتی سلول ها پیر می شوند یا معیوب می شوند، از بین می روند و سلول های جدید جای آنها را می گیرند.
2-2 انواع لوسمی
چهار گونه رایج سرطان خون (لوسمی) وجود دارد:
* لوسمی لنفوسیتیک مزمن (Chronic Lymphocytic Leukemia- CLL) : سلول های لنفاوی را گرفتار می کند و معمولاً به کندی گسترش می یابد. سالانه بیش از 15000 مورد جدید ابتلا به سرطان خون (لوسمی)، مربوط به این نوع است. در بیش تر موارد، افراد مبتلا به این سرطان بالای 55 سال سن دارند. کودکان تقریباً هرگز به این سرطان، مبتلا نمی شوند.
* لوسمی میلوئید مزمن (Chronic Myeloid Leukemia- CML): سلول های میلوئید را گرفتار می کند و گسترش آن در مراحل اولیه بیماری کند است. سالانه نزدیک به 5000 مورد جدید ابتلا به سرطان خون (لوسمی)، مربوط به این نوع است. این نوع سرطان عمدتاً بزرگسالان را گرفتار می کند.
* لوسمی لنفوسیتیک – تلنفوبلاستیک- حاد (Acute Lymphocytic – Lymphoblastic Leukemia- ALL ) سلول های لنفاوی را گرفتار می کند و به سرعت گسترش می یابد. سالانه بیش از 5000 مورد جدید ابتلا به سرطان خون (لوسمی) مربوط به این نوع است. ALL شایع ترین نوع سرطان خون (لوسمی) در اطفال است. این سرطان بزرگسالان را نیز گرفتار می کند.
* لوسمی میلوئید حاد (Acute Myeloid Leukemia- AML) سلول های میلوئید را گرفتار می کند و به سرعت گسترش می یابد. این نوع سرطان هم بزرگسالان و هم اطفال را گرفتار می کند.
* لوسمی هیری سلول مویی (Hairy Cell Leukemia):گونه ای نادر از سرطان های خون مزمن است. این نوع سرطان خون (لوسمی) یا سایر انواع نادر سرطان خون (لوسمی)، در این جزوه به بحث گذاشته نشده است . این گونه های نادر سرطان خون (لوسمی)، سالانه روی هم رفته کم تر از 6000 مورد جدید از ابتلا به انواع سرطان خون (لوسمی) را تشکیل می-دهند.
2-3 عوامل خطرزا
وقتی که می فهمیدبه سرطان مبتلا شده اید، طبیعی ا ست که بخواهید بدانید چه عواملی در ایجاد سرطان دخیل بوده اند. هیچ کس از دلیل قطعی ایجاد سرطان خون آگاه نیست. پزشکان به ندرت دلیل ابتلای یکی و عدم ابتلای دیگری را به سرطان خون می دانند. با وجود این، تحقیقات نشان می دهند که برخی از عوامل خطرزای خاص احتمال ابتلای فرد به سرطان را افزایش می دهد.
عوامل خطرزای انواع مختلف سرطان خون (لوسمی) با هم متفاوت اند:
* تابش اشعه: افرادی که به میزان زیاد در معرض تابش اشعه هستند بسیار بیش تر از دیگران در معرض خطر ابتلا به سرطان های خون AML، CML یا ALL قرار دارند.
* انفجار بمب های هسته ای: انفجار بمب های هسته ای موجب تابش اشعه به میزان بسیار زیاد می شود (مانند انفجار بمب های هسته ای در ژاپن در جنگ جهانی دوم). خطر ابتلای بازماندگان انفجار بمب های هسته ای، به خصوص کودکان به سرطان خون (لوسمی) بیش تر از افراد دیگر است.
* پرتودرمانی: موقعیت دیگری که در آن افراد در معرض تابش اشعه به میزان زیاد قرار می گیرند، در روش های درمانی سرطان و امراض دیگر است. پرتودرمانی احتمال ابتلا به سرطان خون (لوسمی) را افزایش می دهد.
* عکس برداری تشخیصی با اشعه ایکس: در عکس برداری با اشعه ایکس برای دندانپزشکی و عکسبرداری های دیگر تشخیصی با اشعه ایکس (مانند سی تی اسکن) افراد در معرض میزان بسیار کم تری از تابش اشعه هستند. هنوز نمی دانیم که این میزان اشعه در کودکان یا بزرگسالان موجب سرطان می شود یا نه. محققان در حال بررسی این موضوع هستند که آیا تعداد زیاد عکس برداری با اشعه ایکس خطر ابتلا به سرطان خون (لوسمی) را افزایش می دهد یا نه. همچنین این موضوع را نیز بررسی می کنند که آیا سی تی اسکن در دوران کودکی خطر ابتلا به سرطان خون (لوسمی) را در افراد افزایش می دهد یا نه.
* کشیدن سیگار: کشیدن سیگار خطر ابتلا به سرطان خون AML را افزایش می دهد.
* بنزن: سروکار داشتن با بنزن در محیط کار موجب ابتلا به سرطان های خون AML CML یا ALL می شود. بنزن یک از مواد پر کاربرد در صنایع شیمیایی است. این ماده در دود سیگار و بنزین نیز وجود دارد.
* شیمی درمانی: افراد مبتلا به سرطانی که برخی داروهای ضدسرطان مصرف می کنند، گاهی اوقات بعدها دچار سرطان های خون AML یا ALL می شوند. مثلاً، درمان به وسیله داروهایی موسوم به مواد آلکیله کننده (Alkylating Agents) یا مهارکننده های توپوایزومراز (Topoisomerase Inhibitors) کمی خطر ابتلا به سرطان خون (لوسمی) حاد را افزایش می دهد.
* سندروم داون و برخی دیگر از بیماری های وراثتی: سندروم داون و برخی دیگر از بیماری های وراثتی خطر ابتلا به سرطان خون (لوسمی) حاد را افزایش می دهند.
* سندروم میلودیسپلاستیک(Myelodysplastic Syndrome) و برخی دیگر از اختلالات خونی: خطر ابتلا به سرطان خون (لوسمی) حاد در افراد مبتلا به برخی اختلالات خونی نسبت به دیگران بیش تر است.
* ویروس لوسمی T-Cell انسانی نوع یک (Human T-Cell Leukemia Virus Type HTLV-1): افراد مبتلا به ویروس HTLV-1 نسبت به دیگر افراد بیش تر در معرض خطر ابتلا به نوع نادری از سرطان خون (لوسمی) به نام سرطان خون (لوسمی) T-Cell بزرگسالان هستند. هرچند ویروس HTLV-1 موجب بروز این بیماری نادر می شود، اما سرطان خون (لوسمی) T-Cell و گونه های دیگرسرطان خون (لوسمی) مسری نیستند.
* پیشینه خانوادگی ابتلا به سرطان خون (لوسمی): ابتلای بیش از یک فرد از یک خانواده به سرطان خون (لوسمی)، بسیار نادر است. اگر چنین موردی پیش بیاید، احتمالاً در مورد سرطان خون (لوسمی) CLL خواهد بود. با وجود این، افراد بسیار اندکی هستند که به سرطان خون (لوسمی) CLL مبتلا باشند و پدر، مادر، برادر، خواهر یا فرزندشان نیز به این سرطان مبتلا شود.
داشتن یک یا چند عامل خطرزا به معنای ابتلای قطعی فرد به سرطان خون (لوسمی) نیست. بیش تر افرادی که با عوامل خطرزا سروکار دارند، هرگز به سرطان مبتلا نمی شوند.
2-4 علائم بیماری
مانند تمام سلول های خونی، سلول های خونی سرطانی نیز در تمام بدن جریان پیدا می کنند. علائم سرطان خون (لوسمی) به تعداد گلبول های خونی سرطانی و مکان تجمع آنها در بدن بستگی دارد.
پیش می آید که افراد مبتلا به سرطان خون (لوسمی) مزمن، علامتی از خود بروز ندهند. پزشک، بیماری را در یک آزمایش خون معمولی تشخیص می دهد.
معمولاً دلیل مراجعه افراد مبتلا به سرطان خون (لوسمی) حاد به پزشکشان این است که احساس مریضی می کنند. اگر مغز درگیر شده باشد، دچار سردرد، استفراغ، گیجی، از دست دادن مهار عضلات یا تشنج می شوند. سرطان خون (لوسمی) بخش های دیگر بدن مانند دستگاه گوارش، کلیه ها، ریه ها، قلب یا بیضه ها را نیز درگیر می کند.
علائم شایع سرطان خون (لوسمی) مزمن یا حاد عبارت اند از:
* تورم غدد لنفاوی که معمولاً بدون درد است (مخصوصاً غدد لنفاوی گردن یا زیر بغل)
* تب یا تعرق شبانه
* عفونت های پی در پی
* احساس خستگی یا ضعف
* به آسانی دچار خونریزی و کبودی شدن (خونریزی لثه ها، لکه های ارغوانی رنگ روی پوست یا نقاط کوچک قرمز زیر پوست)
* تورم یا ناراحتی در شکم (ناشی از تورم طحال یا کبد)
* کاهش وزن بی دلیل
* درد استخوان و مفاصل
در بیش تر مواقع، این علائم مربوط به سرطان نیستند. عفونت یا مشکلات دیگر مربوط به سلامتی نیز موجب بروز این علائم می شود. تنها پزشک می تواند در این مورد نظر قطعی بدهد.
هر فردی که دچار این علائم شود، باید به پزشک مراجعه کند تا مشکلاتش مشخص و به ساده ترین شکل ممکن درمان شود.
3 استراتژی بهینه سازی مبتنی بر تکامل اجتماعی ـ سیاسی
3-1 مقدمه
در این فصل، الگوریتم مطرح شده برای بهینه سازی، که از مدلسازی ریاضی رقابت های امپریالیستی الهام گرفته شده است، معرفی شده و اجزای مختلف آن توضیح داده می شود. با داشتن تابع ، در بهینه سازی می خواهیم آرگومان را به گونه ای بیابیم که هزینه متناظر آن، بهینه باشد (معمولاً کمینه).
در این فصل، الگوریتم جدیدی برای جستجوی عام معرفی می شود که از رقابت های استعماری الهام گرفته شده است. بطور خلاصه، این الگوریتم، از چندین کشور در حالت اولیه شروع می شود. کشورها در حقیقت جوابهای ممکن مساله هستند و معادل کروموزوم در الگوریتم ژنتیک و ذره در بهینه سازی گروه ذرات هستند. همه ی کشورها، به دو دسته تقسیم می شوند: امپریالیست و مستعمره. کشورهای استعمارگر با اعمال سیاست جذب (همگون سازی) در راستای محورهای مختلف بهینه سازی، کشورهای مستعمره را به سمت خود می شکند. رقابت امپریالیستی در کنار سیاست همگون سازی، هسته ی اصلی این الگوریتم را تشکیل می دهد و باعث می شود که کشورها به سمت مینیمم مطلق تابع حرکت کنند. در این فصل به استعمار به عنوان جزئی لاینفک از سیر تکامل تاریخی انسان نگریسته شده و از چگونگی اثرگذاری آن بر کشورهای استعمارگر و مستعمره و نیز کل تاریخ، به عنوان منبع الهام یک الگوریتم کارا و نو در زمینه محاسبات تکاملی استفاده شده است. این فصل، چگونگی مدل سازی رقابت امپریالیستی، و نیز چگونگی پیاده سازی الگوریتم را توضیح می دهد. ابتدا در بخش دوم، یک مرور خلاصه بر جوانب مختلف تاریخی و بعضی از پدیده های تاریخی مربوط به استعمار و تاثیر آن بر تکامل اجتماعی سیاسی انسان ارائه می شود. در بخش سوم این فصل، الگوریتم معرفی شده، ارائه شده و بخش های مختلف آن مورد بررسی قرار می گیرند. در بخش چهارم نیز کارایی الگوریتم بر روی چند تابع هزینه استاندارد آزموده می شود. در نهایت نیز بخش پنجم، نتیجه گیری بحث را ارائه می کند.
3-2 مروری تاریخی بر پدیده استعمار
امپریالیزم5، در لغت به سیاست توسعه قدرت و نفوذ یک کشور در حوزه خارج از قلمرو شناخته شده برای آن، اطلاق می شود. یک کشور می تواند کشور دیگر را به طور قانونگذاری مستقیم و یا از طریق روش های غیر مستقیم، مثل کنترل کالاها و مواد خام، کنترل کند. مورد اخیر اغلب استعمار نو6 خوانده می شود. استعمار یک پدیده ذاتی در تاریخ بوده است. استعمار در مراحل ابتدایی، به صورت نفوذ سیاسی ـ نظامی در کشورها و به صورت صرف استفاده از منابع زمینی، انسانی و سیاسی بوده است. بعضی مواقع نیز استعمار، به صرف جلوگیری از نفوذ کشور استعمارگر رقیب انجام می شد. به هر حال کشورهای استعمارگر رقابت شدیدی را برای به استعمار کشیدن مستعمرات همدیگر نشان می دادند. این رقابت به نوبه خود باعث رشد و توسعه کشورهای استعمارگر از لحاظ سیاسی، نظامی و اقتصادی گردید. زیرا کشورها برای داشتن امکان رقابت، مجبور به توسعه بودند.
در حالت های قدیمی تر، استعمارگران با بهره گیری از منابع زمینی، انسانی و غیره کشور مستعمره، فقط در صدد افزایش قدرت خود بودند و اینکه آیا مستعمرات پیشرفت می کنند یا نه مهم نبود. اما بعدها با فزایش ارتباط میان ملل و رشد انسانی، استعمارگران برای ادامه نفوذ خود، به نوعی از اقبال عمومی (حمایت مردمی) نیز احتیاج پیدا کردند. بدین ترتیب کشورهای استعمارگر شروع به ایجاد عمران و آبادی (هر چند ظاهری) در مستعمراتشان نمودند. بدین ترتیب، مستعمرات، شاهد پیشرفت در زمینه های اقتصادی، اجتماعی و انسانی شدند که عامل این پیشرفت به اجبار، کشور استعمارگر بود. دلیل نامگذاری این فرایند با نام "استعمار" که ریشه در کلمه عمران و آبادی دارد، نیز، همین مساله می باشد. البته دریافت اقبال عمومی تنها دلیل ایجاد عمران توسط استعمارگران در مستعمرات نبود. یک دلیل دیگر ایجاد سلطه فرهنگی بر مسعمرات در راستای اجرای سیاست همگون سازی بود. به عنوان مثال کشورهایی نظیر فرانسه و انگلیس به ایجاد مدارس انگلیسی زبان و فرانسوی زبان در مستعمرات خود پرداختند. این اقدام به دلایل مختلفی صورت می گرفت که در راس این دلایل افزایش نفوذ فرهنگی در مستعمرات بوده است. نا گفته نماند که فرایند استعمار (حد اقل بعد فرهنگی آن) با همه تبعات منفی آن در بعضی از کشورهای امپریالیست به چشم یک جهاد فکری برای نجات بشر نیز نگریسته می شد. اشعاری وجود دارند که به مدح و ستایش جوانان انگلیسی می پردازند که با هدف آموزش راهی کشورهای مستعمره شده اند و در آنها از این جوانان به عنوان قهرمانان ملی در جبهه نجات بشری یاد می شود.
امپریالیزم، نگرش عمومی نسبت به تمدن غرب را تغییر داد. داروینیست های اجتماعی، امپریالیزم را تفسیر کرده و این ایده که فرهنگ غرب، نسبت به فرهنگ شرق، برتر است؛ را تقویت کردند. در آفریقا تنها آنهایی که بعضی از استانداردهای فرهنگی غرب را داشتند، دارای بخشی از حقوق اجتماعی خود بودند. پرتقالی ها این مردم را جذب شده7 و فراسوی ها بطور توهین آمیزی آن ها را تکامل یافته8 می نامیدند.
به هرحال مستقل از اثرات و تبعات مثبت و منفی آن، استعمار به عنوان یک فرایند ذاتی در تاریخ بشر ایجاد شد، و در عین وارد کردن خسارتهای جبران ناپذیر به زیربناهای اساسی یک کشور (خصوصاً زیربناهای فرهنگی) در بعضی موارد اثرات مثبتی را نیز برای کشورها مستعمره داشت. از دید بهینه سازی، استعمار بعضی از کشورها را که در یک دره معمولی تمدن قرار داشتند، خارج کرده و آنها را به یک حوزه مینیمم دیگر برد که در بعضی موارد وضعیت این حوزه مینیمم بهتر از موقعیت قبلی کشور مستعمره بود. اما به هر حال این حرکت مستلزم پیشروی مستعمره در راستای محورهای مختلف اقتصادی و فرهنگی به سمت یک امپریالیست قویتر بود، یعنی از میان رفتن بعضی از ساختارهای فرهنگی و اجتماعی. شکل 3-1 این وضعیت را به خوبی نشان می دهد. در این شکل، مستعمره در نتیجه سیاست همگون سازی از یک ناحیه مینیمم خارج شده و وارد یک ناحیه مینیمم دیگر می شود که در آن وضعیت بهتری را دارا می باشد. به هر حال هزینه ای که بابت این حرکت پرداخت شده است، نزدیکی به کشور استعمار گر در راستای محورهای مختلف اقتصادی، سیاسی و اجتماعی است. ادامه این حرکت می تواند به جذب کامل کشور مستعمره در کشور استعمارگر بیانجامد.
شکل 3-1: اعمال سیاست جذب از طرف استعمارگران بر مستعمرات
در این بخش به بررسی چند مورد از مستعمرات کشورهای استعماری و رفتار متقابل آنها نسبت به هم می پردازیم و سعی بر آن است تا با دسته بندی این رفتارها و با کشف نظم درونی آنها و در نهایت مدل سازی ریاضی واکنشهای متقابل مستعمرات و استعمارگران، این پیدیده ی پیچیده ی اجتماعی را در قالب یک الگوریتم بهینه سازی ریاضی بریزیم.
3-2-1 هند
اروپاییها از طریق دریا به هند آمدند و در نهایت به تهدیدی علیه این سرزمین تبدیل شدند. نخستین باری که اروپاییها در قرن شانزدهم به هند آمدند، امپراطوری مغول قدرت را در این کشور در دست داشت. معهذا، در قرن هیجدهم خاندان مغول در حال اضمحلال بود و با جنگهای داخلی و دخالت خارجی، قدرت سیاسی آنها تجزیه گردید. در نیمه قرن هیجدهم، هند، طعمه امپریالیست های رقیب، بریتانیا و فرانسه شده بود. بریتانیا و فرانسه بر سر توفق استعماری بر جهان در حال نبرد با یکدیگر بودند و بریتانیای کبیر در هند به پیروزی رسید. بخش هایی از هند مستقیماً تحت حاکمیت بریتانیا قرار گرفت در حالی که بر بخش های دیگر، شاهزادگان هند با نظارت بریتانیا، حکومت می کردند.
بعد از آرام کردن این کشور، بریتانیاییها به تاسیس مدارس انگلیسی زبان و احداث جاده، راه آهن و خط تلگراف پرداختند. حکومت برتانیا همچنین برای اصلاح رسوم اجتماعی که در مقایسه با معیار های غربی نادرست تلقی می شدند، تدابیری اتخاذ کرد. این تدابیر مشتمل بود بر منسوخ کردن رسوم و عاداتی چون
– خودسوزی بیوه زنان کاست بالای جامعه که برای نشان دادن وفاداری به شوهر انجام می شد.
– سرکوب مجرمانی که به نام مذهب، دزدی و جنایت می کردند.
– افزایش حداقل سن ازدواج برای دختران.
بسیاری از هندیها، این اصلاحات را سودمند تلقی کرده و به تردید و چالش غربی ها، در قبال ارزش های سنتی خود، با بازبینی و ارزشیابی مجدد مذهب و جامعه خویش، پاسخ گفتند. در نتیجه، بسیاری از هندیها، فعالانه از این اصلاحات نظیر قانون 1891 که ازدواج دختران خردسال را منع می نمود، حمایت کردند. معهذا سنت گرایان هندو خشمگین شده و به عنوان مصداق دخالت بریتانیا در جامعه هند، به قانون مذبور اعتراض کردند .
3-2-2 مالزی
مالزی یکی از مستعمرات بریتانیا شد. حاکمیت بریتانیا بر مالزی، غیر مستقیم، و از طریق حکام بومی موسوم به سلطان، اعمال می شد که در آن زمان تبدیل به نیمه دست نشانده شده بودند. بخش سودمند اعمال کنترل بریتانیا بر مالزی، شامل الغای برده داری و مالیات های خودسرانه، احداث راهها، خطوط آهن، مدارس و برقراری نظام جدید بهداشتی بود. معهذا مسلمانان مالزی به میزان ناچیزی از توسعه سریع اقتصادی منتفع شدند و اغلب آنان همچنان با کشاورزی و ماهیگیری، امرار معاش می کردند.
3-2-3 هندوچین فرانسه
امپریالیزم فرانسه، در هندوچین مستقر شد. دلایل علاقه مندی فرانسه به این منطقه، متعدد بود:
– منابع طبیعی
– قلمروی برای فعالیت مبلغان کاتولیک
– دروازه فرعی ورود به چین
– اهرم مقابله با امپریالیسم بریتانیا
از لحاظ فرهنگی و سیاسی، فرانسه سیاست دو محوری "جذب" و "همراهی" را تعقیب می کرد. هدف سیاست جذب ایجاد یک فرانسه جدید در مستعمرات این کشور، از طریق شیوه هایی نظیر تاسیس مدارس فرانسوی و توسعه زبان و رسوم فرانسوی بود. فرانسه امیدوار بود، سر انجام در میان ویتنامی ها طبقه ممتاز جدیدی به وجود آید که با حاکمیت فرانسه موافق باشد. اما جریان امور به این صورت پیش نرفت. اقلیت کوچک ویتنامی که به فرهنگ فرانسوی دست یافته بودند، مانند هندی های صاحب تحصیلات بریتانیایی، دانش جدید خود را در راه مخالفت با سلطه فرانسه و حمایت از استقلال ویتنام، به کار گرفتند.
از لحاظ سیاسی، خط مشی فرانسه توسعه تدریجی کنترل خود از طریق سیاست "همراهی" بود. به این معنی که مقامات فرانسوی مقیم، از نزدیک دستگاه ادرای حکومت های محلی را سرپرستی می کردند.
فرانسوی ها برای تسهیل در امر توسعه اقتصادی، به احداث جاده و خطوط آهن پرداختند و سیستم آبیاری را توسعه دادند و تسهیلات آموزشی و بهداشت عمومی مدرن، ایجاد کردند. ویتنامی ها عموماً بهای سنگینی برای این عمران و آبادی پرداختند، اما بسیار کم از آن منتفع شدند.
3-2-4 هند شرقی (اندونزی)
هلندیها از اوایل قرن هفدهم در هند شرقی، دخالت داشتند. هلندیها از آغاز، مستعمرات خویش را به عنوان منابع ارزشمند مواد خام و بعدها به عنوان بازاری برای فروش محصولات صنعتی، قلمداد می کردند. در اوایل قرن بیستم، با استخراج معادن و حفاری چاههای نفت، بهره برداری از این ثروت های جدید آغاز شد. دوره ای از توسعه اقتصادی به هند شرقی آمده بود. معهذا این رفاه به جای اندونزیاییها، نصیب هلندی ها شد. این روند علی رغم "سیاست اخلاقی" که هلندیها در آستانه چرخش قرن مطرح می کردند به وقوع پیوست. سیاست پدر سالارانه هلندیها، بر تعهد اخلاقی در قبال مردم بومی و بهبود وضعیت رفاهی آن تاکید می کرد. این سیاست منجر به تاسیس مدارس ابتدایی دولتی و اتخاذ تدابیری، برای حمایت از مردم عادی اندونزی در مقابل اشکال آشکارتر استثمار اقتصادی شد. هلند بر خلاف فرانسه به سیاست "جذب"، علاقه ای نداشت و برای اشاعه نظریات و شیوه های غربی در میان مردم بومی کوششی نکرد.
با در نظر گرفتن رفتار چند کشور استعمارگر در قبال کشورهای مستعمره، به نظر می رسد که اگرچه سیاست های مذکور نتوانستند قدرت و نفوذ کشورهای امپریالیست را در میان مستعمراتشان، افزایش دهند، و مستعمرات بعد از مدتی خواستار خودمختاری سیاسی شدند؛ اما به همراه همه معایبشان، این سیاست ها تغیرات سیاسی ـ اجتماعی سریعی را در میان مستعمرات، ایجاد کردند. حوادث قرن بیستم به گونه ای رقم خورد که اکثر کشورهای مستعمره، در نتیجه انقلاب داخلی و یا ضعف کشور استعمارگر، توانستند به استقلال (حداقل سیاسی) دست پیدا کنند. اما نوع جدیدی از استعمار در حال شکل گیری بوده و جایگزین شیوه قدیمی آن شد و در حال حاضر نیز این روند ادامه دارد و چنین به نظر می رسد که حد توقف این روند (رقابت های امپریالیستی) زمانی خواهد بود که یک دنیای تک قطبی داشته باشیم، با یک امپریالیست قدرتمند. بر پایه ی چنین روندی است که الگوریتم معرفی شده (ICA)در این فصل پایه گذاری شده و از آن در طی فصول بعدی برای اهداف مختلف بهینه سازی، استفاده می شود.
3-3 الگوریتم پیشنهادی
شکل 3-2 فلوچارت الگوریتم پیشنهادی را نشان می دهد. همانند دیگر الگوریتم های تکاملی، این الگوریتم، نیز با تعدادی جمعیت اولیه تصادفی که هر کدام از آنها یک "کشور" نامیده می شوند؛ شروع می شود. تعدادی از بهترین عناصر جمعیت (معادل نخبه ها در الگوریتم ژنتیک) به عنوان امپریالیست9 انتخاب می شوند. باقیمانده جمعیت نیز به عنوان مستعمره10، در نظر گرفته می شوند. استعمارگران بسته به قدرتشان، این مستعمرات را با یک روند خاص که در ادامه می آید؛ به سمت خود می کشند. قدرت کل هر امپراطوری، به هر دو بخش تشکیل دهنده آن یعنی کشور امپریالیست (به عنوان هسته مرکزی) و مستعمرات آن، بستگی دارد. در حالت ریاضی، این وابستگی با تعریف قدرت امپراطوری به صورت مجوع قدرت کشور امپریالیست، به اضافه در صدی از میانگین قدرت مستعمرات آن، مدل شده است.
با شکل گیری امپراطوری های اولیه، رقابت امپریالیستی میان آن ها شروع می شود. هر امپراطوری ای که نتواند در رقابت استعماری، موفق عمل کرده و بر قدرت خود بیفزاید (و یا حداقل از کاهش نفوذش جلوگیری کند)، از صحنه رقابت استعماری، حذف خواهد شد. بنابراین بقای یک امپراطوری، وابسته به قدرت آن در جذب مستعمرات امپراطوری های رقیب، و به سیطره در آوردن آنها خواهد بود. در نتیجه، در جریان رقابت های امپریالیستی، به تدریج بر قدرت امپراطوری های بزرگتر افزوده شده و امپراطوری های ضعیف تر، حذف خواهند شد. امپراطوری ها برای افزایش قدرت خود، مجبور خواهند شد تا مستعمرات خود را نیز پیشرفت دهند.
شکل 3-2: فلوچارت الگوریتم پیشنهادی
با گذشت زمان، مستعمرات، از لحاظ قدرت به امپراطوری ها نزدیک تر خواهند شد و شاهد یک نوع همگرایی خواهیم بود. حد نهایی رقابت استعماری، زمانی است که یک امپراطوری واحد در دنیا داشته باشیم، با مستمراتی که از لحاظ موقعیت، به خود کشور امپریالیست، خیلی نزدیک هستند.
در ادامه مباحث این فصل، بخش های مختلف الگوریتم، مورد بررسی قرار می گیرند.
3-3-1 شکل دهی امپراطوری های اولیه
در بهینه سازی، هدف یافتن یک جواب بهینه بر حسب متغیر های مسئله، است. ما یک آرایه از متغیر های مسئله را که باید بهینه شوند، ایجاد می کنیم. در الگوریتم ژنتیک این آرایه، کروکوزوم11 نامیده می شود. در اینجا نیز آن را یک کشور می نامیم. در یک مسئله ی بهینه سازی بعدی، یک کشور، یک آرایه ی است. این آرایه به صورت زیر تعریف می شود.
مقادیر متغیره ها در یک کشور، به صورت اعداد اعشاری نمایش داده می شوند. از دیدگاه تاریخی ـ فرهنگی، اجزای تشکیل دهنده یک کشور را می توان ویژگی های اجتماعی- سیاسی آن کشور، همچون فرهنگ، زبان، ساختار اقتصادی و سایر ویژگی ها در نظر گرفت. شکل 3-3 این مسئله را به خوبی نشان می دهد. مطابق این شکل متغیرهای مجهول تابع هزینه که ما در طی فرایند بهینه سازی به دنبال انها می گردیم، در نگاه اجتماعی ـ سیاسی ویژگی های تاریخی و فرهنگی ای هستند که یک کشور را به نقطه مینیمم تابع هزینه رهنمون می سازند. در حقیقت در حل یک مسئله بهینه سازی توسط الگوریتم معرفی شده، ما به دنبال بهترین کشور (کشوری با بهترین ویژگی های اجتماعی ـ سیاسی) هستیم. یافتن این کشور در حقیقت معادل یافتن بهترین پارامتهای مسئله است که کمترین مقدار تابع هزینه را تولید می کنند.
شکل 3-3: اجزای اجتماعی سیاسی تشکیل دهنده یک کشور
به عنوان یک مثال فرض کنیم که می خواهیم یک کنترل کننده PID برای یک سیستم کنترلی طراحی کنیم که مثلاً دارای کمترین میزان مجموع فراجهش و انتگرال قدر مطلق خطا باشد. در یک حالت نوعی، جوابهای ممکنه می توانند به صورت جوابهایی که به یک خروجی پایدار منجر می شوند، تعریف شوند. برای این مسئله دسته ای از جوابهای ممکنه به صورت اولیه ایجاد می کنیم. در این مساله کشور iام به صورت زیر تعریف می شود.
(3-1)
برای شروع الگوریتم باید تعدادی از این کشورها (به تعداد کشورهای اولیه الگوریتم) ایجاد شوند. بنابراین ماتریس کل کشورها به صورت تصادفی اولیه تشکیل می شود.
(3-2)
هزینه ی یک کشور با ارزیابی تابع در متغیر های یافته می شود. بنابراین
(3-3)
در مسئله طراحی کنترل کننده، با هدف در نظر گرفته شده، این تابع به صورت زیر خواهد بود.
F = w1×MaxOvershoot + w2× IAE (3-4)
که در آن MaxOvershoot ماکزیمم فراجهش و IAE انتگرال قدر مطلق خطا است. w1 و w2 نیز وزنهایی هستند که میزان اهمیت هر یک از هدف ها را نشان می دهند. بنابراین کاری که برای بدست آوردن هزینه یک کشور (دسته پارامتهای کنترل کننده PID) باید انجام شود، این است که هر دسته از این ضرایب به عنوان کنترل کننده در نظر گرفته شده و پاسخ پله سیستم برای این کنترلر بدست می آید. در نهایت با محاسبه ماکزیمم فراجهش و انتگرال قدر مطلق خطا، مجموع آنها را به عنوان هزینه این کشور (ضرایب کنترل کننده) محاسبه می شود. ما به دنبال بهترین کشور (بهترین دسته ضرایب کنترل کننده) می گردیم. الگوریتم معرفی شده در این نوشتار، با تولید یک دسته اولیه از این ضرایب و دسته بندی آنها در قالب امپراطوری ها و اعمال سیاست جذب از طرف استعمارگران به روی مستعمرات و همچنین با ایجاد رقابت استعماری میان امپراطوریها به جستجوی بهترین کشور می پردازد.
برای شروع الگوریتم، تعداد کشور اولیه را ایجاد می کنیم. تا از بهترین اعضای این جمعیت (کشورهای دارای کمترین مقدار تابع هزینه) را به عنوان امپریالیست انتخاب می کنیم. باقیمانده تا از کشورها، مستعمراتی را تشکیل می دهند که هرکدام به یک امپراطوری تعلق دارند. برای تقسیم مستعمرات اولیه بین امپریالست ها، به هر امپریالیست، تعدادی از مستعمرات را که این تعداد، متناسب با قدرت آن است، می دهیم. برای انجام این کار، با داشتن هزینه همه امپریالیست ها، هزینه نرمالیزه آن ها را به صورت زیر در نظر می گیریم.
(3-5)
که در آن ، هزینه امپریالست nام، بیشترین هزینه میان امپریالیست ها و ، هزینه نرمالیزه شده این امپریالیست، می باشد. هر امپریالیستی که درای هزینه بیشتری باشد (امپریالیست ضعیفتری باشد)، دارای هزینه نرمالیزه کمتری خواهد بود. با داشتن هزینه نرمالیزه، قدرت نسبی نرمالیزه ی هر امپریالیست، به صورت زیر محاسبه شده و بر مبنای آن، کشورهای مستعمره، بین امپریالسیت ها تقسیم می شوند.
(3-6)
از یک دید دیگر، قدرت نرمالیزه شده یک امپریالیست، نسبت مستعمراتی است که توسط آن امپریالیست اداره می شود. بنابراین تعداد اولیه ی مستعمرات یک امپریالیست برابر خواهد بود با
(3-7)
که در آن ، تعداد اولیه مستعمرات یک امپراطوری و نیز تعداد کل کشورهای مستعمره موجود در جمعیت کشورهای اولیه است. نیز تابعی است که نزدیک ترین عدد صحیح به یک عدد اعشاری را می دهد. با در نظر گرفتن برای هر امپراطوری، به این تعداد از کشورهای مستعمره اولیه را به صورت تصادفی انتخاب کرده و به امپریالیست nام می دهیم. با داشتن حالت اولیه تمام امپراطوری ها، الگوریتم رقابت استعماری شروع می شود. روند تکامل در یک حلقه قرار دارد که تا برآورده شدن یک شرط توقف، ادامه می یابد.
شکل 3-4 چگونگی شکل گیری امپراطوری های اولیه را نشان می دهد. همانگونه که در این شکل نشان داده شده است. امپراطوری های بزرگتر، تعداد بیشتری مستعمره دارند. در این شکل، امپریالست شماره 1 قوی ترین امپراطوری را ایجاد کرده است و بیش ترین تعداد مستعمرات را دارد.
شکل 3-4: چگونگی شکل گیری امپراطوری های اولیه.
3-3-2 مدل سازی سیاست جذب: حرکت مستعمره ها به سمت امپریالیست
سیاست همگون سازی12 (جذب) با هدف تحلیل فرهنگ و ساختار اجتماعی مستعمرات در فرهنگ حکومت مرکزی انجام می گرفت. همانگونه که قبلاً نیز بیان شد، کشورهای استعمارگر، برای افزایش نفوذ خود، شروع به ایجاد عمران (ایجاد زیرساخت های حمل و نقل، تاسیس دانشگاه و …) کردند. به عنوان مثال کشورهایی نظیر انگلیس و فرانسه با تعقیب سیاست همگون سازی در مستعمرات خود در فکر ایجاد انگیس نو13 و فرانسه نو14 در مستعمرات خویش بودند. با در نظر گرفتن شیوه نمایش یک کشور در حل مسلئه بهینه سازی، در حقیقت این حکومت مرکزی با اعمال سیاست جذب سعی داشت تا کشور مستعمره را در راستای ابعاد مختلف اجتماعی سیاسی به خود نزدیک کند. این بخش از فرایند استعمار در الگوریتم بهینه سازی، به صورت حرکت مستعمرات به سمت کشور امپریالیست، مدل شده است. شکل 3-5، شمای کلی این حرکت را نشان می دهد.
شکل 3-5: شمای کلی حرکت مستعمرات به سمت امپریالیست.
مطابق این شکل کشور امپریالیست کشور مستعمره را در راستای محورهای فرهنگ و زبان به سمت خود جذب می کند. همانگونه که در این شکل نشان داده شده است، کشور مستعمره (Colony)، به اندازه واحد در جهت خط واصل مستعمره به استعمارگر (Imperialist)، حرکت کرده و به موقعیت جدید (New Position of Colony)، کشانده می شود. در این شکل، فاصله میان استعمارگر و مستعمره با نشان داده شده است. نیز عددی تصادفی با توزیع یکنواخت (و یا هر توزیع مناسب دیگر) می باشد. یعنی برای داریم.
(3-8)
که در آن عددی بزرگتر از یک و نزدیک به 2 می باشد. یک انتخاب مناسب می تواند باشد. وجود ضریب باعث می شود تا کشور مستعمره در حین حرکت به سمت کشور استعمارگر، از جهت های مختلف به آن نزدیک شود.
شکل 3-6: حرکت واقعی مستعمرات به سمت امپریالیست
با بررسی تاریخی پدیده همگون سازی، یک حقیقت آشکار در این زمینه این است که علی رغم اینکه کشوهای استعمارگر بطور جدی پیگیر سیاست جذب بودند، اما وقایع بطور کامل مطابق سیاست اعمال شده آنها پیش نمی رفت و انحرافاتی در نتیجه کار وجود داشت. در الگوریتم معرفی شده، این انحراف احتمالی با افزودن یک زاویه تصادفی به مسیر جذب مستعمرات، انجام می گیرد. بدین منظور، در حرکت مستعمرات به سمت استعمارگر، کمی زاویه تصادفی نیز به جهت حرکت مستعمره، اضافه می کنیم. شکل 3-6 این حالت را نشان می دهد. بدین منظور این بار به جای حرکت به اندازه ، به سمت کشور استعمارگر و در جهت بردار واصل مستعمره به استعمارگر، به همان میزان، ولی با انحراف در مسیر، به حرکت خود ادامه می دهیم. را به صورت تصادفی و با توزیع یکنواخت در نظر می گیریم (اما هر توزیع دلخواه و مناسب دیگر نیز می تواند استفاده شود). پس
(3-9)
در این رابطه، پارامتری دلخواه می باشد که افزایش آن باعث افزایش جستجوی اطراف امپریالیست شده و کاهش آن نیز باعث می شود تا مستعمرات تا حد ممکن، به بردار واصل مستعمره به استعمارگر، نزدیک حرکت کنند. با در نظر گرفتن واحد رادیان برای ، عددی نزدیک به /4π، در اکثر پیاده سازی ها، انتخاب مناسبی بوده است.
3-3-3 جابجایی موقعیت مستعمره و امپریالیست
سیاست جذب در عین نابودی ساختارهای اجتماعی سیاسی کشور مستعمره در بعضی موارد نتایج مثبتی را نیز برای آانها در پی داشت. بعضی از کشور در نتیجه اعمال این سیاست به نوعی از خودباوری عمومی دست یافتند و پس از مدتی همان تحصیلکرده گان (به عبارت دیگر جذب شدگان فرهنگ استعماری) بودند که به رهبری ملت خود برای رهایی از چنگال استعمار پرداختند. نمونه های فراوانی از این موارد را می توان در مستعمرات انگلیس و فرانسه یافت. از سوی دیگر نگاهی به فراز و نشیب چرخش قدرت در کشور ها به خوبی نشان می دهد که کشور هایی که زمانی در اوج قدرت سیاسی – نظامی بودند، پس از مدتی سقوط کردند و در مقابل کشورهایی سکان قدرت را در دست گرفتند که زمانی هیچ قدرتی در دست نداشنتد. در مدلسازی این واقعه تاریخی در الگوریتم معرفی شده به این صورت عمل شده است که در حین حرکت مستعمرات به سمت کشور استعمارگر، ممکن بعضی از این مستعمرات به موقعیتی بهتر از امپریالیست برسند (به نقاطی در تابع هزینه برسند که هزینه کمتری را نسبت به مقدار تابع هزینه در موقعیت امپریالیست، تولید می کنند.) در این حالت، کشور استعمارگر و کشور مستعمره، جای خود را با همدیگر عوض کرده و الگوریتم با کشور استعمارگر در موقعیت جدید ادامه یافته و این این بار این کشور امپریالیست جدید است که شروع به اعمال سیاست همگون سازی بر مستعمرات خود می کند. تغییر جای استعمارگر و مستعمره، در شکل 3-7 نشان داده شده است. در این شکل، بهترین مستعمره ی امپراطوری، که هزینه ای کمتر از خود امپریالیست دارد، به رنگ تیره تر، نشان داده شده است. شکل 3-8، کل امپراطوری را پس از تغییر موقعیت ها، نشان می دهد.
شکل 3-7: تغییر جای استعمارگر و مستعمره
شکل 3-8: کل امپراطوری، پس از تغییر موقعیت ها
3-3-4 قدرت کل یک امپراطوری
قدرت یک امپراطوری برابر است با قدرت کشور استعمارگر، به اضافه درصدی از قدرت کل مستعمرات آن. بدین ترتیب برای هزینه کل یک امپراطوری داریم.
(3-10)
که در آن هزینه کل امپراطوری nام و عددی مثبت است که معمولاً بین صفر و یک و نزدیک به صفر در نظر گرفته می شود. کوچک در نظر گرفتن ، باعث می شود که هزینه کل یک امپراطوری، تقریباً برابر با هزینه حکومت مرکزی آن (کشور امپریالیست)، شود و افزایش نیز باعث افزایش تاثیر میزان هزینه مستعمرات یک امپراطوری در تعیین هزینه کل آن می شود. در حالت نوعی در اکثر پیاده سازی به جوابهای مطلوبی منجر شده است.
3-3-5 رقابت استعماری
همانگونه که قبلاً نیز بیان شد، هر امپراطوری ای که نتواند بر قدرت خود بیفزاید و قدرت رقابت خود را از دست بدهد، در جریان رقابت های امپریالیستی، حذف خواهد شد. این حذف شدن، به صورت تدریجی صورت می پذیرد. بدین معنی که به مرور زمان، امپراطوری های ضعیف، مستعمرات خود را از دست داده و امپراطوری های قویتر، این مستعمرات را تصاحب کرده و بر قدرت خویش می افزایند. برای مدل کردن این واقعیت ، فرض می کنیم که امپراطوری در حال حذف، ضعیف ترین امپراطوری موجود است. بدین ترتیب، در تکرار الگوریتم، یکی یا چند تا از ضعیف ترین مستعمرات ضعیف ترین امپراطوری را برداشته و برای تصاحب این مستعمرات، رقابتی را میان کلیه امپراطوری ها ایجاد می کنیم. مستعمرات مذکور، لزوماً توسط قویترین امپراطوری، تصاحب نخواهند شد، بلکه امپراطوری های قویتر، احتمال تصاحب بیشتری دارند. شکل 3-9 شمای کلی این بخش از الگوریتم را نشان می دهد.
شکل 3-9: شمای کلی رقابت استعماری: امپراطوری های بزرگ تر، با احتمال بیشتری، مستعمرات امپراطوری های دیگر را تصاحب می کنند.
در این شکل امپراطوری شماره 1 به عنوان ضعیف ترین امپراطوری در نظر گرفته شده و یکی از مستعمرات آن در معرض رقابت امپریالیستی قرار گرفته است و امپراطوریهای 2 تا N برای تصاحب آان با هم رقابت می کنند. برای مدل سازی رقابت میان امپراطوری ها برای تصاحب این مستعمرات، ابتدا احتمال تصاحب هر امپراطوری (که متناسب با قدرت آن امپراطوری می باشد)، را با در نظر گرفتن هزینه کل امپراطوری، به ترتیب زیر محاسبه می کنیم. ابتدا از روی هزینه کل امپراطوری، هزینه کل نرمالیزه شده آن را تعیین می کنیم.
(3-11)
در این رابطه ، هزینه کل امپراطوری nام و نیز، هزینه کل نرمالیزه شده آن امپراطوری می باشد. هر امپراطوری که کمتری داشته باشد بیشتری خواهد داشت. در حقیقت معادل هزینه کل یک امپراطوری و معادل قدرت کل آن می باشد. امپراطوری با کمترین هزینه، دارای بیشترین قدرت است. با داشتن هزینه کل نرمالیزه شده، احتمال (قدرت) تصاحب مستعمره رقابت، توسط هر امپراطوری، به صورت زیر محاسبه می شود.
(3-12)
با داشتن احتمال تصاحب هر امپراطوری، مکانیزمی همانند چرخه رولت15 در الگوریتم ژنتیک مورد نیاز است تا مستعمره مورد رقابت را با احتمال متناسب با قدرت امپراطوریها در اختیار یکی از آنها قرار دهد. در کنار امکان استفاده از چرخ رولت موجود، در این نوشتار مکانیزم جدیدی برای پیاده سازی این فرایند معرفی شده است که نسبت به چرخه رولت دارای هزینه محاسباتی بسیار کمتری می باشد. زیرا عملیات نسبتاً زیاد مربوط به محاسبه تابع توزیع جمعی احتمال16 را که در چرخه رولت مورد نیاز است را حذف می کند و فقط به داشتن تابع چگالی احتمال17 نیاز دارد. در ادامه مکانیزم مطرح شده برای اختصاص متناسب با احتمال مستعمره مورد رقابت به امپراطوری های رقیب توضیح داده می شود.
با داشتن احتمال تصاحب هر امپراطوری، برای اینکه مستعمرات مذکور را به صورت تصادفی، ولی با احتمال وابسته به احتمال تصاحب هر امپراطوری، بین امپراطوری ها تقسیم کنیم؛ بردار را از روی مقادیر احتمال فوق، به صورت زیر تشکیل میدهیم.
(3-13)
بردار دارای سایز 1*Nimp می باشد و از مقادیر احتمال تصاحب امپراطوری ها تشکیل شده است. سپس بردار تصادفی ، همسایز با بردار را تشکیل می دهیم. آرایه های این بردار، اعدادی تصادفی با توزیع یکنواخت در بازه [0,1] می باشند.
(3-14)
سپس بردار را به صورت زیر تشکیل می دهیم.
(3-15)
با داشتن بردار ، مستعمرات مذکور را به امپراطوری ای می دهیم که اندیس مربوط به آن در بردار بزرگتر از بقیه می باشد. امپراطوری ای که بیشترین احتمال تصاحب را داشته باشد، با احتمال بیشتری اندیس مربوط به آن در بردار ، بیشترین مقدار را خواهد داشت. عدم نیاز به محاسبه CDF باعث می شود که این مکانیزم نسبت به چرخه رولت با سرعت به مراتب بیشتری عمل کند. مکانیزم جدید مطرح شده نه تنها می تواند در اختصاص مستعمره به امپراطوری بر حسب احتمال تصاحب آنها مفید باشد، بلکه به عنوان یک مکانیزم انتخاب بر حسب احتمال می تواند جایگزین چرخه رولت در الگوریتم ژنتیک برای انتخاب والدین شود و سرعت اجرای عملیات در آن را تا حد زیادی افزایش دهد.
با تصاحب مستعمره توسط یکی از امپراطوری ها، عملیات این مرحله از الگوریتم نیز به پایان می رسد.
3-3-6 سقوط امپراطوری های ضعیف
همانگونه که بیان شد، در جریان رقابت های امپریالیستی، خواه ناخواه، امپراطوریهای ضعیف به تدریج سقوط کرده و مستعمراتشان به دست امپراطوری های قوی تر می افتد. شروط متفاوتی را می توان برای سقوط یک امپراطوری در نظر گرفت. در الگوریتم پیشنهاد شده، یک امپراطوری زمانی حذف شده تلقی می شود که مستعمرات خود را از دست داده باشد. شکل 3-10 این مسئله را به خوبی نشان می دهد. در این شکل، امپراطوری شماره 4 به علت از دست دادن کلیه مستعمراتش، دیگر قدرتی برای رقابت ندارد و باید از میان بقیه امپراطوری ها حذف شود.
3-3-7 همگرایی
الگوریتم مورد نظر تا برآورده شدن یک شرط همگرایی، و یا تا اتمام تعداد کل تکرارها، ادامه می یابد. پس از مدتی، همه امپراطوری ها، سقوط کرده و تنها یک امپراطوری خواهیم داشت و بقیه کشورها تحت کنترل این امپراطوری واحد، قرار می گیرند. در این دنیای ایده آل جدید، همه ی مستعمرات، توسط یک امپراطوری واحد اداره می شوند و موقعیت ها و هزینه های مستعمرات، برابر با موقعیت و هزینه کشور امپریالیست است. در این دنیای جدید، تفاوتی، نه تنها، میان مستعمرات، بلکه میان مستعمرات و کشور امپریالیست، وجود ندارد. به عبارت دیگر، همه ی کشورها، در عین حال، هم مستعمره و هم استعمارگرند. در چنین موقعیتی رقابت امپریالیستی به پایان رسیده و به عنوان یکی از شروط توقف الگوریتم متوقف می شود. شبه کد مربوط به الگوریتم پیشنهادی در شکل 3-11، نشان داده شده است.
شکل 3-10: سقوط امپراطوری ضعیف؛ امپراطوری شماره 4، به علت از دست دادن کلیه مستعمراتش، دیگر قدرتی برای رقابت ندارد و باید از میان بقیه امپراطوری ها حذف شود.
شکل 3-11: شبه کد مربوط به الگوریتم رقابت استعماری
4 شبکه عصبی مصنوعی و کاربرد آن در تشخیص سرطان خون
4-1 مقدمه
شبکه های عصبی مصنوعی از مباحث جدیدی است که دانشمندان علوم کامپیوتر به آن علاقمند شده اند و برای پیشرفت هرچه بیشتر علوم کامپیوتر وقت و هزینه بسیاری را صرف آن کرده و می کنند. این موضوع با ایده گرفتن از سیستم عصبی بدن انسان و با هدف شبیه سازی هرچه بیشتر کامپیوتر به انسان شکل گرفت و تا حال به خوبی پیشرفته است. از جمله کاربردهای این بحث می توان از شناسایی الگوها, پردازش تصویر و رویت, هوش مصنوعی, کنترل رباتها و موارد بسیار دیگر نام برد.
شبکه عصبی چیست؟
شبکه عصبی مصنوعی یا ( ANN ) Artificial Neural Network یک نمونه سیستم پردازش است که درآن از سیستم های عصبی بیولوژیکی مانند مغز الهام گرفته شده است . عضو کلیدی این ساختار جدید سیستم پردازنده اطلاعات می باشد که تعداد زیادی از آنها به صورت مجتمع مانند هورمونهای مغز با یکدیگر کار می کنند تا بتوانند مسائل خاصی مانند تشخیص الگو یا طبقه بندی داده ها را از طریق فرایند یادگیری حل نمایند .
یادگیری در شبکه های عصبی به دو صورت می باشد :
1- تحت نظارت Supervised))
2- بدون دخالت انسانها (Unsupervised)
یادگیری درشبکه های عصبی رایج به شکل Supervised یا یادگیری تحت نظارت می باشد،
در واقع کار شــبکه های عصـبی مانند یادگیری بچه ها می باشد . با نشان دادن اشیاء ماهیت هر شیء برای کودک مشخص می شود .
4-2 اهدف کلی شبکه عصبی
4-2-1 طبقه بندی :
برای طبقه بندی ، داده های نمونه های مختلف را به شبکه می دهیم و نام گروه هر نمونه را به عنوان خروجی مشخص می کنیم ، پس از آموزش مناسب شبکه قادر خواهد بود با دریافت داده های مربوط به نمونه های جدید مشـخص کند که ایـن نمـونه بـه کـدام طبــقه متــعلق می باشد . به عنوان مثال میتوان پارامترهای آزمایشگاهی بیماران مبتلا به سرطان پروستات و افراد سالم را به عنوان ورودی و وضعیت فرد ( سالم بودن یا سرطانی بودن ) را به عنوان خروجی به شبکه داده در این صورت شبکه پس از یادگیری خواهد توانست پارامترهای فرد جدید را گرفته و سرطانی بودن او را پیشگویی کند .
4-2-2 تخمین تابع :
زمانی که پارامترهای ورودی با تاثیرات پیچیده درسیستم پاسخی قابل اندازه گیری ایجاد می کنند ،شبکه می تواند آموزش بیابد تا این پاسـخ را پیشــگویی کند . به عنوان مثال شبکه می تواند پس از آموزش، با دریافت داده های مربوط به هر مولکول جدید در داروها ، شدت اثر آن را پیشگویی کند .
4-2-3 پیشگویی : اصطلاح پیشگویی در اینجا برای سری های زمانی بکاربرده می شود ؛ یعنی جایی که داده ها مربوط به نمونه های پیاپی هستند و داده های هر نمونه برای پیشگویی نمونه بعدی استفاده می شود . مانند پیشگویی وضعیت آتی بیمار بستری در بخش CCU .
4-2-4 خوشه کردن :
این نـوع کــــارکرد شـــبکه هــا مربوط به یادگـــیری Unsupervised است . یعنی طبقه بندی داده ها بر حسب رفتار و برهم کنش های درونی آنها بدون داشتن الگو و یا فرضیه قبلی .
4-3 کاربرد شبکه های عصبی مصنوعی در علوم پزشکی
ANN در علوم پزشکی ودارویی نیز کاربرد بسیار گسترده ای دارد برخی کاربردهای آن عبارتند از :
4-3-1 سیستم های تشخیص بیماری
ANN به صورت وسیعی در تشخیص بیماریها به کار گرفته شده است و این سیستمها قادرند برای تشخیص سرطان ، بیماریهای قلبی عروقی ، بیماری سل و عفونتهای سینوسی مورد استفاده قرار گیرند . از مزایای استفاده از ANN این است که فاکتورهایی چون خستگی، فرسودگی، وضعیت های عاطفی و یا تحت شرایط خاصی کارکردن روی آنها تاثیری ندارد.
4-3-2 تجزیه و تحلیل های بیوشیمیایی
ANN به صورت وســیع و متنوعی در تجزیه وتحلیل نمونه های خون ، ادرار ، ردیابی سطح گلوکز در مبتلایان به دیابت ، تعیین سطح یون در مایعات بدن مورد استفاده قرار می گیرد.
4-3-3 تجزیه و تحلیل تصویربرداری پزشکی
ANN در تجزیه وتحلیل تصاویر تومورها و MRI مورد استفاده قرار می گیرد.
4-3-4 توسعه دارویی
ANN به عنوان ابزاری برای توسعه داروهای مرتبط با سرطان و ایدز مورد استفاده قرار می گیرد.
اگر چه در حال حاضر کاربرد شبکه های عصبی در دنیا مربوط به شبکه های تحت یادگیری است اما نوع دیگر شبکه ها که یادگیری Unsupervised دارند از هم اکنون مرزهای جدیدی را به سوی محققین گشوده اند و آرزوی یادگیری واقعی ماشینی ها بدون دخالت انسانها را برای محققین آرزویی دست یافتنی ساخته اند.
4-4 آموزش شبکه عصبی
آموزش شبکه عصبی همانگونه که در بالا نیز بدان اشاره گردید، همان تعیین وزنهای مناسب برای شبکه عصبی است. برای این منظور باید از یک روش بهینه سازی قوی و سریع استفاده کرد.
4-5 آموزش شبکه عصبی با استفاده از الگوریتم رقابت استعماری (ICA)
سوال اول: چرا آموزش شبکه عصبی با استفاده از الگوریتم های تکاملی؟
از روی این سوال خیلی از موارد بدون پرسیدن آن، رد می شویم. اما اتفاقاً این مهم ترین سوال است. چرا در کنار وجود الگوریتم های بهینه سازی مبتنی بر گرادیان (Gradient-Based Methods) که الگوریتمی مثل پس انتشار خطا (Error Back-Propagation) از آن ها استخراج می شود و خیلی سریع هم هست، باید برویم سراغ روشهای تکاملی مثل الگوریتم ICA؟ بیایید مزایا و معایب هر روش را بررسی کنیم.
1. الگوریتم های بهینه سازی مبتنی بر گرادیان و الگوریتم پس انتشار خطا (BP) خیلی سریع هستند.
2. الگوریتم های بهینه سازی مبتنی بر گرادیان و الگوریتم پس انتشار خطا (BP) مشکل افتادن در دام مینیمم محلی را دارند.
3. الگوریتم های بهینه سازی مبتنی بر گرادیان و الگوریتم پس انتشار خطا (BP) فقط به دسته ای خاص و استاندارد از شبکه های عصبی مثل پرسپترون چند لایه (BP) و آر بی اف که حل بسته برای مشتق تابع هدف نسبت به وزنها را دارند، قابل اعمال هستند.
4. الگوریتم های بهینه سازی تکاملی در مقایسه با الگوریتم های مبتنی بر گرادیان کند هستند.
5. الگوریتم های بهینه سازی تکاملی قابلیت فرار از دام محلی را دارند.
6. الگوریتم های بهینه سازی تکاملی وابسته به ساختار خاصی از شبکه نیستند و به هر ساختار تعریف شده ای قابل اعمال هستند.
7. به غیر از تعیین وزنها (یادگیری شبکه عصبی) می توان همزمان ساختار شبکه (تعداد لایه ها و تعداد نرونها در هر لایه) را نیز توسط الگوریتم های بهینه سازی تکاملی مثل الگوریتم رقابت استعماری یاد گرفت.
پس استفاده از الگوریتم های تکاملی در شبکه عصبی مزیت فرار از نقاط مینیمم محلی و نیز عدم وابستگی به ساختار معین شبکه را دارد. اما در عوض این الگوریتم ها کند می باشند. البته کند بودن بحث بسیار مهمی است و به همین سادگی نمی توان از آن عبور کرد. در مواردی کند بودن این روشها سایر مزیت های الگوریتم را زیر سوال می برد. در مورد شبکه عصبی نیز همین گونه است. استفاده از الگوریتم های تکاملی در مورد شبکه های عصبی استاندارد (در کنار وجود روشهای مبتنی بر گرادیان سریع) خیلی توجیه پذیر نیست. البته اگر زمان کافی داشته باشیم (میل دادن زمان به بینهایت) استفاده از الگوریتم های تکاملی معمولاً به جواب بهتری نسبت به الگوریتم های مبتنی بر گرادیان ختم خواهد شد. اما در عمل این گونه نیست و ما نمی توانیم مثلاً یک هفته برای یادگیری یک شبکه عصبی وقت بگذرایم وقتی که روش پس انتشار خطا در حدود یکی دو ساعت آن را حل می کند (حتی اگر به جواب کمی ضعیف تر برسد).
اما پرونده استفاده از الگوریتم های تکاملی در یادگیری شبکه عصبی را نباید بسته فرض کرد. شبکه های عصبی زیادی مطرح می شوند که ساختاری دارند که نظم کافی برای گرفتن مشتقات مورد استفاده در روشهای مبتنی بر گرادیان را نداشته و بنابراین روشهایی مثل پس انتشار خطا قابل اعمال نیستند. اینجاست که الگوریتم های تکاملی و در کنار آنها، الگوریتم رقابت استعماری باید مورد استفاده قرار گیرند.
سوال دوم: چرا الگوریتم رقایت استعماری؟
الگوریتم رقایت استعماری (ICA) در کنار روشهای دیگر بهینه سازی به عنوان ابزار نوینی برای محاسبات تکاملی و حل مسائل بهینه سازی مطرح شده و با موفقیت به بسیاری از مسائل در این حوزه اعمال شده است. اکثر مقالات منتشر شده نیز از موفقیت و برتری نسبی این الگوریتم حکایت کرده اند.
4-6 پیاده سازی و برنامه نویسی عملی آموزش شبکه عصبی در متلب
بخش های مختلف کد مورد استفاده برای یادگیری شبکه عصبی را در زیر می بینیم. این کدها از دستورات تولباکس شبکه عصبی متلب استفاده می کنند.بخش های مختلف یک برنامه شبکه عصبی را با هم مرور می کنیم.
%% Start of Program
بعضی کدهای مروبط به شروع برنامه در اینجا قرار می گیرد.
%% Data generation or loading
دسته دیتای مورد استفاده را که معمولاً در یک فایل اکسل یا نوت پد و غیره قرار دارد در این بخش لود می کنیم. در بعضی موارد نیز دیتای مصنوعی را خودمان تولید می کنیم.
%% Data Normalization
دیتا را قبل از اعمال به شبکه عصبی معمولاً نرمالیزه می کنیم. خروجی ها را نیز در بعضی مسائل همانند مسائل طبقه بندی الگو (Pattern Recognition) کد گذاری می کنیم.
%% Train and Test Data
دیتای تست و ترین و در بعضی موارد ارزیابی در این بخش جدا می شوند. مثلاً می نویسیم:
TrPercent = 80;
TrNum = round(TrPercent/100 * DataNum);
R = randperm(DataNum);
TrIndex = R(1:TrNum);
TsIndex = R(TrNum+1:end);
Xtr = XN(TrIndex,:);
Xts = XN(TsIndex,:);
Ytr = YN(TrIndex,:);
Yts = YN(TsIndex,:);
%% Network Structure
ساختار شبکه در این بخش ایجاد می شود. معمولاً از دستور newff در متلب استفاده می کنیم. مثال زیر را ببینید.
pr = [-1 1];
PR = repmat(pr,InputNum,1);
Network = newff(PR, [10 5 1],{'tansig' 'tansig' 'purelin'});
Network.trainParam.epochs = 100;
Network.trainParam.goal = 0.0001;
Network Training
حال شبکه را آموزش می دهیم.
Network = train(Network,Xtr',Ytr');
%% Network Assessment
شبکه آموزش دیده را ارزیابی می کنیم.
%% Network Analysis and Display
بعضی تحلیل ها را انجام داده و نمودارهای لازم را می کشیم.
%% End of Program
برای استفاده از الگوریتم رقابت استعماری برای آموزش شبکه عصبی چه باید کرد؟
ما سعی می کنیم از ساختار شبکه را با دستور newff ایجاد کنیم. ولی در کل می توان برنامه را از اول بدون استفاده از دستورات تولباکس نیز نوشت.
تابع هزینه
همان ساختار کد بالا را درنظر بگیرید. در آنجا در درستور زیر ساختار شبکه ایجاد شد.
Network = newff(PR, [10 5 1],{'tansig' 'tansig' 'purelin'});
روی این ساختار در workspace متلب کلیک کنید. تمام تنظیمات شبکه را خواهید دید. سعی کنید محل ذخیره شدن وزن های شبکه عصبی را پیدا کرده و به آنها دسترسی پیدا کنید. شما باید بتوانید این وزنهای اولیه تصادفی را دستکاری کنید (در انتهای پست در بخش پیوست توضیحات بیشتری در این مورد داده شده است). تابع هزینه ما به این صورت خواهد بود.
function Cost = ICA_CostFunction_Fcn(Country,Network);
از رشته طولانی Country به ترتیب کدینگی که خود انتخاب کرده اید، وزن لایه های مختلف را جدا کنید.
[W U V , …] = GetNetworkWeightsFromCountry_Fcn(Country);
این وزنها را در محل های مناسبشان در Network قرارداده و دیتای ورودی آموزش را با استفاده از دستور sim متلب به Network داده و خروجی ان را گرفته و با خروجی واقعی تست مقایسه کرده و برگردانید.
Network2 = Change Network With W U V …
Load TrainData_X
Load TrainData_Y
NetOut = sim(Network2,TrainData_X)
Cost = mse(NetOut, TrainData_Y)
end
آموزش شبکه
حال باید شبکه را آموزش دهیم. بدون دستکاری کدهای اولیه دستور train مورد استفاده در آنها را با یک تابع جدید که خودمان می نویسیم عوض کنید. اسم این تابع را مثلاً TrianUsing_ICA_Fcn می گذاریم.
Function TrainedNetwork = TrianUsing_ICA_Fcn(Network,Xtr,Ytr);
کدهای آماده الگوریتم رقابت استعماری (یا هر الگوریتم تکاملی دیگری) را در داخل این تابع قرار می دهیم. طول رشته بردار کشور (بعد یا همان تعداد متغیرهای بهینه سازی) را برابر با تعداد کل وزنهای مجهول شبکه در نظر می گیرم. با داشتن تابع هزینه تعریف شده، مثل هر مسئله بهینه سازی دیگری، به این مسئله بهینه سازی نگاه کرده و کدها را به آن اعمال می کنیم. البته این کار نیاز به کمی تغییرات و بازی کردن با کدها را خواهد داشت.
BestWeights = FindBestWeightsUsingICA_Fcn(Network,Xtr,Ytr);
TrainedNetwork = Modify Network with Best Weights;
end
پیوست: نحوه تغییر تنظیمات شبکه
یک ساختار شبکه در حالت نوعی با دستور زیر ایجاد می کنیم.
>> Network = newff([-1 1;-1 1;-1 1;-1 1;-1 1;-1 1;],[4 2 1])
بر روی متغیر شبکه ایجاد شده در workspace متلب کلیک می کنیم با انجام این کار لیست کامل پارامترهای شبکه را می بینیم.
val =
Neural Network object:
architecture:
numInputs: 1
numLayers: 3
biasConnect: [1; 1; 1]
inputConnect: [1; 0; 0]
layerConnect: [0 0 0; 1 0 0; 0 1 0]
outputConnect: [0 0 1]
numOutputs: 1 (read-only)
numInputDelays: 0 (read-only)
numLayerDelays: 0 (read-only)
subobject structures:
inputs: {1×1 cell} of inputs
layers: {3×1 cell} of layers
outputs: {1×3 cell} containing 1 output
biases: {3×1 cell} containing 3 biases
inputWeights: {3×1 cell} containing 1 input weight
layerWeights: {3×3 cell} containing 2 layer weights
functions:
adaptFcn: 'trains'
divideFcn: (none)
gradientFcn: 'gdefaults'
initFcn: 'initlay'
performFcn: 'mse'
plotFcns: {'plotperform','plottrainstate','plotregression'}
trainFcn: 'trainlm'
parameters:
adaptParam: .passes
divideParam: (none)
gradientParam: (none)
initParam: (none)
performParam: (none)
trainParam: .show, .showWindow, .showCommandLine, .epochs,
.time, .goal, .max_fail, .mem_reduc,
.min_grad, .mu, .mu_dec, .mu_inc,
.mu_max
weight and bias values:
محل قرار گرفتن و ذخیره شدن وزن های لایه های ورودی، میانی و بیاس را در زیر می بینیم. در این میان IW، وزنهای لایه ورودی، LW وزنهای لایه میانی و b مقادیر بایاس را در خود دارد.
IW: {3×1 cell} containing 1 input weight matrix
LW: {3×3 cell} containing 2 layer weight matrices
b: {3×1 cell} containing 3 bias vectors
other:
name: ''
userdata: (user information)
برای ایجاد تغییرات در وزنهای شبکه موقعیت آنها را در نظر میگیرم. شبکه تعریف شده در بالا یک شبکه با 6 ورودی، 4 نورون در لایه اول، 2 نورون در لایه دوم و یک نورون در لایه خروجی است. بنابراین ماتریس وزنهای لایه اول باید 4*6 یا 6*4 باشد.
>> Network.IW
ans =
[4×6 double]
[]
[]
>> Network.IW{1}
ans =
0.7384 0.3105 1.0734 1.0726 -0.1836 0.3654
0.7417 -0.7356 0.8497 -0.0267 0.7598 -0.8486
-0.8474 -0.5032 -0.7778 0.6822 0.6638 0.7931
0.7593 0.0861 0.8643 -0.6578 0.8440 0.7971
ماتریس فوق، مقادیر وزنهای لایه اول (از ورودی به لایه اول) است. مثلاً با دستور زیر می توانیم همه این وزنها را یک کنیم.
Network.IW{1} = ones(4,6);
نتیجه به صورت زیر می شود.
>> Network.IW{1}
ans =
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
به همین صورت برای لایه های غیر از لایه اول نیز خواهیم داشت.
>> Network.LW
ans =
[] ……. ……. ……. [] ……. ……. ……. []
[2×4 double] ……….. [] ……. ……. ……. []
[] ……. ……. ……. [1×2 double] ………. []
در این میان ماتریس 4*2 وزنهای لایه اول به دوم و 2*1 وزنهای لایه دوم به لایه سوم (خروجی) است. برای دسترسی به آنها و یا ایجاد تغییرات، باید به موقعیت دقیق آنها اشاره کنیم.
>> Network.LW{2,1}
ans =
0.7494 …….. 1.0194 ……… 0.6519 …….. 0.8639
0.6740 ……. -0.2818 ……. -0.8599 ……. -1.2243
>> Network.LW{3,2}
ans =
-0.6176 -1.2564
به این ترتیب ملاحظه می کنید تابع هزینه باید ساختار شبکه را بگیرد و ماتریس کروموزوم یا کشور ما را ابتدا به تکه های مختلف ماتریس وزنها جدا کند، این بخش ها را در محل واقعی انها قرار دهد. شبکه را با دستور sim و با استفاده از دیتاهای موجود اجرا کند (اجرا نه اموزش) و در نهایت mse دیتای آموزش را به عنوان میزان هزینه برگرداند.
4-7 مراحل انجام پروژه
طریقه انجام کارکه در اینجا تشخیص سرطان خون از نوع حاد میباشد به این صورت است که جهت انجام آزمایش روی مغز استخوان میبایست پس از آمادگی بیمار توسط سوزن مخصوص نمونه مغز استخوان گرفته شود و پس از تهیه و رنگ آمیزی لام مربوطه در قسمتهایی که نماینده ای از وضعیت عمومی مغز استخوان باشد حدودا تعداد 5000 سلول را شمارش میکنیم که با توجه به یافته ها قادر به تشخیص وضعیت بیمار میباشیم.
یافتن تعداد بالای سلول های نارس و نابالغ در مغز استخوان معیار اصلی تشخیص سرطان خون از نوع حاد میباشد که اصطلاحا به این سلول ها بلاست و به این نوع سرطان خون لوکمی حاد گفته میشود.
در این پروژه لوکمی حاد نوع M2 یا Acute myeloblastic leukemia[AML M2] لوکمی حاد میلوبلاستیک مورد بررسی قرار خواهد گرفت برای تشخیص این نوع لوکمی میبایست از مجموع کل سلول های هسته دار شمارش شده(All nucleated cells) ANC می بایست حداقل 30% از نوع بلاست باشد.
– همچنین می بایست از کل سلول های غیر از تیروئیدی
– NEC(Non Erythroid cells)(یعنی سلول هایی که از منشاء و ریشه سلول های سازنده گلبول قرمز نباشد) حداکثر 90% از نوع بلاست باشد.
– حداقل 10% از سلول های غیر از تیروئیدی می بایست از نوع واسطه ها یا انواع بالغ میلوئید باشد.
– باید کمتر از 20% از سلول های NEC (غیر از تیروئیدی) از نوع رده مونوسیت باشد.
– >=30% Of ANC are blasts
– < 90% Of NEC are blasts
– >= 10% Of NEC are mature forms of myeloid series(granulocytes)
– < 20% Of NEC are monocytic lineage
4-8 نتایج خروجی شبکه
هرچقدر دو نمودار بیشتر روی هم بیفتند نشان دهنده این است که شبکه خوب آموزش دیده و جواب نهایی نیز خطای کمتری دارد.
داده های آموزش با رنگ قرمز و خروجی آموزش شبکه با رنگ آبی
داده های تست با رنگ قرمز و خروجی تست شبکه با رنگ آبی
خروجی آموزش شبکه
خروجی تست شبکه
5 خلاصه، نتیجه گیری و پیشنهادات
آنچه در این نوشتار مورد بررسی قرار گرفت ارائه یک الگوریتم بهینه سازی جدبد بر مبنای مدلسازی ریاضی فرایند اجتماعی ـ سیاسی پدیده استعمار بود. روش های مختلفی برای حل مسائل بهینه سازی معرفی شده اند. بعضی از این روشها به صورت تکراری و بر مبنای گرادیان، نقطه بهینه تابع هزینه را پیدا می کنند. این روش ها معمولاً سرعت بالایی دارند ولی در درعوض مشکل افتادن در دام بهینه محلی را با خود حمل می کنند. در نقطه مقابل روش هایی وجود دارند که به جستجوی نقطه بهینه مطلق تابع می پردازند. الگوریتم های ژنتیک و بهینه سازی گروه ذرات نمونه هایی از این روش ها هستند. نکته قابل توجه در مورد اکثر روش های بهنیه سازی تکاملی مطرح شده، این است که این روش ها معمولاً برگرفته از تکامل زیستی و مدلسازی پدیده های طبیعی هستند و معمولاً جنبه هایی از تکامل که مدل شناخته شده ای از آن وجود ندارد، در حاشیه تحقیقاتی قرار گرفته است. در حقیقت انگیزش اصلی نگارش این پایان نامه پر کردن این خلا و بررسی جوانب پاسخ منفی ای بود که به سوال زیر داده می شد:
"آیا تکامل موجودات و به ویژه انسان، تنها به تکامل زیستی او محدود می شود؟!؟"
و آنچه در ادامه مسیر مطرح شد، یافتن پاسخ به این سوال بود که "آیا جوانب دیگر تکامل انسانی می توانند به عنوان منبع الهام یک الگوریتم بهینه سازی مورد استفاده قرار بگیرند؟"
الگوریتم معرفی شده در این نوشتار، "الگوریتم رقابت استعماری"، یکی از پاسخ های مثبتی بود که می شد به این سوال داد. بطور ویژه در معرفی این الگوریتم، یک فرایند خاص مورد بررسی ویژه ای قرار گرفت. فرایند اجتماعی ـ سیاسی ـ تاریخی استعمار، پدیده ای بود که در این نوشتار برای ارائه الگوریتم مورد استفاده قرار گرفت.
بررسی تاریخی رفتار متقابل مستعمرات و استعمارگران نشان داد که فرایند همگون سازی، از سوی استعمارگران برای جذب مستعمرات در فرهنگ و رسوم آنها اعمال می شد. همانگونه که موارد تاریخی نشان می دهند، اعمال سیاست جذب در بعضی موارد موجب ایجاد تغییرات سریع اجتماعی، سیاسی و اقتصادی در مستعمرات شد. سیاست جذب در کنار رقابت استعماری، هسته های الگوریتم معرفی شده را تشکیل می دهند.
بطور خلاصه الگوریتم معرفی شده، با تعدادی کشور اولیه شروع می شود. این کشورها به دسته هایی به نام امپراطوری تقسیم می شوند. هر امپراطوری از تعدادی مستعمره و یک امپریالیست تشکیل شده است. در داخل امپراطوری، سیاست جذب از سوی استعمارگران به مستعمرات اعمال شده و آنها را در راستای محورهای مختلف اجتماعی ـ سیاسی به سوی خود می کشند. به همراه سیاست جذب، رقابتی نیز میان امپراطوری ها برقرار است و همه آنها برای در دست گرفتن مستعمرات همدیگر تلاش می کنند. حاصل این چرخه جذب و رقابت، همگرایی کشورها (جواب های ممکن مسئله) به سمت نقطه بهینه مطلق است.
نتایج آزمایش روش پیشنهادی بر روی توابع هزینه مختلف نشان میدهد که الگوریتم معرفی شده در یافتن نقطه بهینه این توابع کاملاً موفق عمل می کند. همچنین مسائل مختلف کاربردی حل شده با این الگوریتم نشان می دهند که استراتژی بهینه سازی مطرح شده می تواند با موفقیت کامل در کنار سایر روش های مطرح بهینه سازی همچون الگوریتم ژنتیک و گروه ذرات، به حل مسائل کاربردی و مهندسی کمک کند. مقایسه نتایج حاصله توسط الگوریتم مطرح شده با روش های رایج بهینه سازی نیز از برتری نسبی این الگوریتم حکایت دارد.
الگوریتم معرفی شده به عنوان نسخه اولیه یک الگوریتم مبتنی بر یک فرایند اجتماعی ـ سیاسی و بطور اخص پدیده یچیده استعمار می باشد. بنابراین مطمئناً می توان اصلاحاتی در آن نیز ایجاد نمود. الگوریتم معرفی شده در حال حاضر برای حل مسائل پیوسته بهینه سازی مناسب می باشد. برای حل مسائل گسسته بهینه سازی باید تغییراتی در الگوریتم اعمال شود. ارائه نسخه گسسته الگوریتم می تواند برای حل مسائلی همچون انتخاب ورودی در شناسایی سیستمها و انتخاب ویژگی برای اهداف بازشناسی الگو مفید باشد. الگوریتم های رایجی همچون بهینه سازی گروه ذرات نیز در نسخه اولیه خود برای حل مسائل پیوسته مطرح شده بودند و بعدها نسخه های گسسته آنها معرفی گردیده است. در کاربردهای اعمال شده نیز، همه مسائل بهینه سازی دارای تنها یک تابع هدف بودند. الگوریتم مطرح شده کنونی، می تواند برای حل مسائل بهینه سازی چندبعدی18 و برای یافتن منحنی پرتو19 نیز استفاده شود ولی نتایج بدست آمده از آن به خوبی نتایج الگوریتم های بهینه سازی مخصوص مسائل چند هدفه (همانند NSGA-II، نسخه چند هدفه الگوریتم ژنتیک) نخواهد بود. بنابراین در ادامه کار می توان با اعمال تغییراتی در ساختار الگوریتم آن را برای حل مسائل بهینه سازی چند هدفه مناسب نمود.
همانگونه که بیان شد، روشهای تکاملی ویژگی گریز از نقطه مینیمم محلی را دارند. در مقابل روشهای کلاسیک بهینه سازی دارای سرعت همگرایی بیشتری می باشند. برای داشتن هم سرعت همگرایی بالا و هم گیر نکردن در نقاط بهینه محلی، یک روش رایج ترکیب الگوریتم های تکاملی با روش های کلاسیک بهینه سازی همچون روش نیوتون است. در ادامه کار می توان ترکیبی از الگوریتم مطرح شده را نیز با الگوریتم های کلاسیک بهینه سازی ترکیب نمود. با این کار امید آن است که نتایج به مراتب بهتری (از دید سرعت همگرایی) بدست آید.
بنابراین گام های عمده پیش روی ادامه کار عبارتند از:
– ارائه نسخه گسسته الگوریتم برای حل مسائلی همچون انتخاب ورودی در شناسایی سیستم ها
– ایجاد تغییرات در الگوریتم برای حل مسائل بهینه سازی با چند تابع هدف
– ترکیب الگوریتم معرفی شده با الگوریتم های کلاسیک بهینه سازی و آزمایش آن برای حل مسائل مختلف بهینه سازی
در راستای گام های اساسی فوق، می توان می توان پیشنهادات زیر را نیز برای ادامه کار مطرح نمود.
– مطالعه دقیقتر پیرامون فرایند اجتماعی ـ سیاسی تکامل انسانی و سعی در مدلسازی فرایندهای مدل نشده در الگوریتم.
– در الگوریتم معرفی شده ظهور یک امپراطوری مدل نشده است و الگوریتم با امپراطوری های اولیه شروع شده و با سقوط آنها ادامه می یابد. به عنوان یک تغییر در الگوریتم می توان تولد یک امپراطوری نیز وارد مدل کرد.
– اعمال الگوریتم معرفی شده به مسائل بیشتر در حوزه مهندسی برای یافتن نقاط ضعف و قوت آن
– ایجاد ارتباط میان الگوریتم معرفی شده با سایر روشها در حوزه های دیگر. به عنوان مثال تشکیل امپراطوری ها و جابجایی مستعمرات میان آنها شباهت بسیار زیادی به مسئله خوشه بندی و روش های خوشه بندی مطرح شده دارد. با بررسی بیشتر هر دو روش شاید بتوان از الگوریتم مطرح شده به عنوان ابزاری برای خوشه بندی نیز استفاده نمود.
برنامه اصلی
%% Start of Program
clc
clear
close all
%% Data Loading
Data = xlsread('Data.xls');
X = Data(:,1:end-1);
Y = Data(:,end);
DataNum = size(X,1);
InputNum = size(X,2);
OutputNum = size(Y,2);
%% Normalization
MinX = min(X);
MaxX = max(X);
MinY = min(Y);
MaxY = max(Y);
XN = X;
YN = Y;
for ii = 1:InputNum
XN(:,ii) = Normalize_Fcn(X(:,ii),MinX(ii),MaxX(ii));
end
for ii = 1:OutputNum
YN(:,ii) = Normalize_Fcn(Y(:,ii),MinY(ii),MaxY(ii));
end
%% Test and Train Data
TrPercent = 80;
TrNum = round(DataNum * TrPercent / 100);
TsNum = DataNum – TrNum;
R = randperm(DataNum);
trIndex = R(1 : TrNum);
tsIndex = R(1+TrNum : end);
Xtr = XN(trIndex,:);
Ytr = YN(trIndex,:);
Xts = XN(tsIndex,:);
Yts = YN(tsIndex,:);
%% Network Structure
pr = [-1 1];
PR = repmat(pr,InputNum,1);
Network = newff(PR,[5 OutputNum],{'tansig' 'tansig'});
%% Training
Network = TrainUsing_ICA_Fcn(Network,Xtr',Ytr');
%% Assesment
YtrNet = sim(Network,Xtr')';
YtsNet = sim(Network,Xts')';
MSEtr = mse(YtrNet – Ytr)
MSEts = mse(YtsNet – Yts)
%% Display
figure(1)
plot(Ytr,'-or');
hold on
plot(YtrNet,'-sb');
hold off
figure(2)
plot(Yts,'-or');
hold on
plot(YtsNet,'-sb');
hold off
figure(3)
t = -1:.1:1;
plot(t,t,'b','linewidth',2)
hold on
plot(Ytr,YtrNet,'ok')
hold off
figure(4)
t = -1:.1:1;
plot(t,t,'b','linewidth',2)
hold on
plot(Yts,YtsNet,'ok')
hold off
الگوریتم رقابت استعماری
function [Network2 BestCost] = TrainUsing_ICA_Fcn(Network,Xtr,Ytr)
دراین قسمت باید مجهول های مسئله و مسائلی که مربوط به موضوع مد نظر ما می باشد در این پروژه تعیین وزنهای لایه اول و میانی وبایاس و تعداد کل مجهولها و…. مدنظر می باشد را مطابق خواسته های خود تنظیم کنیم.
%% Problem Statement
IW = Network.IW{1,1}; IW_Num = numel(IW);
LW = Network.LW{2,1}; LW_Num = numel(LW);
b1 = Network.b{1,1}; b1_Num = numel(b1);
b2 = Network.b{2,1}; b2_Num = numel(b2);
TotalNum = IW_Num + LW_Num + b1_Num + b2_Num;
CostFuncExtraParams.Xtr = Xtr;
CostFuncExtraParams.Ytr = Ytr;
CostFuncExtraParams.Network = Network;
در اینجا باید تابع هزینه برنامه مشخص شود که این تابع را در ادامه کدها در زیر الگوریتم رقابت استعماری نوشته ام
ProblemParams.CostFuncName = 'Cost_ANN_EA'; % You should state the name of your cost function here.
ProblemParams.CostFuncExtraParams = CostFuncExtraParams; %
Reserved for the extra parameters in cost function. In normal application do not use it that is use [].
تعداد مجهولهای مسئله را در NPar تعریف می کنیم که برای انعطاف پذیری بیشتر مسئله با TotalNum مقدار دهی میکنیم که TotalNum در بالا مقدار دهی شده.
ProblemParams.NPar = TotalNum; % Number of optimization variables of your objective function. "NPar" is the dimention of the optimization problem.
ProblemParams.VarMin = [-1] ; % Lower limit of the optimization parameters. You can state the limit in two ways. 1) 2)
ProblemParams.VarMax = [1]; % Lower limit of the optimization parameters. You can state the limit in two ways. 1) 2)
% Modifying the size of VarMin and VarMax to have a general form
if numel(ProblemParams.VarMin)==1
ProblemParams.VarMin=repmat(ProblemParams.VarMin,1,ProblemParams.NPar);
ProblemParams.VarMax=repmat(ProblemParams.VarMax,1,ProblemParams.NPar);
end
ProblemParams.SearchSpaceSize = ProblemParams.VarMax –
ProblemParams.VarMin;
این قسمت مربوط به تنظیمات پارامترهای الگوریتم مثل تعداد کشورهای اولیه،تعداد دوره های تکامل الگوریتم،نرخ انقلاب در الگوریتم و… مشخص می شود.
%% Algorithmic Parameter Setting
AlgorithmParams.NumOfCountries = 200; % Number of initial countries.
AlgorithmParams.NumOfInitialImperialists = 30; % Number of Initial Imperialists.
AlgorithmParams.NumOfAllColonies = AlgorithmParams.NumOfCountries –
AlgorithmParams.NumOfInitialImperialists;
AlgorithmParams.NumOfDecades = 40;
AlgorithmParams.RevolutionRate = 0.3; % Revolution is the process in which the socio-political characteristics of a country change suddenly.
AlgorithmParams.AssimilationCoefficient = 2; % In the original paper assimilation coefficient is shown by "beta".
AlgorithmParams.AssimilationAngleCoefficient = .5; % In the original
paper assimilation angle coefficient is shown by "gama".
AlgorithmParams.Zeta = 0.02; % Total Cost of Empire = Cost of Imperialist + Zeta * mean(Cost of All Colonies);
AlgorithmParams.DampRatio = 0.99;
AlgorithmParams.StopIfJustOneEmpire = false; % Use "true" to stop
the algorithm when just one empire is remaining. Use "false" to continue
the algorithm.
AlgorithmParams.UnitingThreshold = 0.02; % The percent of Search Space Size, which enables the uniting process of two Empires.
در این قسمت تنظیمات مربوط به رسم نمودارها و خروجی برنامه برای مسئله مورد نظر می باشد.
%% Display Setting
DisplayParams.PlotEmpires = false; % "true" to plot. "false" to cancel
ploting.
if DisplayParams.PlotEmpires
DisplayParams.EmpiresFigureHandle = figure('Name','Plot of
Empires','NumberTitle','off');
DisplayParams.EmpiresAxisHandle = axes;
end
DisplayParams.PlotCost = false; % "true" to plot. "false"
if DisplayParams.PlotCost
DisplayParams.CostFigureHandle = figure('Name','Plot of Minimum and
Mean Costs','NumberTitle','off');
DisplayParams.CostAxisHandle = axes;
end
ColorMatrix = [1 0 0 ; 0 1 0 ; 0 0 1 ; 1 1 0 ; 1 0 1
; 0 1 1 ; 1 1 1 ;
0.5 0.5 0.5; 0 0.5 0.5 ; 0.5 0 0.5 ; 0.5 0.5 0 ; 0.5 0 0
; 0 0.5 0 ; 0 0 0.5 ;
1 0.5 1 ; 0.1*[1 1 1]; 0.2*[1 1 1]; 0.3*[1 1 1]; 0.4*[1
1 1]; 0.5*[1 1 1]; 0.6*[1 1 1]];
DisplayParams.ColorMatrix = [ColorMatrix ; sqrt(ColorMatrix)];
DisplayParams.AxisMargin.Min = ProblemParams.VarMin;
DisplayParams.AxisMargin.Max = ProblemParams.VarMax;
در این قسمت امپراطوری های اولیه شکل می گیرندوبرطبق تابع هزینه خود تعداد مشخصی از کشورها را به عنوان مستعمره خود انتخاب می کنند.
%% Creation of Initial Empires
InitialCountries = GenerateNewCountry(AlgorithmParams.NumOfCountries ,
ProblemParams);
در اینجا هزینه هرکشور محاسبه می شود و هر کشوری که هزینه کمتری داشته باشد قدرت بیشتری دارد و مستعمرات بیشتری را جذب می کند.
% Calculates the cost of each country. The less the cost is, the more is
the power.
if isempty(ProblemParams.CostFuncExtraParams)
InitialCost = feval(ProblemParams.CostFuncName,InitialCountries);
Else
InitialCost =
feval(ProblemParams.CostFuncName,InitialCountries,ProblemParams.CostFuncEx
traParams);
end
[InitialCost,SortInd] = sort(InitialCost); % Sort the cost in assending order. The best countries will be in higher places
InitialCountries = InitialCountries(SortInd,:); % Sort the population with respect to their cost.
Empires =
CreateInitialEmpires(InitialCountries,InitialCost,AlgorithmParams,
ProblemParams);
%% Main Loop
MinimumCost = repmat(nan,AlgorithmParams.NumOfDecades,1);
MeanCost = repmat(nan,AlgorithmParams.NumOfDecades,1);
if DisplayParams.PlotCost
axes(DisplayParams.CostAxisHandle);
if any(findall(0)==DisplayParams.CostFigureHandle)
h_MinCostPlot=plot(MinimumCost,'r','LineWidth',1.5,'YDataSource','MinimumC
ost');
hold on;
h_MeanCostPlot=plot(MeanCost,'k:','LineWidth',1.5,'YDataSource','MeanCost'
);
hold off;
pause(0.05);
end
end
for Decade = 1:AlgorithmParams.NumOfDecades
AlgorithmParams.RevolutionRate = AlgorithmParams.DampRatio *
AlgorithmParams.RevolutionRate;
Remained = AlgorithmParams.NumOfDecades – Decade
for ii = 1:numel(Empires)
در اینجا سیاست جذب اتفاق می افتد یعنی حرکت مستعمرات به سمت امپریالیستها،که توضیحات کامل طریقه انجام شدن در متن موجود است
%% Assimilation; Movement of Colonies Toward Imperialists (Assimilation Policy)
Empires(ii) =
AssimilateColonies(Empires(ii),AlgorithmParams,ProblemParams);
در اینجا مسئله انقلاب رخ می دهد یعنی جابه جایی های ناگهانی برای کشورها از نظر موقیت برای فرار از رفتن مسئله به دره های محلی یا Local Minimum.
%% Revolution; A Sudden Change in the Socio-Political Characteristics
Empires(ii) =
RevolveColonies(Empires(ii),AlgorithmParams,ProblemParams);
%% New Cost Evaluation
if isempty(ProblemParams.CostFuncExtraParams)
Empires(ii).ColoniesCost =
feval(ProblemParams.CostFuncName,Empires(ii).ColoniesPosition);
else
Empires(ii).ColoniesCost =
feval(ProblemParams.CostFuncName,Empires(ii).ColoniesPosition,ProblemParam
s.CostFuncExtraParams);
end
%% Empire Possession
Empires(ii) = PossesEmpire(Empires(ii));
%% Computation of Total Cost for Empires
Empires(ii).TotalCost = Empires(ii).ImperialistCost +
AlgorithmParams.Zeta * mean(Empires(ii).ColoniesCost);
end
%% Uniting Similiar Empires
Empires= UniteSimilarEmpires(Empires,AlgorithmParams,ProblemParams);
در این قسمت رقابت بین استعمارگران یا همان امپریالیسم ها برای بدست گرفتن مستعمرات همدیگر اتفاق می افتد
%% Imperialistic Competition
Empires = ImperialisticCompetition(Empires);
if numel(Empires) == 1 && AlgorithmParams.StopIfJustOneEmpire
break
end
%% Displaying the Results
DisplayEmpires(Empires,AlgorithmParams,ProblemParams,DisplayParams);
ImerialistCosts = [Empires.ImperialistCost];
MinimumCost(Decade) = min(ImerialistCosts);
MeanCost(Decade) = mean(ImerialistCosts);
if DisplayParams.PlotCost
refreshdata(h_MinCostPlot);
refreshdata(h_MeanCostPlot);
drawnow;
pause(0.01);
end
end
% End of Algorithm
BestCost = MinimumCost(end)
BestIndex = find(ImerialistCosts == min(ImerialistCosts)); BestIndex =BestIndex(1);
BestSolution = Empires(BestIndex).ImperialistPosition;
Network2 = ConsNet_Fcn(Network,BestSolution);
End
تابع هزینه برنامه
function Cost = Cost_ANN_EA(XX,CostFuncExtraParams)
Xtr = CostFuncExtraParams.Xtr;
Ytr = CostFuncExtraParams.Ytr;
Network = CostFuncExtraParams.Network;
Cost = zeros(size(XX,1),1);
for ii = 1:size(XX,1)
X = XX(ii,:);
Network = ConsNet_Fcn(Network,X);
YtrNet = sim(Network,Xtr')';
C = mse(YtrNet – Ytr);
Cost(ii,1) = C;
end
end
تابع هزینه شبکه
function Network2 = ConsNet_Fcn(Network,X)
%%
IW = Network.IW{1,1}; IW_Num = numel(IW);
LW = Network.LW{2,1}; LW_Num = numel(LW);
b1 = Network.b{1,1}; b1_Num = numel(b1);
b2 = Network.b{2,1}; b2_Num = numel(b2);
IWs = X(1:IW_Num); IW = reshape(IWs,size(IW,1),size(IW,2));
LWs = X(1:LW_Num); LW = reshape(LWs,size(LW,1),size(LW,2));
b1s = X(1:b1_Num); b1 = reshape(b1s,size(b1,1),size(b1,2));
b2s = X(1:b2_Num); b2 = reshape(b2s,size(b2,1),size(b2,2));
Network2 = Network;
Network2.IW{1,1} = IW;
Network2.LW{2,1} = LW;
Network2.b{1,1} = b1;
Network2.b{2,1} = b2;
end
تابع نرمالیزه کننده داده ها
function xN = Normalize_Fcn(x,MinX,MaxX)
xN = (x – MinX) / (MaxX – MinX) * 2 – 1;
end
مراجع
[1] Pablo Pedregal, Introduction to Optimization, Springer-Verlag New York Inc., 2004.
[2] B. Bontoux. and D. Feillet, "Ant colony optimization for the traveling purchaser problem", Computers & Operations Research, In Press, Corrected Proof, Available online 26 May 2006 (http://www.academia.edu/699373/Imperialist_competitive_algorithm_an_algorithm_for_optimization_inspired_by_imperialistic_competitionEdwin K. P. Chong and Stanislaw H. Żak, An Introduction to Optimization, John Wiley & Sons Inc., 2001.)
[3] Mitchell Melanie, An Introduction to Genetic Algorithms, MIT Press, 1999.
[4] Patrick Siarry and others, Metaheuristics for Hard Optimizations, Springer-Verlag Berlin Heidelberg, 2006.
[5] J. Kennedy and R. C. Eberhart, "Particle Swarm Optimization" in Proceedings of the 4th IEEE International Conference on Neural Networks, pp. 1942-1948, 1995.
[6] Marco Dorigo, Luca Maria Gambardella and others, Ant Colony Optimization and Swarm Intelligence, Springer-Verlag Berlin Heidelberg, 2006.
[7] Marco Dorigo and Gianni Di Caro, The Ant Colony Optimization Metaheuristic, Iridia University, 1999.
[8] Nazari-Shirkouhi, S.; Eivazy, H.; Ghodsi, R.; Rezaie, K.; Atashpaz-Gargari, E. (2010). "Solving the Integrated Product Mix-Outsourcing Problem by a Novel Meta-Heuristic Algorithm: Imperialist Competitive Algorithm". Expert Systems with Applications 37 (12): 7615-7626.
1 Genetic Algorithms (GA)
2 Ant Colony Optimization (ACO)
3 Simulated Annealing (SA)
4 Imperialist Competitve Algorithm
5 Imperialism
6 neocolonialism
7 assimilados
8 evolues
9 Imperialist
10 Colony
11 chromosome
12 Assimilation
13 New England
14 New France
15 Roulette Wheel
16 Cumulative Distribution Function (CDF)
17 Probability Density Function (PDF)
18 Multi-Objective Optimization
19 Pareto Front
—————
————————————————————
—————
————————————————————
مباحث ویژه
مباحث ویژه
مباحث ویژه
مراجع