⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mutation.m

📁 关于时间序列分析的matlab程序代码
💻 M
字号:
function [decimal_space_mutation,binary_space_mutation]=mutation(min_confines,max_confines,decimal_space_crossover,binary_space_crossover,bits,probability_mutation)

%Mutation Function Of Simple Genetic Algorithm Program (Version 1.0.0.1 )
%support multi-parameters
%By chen yi ,CQU .QQ:2376635  Email:cdey@10mail.net  (April,20th,2002)
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
% mutation of single point method
%
%~~
%min_confines is the minimum of input value in decimal-space
%max_confines is the maximum of input value in decimal-space
%
%decimal_space_crossover &.binary_space_crossover is from Crossover.m
%probability_mutation is given by yourself (about:0.001~0.01)
%~~~
%e.g.
%[binary_space,bits_sum,bits]=coding([1,2,3,4],[7,8,9,10],10,[0.01,0.01,0.01,0.01])
%[decimal_space]=decoding([1,2,3,4],[7,8,9,10],binary_space,bits)
%[fitness_value]=fitness(decimal_space)
%[max_fitness_temp_position,decimal_space_selected,binary_space_selected,maxfitness]=selection(decimal_space,binary_space,fitness_value,bits)
%[decimal_space_crossover,binary_space_crossover]=crossover([1,2,3,4],[7,8,9,10],decimal_space_selected,binary_space_selected,bits,0.6)
%[decimal_space_mutation,binary_space_mutation]=mutation([1,2,3,4],[7,8,9,10],decimal_space_crossover,binary_space_crossover,bits,0.01)
%
% See Also  DECODING,CODING ,SELECTION,CROSSOVER,FITNESS,
%           FITNESS_FUNCTION, SGA	
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


[population,bits_sum]=size(binary_space_crossover);
[population,parameter_numbers]=size(decimal_space_crossover);
 confines_deta=(max_confines-min_confines); 
 coded_step=confines_deta./(2.^bits-1);
probability_mutation_numbers=ceil(probability_mutation*population);
%initialize binary_space_mutation &.decimal_space_mutation
binary_space_mutation=binary_space_crossover;   
decimal_space_mutation=decimal_space_crossover;
%~~~~~~~~~~~~~~~~~~~~~
%bits_No is important
bits_No=[0,bits];
% to find out which is the binary parameter
%i=0:0.1:population;
for i=1:1:parameter_numbers
   %to avoid that Index exceeds matrix dimensions
    bits_No(i+1)=bits_No(i+1)+bits_No(i);
end

%~~~~~~~~~~~~~~~~~~~~~~
%
if probability_mutation_numbers >=1
   for i=1:1:probability_mutation_numbers;
       mutation_position(i)=randint(1,1,[1,population]);
       for j=1:1:parameter_numbers
           mutation_point(j)=randint(1,1,[bits_No(j)+1,bits_No(j+1)]);            
           binary_space_mutation(mutation_position(i),mutation_point(j))=1-binary_space_crossover(mutation_position(i),mutation_point(j));   
       end
   end
else 
   break;
end;
    
    
%binary_space_mutation_sparse=sparse(binary_space_mutation); 

%~~~~~~~~~~~~~~~~~~~~~~~~~~~`plot~~~~~~~~~~~~~~~~~~~~~
% SPY Visualize sparsity pattern.
% SPY(S) plots the sparsity pattern of the matrix S.
%figure(7)
%spy(binary_space_mutation_sparse,'g');
%title('the mutation binary-space in sparsity pattern');
%xlabel('Non-Zero bits');
%ylabel('Population');
%hold on;
%i=0:0.1:population;
%for j=1:1:parameter_numbers
%    plot(bits_No(j+1),i,'r');
%end
%
%decoding binary_space_mutation to  decimal_space_mutation
% different from X=Decimal*coded_step+min_confines
for i=parameter_numbers:-1:1
    for j=population:-1:1                      
        for k=bits_No(i+1):-1:(bits_No(i)+1)
            twos(j,k)=pow2(bits_No(i+1)-k)*binary_space_mutation(j,k);
        end 
        twos_sum(j,i)=sum(twos(j,:),2);
        decimal_space_mutation(j,i)=twos_sum(j,i)*coded_step(i)+min_confines(i);
    end  
       twos=zeros(population,bits_sum);%clear twos at present i 
           % X=Decimal*coded_step+min_confines
end   
        
%figure(8)       
%i=population:-1:1;
%plot(decimal_space_mutation(i,:),i,'*');
%xlabel('mutation decimal-space');
%ylabel('population');
%title('the crosponding deciaml-space of binary-space');
%grid on;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -