ین الگوریتم در سال ۲۰۱۰ توسط اقای Albert در مقاله ای با عنوان
Chemical-Reaction-Inspired Metaheuristic for Optimization
منتشر و معرفی شد.
این الگوریتم از فرایند و واکنش های مولکولی الهام گرفته شده است.
هر مولکول مجموعه ای از اتم ها و خواصی مانند تعداد و …. می باشد. ما هر مولکول را با یک پروفایل نمایش میدهیم که ویژگی های آن مولکول را نشان میدهد.
این ویژگی ها عبارتند از :
W : که نشان دهنده ساختار مولکول یا همان راه حل می باشد .
PE : برای هر مولکول یک ویژگی انرژی PE تعریف میکنیم که میزان شایستگی هر مولکول را نمایش میدهد.
KE : برای هر مولکول یک ویژگی انرژی KE تعریف میکنیم
numHit : برای هر مولکول یک ویژگی numHit تعریف میکنیم که تعداد برخوردهای هر مولکول را مشخص میکند
minHit : برای هر مولکول یک ویژگی minHit تعریف میکنیم که حداقل تعداد برخورد را مشخص میکند
localMin : برای هر مولکول یک ویژگی localMin تعریف میکنیم که مینیمم ترین جوابی که اخیرا این مولکول مشاهده کرده را نگهداری میکند
همانطور که میدانید الگوریتم واکنش شیمیایی یا الگوریتم Chemical Reaction Optimization یک الگوریتم تکاملی است که از مدل کردن مولکولها و انرژی مولکولی و برخوردهای بین مولکولی الهام گرفته شده است.
مراحل کار الگوریتم واکنش شیمیایی (CRO) بصورت زیر می باشد
در مرحله اول پارامترهای الگوریتم واکنش شیمیایی را مقدار دهی میکنیم
در مرحله بعد ساخت جمعیت اولیه را انجام میدهیم . برای این کار ابتدا یک ساختار یا پروفایل برای هر مولکول تعریف میکنیم و در ان مشخص میکنیم که هر مولکول چه ویژگی هایی را دارد
در مرحله بعد میرویم به سراغ حلقه اصلی الگوریتم که الگوریتم ان بصورت زیر می باشد:
تا وقتی که FE کمتر از FELimit می باشد مراحل زیر را تکرار کن:
یک عدد تصادفی بین صفرویک ایجاد کن ، اگر این عدد بیشتر از مقدار MoleColl می باشد یا اندازه جمعیت ۱ باشد به مرحله ۲ برو در غیراینصورت به مرحله ۳ برو
عمل تجزیه (Decomposition) یا برخورد به دیواره (OnWall) را بر روی یک مولکول اعمال کن، روال کار بصورت زیر است
الف) یک مولکول را بصورت تصادفی از بین جمعیت انتخاب کن
ب) اگر شرط تجزیه برقرار است : عمل تجزیه را انجام بده و دومولکول جدید ایجاد کن. اگر عمل تجزیه موفقیت امیز بود مولکول اولیه را از جمعیت حذف کن و دو مولکول جدید را در جمعیت قرار بده
ج) اگر شرط تجزیه برقرار نبود عمل برخورد به دیواره را بر روی مولکول انتخاب شده انجام بده و ان را بروزرسانی کن
با انجام مرحله ۲ به مرحله ۴ برو
عمل ترکیب یا برخورد دومولکول را انجام بده روال کار بصورت زیر است
الف) دومولکول را به تصادف از جمعیت انتخاب کن
ب)اگر شرط ترکیب برقرار است ، عمل ترکیب را روی دو مولکول اعمال کن و دو مولکول جدید ایجاد کن، اگر عمل ترکیب با موفقیت اعمال شد ، دو مولکول اولیه را از جمعیت حذف کن و مولکول جدید را به جمعیت اضافه کن
ج) اگر شرط ترکیب برقرار نیست عمل برخورد بین مولکولی را عمال کن و به این ترتیب دو مولکول را بروز کن
بعد از انجام این مرحله به مرحله ۴ برو
در این مرحله بین تمام جمعیت جستجو میکنیم و اگر مولکولی مقدار Pe کمتر از مقدار globalMin داشته باشد ان را بعنوان بهترین جواب در نظر میگیریم
به مرحله ۱ برو
در اخر نیز که حلقه اصلی الگوریتم خاتمه پیدا کرد جوابهای یافته شده را نمایش میدهیم
سلام می خاستم بدونم که کدنویسی CRO در متلب را شما در اختیار دارید؟
سلام
نه این کد را نداریم.
سلام میخواستم بدنم امکان تلفیق این الگوریتم با سایر الگوریتم ها جهت مدل سازی یا پیش بینی ساختار وجود دارد؟