برداشت کلی این است که نوشتن یک تابع فیتنس عموما با الگوریتم‌های فراابتکاری معنی پیدا می‌کند، با این وجود یک تابع فیتنس چیزی نیست جز انتخاب جواب های بهینه از بین مجموعه‌هایی که به شکل تصادفی، حریصانه. انتخاب می‌شوند. تابع فیتنس می‌تواند از نوع مینیمم، ماکزیمم یا همگرا به سمت مقادیر یا بردارها و. باشد.

به عنوان یک مثال ساده برای تابع فیتنس برای ماکزیمم سازی  را  می‌توان به شکل زیر اورد.

 فقط حواستون باشه، برای نوشتن تابع فیتنس برای مینیمم سازی باید مقدار اولیه بردار پاسخ را برابر بی نهایت یا inf قرار بدید و برای ماکزیمم سازی این مقدار را برابر با 0 یا حداقل مقدار قرار بدید.

 

clc
clear;
close all;


[X,Y,Z] = peaks(100);
[val,ind]=min(Z(:));
v.val=val;
v.ind=ind;
cn=0;
hs=figure('name' ,  ['period: '  num2str(cn) ' of '  num2str((length(X(:))) )   ' curen  value:  '  num2str(v.val(end)),  ' real max value:  '  num2str( max(Z(:)))] );
 subplot(1,2,1);surf(X,Y,Z);hold on
 subplot(1,2,1);plot3(X(ind),Y(ind),Z(ind),'r*');hold on

while(true)
     ind= randi(length(X(:)),1);
     if  v.val(end)<Z(ind)
      v.val(end+1)=Z(ind);

          v.ind(end+1)= ind ;
 subplot(1,2,1);plot3(X(v.ind),Y(v.ind),Z(v.ind),'r*');hold on ; 
  subplot(1,2,2);plot3(X(v.ind),Y(v.ind),Z(v.ind),'r-*');hold on
  

     else
    disp('');
     end
      cn=cn+1;
 

     
 
     pause(0.002)

    if cn>=length(X(:)) || v.val(end)==max(Z(:))
           break;
    end
     hs.Name=['period: '  num2str(cn) ' of '  num2str((length(X(:))) )   ' curen  value:  '  num2str(v.val(end)),  ' real max value:  '  num2str( max(Z(:)))];
end

 

خروجی کد بالا به شکل زیر خواهد بود:

 

 

 


مشخصات

تبلیغات

محل تبلیغات شما

آخرین مطالب این وبلاگ

محل تبلیغات شما محل تبلیغات شما

آخرین وبلاگ ها

برترین جستجو ها

آخرین جستجو ها

K_pop and k_drama Teresa John کنکورینو - مرجع کنکور فندق آموزش فتوشاپ دریا کامپیوتر ماهگوش همه چی هست introducing best boilers