Advertisement
Guest User

Untitled

a guest
Jul 9th, 2019
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.85 KB | None | 0 0
  1. max_gen = 50;
  2. populationSize = 100;
  3. mu = 100;
  4. e = 0.2;
  5. population = zeros(populationSize,7); %a b c aStd bStd cStd
  6.  
  7.  
  8. fileID = fopen('model26.txt');
  9. C = textscan(fileID,'%f %f');
  10. fclose(fileID);
  11. asd = C(1);
  12. asdd = C(2);
  13. X = [asd{:}];
  14. Y = [asdd{:}];
  15.  
  16. tau1 = 1 / sqrt(2 * populationSize);
  17. tau2 = 1 / sqrt(2 * sqrt(populationSize));
  18.  
  19. errors=[];
  20.  
  21. for k = 1:populationSize    
  22. population(k,1:3) = normrnd(0,1,[1,3]);
  23. population(k,4:6) = abs(normrnd(0,1,[1,3]));
  24. Yind = zeros(101,1);
  25. for i=1:length(X)
  26.     Yind(i)=func(population(k,1),population(k,2),population(k,3),X(i));
  27. end
  28. population(k,7) = immse(Y,Yind);
  29. end
  30.  
  31.  
  32. for iter = 1:max_gen
  33.     %recombination
  34.     temp = population;
  35.    
  36.     %mutation and evaluatuon mse
  37.     offspring = mutation(temp,mu,populationSize,tau1,tau2,X,Y);
  38.    
  39.     %offspring selection
  40.     population = select_population(offspring);
  41.    
  42.     iter=iter+1;
  43.     errors=[errors population(1,7)]
  44.     iter
  45.     if population(1,7)<e
  46.         break
  47.     end
  48.    
  49. end
  50.  
  51. plot(errors)
  52.  
  53. function sorted = select_population(offspring)
  54.     sorted = sortrows(offspring,7);
  55. end
  56.  
  57. function off = mutation(pop, mu,populationSize,tau1,tau2,X,Y)
  58.     x= 1;
  59.     off = zeros(populationSize,7);
  60.    
  61.     for i =1:mu
  62.        p = pop(x,:);
  63.        off(i,1:6) = [(p(1)+normrnd(0,p(4))) (p(2)+normrnd(0,p(5))) (p(3)+normrnd(0,p(6))) (p(4)*exp(normrnd(0,tau1))*exp(normrnd(0,tau2))) (p(5)*exp(normrnd(0,tau1))*exp(normrnd(0,tau2))) (p(6)*exp(normrnd(0,tau1))*exp(normrnd(0,tau2)))];
  64.        x=x+1;
  65.        if x>=populationSize
  66.            x=1;
  67.        end
  68.     end
  69.     for k = 1: length(pop)
  70.         Yind = zeros(101,1);
  71.         for i=1:length(X)
  72.             Yind(i)=func(off(k,1),off(k,2),off(k,3),X(i));
  73.         end
  74.         off(k,7) = immse(Y,Yind);
  75.     end
  76.    
  77. end
  78.  
  79. function f = func(a,b,c,x)
  80.   f = a*(x.^2-b*cos(c*pi*x));
  81. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement