【优化求解】 免疫算法之数值逼近优化分析【Matlab 182期】

一、简介

任何一个优化问题可以转化为一个函数问题,因此生物智能算法广泛应用,同样生物免疫算法(AIA)也是一种模拟达尔文生物进化的一个新型智能算法,生物免疫算法(AIA)根据生物系统抗体处理抗原机制,抗体进化以及最终消灭抗原,这一过程为生物免疫算法(AIA)全局寻优解的过程。
考虑到函数优化问题的普遍性,近些年来,很多学者应用新型算法对不同函数进行测试,例如算法的稳定性、泛华能力、有效性以及全局、局部寻优能力等,因此最优化函数问题(单目标和多目标函数优化问题)一直成为广大科研人员的研究热点。根据测试函数得到的可能解,智能算法得到不断的改进,理论基础逐渐深入,使得散发本身更加稳健,能够快速为工程所用。
人工免疫系统正引起人们的极大重视,基于免疫系统原理开发了各类算法,遗传算法GA、差分进化算法DE、蜂群算法ABC、鱼群算法FSA等,在工程实际问题中,应用越来越广泛,也取得越来越多的成果。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、源代码

clc,clear,close all;
warning off
global popsize length min max N code;
N=12;                % 每个染色体段数(十进制编码位数)
M=100;               % 进化代数
popsize=30;          % 设置初始参数,群体大小
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;   % 适应度值初始化

ysw_x = zeros(3,12);
%电容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];
       function [bestindividual,bestfit]=best(pop,fitvalue)
global popsize N length;
bestindividual=pop(1,:);
bestfit=fitvalue(1);
%实现个体的解码的计算
function [objx]=calx(pop)
% global N length  % 默认染色体的二进制长度length=10
N=12; length=10;
for j=1:N  %译码!
   temp(:,j)=decodechrom(pop,1+(j-1)*length,length);      
   x(:,j)=temp(:,j)/(2^length-1)*(max(j)-min(j))+min(j);     
end
 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); %
       [bestindividual,bestfit]=best(newpop,fitvalue);
       if bestfit<ymax
          ymax=bestfit;
          end

三、运行结果

在这里插入图片描述

四、备注

完整代码或者代写添加QQ912100926
往期回顾>>>>>>
【优化求解】粒子群算法之充电站最优布局【Matlab 061期】
【优化求解】遗传算法之多旅行商问题【Matlab 062期】
【优化求解】遗传和模拟退火之三维装箱问题【Matlab 063期】
【优化求解】遗传算法之求最短路径【Matlab 064期】
【优化求解】粒子群之优化灰狼算法【Matlab 065期】
【优化求解】多目标之灰狼优化算法MOGWO 【Matlab 066期】
【优化求解】遗传算法之求解优化车辆发车间隔【Matlab 067期】
【优化求解】磷虾群算法简介【Matlab 068期】
【优化求解】差分进化算法简介【Matlab 069期】
【优化求解】约束优化之惩罚函数法简介【Matlab 070期】
【优化求解】改进灰狼算法之求解重油热解模型【Matlab 072期】
【优化求解】蚁群算法之配电网故障定位【Matlab 073期】
【优化求解】遗传算法之求解岛屿物资补给优化问题【Matlab 137期】
【优化求解】基于matlab冠状病毒群体免疫优化算法(CHIO)【Matlab 138期】
【优化求解】基于matlab之金鹰优化求解算法(GEO)【Matlab 139期】
【优化求解】基于GUI界面之BP神经网络优化求解【Matlab 179期】
【优化求解】基于GUI界面之遗传算法优化求解【Matlab 180期】
【优化求解】基于GUI界面之蚁群算法优化求解【Matlab 181期】

猜你喜欢

转载自blog.csdn.net/m0_54742769/article/details/113751747