目录

1.算法描述

2.仿真效果预览

3.MATLAB核心程序

4.完整MATLAB


1.算法描述

认知无线电(CR)的概念来自Joseph Mitolo博士1999年的开创性工作。它自适应地调整内部通信机制,通过学习,了解等实时变化特定的无线电操作参数(功率,载波调制和编码等),适应外部无线电环境,并独立空闲频谱它可以被搜索和使用。这有助于用户选择用于无线传输的最佳和最合适的服务,甚至允许基于现有或未来的无线电资源来延迟甚至主动地开始传输。

免疫算法基本步骤:

1、随机产生初始父代种群A1,根据先验知识抽取疫苗;

2、若当前群体中包含最佳个体,则算法停止运行并输出结果;否则,继续;

3、对当前第k代父本种群Ak进行交叉操作,得到种群Bk;

4、对Bk进行变异操作,得到种群Ck;

5、对Ck进行接种疫苗操作,得到种群Dk;

6、对Dk进行免疫选择操作,得到新一代父本Ak+1,转至第二步。

免疫算法进行子载波分配流程
免疫算法的主要操作如下:

抗体的编码和产生每个抗体由M位十进制整数组成,对应N个子载波,每个整数范围从1到M,表明子载体被分配给M个认知用户中的一个。抗体群是K,对应于K个解决方案。第一代抗体通常是随机产生的。
计算和排序亲和力 根据贪婪算法的基本思想,完成每种抗体的安全传输速率调整。安全传输速率调整完成后,获得每个抗体对应的加权安全吞吐量,然后排序
(3)存储单元的生成在(2)中排序后对应于较高加权吞吐量的抗体被保存为存储单元以避免后续操作中的丢失。

(4)蚂蚁的选择ibodies

浓度概率,亲和概率和选择概率有三个概率。

2.仿真效果预览

matlab2022a仿真结果如下:

3.MATLAB核心程序


for m=1:Mpl_cu_pu(1,m)=((loc_cu(m,1)-loc_pu(1,1))^2+(loc_cu(m,2)-loc_pu(1,2))^2)^0.5;
end
pl_cu_pu=10^(0.1*randn*Sigma)./((pl_cu_pu/3).^Eta);  %产生主用户和认知用户的路径损耗
pl_cu_cbs=10^(0.1*randn*Sigma)./((pl_cu_cbs/3).^Eta);  %产生用户和认知基站的路径损耗
for m=1:Mfor i=1:Mpl_cu_cu(m,i)=((loc_cu(m,1)-loc_cu(i,1))^2+(loc_cu(m,2)-loc_cu(i,2))^2)^0.5;end
end
pl_cu_cu=10^(0.1*randn*Sigma)./((pl_cu_cu/3).^Eta);   %产生认知用户和认知用户之间的路径损耗%对主用户干扰
to_pu_g=raylrnd(1,[M,N]);   %对主用户的信道干扰增益(第m行是第m个小f中各个子载波的增益)
lamda=zeros(1,N);  %对主用户距离干扰增益
Distance=zeros(1,N);   %第n个子载波和主用户的频带距离
for n=1:NDistance(1,n)=((N-(2*n-1)/2)*Delta_f+W/2);
end
F=@(f)((sin(pi*Ts*f)./(pi*Ts*f)).^2);      %积分函数
for n=1:N      %Lamda计算lamda(1,n)=Ts*quad(F,(Distance(1,n)-W/2),(Distance(1,n)+W/2));
endfor m=1:Mfor n=1:Nto_pu_g(m,n)=to_pu_g(m,n)*lamda(1,n);   %对主用户的总的干扰增益end
endfor m=1:Mto_pu_g(m,:)=to_pu_g(m,:)*pl_cu_pu(1,m);
end%同频相互干扰
co_ch_g=zeros(M,M,N);  %同频干扰矩阵,第n页是第n个子载波的同频干扰for n=1:Nfor i=1:Mfor j=i:M              %若要不同的同频干扰,则这里改为1:Mco_ch_g(i,j,n)=raylrnd(1);co_ch_g(j,i,n)=co_ch_g(i,j,n);endend
end
for n=1:Nfor m=1:Mco_ch_g(m,m,n)=0;end
end
for n=1:Nco_ch_g(:,:,n)=(co_ch_g(:,:,n).^2).*pl_cu_cu;
end
for n=1:Nfor i=1:Mco_ch_g(i,i,n)=0;end
end%—有关各个子载波的信道增益——
ch_g=raylrnd(1,[M,N]);   %每个子载波的信道增益
for m=1:Mch_g(m,:)=(ch_g(m,:).^2)*pl_cu_cbs(1,m);
end
%===—有关运算结果显示=====二=
rate_gen1=zeros(1,genMax);   %每代的最优速率
rate_gen2=zeros(1,genMax);      %每代的最优速率
%rate_gen3=zeros(1,generaMax);   %每代的最优小速率
ratio_gen1=zeros(1,genMax);     %每代的最优速率功率比
ratio_gen2=zeros(1,genMax);     %每代的最优速率功率比
%ratio_gen3=zeros(1,genMax);     %每代的最优速率功率比
Pth=10;
for Ith=[0.001 0.005 0.01]for qq=1:10%=========程序初始化========temp_antibody(:)=Pth/N;       %初始抗体功率是平均分配temp_memorycell(:)=Pth/N;      %初始记忆细胞功率也是平均分配antibody(:)=temp_antibody(:);      %抗体变量装入初始抗体memorycell(:)=temp_memorycell(:);      %记忆细胞变量装入记忆细胞%=========主函数=========for gen=1:genMaxgen%记忆细胞添加            antibody(:,:,(K-L+1):K)=memorycell;%antibody_falg((K-L+1):K)=1;                       %记录成型抗体%——抗体合格检测exceed_Ith=0;   %超过干扰门限的量exceed_Pth=0;      %超过功率门限的量decr_var_I=zeros(M,N);      %有关干扰的归一化的减少量decr_val_P=zeros(M,N);     %有关功率的归一化的减少量ratio_P=zeros(1,3);      %计算当前功率与公平性的比值standerd_site=0;      %作为基准的用户for k=1:Kdecr_val_P=antibody(:,:,k)/sum(sum(antibody(:,:,k)));   %根据现有功率计算归一化功率减少量if(sum(sum(antibody(:,:,k)))-Pth>eps)exceed_Pth=sum(sum(antibody(:,:,k)))-Pth;   %计算超出多少antibody(:,:,k)=antibody(:,:,k)-exceed_Pth*decr_val_P(:,:);enditfere_pu(:,:,k)=to_pu_g.*antibody(:,:,k);decr_val_I=itfere_pu(:,:,k)/sum(sum(itfere_pu(:,:,k)));      %根据现有干扰计算归一化功率减少量if(sum(sum(itfere_pu(:,:,k)))-Ith>eps)exceed_Ith=sum(sum(itfere_pu(:,:,k)))-Ith;         %计算超出多少antibody(:,:,k)=antibody(:,:,k)-(exceed_Ith*decr_val_I)./(to_pu_g);enditfere_pu(:,:,k)=to_pu_g.*antibody(:,:,k);      %更新对主用户的干扰end%---速率计算h=zeros(M,N,K);   %各个子载波的信噪比i_ss=zeros(M,N,K);   %各个子载波受到的同频干扰for k=1:Kfor n=1:Nfor m=1:Mfor i=1:Mi_ss(m,n,k)=i_ss(m,n,k)+co_ch_g(i,m,n)*antibody(i,n,k);   %计算各个子载波所受到的同频干扰endendendendtemp=sum(i_ss);for k=1:Kfor n=1:Nfor m=1:Mi_ss(m,n,k)=temp(1,n,k)-i_ss(m,n,k);      %计算每个子载波所受到的同频干扰endendendfor k=1:Kh(:,:,k)=ch_g./(N0*Delta_f+i_ss(:,:,k));           %计算信噪比end%rate=Delta_f*log2(1+antibody.*h/Tau);          %计算每个抗体每个小区的速率rate=log2(1+antibody.*h/Tau);         %计算每个抗体每个小区的速率%总的公平性调整for o=1:O%rate_m=zeros(1,3,K);      %各个小区的总速率%ratio_r=zeros(1,3);             %计算当前速率与公平性的比值standard_site=0;      %作为基准的用户decr_val_r=zeros(M,N);        %有关功率的归一化的减少量exceed_r=0;            %超过干扰门限的量rate_m=sum(rate,2);for k=1:Kratio_r=rate_m(:,:,k)./Rate_m';[~,standard_site]=min(ratio_r);     %选取基准功率switch(standard_site)      %进行功率公平性调整case 1   %第一个为基准for m=[2 3]exceed_r=rate_m(1,:,k)/2-rate_m(m,:,k);decr_val_r(m,:)=(rate(m,:,k)/sum(rate(m,:,k)))*exceed_r;if(exceed_r<0)for n=1:Nantibody(m,n,k)=(2^decr_val_r(m,n)*(Tau+antibody(m,n,k)*h(m,n,k))-Tau)/h(m,n,k);endendendcase 2            %第二个为基准exceed_r=rate_m(2,:,k)*2-rate_m(1,:,k);decr_val_r(1,:)=(rate(1,:,k)/sum(rate(1,:,k)))*exceed_r;if(exceed_r<0)for n=1:Nantibody(1,n,k)=(2^decr_val_r(1,n)*(Tau+antibody(1,n,k)*h(1,n,k))-Tau)/h(1,n,k);endendexceed_r=rate_m(2,:,k)-rate_m(3,:,k);decr_cal_r(3,:)=(rate(3,:,k)/sum(rate(3,:,k)))*exceed_r;if(exceed_r<0)for n=1:Nantibody(3,n,k)=(2^decr_cal_r(3,n)*(Tau+antibody(3,n,k)*h(3,n,k))-Tau)/h(3,n,k);endendcase 3              %第三个为基准exceed_r=rate_m(3,:,k)*2-rate_m(1,:,k);decr_val_r(1,:)=(rate(1,:,k)/sum(rate(1,:,k)))*exceed_r;if(exceed_r<0)for n=1:Nantibody(1,n,k)=(2^decr_val_r(1,n)*(Tau+antibody(1,n,k)*h(1,n,k))-Tau)/h(1,n,k);endendexceed_r=rate_m(3,:,k)-rate_m(2,:,k);decr_val_r(2,:)=(rate(2,:,k)/sum(rate(2,:,k)))*exceed_r;if(exceed_r<0)for n=1:Nantibody(2,n,k)=(2^decr_val_r(2,n)*(Tau+antibody(2,n,k)*h(2,n,k))-Tau)/h(2,n,k);endendendendtemp=antibody<=eps;antibody(temp)=eps;h=zeros(M,N,K);      %各个子载波的信噪比i_ss=zeros(M,N,K);          %各个子载波受到的同频干扰for k=1:Kfor n=1:Nfor m=1:Mfor i=1:Mi_ss(m,n,k)=i_ss(m,n,k)+co_ch_g(i,m,n)*antibody(i,n,k);      %计算各个子载波所受到的同频干扰endendendendtemp=sum(i_ss);for k=1:Kfor n=1:Nfor m=1:Mi_ss(m,n,k)=temp(1,n,k)-i_ss(m,n,k);      %计算每个子载波所受到的同频干扰endendendfor k=1:Kh(:,:,k)=ch_g./(N0*Delta_f+i_ss(:,:,k));             %计算信噪比end%rate=Delta_f*log2(1+antibody.*h/Tau);   %计算每个抗体每个小区的速率rate=log2(1+antibody.*h/Tau);   %计算每个抗体每个小区的速率end%速率功率比计算%if gen==genMax%rate=floor(rate);%endrate_antibody=sum(sum(rate));               %计算每个抗体速率ratio=rate_antibody./sum(sum(antibody));           %计算每个抗体的速率功率比Objective=ratio*Alpha+rate_antibody*(1-Alpha);               %计算优化目标的值%亲和力排序for i=1:K-1for j=i+1:Kif(Objective(i)<Objective(j))temp=rate_antibody(i);         %每代速度交换rate_antibody(i)=rate_antibody(j);rate_antibody(j)=temp;temp=rate(:,:,i);               %速率交换rate(:,:,i)=rate(:,:,j);rate(:,:,j)=temp;temp=antibody(:,:,i);            %功率交换antibody(:,:,i)=antibody(:,:,j);antibody(:,:,j)=temp;temp=itfere_pu(:,:,i);            %对主用户干扰交换itfere_pu(:,:,i)=itfere_pu(:,:,j);itfere_pu(:,:,j)=temp;temp=Objective(i);           %每代速度交换Objective(i)=Objective(j);Objective(j)=temp;temp=ratio(i);                 %每代速度交换ratio(i)=ratio(j);ratio(j)=temp;%                         temp=antibody_flag(i);
%                         antibody_flag(i)=antibody_flag(j);
%                         antibody_flag(j)=temp;endendend%提取记忆细胞memorycell=antibody(:,:,1:L);                %前L个个体作为记忆细胞提取%算法结果等待rate_gen1(gen)=rate_antibody(1);   %记录每代最优的最小速度ratio_gen1(gen)=Objective(1);      %每代最优速率功率比%抗体选择%pd=zeros(1,K);             %浓度概率pf=zeros(1,K);                 %适应度概率%p=zeros(1,K);                %选择概率resemble=zeros(1,K);         %抗体的相似度res=zeros(M,N,K);              %各个子载波的距离index=zeros(1,K);               %轮盘赌抗体索引for k=1:Kfor i=1:Kres(:,:,i)=abs(antibody(:,:,k)-antibody(:,:,i));               %计算各个子载波的距离endtemp=(res<=Gama*Pth);             %距离过近的子载波个数temp=sum(sum(temp));                %计算与每个抗体的距离for i=1:Kresemble(k)=resemble(k)+temp(i);endendpd=1-resemble/(M*N*K);for k=1:Kpf(k)=(Objective(k)-Objective(K)+eps)/(Objective(1)-Objective(K)+eps);endp=Rho*pf+(1-Rho)*pd;for i=1:K-1                   %抗体按照选择概率排序for j=i+1:Kif(p(i)<p(j))temp=p(i);p(i)=p(j);p(j)=temp;temp=antibody(i);antibody(i)=antibody(j);antibody(j)=temp;endendendfor k=1:K                        %选出K个抗体temp=rand*sum(p);for i=1:Ktemp=temp-p(i);if(temp<=0)index(k)=i;             %赌出第k个索引值break;endendendtemp=antibody;antibody=temp(:,:,index);%两种交叉[antibody]=dou_atb_excha(N,K,Pc,antibody);               %调用交叉互换函数i现i叉互换%两种突变[antibody]=dou_atb_mutat(K,N,M,Pm,antibody);            %调用突变函数实现抗体突变endobj(qq,:)=ratio_gen1;obj11(qq,:)=2*rate_gen1;endhold on;oobj=mean(obj);oobj11=mean(obj11);plot(oobj11);xlabel('代数');ylabel('亲和力');title('收敛性能');legend('Ith=0.001','Ith=0.005','Ith=0.01','Location','NorthEast');endA108

4.完整MATLAB

V

基于免疫算法的认知无线电资源分配优化算法的matlab仿真相关推荐

  1. 【免疫算法,资源分配】基于免疫算法的认知无线电资源分配研究

    1.软件版本 matlab2017b 2.本算法理论知识 在生命科学领域,人们对遗传和免疫等自然现象进行了广泛而深入的研究.20世纪60年代,Bagley和Rosenberg等先驱使用了相关的内容和知 ...

  2. 度量相似性数学建模_一种基于粒子群位置更新思想灰狼优化算法的K-Means文本分类方法与流程...

    技术特征: 1.一种基于粒子群位置更新思想灰狼优化算法的k-means文本分类方法,其特征在于:包括以下步骤: s1:对文本数据进行预处理,得到预处理后文本数据: s2:采用余弦角度为相似性度量,分别 ...

  3. 基于准反射学习的哈里斯鹰优化算法

    文章目录 一.理论基础 1.哈里斯鹰优化算法 2.改进哈里斯鹰优化算法 (1)基于反向学习 (2)基于准反向学习 (3)基于准反射学习 二.仿真实验与分析 三.参考文献 一.理论基础 1.哈里斯鹰优化 ...

  4. 基于余弦相似度的改进蝴蝶优化算法

    文章目录 一.理论基础 1.蝴蝶优化算法 2.改进蝴蝶优化算法 (1)基于余弦相似度位置更新策略 (2)根据适应度动态调整转换概率策略 (3)自适应混合惯性权重 二.MSBOA算法步骤 三.仿真实验与 ...

  5. 基于混沌透镜成像学习的哈里斯鹰优化算法

    文章目录 一.理论基础 1.哈里斯鹰优化算法 2.基于混沌透镜成像学习的哈里斯鹰优化算法 (1)Fuch无限折叠混沌策略 (2)黄金正弦策略 (3)融合透镜成像学习和柯西变异策略 二.仿真实验与结果分 ...

  6. 基于曲线自适应和模拟退火的蝗虫优化算法-附代码

    基于曲线自适应和模拟退火的蝗虫优化算法 文章目录 基于曲线自适应和模拟退火的蝗虫优化算法 1.蝗虫优化算法 2. 基于曲线自适应和模拟退火的蝗虫优化算法(SA-CAGOA) 2.1 基于曲线自适应的蝗 ...

  7. 【智能优化算法】基于曲线自适应和模拟退火的蝗虫优化算法求解单目标优化问题附matlab代码

    1 简介 针对蝗虫优化算法容易陷入局部极值点,收敛速度慢,精度较差等缺点,提出曲线自适应和模拟退火蝗虫优化算法.首先,引入曲线自适应代替蝗虫优化算法关键参数的线性自适应,提高了算法的全局搜索能力;其次 ...

  8. 基于非线性控制参数组合策略的灰狼优化算法

    文章目录 一.理论基础 1.灰狼优化算法基本模型 2.改进GWO (1)非线性控制参数 (2)改进的非线性控制参数策略 (3)改进策略调节参数的设定 (4)改进的算法流程 二.仿真实验与分析 1.基本 ...

  9. 多目标优化算法:基于非支配排序的人工兔优化算法(Non-Dominated Sorting Artificial Rabbits Optimization ,NSARO)

    一.人工兔优化算法算法简介 人工兔优化算法(Artificial Rabbits Optimization ,ARO)由Liying Wang等人于2022年提出,该算法模拟了兔子的生存策略,包括绕道 ...

最新文章

  1. 2022,人工智能开启未来新密码
  2. Oracle 原理:DML触发器和数据库触发器
  3. Java输出彩色字符
  4. SqlServer 算法 :Nested Loops Join(嵌套连接)
  5. 快速实现一个分布式定时器
  6. python中hist函数参数_用hist参数解释Python,python,解读
  7. javascript中编码与解码的decodeURI()、decodeURIComponent()区别
  8. NYOJ 1023 还是回文(DP,花最少费用形成回文串)
  9. 鸿蒙系统的变化,鸿蒙系统没变化的背后
  10. web安全day12:PKI
  11. 全国地图poi数据下载
  12. 理光2014ad扫描服务器响应,理光mp2014ad扫描驱动和打印驱动
  13. 仅此一文,看懂二极管的所有基础知识点
  14. Windows 使用学习
  15. 五金模具设计常见的二十一块模板作用,一起学起来
  16. 微信小程序 小程序生命周期、页面导航/事件、WXS脚本(笔记)
  17. Coin Changing
  18. 购买计算机配置总结,买电脑主要看什么 教你怎么看电脑配置信息
  19. web前端超有用网站推荐
  20. 新概念c语言周二强07答案,新概念C语言能力教程(普通高等教育十二五规划教材)...

热门文章

  1. 【springboot】绿盾解密不求人
  2. FME爬取高德POI数据
  3. python安装包下载太慢解决
  4. Docker 中 安装Linux镜像
  5. Linux常用命令(一) 项目部署常用命令
  6. maven 依赖范围影响传递性依赖
  7. iOS 设置字体 自定义字体
  8. bootstrap-table 一直显示“正在努力地加载数据中,请稍候”的问题
  9. 单片微型计算机原理及应用ppt,(精品完整版)单片微型计算机原理及应用.ppt...
  10. 判断两立方体体积是否相等