clc
clear all
%生成16个SU节点,横坐标在行向量x中,纵坐标在行向量y中。生成1个PU节点,横坐标为x0,纵坐标为y0。
x=3*rand(1,16)-1.5;
y=3*rand(1,16)-1.5;
x0=0;
y0=0;
plot(x,y,'rx',x0,y0,'bo')
grid on;
A={'1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16'};
text(x,y,A);
%设置各种参数
lambda=13;
m=5;
P0=0.1;
for i=1:1:length(x)
P(i)=0.01;
end
sigma=10^(-6);
mu=3;
K=1;
alpha=0.1;
%求各节点的Pm(i)和Pf(i)
for i=1:1:length(x)
Pf0=gammainc(m,lambda/2)/gamma(m);
Pf(i)=Pf0;
sum0=0;
sum1=0;
d(i)=sqrt((x(i)-x0)^2+(y(i)-y0)^2)*1000;
h(i)=K/d(i)^mu;
snr(i)=P0*h(i)/sigma^2;
for n=0:1:m-2
sum0=sum0+1/factorial(n)*(lambda/2)^n;
end
for n=0:1:m-2
sum1=sum1+1/factorial(n)*(lambda*(snr(i)/2/(1+snr(i))))^n;
end
Pm(i)=1-exp(-lambda/2)*sum0-(1+1/snr(i))^(m-1)*(exp(-lambda/2/(snr(i)+1))-exp(-lambda/2)*sum1);
end
%初始化循环判断参数
S={[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16]}; %初始化时,每个节点为一个联盟
B=cell(1,16); %另外赋予一个变量,用来作为融合结束的标志
M_max=log10(1-alpha)/log10(1-Pf0); %每个联盟最多的节点数
for i=1:1:length(x)
for j=1:1:length(x)
d(i,j)=sqrt((x(i)-x(j))^2+(y(i)-y(j))^2)*1000;
h(i,j)=K/d(i,j)^mu;
snr(i,j)=P(i)*h(i,j)/sigma^2;
Pe(i,j)=1/2*(1-sqrt(snr(i,j)/(1+snr(i,j))));
end
end
for i=1:1:length(x)
Pe(i,i)=0;
end
%进行联盟融合
while isequal(B,S)==0
B=S;
B
for i=1:1:size(S,2)-1
%求出Si这个联盟的检测概率、虚警概率以及效用函数
if i>size(S,2)-1
break;
end
[s]=deal(S{i}); %把S这个单元数组的第i个,即Si这个联盟的元素赋给s这个向量
[Pm_max_i,coo_i]=max(Pm(s(:))); %coo_i的值是s这个向量中的坐标,必须要转换成其值才可以
certer_i=s(coo_i);
Qm_i=1;
Qf_i=1;
for k=1:1:length(s)
Qm_i=Qm_i*(Pm(s(k))*(1-Pe(s(k),certer_i))+(1-Pm(s(k)))*Pe(s(k),certer_i));
Qf_i=Qf_i*((1-Pf0)*(1-Pe(s(k),certer_i))+Pf0*Pe(s(k),certer_i));
end
Qf_i=1-Qf_i;
if Qf_i<alpha
CQf_i=-alpha^2*log10(1-(Qf_i/alpha)^2);
else
CQf_i=Inf;
end
V_i=1-Qm_i-CQf_i;
for j=i+1:1:size(S,2)
%先求出Sj这个联盟的检测概率、虚警概率以及效用函数
[t]=deal(S{j});
if length(s)+length(t)<M_max %先判断这两个联盟融合后会不会超过联盟中最大节点数
[Pm_max_j,coo_j]=max(Pm(t(:)));
certer_j=t(coo_j);
Qm_j=1;
Qf_j=1;
for k=1:1:length(t)
Qm_j=Qm_j*(Pm(t(k))*(1-Pe(t(k),certer_j))+(1-Pm(t(k)))*Pe(t(k),certer_j));
Qf_j=Qf_j*((1-Pf0)*(1-Pe(t(k),certer_j))+Pf0*Pe(t(k),certer_j));
end
Qf_j=1-Qf_j;
if Qf_j<alpha
CQf_j=-alpha^2*log10(1-(Qf_j/alpha)^2);
else
CQf_j=Inf;
end
V_j=1-Qm_j-CQf_j;
%再求出假如两个联盟融合后的检测概率、虚警概率和效用函数
if Pm_max_i>Pm_max_j
certer_ij=s(coo_i);
Qm_ij=Qm_i;
Qf_ij=1-Qf_i;
for k=1:1:length(t)
Qm_ij=Qm_ij*(Pm(t(k))*(1-Pe(t(k),certer_ij))+(1-Pm(t(k)))*Pe(t(k),certer_ij));
Qf_ij=Qf_ij*((1-Pf0)*(1-Pe(t(k),certer_ij))+Pf0*Pe(t(k),certer_ij));
end
else
certer_ij=t(coo_j);
Qm_ij=Qm_j;
Qf_ij=1-Qf_j;
for k=1:1:length(s)
Qm_ij=Qm_ij.*(Pm(s(k)).*(1-Pe(s(k),certer_ij))+(1-Pm(s(k))).*Pe(s(k),certer_ij));
Qf_ij=Qf_ij.*((1-Pf0).*(1-Pe(s(k),certer_ij))+Pf0.*Pe(s(k),certer_ij));
end
end
Qf_ij=1-Qf_ij;
if Qf_ij<alpha
CQf_ij=-alpha^2*log10(1-(Qf_ij/alpha)^2);
else
CQf_ij=Inf;
end
V_ij=1-Qm_ij-CQf_ij;
%对新形成的联盟和原来两个联盟做比较
if (V_ij>V_i) & (V_ij>V_j)
s=[s,t]; %把t加到s上
S{i}=s;
S{j}=[];
end
end
end
k=1;
while k<=size(S,2)
[r]=deal(S{k});
if length(r)==0
S(k)=[];
end
k=k+1;
end
end
S
end
基于联盟博弈的协作感知模型的融合算法附matlab程序.zip
版权申诉
3 浏览量
2022-06-25
14:22:48
上传
评论
收藏 2KB ZIP 举报
天天Matlab科研工作室
- 粉丝: 2w+
- 资源: 7251
最新资源
- ### 词向量的介绍、使用技巧和优缺点的文章
- 基于STM32F103CBT6单片机GC65+MP2625+CC1101 GPSTrack模块板硬件(原理图+PCB)工程文件
- ### 通道处理过程模拟概念、优缺点和使用技巧
- ### MyBatis动态SQL介绍说明、使用技巧和优缺点
- 上传下载仿163网盘无刷新文件上传 for Jsp-fileupload-jsp.rar
- VMware Workstation业界非常稳定且安全的桌面虚拟机软件-计算机上运行多个操作系统,支持Windows、DOS等
- 基于STM8L101F3P6单片机+LY2508A33P+CC1100遥控器硬件(原理图+PCB)工程文件.zip
- 上传下载WAP图铃下载系统-unimg.rar
- YTX-0.1.0-Win
- 上传下载ExtJS 2.2 开源网络硬盘系统-dogdisk.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈