تخفیف نوروزی پی استور
هزینه سفارش:
۱۹۹,۰۰۰ تومان قیمت اصلی: ۱۹۹,۰۰۰ تومان بود.۷۹,۶۰۰ تومانقیمت فعلی: ۷۹,۶۰۰ تومان.
در این بخش به تشریح سورس کدالگوریتم ژنتیک پیوسته در متلب پرداخته شده است. الگوریتم ژنتیک یکی از الگوریتمهای پرکاربرد و محبوب برای حل مسائل سخت میباشد و به وفور از این الگوریتم استفاده میشود. مفهوم آسان و قابل درک این الگوریتم آن را به عنوان الگوریتم پرکاربرد در زمینههای الگوریتمهای تکاملی بدل کرده است در ادامه توضیحات کاملی درباره الگوریتم ژنتیک پیوسته ارائه میشود.
الگوریتم ژنتیک پیوسته روشی برای بهینه سازی با جستجوی وسیع است و کارکرد آن بر اصول انتخاب طبیعی حاکم بر ژنتیک طبیعی استوار است. ایده این الگوریتم از نظریه تکامل داروین الهام گرفته شده است. اگرچه این الگوریتم روشی برای جستجوی تصادفی است، ویژگیهای خاص آن موجب میشود که نتوان آن را یک جستجوی تصادفی ساده قلمداد کرد. در این الگوریتم اطلاعات تاریخی از چگونگی تکامل، به شکلی کارا استخراج شده و در روند جستجو استفاده میشود. الگوریتم ژنتیک روشی قدرتمند بوده و بر روی دسته وسیعی از مسائل بهخوبی عمل میکند.
الگوریتم ژنتیک واقعی که بر اساس ایدهی تکامل بیولوژیکی در طبیعت عمل مینمایند، بر روی جمعیتی از راه حلهای بالقوه یا کروموزومها که هریک میتوانند بهعنوان پاسخی از مسئله تلقی شوند، با اعمال عملگرهای ژنتیکی به جستجوی راه حل نهایی میپردازند. در الگوریتم ژنتیکی، بسیاری از مکانیزمهایی که در زیست شناسی وجود دارد، نظیر انتخاب ژن برتر، ترکیب ژنها، جهش ژنها، مهاجرت افراد جمعیت، محلی بودن گونهها و … شبیه سازی میشوند. در این الگوریتمها، جستجو بر روی مجموعههایی از راه حلها بهصورت موازی انجام میشود، درحالیکه در روشهای سنتی جستجو بهصورت ترتیبی است.
در آغاز الگوریتم، تعدادی از افراد بهعنوان جمعیت اولیه و معمولاً بهصورت تصادفی ساختهشده و معیاری از کیفیت به نام تابع هدف یا برازندگی برای تک تک آنها ارزیابی میشود. اگر شرط رسیدن به جواب برقرار نباشد (به جواب بهینه نرسیده باشیم)، نسل بعدی با انتخاب والدین بر اساس میزان برازندگی آنها تولید میشود. در هر نسل، بهترینهای آن نسل انتخاب میشوند و پس از زادوولد، مجموعه جدیدی از فرزندان را تولید میکنند.
کروموزومهای موجود در جمعیت بر اساس مقدار برازندگی بهعنوان والد انتخاب میشوند. سپس تولید مثل، بین جفت کروموزومها انجام میگیرد تا فرزندان ایجاد شوند و فرزندان با احتمالی ثابت دچار جهش میشوند. سپس میزان برازندگی فرزندان جدید محاسبهشده و جمعیت جدید، از جایگزینی فرزندان با والدین ایجاد میشود و جمعیت ایجادشده جدید بهعنوان نسل بعدی شناخته میشود و فرایند تکرار می شود. در این فرایند، افراد مناسبتر با احتمال بیشتری در نسلهای بعد باقی خواهند ماند و این فرایند تا برقرار شدن شرط خاتمه تکرار میشود.
الگوریتم زمانی پایان خواهد یافت که بهبودی بر روی جوابها صورت نگیرد و یا اینکه تعداد مشخصی نسل تولید شود. مراحل کلی یک الگوریتم ژنتیک میتواند بهصورت شکل زیرباشد.
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 نوشته و اجرا شده است این سورس کد توسط تیم پشتیبانی پی استور تست و اجرا شده است. کیفیت اثر توسط پی استور تضمین میشود و دارای نشان تضمین کیفیت پی استور میباشد. برای دانلود اثر مذکور آن را خریداری فرمایید به محض خرید لینک دانلود در دسترس خواهد بود.
تیم برنامه نویسی پی استور یکی از اولین گروههای تشکیل شده در مجموعه آموزشی پی استور میباشد. این تیم از اساتید مجرب و فارغ التحصیلان رشتههای فنی و مهندسی تشکیل شده که در زمینههای مختلف برنامهنویسی و تهیه سورس کد فعال هستند.
نام اثر: | پیاده سازی الگوریتم ژنتیک پیوسته در متلب |
نوع اثر: | سورس کد |
برنامهنویس: | تیم برنامهنویسی پیاستور |
زبان برنامه نویسی: | Matlab |
ویژگی: | قابل دانلود و ویرایش |
توجه: کیفیت این محصول توسط پی استور تضمین شده و در صورت عدم رضایت از محصول، به انتخاب شما:
هزینه سفارش:
۱۹۹,۰۰۰ تومان قیمت اصلی: ۱۹۹,۰۰۰ تومان بود.۷۹,۶۰۰ تومانقیمت فعلی: ۷۹,۶۰۰ تومان.
نظرات
سینا ابراهیمی
ممنون از سایت خوبتون. من چطور می تونم این الگوریتم رو تو مسئله تعیین تعداد بهینه توربین ها استفاده کنم؟
مدیریت و پشتیبانی
با سلام
در استفاده از الگوریتم ژننیک برای مسائل بهینه سازی ۲ مسئله مهم است.
1- نگاشت مسئله
2-تعیین تابع تناسب
در نگاشت مسئله باید ابتدا مسئله بصورت یک کروموزوم کد گذاری شود. چگونگی انجام این کار توسط شما باید ایجا بشه تابع Create Model در این سورس کد نحوه تبدیل مسئله به کروموزوم رو نشون میده. در تعیین تابع تناسب نیز باید مشخص کنید جوابی که مثلا یک کروموزوم میده با کروموزم دیگه چه ارزشی داره یا نحوه مقایسه دو جواب با تابع تناسب که CostFun هست انجام میشه.
بقیه کدها همون کدهای ژنتیک هستن و برای هر مسئله ای یکسان هست.