• درباره ی ما
  • قوانین سایت MATLABDL
  • تماس با ما

شماره تلگرام و واتساپ:  ۰۹۳۷۹۸۴۰۱۶۵  ساعت ۹ الی ۱۳ و ۱۶ الی ۲۱

مطلب دی ال
  • خانه
  • انجام پروژه
    • انجام پروژه متلب MATLAB
    • شبیه سازی مقاله
    • انجام پروژه داده کاوی
    • انجام پروژه پردازش تصویر
    • انجام پروژه شبکه عصبی
    • انجام پروژه الگوریتم ژنتیک
    • بهینه سازی با الگوریتم pso
    • انجام پروژه الگوریتم کلونی مورچگان
    • انجام پروژه الگوریتم گرگ خاکستری
    • انجام پروژه الگوریتم شبیه‌ سازی ذوب فلزات
    • انجام پروژه طبقه‌ بندی (classification)
    • انجام پروژه میکروکنترلر
  • پروژه ها
    • پروژه های آماده
    • پروژه آماده متلب
    • پروژه آماده برق
    • پروژه آماده کامپیوتر
    • پروژه آماده مکانیک
    • پروژه های پردازش تصویر
    • پروژه های پردازش متن
  • آکادمی مطلب دی ال
    • پایتون
    • متلب
    • سی پلاس پلاس
    • محاسبات نرم
      • الگوریتم‌های فراابتکاری
      • یادگیری ماشین ، داده‌کاوی و شناسایی آماری الگو
      • منطق فازی
    • پردازش تصویر
    • پردازش صوت و گفتار
    • سی شارپ
    • پایگاه داده
    • طراحی وب سایت
    • دیگر زبان های برنامه نویسی
    • شبکه
    • دیگر آموزش ها و مقالات
  • مطالب و دروس دانشگاهی
    • مهندسی کامپیوتر
    • مهندسی برق
  • پرداخت آنلاین
  • درخواست پروژه
  • دعوت به همکاری
  • منو منو
وبلاگ - آخرین اخبار
بهینه سازی تابع egg holder با الگوریتم گرگ خاکستری

بهینه سازی تابع egg holder با الگوریتم گرگ خاکستری

7 دی 1397/0 دیدگاه /در الگوریتم‌های فراابتکاری, محاسبات نرم

در این ساعت از مطلب دی ال قصد داریم به صورت پروژه محور الگوریتم گرگ خاکستری را به شما آموزش دهیم.ما برای این کار بهینه سازی تابع egg holder با الگوریتم بهینه سازی گرگ خاکستری را انتخاب کرده ایم.

بهینه سازی تابع egg holder با الگوریتم گرگ خاکستری

تابع egg holder یا تابع نگهدارنده تخم مرغ

رابطه‌ی ۱ نشان دهنده فرمول ریاضی تابع egg holder می‌باشد:

بهینه سازی تابع نگهدارنده تخم مرغ با الگوریتم گرگ خاکستری

همانگونه که از رابطه ۱ پیداست این تابع یک تابع دو متغیره می‌باشد، که محدوده تغییرات این متغیرها در بازه (۵۱۲و۵۱۲-)  می‌باشد. نکته‌ای که باید به آن توجه کرد این است که این یک تابع سخت می‌باشد، چرا دارای تعداد بی‌شماری بهینه محلی می‌باشد.

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

بهینه سازی تابع نگهدارنده تخم مرغ با الگوریتم گرگ خاکستری
بهینه سازی تابع egg holder با الگوریتم گرگ خاکستری

الگوریتم بهینه سازی گرگ خاکستری

برای یادگیری الگوریتم گرگ خاکستری یا الگوریتم GWO اینجا کلیک کنید.

مراحل پیاده سازی و کد نویسی :

گام یک ⇐ پیاده سازی تابع egg holder در متلب:

function [y] = egg(xx)

x1 = xx(1);
x2 = xx(2);
Temp1 = -(x2+47) * sin(sqrt(abs(x2+x1/2+47)));
Temp2 = -x1 * sin(sqrt(abs(x1-(x2+47))));
y = Temp1 + Temp2;
end

خط ۳: تعیین ورودی اول
خط ۴: تعیین ورودی دوم
خط ۵ تا ۷: محاسبه مقدار تابع در نقطه x1 و x2 و ارسال آن به خروجی

گام دوم ⇐ پیاده سازی الگوریتم گرگ خاکستری GWO برای بهینه‌ سازی تابع egg holder

توضیح برنامه فایل MainProgram

clc
clear all
close all
%% 
R=GWO();

این برنامه برنامه‌ی اصلی است و باید اجرا گردد. این برنامه فقط تابع GWO را بدون هیچ ورودی فراخوانی می‌کند. خروجی GWO که در متغیر R قرار می‌گیرد به صورت زیر است:

R.ObjectVale

مقدار جواب بهینه که در نقطه ی بهینه به دست آمده است.

R.Pos

نقطه ای که تابع در آن جواب بهینه دارد

توضیح برنامه GWO():

این برنامه، برنامه‌ی اصلی GWO است که بر اساس الگوریتم بهینه سازی گرگ خاکستری تابع egg holder رو بهینه می‌کند.

function R=GWO(  )
%UNTITLED7 Summary of this function goes here
%   Detailed explanation goes here
dim=2;
Ub=512;
lb=-512;
MG=1000;
% initialize alpha, beta, and delta_pos
Alpha_pos=zeros(1,dim);
Alpha_score=inf; %change this to -inf for maximization problems
Beta_pos=zeros(1,dim);
Beta_score=inf; %change this to -inf for maximization problems
Delta_pos=zeros(1,dim);
Delta_score=inf; %change this to -inf for maximization problems
PZ=100;    % Population Size
Positions=rand(PZ,dim)*(Ub-lb)+lb;
%% 
Convergence_curv=[];
Gen=0;% Loop counter
while Gen< MG
    
    for i=1:size(Positions,1)
        fitness=egg(Positions(i,:));%Power(Positions(i,:));
        % Update Alpha, Beta, and Delta
        if fitness<Alpha_score 
            Alpha_score=fitness; % Update alpha
            Alpha_pos=Positions(i,:);
        end
        
        if fitness>Alpha_score && fitness<Beta_score 
            Beta_score=fitness; % Update beta
            Beta_pos=Positions(i,:);
        end
        
        if fitness>Alpha_score && fitness>Beta_score && fitness<Delta_score 
            Delta_score=fitness; % Update delta
            Delta_pos=Positions(i,:);
        end
    end
    
    a=2-Gen*((2)/MG); % a decreases linearly fron 2 to 0
    
    % Update the Position of search agents including omegas
    for i=1:size(Positions,1)
        for j=1:size(Positions,2)     
                       
            r1=rand(); % r1 is a random number in [0,1]
            r2=rand(); % r2 is a random number in [0,1]
            
            A1=2*a*r1-a; % Equation (3.3)
            C1=2*r2; % Equation (3.4)
            
            D_alpha=abs(C1*Alpha_pos(j)-Positions(i,j)); % Equation (3.5)-part 1
            X1=Alpha_pos(j)-A1*D_alpha; % Equation (3.6)-part 1
                       
            r1=rand();
            r2=rand();
            
            A2=2*a*r1-a; % Equation (3.3)
            C2=2*r2; % Equation (3.4)
            
            D_beta=abs(C2*Beta_pos(j)-Positions(i,j)); % Equation (3.5)-part 2
            X2=Beta_pos(j)-A2*D_beta; % Equation (3.6)-part 2       
            
            r1=rand();
            r2=rand(); 
            
            A3=2*a*r1-a; % Equation (3.3)
            C3=2*r2; % Equation (3.4)
            
            D_delta=abs(C3*Delta_pos(j)-Positions(i,j)); % Equation (3.5)-part 3
            X3=Delta_pos(j)-A3*D_delta; % Equation (3.5)-part 3             
            
            Positions(i,j)=(X1+X2+X3)/3;% Equation (3.7)
            
        end        
          Positions(i,:)=min( Positions(i,:),Ub);
          Positions(i,:)=max( Positions(i,:),lb);
        
    end
    Convergence_curv=[Convergence_curv Alpha_score];
    %%
pause(0.01)
plot(Convergence_curv,'g');
xlim([1 MG])
hold on
xlabel(sprintf('Generation= %d',Gen))
ylabel('Accuracy')    
title(sprintf('Population Fitness; Best Fitness=%f  ',Convergence_curv(end)));
%%
 Gen=Gen+1; 
end
 %% Result
 R.ObjectVale=Alpha_score;
 R.Pos=Alpha_pos;
end

خط ۴: تعیین طول هر عامل یا گرگ ، با توجه به اینکه تابع egg holder دارای دو ورودی است لذا طول هر عامل برابر ۲ در نظر گرفته شده است (برای هر مساله مختص آن مساله است و باید متناسب آن مساله تعیین شود).
خط ۵ و ۶: تعیین حد بالا و پایین مقادیر عامل‌ها بر اساس تعریف تابع egg برای هر مساله مختص آن مساله است و باید متناسب آن مساله تعیین شود).
خط ۷: حداکثر تعدادتکرار GWO ( توسط برنامه نویس تعیین می‌گردد و مقداری دلخواه و منطقی باید باشد).
خط ۹: تعریف گرگ Alpha یا گرگ سر دسته (آموزش الگوریتم گرگ خاکستری GWO با دقت خوانده شود)
خط ۱۰: تعیین مقدار اولیه امتیاز گرگ alpha که در برای مسائل کمینه سازی inf یا مثبت بی نهایت در نظر گرفته می‌شود
خط ۱۱: تعیین موقعیت گرگ beta
حط ۱۲: تعیین مقدار اولیه امتیاز گرگ beta که در برای مسائل کمینه سازی inf یا مثبت بی نهایت در نظر گرفته می‌شود
خط ۱۳: تعیین موقعیت گرگ Delta
خط ۱۴: تعیین مقدار اولیه امتیاز گرگ Delta که در برای مسائل کمینه سازی inf یا مثبت بی نهایت در نظر گرفته می‌شود
خط ۱۵: تعیین تعداد گرگ‌ها ( توسط برنامه نویس تعیین می‌گردد و مقداری دلخواه و منطقی باید باشد).
خط ۱۶: تعریف جمعیت اولیه به صورت تصادفی در محدوده مجاز تابع egg()
خط ۱۸: تعریف آرایه برای ذخیره مقدار امتیاز گرگ آلفا در هر تکرار
خط ۱۹: شمارنده تعداد تکرار الگوریتم GWO
خط ۲۰: بر اساس این حلقه مادامی که Gen مقدارش از MG کمتر باشد الگوریتم گرگ خاکستری GWO اجرا می‌گردد.
خط ۲۲ و ۲۳: محاسبه برازندگی گرگ شماره i
خط ۲۵ تا ۲۸: بروز رسانی گرگ alpha
خط ۳۰ تا ۳۳: بروز رسانی گرگ beta
خط ۳۵ تا ۳۸: بروزرسانی گرگ delta

در حلقه for  بالا مقدار امتیاز هر گرگ محاسبه می‌گردد و گرگ‌های برتر در صورت برقراری شرط بروز رسانی می‌گردد.

خط ۴۱: کاهش خطی مقدار a بر اساس تعداد تکرارها
خط ۴۴ تا ۷۶: در حلقه بالا موقعیت تمامی گرگ‌های موجود در دسته (جمعیت بروز رسانی می‌گردد). این بروز رسانی بر اساس میانگین بروز رسانی‌های گرگ‌های برتر صورت می‌گیرد.
خط ۷۷ و ۸۷: چک کردن محدوده‌ی گرگ‌های جدید ایجاد شده
خط ۸۱ تا ۸۹: رسم نمودار بروز رسانی
خط ۹۱: افزایش یک واحدی تعداد تکرار الگوریتم GWO

بر اساس اجرای کد بالا نتیجه زیر حاصل شد (توجه شود که این نتایج برای هر تکرار متفاوت است (خواهد بود)).

    ObjectVale: -894.5789
[Pos: [-465.7134 , 385.7203

فرایند بهینه سازی (مقدار امتیاز گرگ آلفا در هر تکرار) :

بهینه سازی تابع egg holder با الگوریتم گرگ خاکستری
بهینه سازی تابع egg holder با الگوریتم گرگ خاکستری

نکته:
کارشناسان وب سایت MATLABDL قادر به انجام پروژه ، تحقیق و مقاله در زمینه های مشابه نیز می باشند.


حجم : ۲ کیلوبایت
منبع : مطلب دی ال
رمز فایل : www.matlabdl.com

دانلود سورس کد



برچسب ها: الگوریتم بهینه سازی گرگ خاکستری, الگوریتم گرگ خاکستری, بهینه سازی تابع egg holder
اشتراک این مطلب
  • اشتراک در Facebook
  • اشتراک در Twitter
  • Share on WhatsApp
  • اشتراک در LinkedIn
0 پاسخ

دیدگاه خود را ثبت کنید

تمایل دارید در گفتگوها شرکت کنید؟
در گفتگو ها شرکت کنید.

دیدگاهتان را بنویسید لغو پاسخ

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

سبد خرید

تعداد موارد موجود در سبدخرید: 0

  • سبد خریدتان خالی است.
  • کل: 0 RIAL
  • پرداخت

خبرنامه ایمیلی مطلب دی ال

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

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

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

آخرین مطالب

  • کد نویسی الگوریتم پس انتشار خطا یا الگوریتم انتشار معکوس در نرم افزار متلبالگوریتم پس انتشار خطا یا انتشار معکوس در نرم افزار متلب5 خرداد 1400 - 17:31
  • پروژه تعلیم شبکه های عصبی پرسپترون و آدالاین در نرم افزار متلبپروژه تعلیم شبکه های عصبی پرسپترون و آدالاین در نرم افزار متلب5 خرداد 1400 - 00:35
  • پروژه پردازش گفتار با نرم افزار متلبپروژه پردازش گفتار با نرم افزار متلب2 خرداد 1400 - 19:37
  • پروژه تشخیص احساسات از روی صدا در نرم افزار متلبپروژه تشخیص احساسات از روی صدا در نرم افزار متلب1 خرداد 1400 - 04:22
  • پیاده سازی پروژه برچسب گذاری اجزاء گفتار یا Part of Speech Tagging در نرم افزار متلبپروژه Part of Speech Tagging (پیاده سازی در نرم افزار متلب)19 اردیبهشت 1400 - 03:20

آخرین دیدگاه

  • متین قربانی در حذف آیتم‌های تکراری در یک لیست در پایتون
  • محمد در پروژه نرم افزار صندوق قرض الحسنه با سی شارپ
  • محمد حسین در دانلود پروژه ساعت دیجیتال با میکروکنترلر avr
  • مدیر سایت در پروژه پیاده سازی یک سیستم توصیه گر ترکیبی با متلب
  • امیر در پروژه پیاده سازی یک سیستم توصیه گر ترکیبی با متلب

مطلب دی ال را در شبکه های اجتماعی دنبال کنید

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

تمامي حقوق مادي و معنوي اين وب سايت نزد مطلب دی ال محفوظ بوده و هر گونه کپي برداري از مطالب پيگرد قانوني به همراه دارد!

طراح سایت : ProgRun

موتور رلوکتانسی سنکرون RSMموتور رلوکتانسی سنکرونقطعه بندی تصاویر MRI مغز با خوشه بندی فازی برای تشخیص ناحیه تومورقطعه بندی تصاویر MRI مغز با خوشه بندی فازی برای تشخیص ناحیه تومور...
رفتن به بالا