% 二维人工免疫优化算法
% m--抗体规模
% n--每个抗体二进制字符串长度
% mn--从抗体集合里选择n个具有较高亲和度的最佳个体进行克隆操作
% A--抗体集合(m×n),抗体的个数为m,每个抗体用n个二进制编码(代表参数)
% T--临时存放克隆群体的集合,克隆规模是抗原亲和度度量的单调递增函数
% FM--每代最大适应度值集合
% FMN--每代平均适应度值集合
% AAS--每个克隆的最终下标位置
% BBS--每代最优克隆的下标位置
% Fit--每代适应度值集合
% tnum--迭代代数
% xymin--自变量下限
% xymax--自变量上限
% pMutate--高频变异概率
% cfactor--克隆(复制)因子
% Affinity--亲和度值大小顺序
%%
clear all
clc
tic;
m=65;
n=22;
mn=60;
xmin=0;
xmax=8;
tnum=100;
pMutate=0.2;
cfactor=0.1;
A=InitializeFun(m,n); %生成抗体集合A,抗体数目为m,每个抗体基因长度为n
F='X+10*sin(X.*5)+9*cos(X.*4)'; %目标函数
FM=[]; %存放各代最优值的集合
FMN=[]; %存放各代平均值的集合
t=0;
%%
while t<tnum
t=t+1;
X=DecodeFun(A(:,1:22),xmin,xmax); %将二进制数转换成十进制数
Fit=eval(F); %以X为自变量求函数值并存放到集合Fit中
if t==1
figure(1)
fplot(F,[xmin,xmax]);
grid on
hold on
plot(X,Fit,'k*')
title('抗体的初始位置分布图')
xlabel('自变量')
ylabel('每代适应度值集合')
end
if t==tnum
figure(2)
fplot(F,[xmin,xmax]);
grid on
hold on
plot(X,Fit,'r*')
title('抗体的最终位置分布图')
xlabel('自变量')
ylabel('每代适应度值集合')
end
%% 把零时存放抗体的集合清空
T=[];
%% 把第t代的函数值Fit按从小到大的顺序排列并存放到FS中
[FS,Affinity]=sort(Fit,'ascend');
%% 把第t代的函数值的坐标按从小到大的顺序排列并存放到XT中
XT=X(Affinity(end-mn+1:end));
%% 从FS集合中取后mn个第t代的函数值按原顺序排列并存放到FT中
FT=FS(end-mn+1:end);
%% 把第t代的最优函数值加到集合FM中
FM=[FM FT(end)];
%% 克隆(复制)操作,选择mn个候选抗体进行克隆,克隆数与亲和度成正比,AAS是每个候选抗体克隆后在T中的坐标
[T,AAS]=ReproduceFun(mn,cfactor,m,Affinity,A,T);
%% 把以前的抗体保存到临时克隆群体T里
T=Hypermutation(T,n,pMutate,xmax,xmin);
%% 从大到小重新排列要克隆的mn个原始抗体
AF1=fliplr(Affinity(end-mn+1:end));
%% 把以前的抗体保存到临时克隆群体T里%从临时抗体集合T中根据亲和度的值选择mn个
T(AAS,:)=A(AF1,:);
X=DecodeFun(T(:,1:22),xmin,xmax);
Fit=eval(F);
AAS=[0 AAS];
FMN=[FMN mean(Fit)];
for i=1:mn
%克隆子群中的亲和度最大的抗体被选中
[OUT(i),BBS(i)]=max(Fit(AAS(i)+1:AAS(i+1)));
BBS(i)=BBS(i)+AAS(i);
end
%从大到小重新排列要克隆的mn个原始抗体
AF2=fliplr(Affinity(end-mn+1:end));
%选择克隆变异后mn个子群中的最好个体保存到A里,其余丢失
A(AF2,:)=T(BBS,:);
end
disp(sprintf('\n The optimal point is:'));
disp(sprintf('\n x: %2.4f, f(x):%2.4f',XT(end),FM(end)));
%%
figure(3)
grid on
plot(FM)
title('适应值变化趋势')
xlabel('迭代数')
ylabel('适应值')
hold on
plot(FMN,'r')
hold off
grid on
没有合适的资源?快使用搜索试试~ 我知道了~
基于Matlab实现二维人工免疫优化算法(源码).rar
共5个文件
m:5个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 113 浏览量
2023-06-05
12:42:29
上传
评论 1
收藏 3KB RAR 举报
温馨提示
1、资源内容:基于Matlab实现二维人工免疫优化算法(源码).rar 2、适用人群:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业或毕业设计,作为“参考资料”使用。 3、解压说明:本资源需要电脑端使用WinRAR、7zip等解压工具进行解压,没有解压工具的自行百度下载即可。 4、免责声明:本资源作为“参考资料”而不是“定制需求”,代码只能作为参考,不能完全复制照搬。不一定能够满足所有人的需求,需要有一定的基础能够看懂代码,能够自行调试代码并解决报错,能够自行添加功能修改代码。由于作者大厂工作较忙,不提供答疑服务,如不存在资源缺失问题概不负责,谢谢理解。
资源推荐
资源详情
资源评论
收起资源包目录
基于Matlab实现二维人工免疫优化算法(源码).rar (5个子文件)
基于Matlab实现二维人工免疫优化算法(源码)
DecodeFun.m 183B
ReproduceFun.m 645B
main.m 3KB
InitializeFun.m 83B
Hypermutation.m 172B
共 5 条
- 1
资源评论
- Frozen_yu2024-02-27这个资源总结的也太全面了吧,内容详实,对我帮助很大。
Matlab仿真实验室
- 粉丝: 2w+
- 资源: 2179
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功