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

📄 main.m

📁 可以作为人工免疫算法的一个框架
💻 M
字号:
clear all; 
global popsize length min max N code; 
N=12;               % 每个染色体段数(十进制编码位数) 
M=20;               % 进化代数 
popsize=20;         %设置初始参数,群体大小 
length=10;          % length为每段基因的二进制编码位数 
chromlength=N*length;  %字符串长度(个体长度),染色体的二进制编码长度 
pc=0.7;                %设置交叉概率,本例中交叉概率是定值,若想设置变化的交叉概率可用表达式表示,或从写一个交叉概率函数,例如用神经网络训练得到的值作为交叉概率 
pm=0.3;               %设置变异概率,同理也可设置为变化的 
bound={-100*ones(popsize,1),zeros(popsize,1)};min=bound{1};max=bound{2}; 
pop=initpop(popsize,chromlength);                     %运行初始化函数,随机产生初始群体 
ymax=500;K=1; 
 
%电容C2:故障类型编码,每一行为一种!code(1,:),正常;code(2,:),50%;code(3,:),150% 
code =[-0.8180   -1.6201  -14.8590  -17.9706  -24.0737  -33.4498  -43.3949  -53.3849  -63.3451  -73.0295  -79.6806  -74.3230 
       -0.7791   -1.2697  -14.8682  -26.2274  -30.2779  -39.4852  -49.4172  -59.4058  -69.3676  -79.0657  -85.8789  -81.0905 
       -0.8571   -1.9871  -13.4385  -13.8463  -20.4918  -29.9230  -39.8724  -49.8629  -59.8215  -69.4926  -75.9868  -70.6706]; 
%实际故障测得数据编码,这里Unnoralcode,188% 
Unnoralcode=[-0.8864   -2.2743  -12.2676  -11.6813  -18.5298  -27.9828  -37.9340  -47.9246  -57.8820  -67.5433  -73.9248  -68.9759]; 
 
for i=1:3   % 3种故障模式,每种模式应该产生 popsize 种监测器(抗体),每种监测器的长度和故障编码的长度相同 
   for k=1:M 
       [objvalue]=calobjvalue(pop,i);                 %计算目标函数 
       fitvalue=calfitvalue(objvalue); favg(k)=sum(fitvalue)/popsize;  %计算群体中每个个体的适应度 
       newpop=selection(pop,fitvalue); objvalue=calobjvalue(newpop,i); %选择 
       newpop=crossover(newpop,pc,k);  objvalue=calobjvalue(newpop,i); %交叉 
       newpop=mutation(newpop,pm);     objvalue=calobjvalue(newpop,i); %变异 
       for j=1:N  %译码! 
           temp(:,j)=decodechrom(newpop,1+(j-1)*length,length);      %将newpop每行(个体)每列(每段基因)转化成十进制数 
           x(:,j)=temp(:,j)/(2^length-1)*(max(j)-min(j))+min(j);     % popsize×N 将二值域中的数转化为变量域的数        
       end 
       [bestindividual,bestfit]=best(newpop,fitvalue);%求出群体中适应值最大的个体及其适应值 
       if bestfitP!      
end 
 
X;   % 结果为(i*popsie)个监测器(抗体) 
%plot(1:M,favg)

⌨️ 快捷键说明

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