در این بخش به تشریح سورس کد الگوریتم ژنتیک واقعی در متلب پرداخته شده است. الگوریتم ژنتیک یکی از الگوریتم های پرکاربرد و محبوب برای حل مسائل سخت می باشد و به وفور از این الگوریتم استفاده می شود. مفهوم آسان و قابل درک این الگوریتم آن را به عنوان الگوریتم پرکاربرد در زمینه های الگوریتم های تکاملی بدل کرده است در ادامه توضیحات کاملی درباره الگوریتم ژنتیک پیوسته ارائه می شود.
تیم برنامه نویسی پی استور یکی از اولین گروههای تشکیل شده در مجموعه آموزشی پی استور میباشد. این تیم از اساتید مجرب و فارغ التحصیلان رشتههای فنی و مهندسی تشکیل شده که در زمینههای مختلف برنامهنویسی و تهیه سورس کد فعال هستند.
الگوریتم ژنتیک
الگوریتم ژنتیک روشی براي بهینه سازي با جستجوي وسیع است و کارکرد آن بر اصول انتخاب طبیعی حاکم بر ژنتیک طبیعی استوار است. ایده این الگوریتم از نظریه تکامل داروین الهام گرفته شده است. اگرچه این الگوریتم روشی براي جستجوي تصادفی است، ویژگی هاي خاص آن موجب می شود که نتوان آن را یک جستجوي تصادفی ساده قلمداد کرد. در این الگوریتم اطلاعات تاریخی از چگونگی تکامل، به شکلی کارا استخراج شده و در روند جستجو استفاده می شود. الگوریتم ژنتیک روشی قدرتمند بوده و بر روي دسته وسیعی از مسائل بهخوبی عمل می کند.
الگوریتم ژنتیک واقعی که بر اساس ایده ي تکامل بیولوژیکی در طبیعت عمل می نمایند، بر روي جمعیتی از راه حل های بالقوه یا کروموزوم ها که هر یک می توانند بهعنوان پاسخی از مسئله تلقی شوند، با اعمال عملگرهای ژنتیکی به جستجوي راه حل نهایی می پردازند. در الگوریتم ژنتیکی، بسیاري از مکانیزم هایی که در زیست شناسی وجود دارد، نظیر انتخاب ژن برتر، ترکیب ژن ها، جهش ژن ها، مهاجرت افراد جمعیت، محلی بودن گونه ها و … شبیه سازي می شوند. در این الگوریتم ها، جستجو بر روي مجموعه هايی از راه حل ها بهصورت موازي انجام می شود، درحالیکه در روش هاي سنتی جستجو بهصورت ترتیبی است.
نحوه کار الگوریتم
در آغاز الگوریتم، تعدادي از افراد بهعنوان جمعیت اولیه و معمولاً بهصورت تصادفی ساختهشده و معیاري از کیفیت به نام تابع هدف یا برازندگی براي تک تک آن ها ارزیابی می شود. اگر شرط رسیدن به جواب برقرار نباشد (به جواب بهینه نرسیده باشیم)، نسل بعدي با انتخاب والدین بر اساس میزان برازندگی آن ها تولید می شود. در هر نسل، بهترین هاي آن نسل انتخاب می شوند و پس از زادوولد، مجموعه جدیدي از فرزندان را تولید می کنند.
کروموزوم هاي موجود در جمعیت بر اساس مقدار برازندگی بهعنوان والد انتخاب می شوند. سپس تولید مثل، بین جفت کروموزوم ها انجام می گیرد تا فرزندان ایجاد شوند و فرزندان با احتمالی ثابت دچار جهش می شوند. سپس میزان برازندگی فرزندان جدید محاسبهشده و جمعیت جدید، از جایگزینی فرزندان با والدین ایجاد می شود و جمعیت ایجادشده جدید بهعنوان نسل بعدي شناخته میشود و فرایند تکرار می شود. در این فرایند، افراد مناسب تر با احتمال بیشتري در نسل هاي بعد باقی خواهند ماند و این فرایند تا برقرار شدن شرط خاتمه تکرار می شود.
الگوریتم زمانی پایان خواهد یافت که بهبودي بر روي جواب ها صورت نگیرد و یا اینکه تعداد مشخصی نسل تولید شود. مراحل کلی یک الگوریتم ژنتیک می تواند بهصورت شکل زیرباشد.
سورس کد الگوریتم ژنتیک واقعی در متلب
clc; clear; close all; %% Problem Definition CostFunction=@(x) Costfun(x); % Cost Function nVar=10; % Number of Decision Variables VarSize=[1 nVar]; % Decision Variables Matrix Size VarMin=-10; % Lower Bound of Variables VarMax= 10; % Upper Bound of Variables %% GA Parameters MaxIt=500; % Maximum Number of Iterations nPop=100; % Population Size pc=0.7; % Crossover Percentage nc=2*round(pc*nPop/2); % Number of Offsprings (also Parnets) gamma=0.4; % Extra Range Factor for Crossover pm=0.3; % Mutation Percentage nm=round(pm*nPop); % Number of Mutants mu=0.1; % Mutation Rate %% Main Loop for it=1:MaxIt % Calculate Selection Probabilities if UseRouletteWheelSelection P=exp(-beta*Costs/WorstCost); P=P/sum(P); end % Crossover popc=repmat(empty_individual,nc/2,2); for k=1:nc/2 % Select Parents Indices if UseRouletteWheelSelection i1=RouletteWheelSelection(P); i2=RouletteWheelSelection(P); end if UseTournamentSelection i1=TournamentSelection(pop,TournamentSize); i2=TournamentSelection(pop,TournamentSize); end if UseRandomSelection i1=randi([1 nPop]); i2=randi([1 nPop]); end % Select Parents p1=pop(i1); p2=pop(i2); % Apply Crossover [popc(k,1).Position, popc(k,2).Position]=Crossover(p1.Position,p2.Position,gamma,VarMin,VarMax); % Evaluate Offsprings popc(k,1).Cost=CostFunction(popc(k,1).Position); popc(k,2).Cost=CostFunction(popc(k,2).Position); end popc=popc(:); % Mutation popm=repmat(empty_individual,nm,1); for k=1:nm % Select Parent i=randi([1 nPop]); p=pop(i); % Apply Mutation popm(k).Position=Mutate(p.Position,mu,VarMin,VarMax); % Evaluate Mutant popm(k).Cost=CostFunction(popm(k).Position); end % Create Merged Population pop=[pop popc popm]; %#ok % Sort Population Costs=[pop.Cost]; [Costs, SortOrder]=sort(Costs); pop=pop(SortOrder); % Update Worst Cost WorstCost=max(WorstCost,pop(end).Cost); % Truncation pop=pop(1:nPop); Costs=Costs(1:nPop); % Store Best Solution Ever Found BestSol=pop(1); % Store Best Cost Ever Found BestCost(it)=BestSol.Cost; % Show Iteration Information disp(['Iteration ' num2str(it) ': Best Cost = ' num2str(BestCost(it))]); end
برای دانلود سورس کد کامل الگوریتم ژنتیک واقعی محصول را خریداری کنید به محض خرید لینک دانلود در دسترس خواهد بود.
درباره محصول
سورس کد الگوریتم ژنتیک واقعی در Matlab 2017 نوشته و اجرا شده است این سورس کد توسط تیم پشتیبانی پی استور تست و اجرا شده است. کیفیت محصول توسط پی استور تضمین می شود و محصول دارای نشان تضمین کیفیت پی استور می باشد. برای دانلود محصول آن را خریداری فرمایید به محض خرید لینک دانلود در دسترس خواهد بود.
مباحث مرتبط
اطلاعات تکمیلی محصول
نام محصول: | پیاده سازی الگوریتم ژنتیک پیوسته در متلب |
---|---|
نوع محصول: | سورس کد |
حجم فایل: | 2.8 کیلوبایت |
فرمت فایل: | m. در قالب متلب |
قابل اجرا در: | Matlab |
تضمین کیفیت و گارانتی بازگشت هزینه
توجه: کیفیت این محصول توسط پی استور تضمین شده و در صورت عدم رضایت از محصول، به انتخاب شما:
- ۱۰۰ درصد مبلغ پرداختی در حساب کاربری شما شارژ میشود.
- و یا 80 درصد مبلغ پرداختی به حساب بانکی شما عودت داده میشود.
پیاده سازی الگوریتم ژنتیک پیوسته در متلب
حجم فایل: | 2.8 کیلوبایت |
---|---|
فرمت فایل | m. در قالب متلب |
هماهنگی با: | Matlab |
تاکنون 746 نفر این محصول را تهیه کرده اند و 1 نظر برای آن ثبت شده است.
نظرات و دیدگاه ها
قوانین ثبت دیدگاه
- لطفاً دیدگاه های خود را فارسی تایپ کنید.
- دیدگاه های نامرتبط به مطلب تایید نخواهد شد.
- از درج دیدگاه های تکراری پرهیز نمایید.
- سوالات تخصصی خودتان را از طریق تیکت پشتیبانی مطرح کنید.
پیاده سازی الگوریتم ژنتیک پیوسته در متلب
هزینه سفارش: 99,000 تومان
با تخفیف 40 درصدی: فقط 59,400 تومان
حجم فایل: | 2.8 کیلوبایت |
---|---|
فرمت فایل | m. در قالب متلب |
هماهنگی با: | Matlab |
1 بازخورد (مشاهده نظرات)
هزینه سفارش: 99,000 تومان
سینا ابراهیمی
ممنون از سایت خوبتون. من چطور می تونم این الگوریتم رو تو مسئله تعیین تعداد بهینه توربین ها استفاده کنم؟
مدیریت و پشتیبانی
با سلام
در استفاده از الگوریتم ژننیک برای مسائل بهینه سازی 2 مسئله مهم است.
1- نگاشت مسئله
2-تعیین تابع تناسب
در نگاشت مسئله باید ابتدا مسئله بصورت یک کروموزوم کد گذاری شود. چگونگی انجام این کار توسط شما باید ایجا بشه تابع Create Model در این سورس کد نحوه تبدیل مسئله به کروموزوم رو نشون میده. در تعیین تابع تناسب نیز باید مشخص کنید جوابی که مثلا یک کروموزوم میده با کروموزم دیگه چه ارزشی داره یا نحوه مقایسه دو جواب با تابع تناسب که CostFun هست انجام میشه.
بقیه کدها همون کدهای ژنتیک هستن و برای هر مسئله ای یکسان هست.