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

چکیده - الگوریتمهاي ژنتیکاز اصول انتخاب طبیعی داروین براي یافتن فرمول بهینه جهت پیشبینی یا تطبیق الگو استفاده میکند.

الگوریتمهاي ژنتیک اغلب گزینه خوبی براي تکنیکهاي پیشبینی برمبناي رگرسیون هستند. مختصراً گفته میشود که الگوریتم

یکتکنیک برنامهنویسی است که از تکامل ژنتیکی به عنوان یکالگوي حل مسئله استفاده میکند. در این مقاله سعی (GA ژنتیک(یا

بر آن داریم تا یک نقویت کننده قدرت را بررسی نموده و با استفاده از ژنتیک الگوریتم پارامترهاي بهینه را براي مدار یافته و اقدام به

بررسی نتایج بدست آمده نماییم

کلید واژه- ژنتیکالگوریتم ، تقویتکننده قدرت ، معایبژنتیکالگوریتم ، معایبژنتیکالگوریتم

-1 مقدمه

قانون انتخاب طبیعی بدین صورت است که تنها گونههایی از

یک جمعیت ادامه نسل میدهند که بهترین خصوصیات را

داشته باشند و آنهایی که این خصوصیات را نداشته باشند به

تدریج و در طی زمان از بین میروند. البته درستتر آنست

که بگوییم طبیعت مناسب ترینها را انتخاب میکند نه

بهترینها. گاهی در طبیعت گونههاي متکاملتري به وجود

میآیند که نمیتوان گفت صرفا حاصل تکامل تدریجی گونه

قبلی هستند. آنچه که ممکن است تا حدي علت این رویداد

را توضیح دهد مفهومیست به نام : تصادف یا جهش. بر

اساس این ویژگیها ژنتیک الگوریتم سعی بر آن داریم تا

یک تقویت کننده قدرت را مورد بررسی و بهینه سازي قرار

دهیم. لذا در ابتدا ساختار یک تقویت کننده قدرت را بررسی

و با توجه به نیازها کامل و سپس مقادیر برخی از

پارامترهاي آن را با ژنتیک الگوریتم بدست آورده و در

نهایت با استفاده از مقادیر بدست آمده و اعمال آن مقادیر به

مدل ، نتایج را بررسی مینماییم لذا این مقاله را به 3 بخش

کلی تقسیم میکنیم :

بخشاول : توضیحی بر ژنتیک الگوریتم

بخش دوم : بررسی یک تقویت کننده قدرت و بدست

آوردن تابع تبدیل سیستم

بخش سوم : بررسی و تحلیل پارامترهاي مورد نظر توسط

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

-2 توضیحی بر ژنتیکالگوریتم

یک تکنیک جستجو در علم GA الگوریتم ژنتیک

کامپیوتربراي یافتن راه حل بهینه و مسائل جستجو

است.الگوریتم هاي ژنتیک یکی از انواع الگوریتم هاي

تکاملی اند که از علم زیست شناسی مثل وراثت،

جهش،انتخاب ناگهانی ، انتخاب طبیعی و ترکیب الهام

[ گرفته شده .[ 2

در دهه هفتاد میلادي دانشمندي به نام جان هلند ایده

استفاده از الگوریتم ژنتیک را در بهینهسازيهاي مهندسی

مطرح کرد. ایده اساسی این الگوریتم انتقال خصوصیات

موروثی توسط ژنهاست. فرض کنید مجموعه خصوصیات

انسان توسط کروموزومهاي اول به نسل بعدي منتقل

میشوند. هر ژن در این کروموزومها نماینده یک خصوصیت

است که بصورت همزمان دو اتفاق براي کروموزومها میافتد.

است. موتاسیون به این (Mutation) اتفاق اول موتاسیون

صورت است که بعضی ژنها بصورت کاملا تصادفی تغییر

میکنند(البته تعداد این گونه ژنها بسیار کم میباشد).

اتفاق دیگر چسبیدن ابتداي یک کروموزوم به انتهاي یک

Crossover کروموزوم دیگر است؛ این مساله با نام

شناخته میشود(البته این اتفاق به تعداد بسیار بیشتري

نسبت به موتاسیون رخ میدهد). این همان چیزیست که

مثلا باعث میشود تا فرزند تعدادي از خصوصیات پدر و

تعدادي از خصوصیات مادر را با هم به ارث ببرد و از شبیه

[ شدن تام فرزند به تنها یکی از والدین جلوگیري میکند.[ 1

بررسی و بهینه سازي تقویتکننده قدرت با استفاده از ژنتیکالگوریتم

( هادي آریاکیا( 1) ، مسعود مصدق( 1) ، ابراهیمی راد ( 2

1) دانشگاه آزاد اسلامی واحد تهران مرکز ( 2) دانشگاه تهران دانشکده برق و کامپیوتر )

2

X1,X2,…,Xn، در ابتدا تعداد مشخصی از ورودي ها

هستند را انتخاب می کنیم و X که متعلق به فضاي نمونه

نمایش X=(x1,x2,…xn) آنها را در یک عدد برداي

میدهیم ؛ در مهندسی نرم افزار اصطلاحاً به آنها ارگانیسم یا

Colony کروموزوم گفته می شود و به گروه کروموزوم ها

رشد می کند Colony ، یا جمعیت می گوییم.در هر دوره

و بر اساس قوانین مشخصی که حاکی از تکامل زیستی است

تکامل می یابد.

ما یک ارزش تناسب ، Xi براي هر کروموزوم

هم مینامیم.عناصر قویتر f(Xi) داریمکه آن را (Fitness)

Colony یا کروموزوم هایی که ارزش تناسب آنها به بهینه

نزدیکتر است شانس بیشتري براي زنده ماندن در طول دوره

هاي دیگر و دوباره تولید شدن را دارند و ضعیفترها محکوم

به نابودي اند. به عبارت دیگر الگوریتم ورودي هایی که به

جواب بهینه نزدیکترندرانگه داشته واز بقیه صرف نظر می

کند.

یک گام مهم دیگر درالگوریتم،تولد است که در هر دوره

یکبار اتفاق می افتد. محتویات دو کروموزومی که در فرآیند

تولید شرکت می کنند با هم ترکیب میشوند تا 2 کروموزوم

جدید که ما انها را فرزند می نامیم ایجاد کنند.این

هیوریستیک به ما اجازه می دهد تا 2 تا از بهترین ها را

براي ایجاد یکی بهتر از آنها با هم ترکیب کنیم.مانند آنچه

به علاوه در (evolution) . در شکل 1 مشخص میباشد

طول هر دوره،یک سري از کروموزوم ها ممکن است جهش

. [4](Mutation) یابند

قرار X=(x1,x2,..,xn) در یک عدد برداري x هر ورودي

دارد .براي اجراي الگوریتم ژنتیک مان باید هر ورودي را به

یک کروموزوم تبدیل کنیم.می توانیم این را با داشتن

انجام دهیم Xi بیت براي هر عنصرو تبدیل ارزش log(n)

مثل شکل 2

می توانیم از هر روش کد کردن براي اعداد استفاده

را به صورت X کنیم.در دوره 0، یک دسته از ورودي هاي

ام ما ارزش i تصادفی انتخاب می کنیم. بعد براي هر دوره

را تولید،تغییر وانتخاب را اعمال می Fitness مقدار

کنیم.الگوریتم وقتی پایان می یابد که به معیارمان برسیم.

عموما رًاه حلها به صورت 2 تایی 0و 1 نشان داده می

شوند ولی روشهاي نمایش دیگري هم وجود دارد.تکامل از

یک مجموعه کاملاً تصادفی از موجودیت ها شروع می شود

و در نسلهاي بعدي تکرار می شود.در هر نسل،مناسبترین ها

و نه بهترین ها انتخاب می شوند.

روش هاي مختلفی براي الگوریتم هاي ژنتیک وجود دارند

که می توان براي انتخاب ژنوم ها از آنها استفاده کرد.اما

روش هاي لیست شده در پایین از معمولترین روش ها

هستند.

مناسبترین عضو هر اجتماع انتخاب می : Elitist انتخاب

شود.

یک روش انتخاب است که در آن : Roulette انتخاب

عنصري که عدد برازش(تناسب)بیشتري داشته باشد،انتخاب

می شود.

به موازات افزایش متوسط عدد برازش : Scaling انتخاب

جامعه،سنگینی انتخاب هم بیشتر می شودوجزئی تر.این

روش وقتی کاربرد دارد که مجموعه داراي عناصري باشد که

عدد برازش بزرگی دارند وفقط تفاوت هاي کوچکی آنها را از

هم تفکیک می کند.

یک زیر مجموعه از صفات یک : Tournament انتخاب

جامعه انتخاب می شوندواعضاي آن مجموعه با هم رقابت

می کنندو سرانجام فقط یک صفت از هر زیر گروه براي

تولید انتخاب می شوند.

Rank Selection, : بعضی از روشهاي دیگر عبارتند از

Generational Selection, Steady-State

Selection .Hierarchical Selection

2 کروموزوم براي معاوضه Crossover در روش

سگمنتهاي کدشان انتخاب می شوند.این فرآیند بر اساس

فرآیند ترکیب کروموزوم ها در طول تولید مثل در موجودات

زنده شبیه سازي شده. اغلب روش هاي معمول

3

هستند Single-point Crossover شامل Crossover

، که نقطه تعویضدر جایی تصادفی بین ژنوم ها است.بخش

اول قبل از نقطه ،و بخش دوم سگمنت بعد از آن ادامه پیدا

50/ می کند،که هر قسمت برگرفته از یک والد است،که 50

انتخاب شده.

تصویر 3 تاثیر هر یک از عملگر هاي ژنتیک را روي

کروموزوم هاي 8 بیتی نشان می دهد.ردیف بالاتر 2 ژنوم را

نشان می دهد که نقطه تعویض بین 5امین و 6امین مکان

در ژنوم قرار گرفته،ایجاد یک ژنوم جدید از پیوند این 2 والد

بدست می آیند.شکل 2وم ژنومی را نشان می دهد که دچار

جهششده و 0 در آن مکان به 1 تبدیل شده .

-3 بررسی یکتقویت کننده قدرت و بدست

آوردن تابع تبدیل سیستم :

تقویت کنندهاي که در ابتدا میخواهیم به بررسی آن

بپردازیم، داراي شماي کلی بصورت شکل 4 میباشد. البته

در انتهاي این بخش یک کنترل کننده پیش فاز در مسیر

فیدبک استفاده خواهیم کرد.با پیش فرضها زیر کار تحیل و

بدست آورد تابع تبدیل سیستم را شروع میکنیم :

مشخصات تقویت کننده عملیاتی :

A1= بهره حلقه باز : 106

f1=10Hz : فرکانس قطع پایین

f2=1MHz : فرکانس قطع بالا

2.5 V : افت ولتاژ

مشخصات تقویت کنندة ترانزیستوري :

A1= بهره حلقه باز : 10

f2=10KHz : فرکانس قطع بالا

1.5 V : افت ولتاژ

توابع تبدیل حلقه باز و حلقه بسته در تصویر 5 مشخص می

باشند

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

T1=1/2Πf1 T2=1/2Πf که در آن 2

T3=1/2Πf3 B1=0.01

با وارد کردن تابع تبدیل نمودار بود و مارجین را براي این

مدار حساب مینماییم که در تصویر 7 و 8 رسم شده است.

در ضمیمه ampli1.m فایل مربوطه با نام m برنامه

موجود این مقاله موجود میباشد.

4

Gain margin in dB=1.011

Corresponding Frequency=100147.9888

Phase margin n degrees=0.064197

Corresponding Frequency=99583.2111

همانطور که مشاهده میفرمایید حاشیه بهره و فرکانس بر

100 و KHz هم افتادگی بهره به ترتیب 1.011 و

99KHz همچنین حاشیه فاز و فرکانس برهم افتادگی فاز

میباشد و سیستم در آستانه ناپایداري است.

اینبار سعی میکنیم با استفاده از فیدبک در بخش تقویت

کننده ترانزیستوري پایداري را افزایش دهیم. شکل مدار ،

نمودار بلوکی و مدل سیمولینک مدار را در تصویر 9

میتوانید مشاهده نمایید

براي بدست آوردن تابع تبدیل کلی سیستم و نمودارهاي

استفاده شده است که در بخش Ampli2.m بود از فایل

ضمیمه موجود میباشد. نتایج بدست آمده و نمودارهاي بود

و پاسخ پله را میتوانید در تصویر 10 مشاهده نمایید

همانطور که از نمودارتصویر 10 و نتایج بدست آمده از قبل

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

99.6 به 18.9 درجه و 95.3 KHz از 0.06 درجه و

رسیده است. هر چند که این بهبود مطلوب ما میبود KHz

اما بازهم مقادیر قابل اطمینانی براي یک تقویت کننده

نمیباشد

راه دیگري که معمولا براي افزایش فاز سیستمها مورد

استفاده قرار میگیرد، استفاده از کنترل کننده پس فاز

است. اما از آنجا که کنترل کننده پس فاز تاخیري را بر

سیستم تحمیل میکند، پاسخ سیستم را کند مینماید که

باعث ایجاد نوسانهاي شدید در خروجی تقویت کننده

میشود.

لذا یک کنترل کننده پیشفاز استفاده گردید و چون کنترل

کننده پیش فاز رفتاري شبیه مشتقگیر دارد بهره و سرعت

پاسخ سیستم را افزایشمیدهد. در شکل 11 مدار با فیدبک

پیشفاز و همچنین مدل سیمولینک آنرا مشاهده مینمایید

-4 بررسی و تحلیل پارامترهاي مورد نظر توسط

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

genetic در برنامه amplifire براي پیاده سازي این

در مطلب ابتدا تابع تبدیل کل را محاسبه algorithms

میکنیم

5

همانجور که در تصویر 12 مشاهده مینمایید براي محاسبه

ابتدا باید تابع تبدیل داخلیترین لوپ را محاسبه کنیم براي

1 G1G از فرمول 2 C محاسبه فیدبک منفی 1

G1

+

بدست

میآید

k میباشد و 1 A1=10 , T3=1.59*10- که در آن 5

مقدار گین ماست که مجهول است و میخواهیم از طریق

مقدار بهینه آن را بدست Genetic_Algorithms

آوریم.

را که C و 3 C مطابق تصویر 13 مقدار تابع تبدیلهاي 2

A1=1*106 , T1= 0.0159 , T در آن = 2

1.59 میباشد را محاسبه *10-7 , T=2.2*10-5

میکنیم:

تابع تبدیل کلی است صورت و خرج آن را به صورت C4

تعرف کرده و در den و num ماتریس لاپلاس با نامهاي

استفاده Genetic Algorithm در peacksfcn.m

داریم که K و 2 k میکنیم در این جا ما دو مجهول 1

بهترین Genetic Algorithm میخواهیم از طریق برنامه

را به peachsfcn.m مقدار براي این گینها بدست آوریم

اینشکل تعریف میکنیم :

k1 = input(1); k2 = input(2);

z=0;

t=0:0.01:2;

num=[2.48776e20*(k2+45454.5)];

den=[k2+45454.5,628931*(k2+45454.5)*(k

1+10.1001),3.95558e12*(k2*(k1+6.28925e

7)+45454.5*(k1+0.1001)),2.48776e14*

(k2*(k1+4.54545e10)+45454.5*(k1+0.1))];

y=step(num,den,t);

sy=size(y);

for i=1:sy

z=z+(y(i)-(100))^-2;

end

براي بدست آوردن مقدار بهینه باید خطاي ما کمترین مقدار

را داشته باشد براي بدست آوردن خطا از فرمول

6

( ) Σi

out e y i y 2 Fitness _[ ] استفاده میکنیم که همان

مقدار بهینهاي است که ye ، ما میباشد Function

خروجی باید به آن برسد.

تعداد نسلها و جمعیت و ژنها را بهترتیب 100،100 و 32

در بهترین حالت Gnetic Algorithm قرار میدهیم تا

را بدست آورد وهمچنین k و 2 k مقدار بهینه گینهاي 1

Gnetic در var_n= تعداد متغیرهایمان را با مقدار دهی 2

تعیین میکنیم Algorithm

محدوده متغیرهاي خودمان را clab.m وهمچنین در

تعریف میکنیمکه در اینجا ما هردو متغیر را از 0,0001 تا 2

تعریف میکنیم

برنامه را اجرا میکنیم F با زدن کلید 5 clab حال در

را از طریق این برنامه k و 2 k و مقدار بهینه 1 (Run)

بدست میآوریم که نتیجه را در تصویر 14 میتوانید

مشاهده نمایید.

و K1= در نسل صدم مقدار 1.994361

بدستآمد. K2=0.009998

Tools/ControlDesign/LinearAnalysis.. ازمنوي

را انتخابکرده و اجرا میکنیم همانطورکه در شکل زیر

میبینید خروجی به مقدار بهینه خو یعنی 100 در مدت

1.5 رسیده است پس از طریق *10-4sec

با بدست آوردن مقدار بهینه گین Gnetic_Algorithm

فیدبک ها در کمترین مدت به بهترین جواب رسیده

همچنین گین کلی مدار هم برابر 100 گردیده است.

-5 نتیجهگیري

از محاسن ذاتی ژنتیک الگوریتم موازي بودن آن مي باشد .

اکثر الگوريتم هاي ديگر موازي نيستند و فقط مي توانند

فضاي مسئله مورد نظر را در يک جهت و يک لحظه

جستجو کنند و جواب پيدا شده ممكن است جواب بهينه

محلي باشد و يا زير مجموعه اي از جواب اصلي باشد. حسن

ديگر ژنتيك الگوريتم كه در اينجا از آن سود جستيم امكان

تغيير چندين پارامتر بشكل همزمان بود. در مسائل واقعي

نمي توان محدود به يک ويژگي شد تا آن ويژگي ماکسيمم

شود يا مينيمم و بايد چند جنبه در نظر گرفته شود و به

همین خاطر از طریق ژنتیک الگوریتم توانستیم به پاسخ

مطلوب دست پیدا کرده علاوه رسیدن به پاسخ پله مناسب

که نمودار آنرا در تصویر 15 مشاهده مینمایید به گین 100

که مطلوبمان بود دست پیدا نماییم. ناگفته نماند ژنتيك

الگوريتم معايبي هم دارد يک مشکل چگونگي نوشتن عملگر

است که منجر به بهترين راه حل براي مسئله Fitness

شود. مشکل ديگر ،که آن را نارس مي ناميم اين است که

اگر يک ژنوم که فاصله اش با ساير ژنوم هاي نسل اش زياد

باشد(خيلي بهتر از بقيه باشد) و خيلي زود ايجاد ممکن

است محدوديت ايجاد کند و راه حل را به سوي جواب بهينه

محلي سوق دهد. متاسفانه در اینصورت تمام زمانی که براي

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

ابتدا شروع گردد.

+ نوشته شده در ساعت توسط ... |