دی اکسید کربن
۴-۱۰×۶۰/۰
دی اکسید نیتروژن
۵-۱۰×۵۴/۰
۲-۵ الگوریتم ژنتیک
ایده الگوریتم ژنتیکی یا GA از دو اصل انتخاب و تولید نسل در طبیعت بهره برده است. با گذشت زمان ساختار ژنتیکی موجودات تغییرکرده و نسلهای جدیدتر با محیط سازگاری بیشتری دارند. بدین طریق که امکان زنده ماندن و تولید مثل موجودات قویتر بیشتر از موجودات ضعیف میباشد. در نسلهای جدیدتر ساختار ژنتیکی موجودات قوی تکرار می شود و موجودات ضعیف از بین میروند. در بعضی موارد نیز جهش بوجود می آید بدین معنی که از آمیزش دو موجود، موجودی متولد می شود که بر اثر جهش ژنتیکی خیلی بهتر یا بدتر از والدین خود میباشد و به تعبیری یک نابغه یا یک عقب مانده متولد می شود و در نسلهای بعدی تأثیر می گذارد. طبیعت تضمین می کند که این نوع زاد و ولد موجب تولید موجودات بهتر شود.
الگوریتم ژنتیکی بر این اساس ابزاری ساده، ولی قدرتمند است. یک روش بهینه سازی بر اساس جستجو است که توسط جان هولند و شاگردانش در دانشگاه میشیگان ارائه شد. بعضی مسایل دارای راه حلهای مشخص میباشند: برای حل مسائل خطی با محدودیتهای خطی، معمولاً از روشهای حل LP(برنامه ریزی خطی) استفاده می شود و همچنین برای حل مسائل غیر خطی با محدودیتهای غیرخطی از NLP (برنامه ریزی غیر خطی) استفاده می شود. در حقیقت به این دلیل که بسیاری از روشها در محدوده مسائل خاص کاربرد دارند، پیدا کردن روش مناسب برای حل یک مسئله نیز خود مشکل دیگری است. بعضی روشها به دلیل محدودیت برای حل مسائل خاص خود نیز دچار مشکل میشوند. مثلاً برای بدست آوردن بیشینه یا کمینه یک تابع مشتقپذیر میتوان از مشتقگیری استفاده کرد. اما اگر این تابع مشتقپذیر نباشد و یا تعریف صریحی نداشته باشد، چه باید کرد؟
یکی از روشهای حل این گونه مسائل، الگوریتم ژنتیکی است که به دلیل استفاده از جستجو و همچنین مقدار تابع در نقاط مختلف فضای جستجو هیچ گونه عملیاتی بر روی تابع انجام نمیدهد. بعضی روشها مانند نیوتن کواسی، گرادیان کانجوگیت برای شروع حل مسئله نیاز به داشتن جواب نزد یک به جواب بهینه میباشند و این خود در بعضی مواقع موجب نیازمندی آنها به روشهای دیگری است که جوابی نزدیک به جواب بهینه تولید کنند، اما در الگوریتم ژنتیکی و روشهایی مانند جستجوی تصادفی شروع حل مسئله از نقاط تصادفی در فضای جستجو صورت میگیرد.
البته لازم به ذکر است که سرعت رسیدن به جواب در روشهایی مانند الگوریتم ژنتیکی و جستجوی تصادفی کمتر از سیمپلکس، نیوتن کواسی و… میباشد.
۲-۵-۱ مفاهیم الگوریتم ژنتیک
هدف الگوریتم ژنتیکی به دست آوردن جواب بهینه یا نزدیک به بهینه میباشد, برای این کار:
با پارامترهای کد شده کار می کند نه با خود پارامتر.
جستجو را بوسیله جمعیتی از نقاط انجام میدهد، نه یک نقطه. فقط به ذکر این نکته بسنده میکنیم که تعداد این نقاط نیز مهم است، به این صورت که تعداد جمعیت زیاد محاسبات را بسنده میکنیم که تعداد این نقاط نیز مهم است، به این صورت که تعداد جمعیت زیاد محاسبات را پوشش نداده و ممکن است الگوریتم در یک جواب محلی گیر کند.
از مقدار تابع در نقاط مختلف فضای جستجو استفاده می کند و نیازی به دانستن مشتق تابع یا اطلاعات دیگری از تابع ندارد.
الگوریتم ژنتیک از قوانین آماری استفاده می کند نه از قوانین محاسباتی.
برخی مفاهیم که در پیاده سازی الگوریتمهای ژنتیک به آنها برخورد میکنیم در زیر آورده شده است:
ژن و کروموزوم: ژن کوچکترین واحد سازنده GA میباشد. در حقیقت ژنها برای نمایش شکل کد شده پارامترها میباشد. به رشته ای از ژنها، کروموزوم میگویند. برای مثال وقتی متغیر X را به صورت باینری کد میکنیم، هر "۰” و “۱” یک ژن محسوب می شود و به رشتهای از این “۰” و “۱” ها که متغیر X را میسازند و در حقیقت شکل کد شده متغیرند، کروموزوم میگوییم.
تابع معیار: تابع معیار تابعی است که قرار است بهینه شود و وسیله لازم برای ارزیابی هر کروموزوم را فراهم می آورد. تابع معیار به هر کروموزوم یک عدد نسبت میدهد که مقدار این عدد میزان خوب بودن یا مناسب بودن آن کروموزوم را نشان میدهد. برای مثال وقتی میخواهیم خطای یک سیستم پیوسته به پاسخ پله را کمینه کنیم تابع معیارهای زیر مناسب میباشند :
و که e(t) مقدار خطا در هر لحظه میباشد.
جمعیت و نسل: جمعیت تعداد نقاطی از فضای جستجو است که GA با آنها به سمت جواب بهینه میرود. برای این کار عملگرهای مختلفی بر روی جمعیت اعمال میشوند و جمعیتی به وجود می آید که جایگزین جمعیت قبل می شود و با اعمال دوباره عملگرها این روند ادامه مییابد. این تکرارها نسلهای GA را بوجود میآورند.
والدین و فرزندان: در هر نسل افراد جمعیت به صورت جفت جفت و براساس احتمالی متناسب با تابع معیارشان انتخاب شده تا عملگرها بر روی آنها اعمال شود. به این جفتها “والدین” گفته می شود. پس از انجام عملگرها بر روی والدین، یک جفت موجود تولید می شود که “فرزندان “آنها میباشند.
۲-۵-۲ الگوریتم ژنتیکی ساده :
الگوریتم ژنتیکی به روشهای مختلف و با عملگرهای متنوعی پیادهسازی شده اند. آنچه در این پروژه به کار گرفته شده است، الگوریتم ژنتیکی ساده است که دیاگرام بلوکی آن در شکل (۲-۱۰) آورده شده است. انجام عملیات الگوریتم نیاز به پیادهسازی سه مرحله دارد :
۱- مقداردهی اولیه ٢- دوباره سازی ٣- جایگزینی
در مقداردهی اولیه ابتدا نقاطی از فضای جستجو به صورت تصادفی (معمولاً) انتخاب می شود و سپس هریک از آنها را کد می کنند (تشکیل کروموزوم)، هر یک از این کروموزومها را میتوان یک جواب برای مسئله بهینهسازی در نظر گرفت. تعداد کروموزومهای انتخاب شده به جمعیت در نظر گرفته شده برای مسأله بستگی دارد. برای هر کروموزوم مقدار تابع معیار را محاسبه کرده و به آن اختصاص میدهیم. مجموعه این کروموزومها نسل اولیه را تشکیل می دهند.
شکل ۲-۱۰: دیاگرام بلوکی الگوریتم ژنتیکی ساده
مرحله دوبارهسازی با بهره گرفتن از نسل فعلی، نسل جدید را تولید می کند. برای این کار یک جفت کروموزوم از نسل فعلی و با احتمالی متناسب با مقدار تابع معیار آن کروموزوم نسبت به سایر کروموزومها در آن نسل انتخاب کرده (والدین) و با اعمال عملگرهای برش و جهش یک جفت کروموزوم جدید (فرزندان) تولید می شود. این فرزندان در نسل بعدی قرار میگیرند. انتخاب، برش و جهش آنقدر ادامه مییابد تا تعداد فرزندان کافی برای پر شدن نسل جدید تولید شوند .سپس برای هر کروموزوم جدید مقدار تابع معیار را محاسبه کرده و به آن اختصاص میدهند.
در مرحله جایگزینی کروموزومهای جدید (فرزندان) جایگزین کروموزومهای قبل (والدین) میشوند یعنی نسل جدید جایگزین نسل قبلی می شود.
مرحله دوبارهسازی و جایگزینی آنقدر تکرار میشوند تا به اندازه کافی به جواب بهینه نزدیک شویم. میزان نزدیک شدن به جواب بهینه که شرط پایان الگوریتم ژنتیکی است به وسیله استفاده کننده مشخص می شود. برای این کار معمولاً معیارهایی درنظر گرفته می شود که باید برآورده شوند.
۲-۵-۳ عملگرهای انتخاب، برش و جهش
انتخاب : این عملگر، ساز و کار بقای موجود قویتر در طبیعت را تقلید می کند، یعنی به موجود بهتر شانس بیشتر و به موجود بدتر شانس کمتری برای بقا میدهد. در هرمرحله با دو انتخاب، دو موجود به عنوان والدین در نظرگرفته میشوند.
روشهای مختلفی برای انتخاب وجود دارد که برخی از آنها عبارتند از:
الف ) چرخ رولتی ب) ضعیف کشی ج) مسابقهای
به دلیل استفاده از چرخ رولتی در این پروژه به توضیح مختصر آن میپردازیم .اگرتابع معیار موجود i ام، Fi و مجموع تابع معیار موجودات آن نسل ∑f باشد، احتمال انتخاب شدن آن موجود برای والد شدن ( ∑f / Fi ) می شود. برای انتخاب در این حالت می توان یک چرخ رولتی را مانند شکل (۲-۱۱) در نظر گرفت که به هر موجود به نسبت تابع معیار قطاعی از چرخ اختصاص داده می شود. موجوداتی که قطاع بزرگتری به آنها اختصاص یابد، با احتمال بیشتری انتخاب میشوند.
شکل ۲-۱۱: انتخاب با چرخ رولتی با قطاعهای متناسب با تابع معیار هر کروموزوم
جواب برای مسئله بهینهسازی در نظر گرفت. تعداد کروموزوم های انتخاب شده به جمعیت در نظر گرفته شده برای مسئله بستگی دارد. برای هر کروموزوم مقدار تابع معیار را محاسبه کرده و به آن اختصاص میدهیم. مجموعه این کروموزومها نسل اولیه را تشکیل می دهند.
مرحله دوبارهسازی با بهره گرفتن از نسل فعلی، نسل جدید را تولید می کند. برای این کار یک جفت کروموزوم از نسل فعلی و با احتمالی متناسب با مقدار تابع معیار آن کروموزوم نسبت به سایر کروموزومها در آن نسل انتخاب کرده (والدین) و با اعمال عملگرهای برش و جهش یک جفت کروموزوم جدید (فرزندان) تولید می شود. این فرزندان در نسل بعدی قرار میگیرند. انتخاب، برش و جهش آنقدر ادامه مییابد تا تعداد فرزندان کافی برای پر شدن نسل جدید تولید شوند .سپس برای هر کروموزوم جدید مقدار تابع معیار را محاسبه کرده و به آن اختصاص می دهند.
در مرحله جایگزینی کروموزومهای جدید (فرزندان) جایگزین کروموزومهای قبل (والدین) میشوند یعنی نسل جدید جایگزین نسل قبلی می شود.
مرحله دوبارهسازی و جایگزینی آنقدر تکرار میشوند تا به اندازه کافی به جواب بهینه نزدیک شویم. میزان نزدیک شدن به جواب بهینه که شرط پایان الگوریتم ژنتیکی است به وسیله استفاده کننده مشخص می شود. برای این کار معمولاً معیارهایی درنظر گرفته می شود که باید برآورده شوند.
برش: عملگر برش، کار تولید فرزند از والدین را بر عهده دارد. روشهای مختلفی برای برش وجود دارد مانند روش ساده، چندگانه و یکنواخت. برش ساده که در این پروژه از آن استفاده شده نشان داده شده است. نقطهای به صورت آزمایشی در کروموزوم والدین انتخاب در شکل می شود. ژنهای قبل از نقطه برش از والد ١ به فرزند ١ و از والد ٢ به فرزند ٢ به صورت مستقیم انتقال مییابد. ژنهای بعد از نقطه برش از والد ١ به فرزند ٢ و از والد ٢ به فرزند ١ انتقال مییابد .
عمل برش با احتمال Pcross ( 0≤Pcross ≤۱ ) انجام می شود. درصورت عدم انجام برش همه ژنها از والد ١ به فرزند ١ و از والد ٢ به فرزند ٢ منتقل می شود. در بیشتر موارد Pcross بین ۰ تا ۸/۰ در نظر گرفته می شود. در حقیقت برش، با ترکیب ژنهای دو کروموزوم به دنبال تولید موجود بهتر میباشد.
شکل ۲-۱۲: عملگر برش ساده با جابجایی ژنهای والدین، فرزندانی جدید میسازد
جهش :این عملگر در صورتی که درست تنظیم شده باشد مانع از همگرا شدن جواب به سمت نقطه بهینه محلی بجای بهینه اصلی می شود. در هر کروموزوم که تولید می شود عمل جهش با احتمال Pmutation انجام می شود.
عملکرد جهش در شکل (۲-۱۳) نشان داده شده است .یک ژن از کروموزوم به صورت تصادفی انتخاب شده و تغییر مییابد. مثلاً در کروموزوم باینری یکی از ژنها انتخاب شده در صورت "۰" بودن، “۱” و در صورت “۱” بودن، “۰” می شود. و با این کار به نوعی، با کل فضای جستجو کار میکنیم. Pmutation معمولاً بین ۰۱/۰ تا ۱/۰ انتخاب می شود. (۱ تا ۱۰ درصد)
شکل ۲-۱۳: عملگر جهش با تغییر یک ژن نقطهای دیگر در فضای جستجو تولید می کند
فصل ۳
روابط اگزرژواکونومیک و هزینه تجهیزات در نیروگاه های چند منظوره تولید همزمان توان و آب شیرین
۳-۱ مقدمه