基于WOA优化和Stackelberg博弈的频谱共享算法matlab仿真,对比PSO优化和GA优化

目录

1.前言

2.算法测试效果图预览

3.算法运行软件版本

4.部分核心程序

5.算法理论概述

5.1 系统模型

5.2 Stackelberg博弈建模

5.3 Stackelberg均衡求解(内层)

5.4 具体的实现步骤

参数初始化

种群初始化

适应度评估

更新最优鲸鱼

位置更新

迭代终止

6.算法完整程序工程


1.前言

       认知无线电(CR)中的频谱共享问题本质是主用户(PU, Primary User)与次用户(SU, Secondary User)之间的资源博弈。主用户拥有授权频谱并希望通过定价机制获得收益,次用户则希望以最低代价获得最大传输速率。这种"领导者-跟随者"的非对称决策结构非常适合用Stackelberg博弈建模。然而,主用户的定价策略空间是连续高维的(每个SU对应一个价格),传统数学优化难以处理。因此引入鲸鱼优化算法(WOA, Whale Optimization Algorithm)作为外层优化器,模拟座头鲸的气泡网捕食行为,搜索全局最优定价向量。

2.算法测试效果图预览

3.算法运行软件版本

matlab2024B

4.部分核心程序

%WOA收敛曲线 
figure('Name','WOA收敛曲线','Color','w');
subplot(121);
plot(1:T_max, ConvCurve,'b-','LineWidth',2); hold on;
plot(1:T_max, AvgCurve,'r--','LineWidth',1.5);
xlabel('迭代次数'); 
ylabel('PU效用值');
title('WOA收敛过程'); 
legend('最优适应度','平均适应度','Location','best');
grid on;

subplot(122);
plot(1:T_max, ConvCurve,'b-','LineWidth',2); hold on;
plot(1:T_max, PSO_curve,'r--','LineWidth',2);
plot(1:T_max, GA_curve,'g-.','LineWidth',2);
xlabel('迭代次数'); 
ylabel('PU效用值');
title('WOA vs PSO vs GA'); 
legend('WOA','PSO','GA','Location','best');
grid on;

%最优价格 
figure;
subplot(131);
bar(BestWhale,'FaceColor',[0.2 0.6 0.8]);
xlabel('次用户编号'); ylabel('最优价格 \lambda');
title('PU对各SU的最优定价'); grid on;

%SU功率分配&价格演化热图 
[p_opt,u_opt] = SU_BestResponse(BestWhale,h_su,w,N0,Pmax);

subplot(132);
bar([p_opt]','grouped');
xlabel('次用户编号'); 
ylabel('值');
title('SU最优功率'); 
legend('功率'); 
grid on;

subplot(133);
bar([u_opt]','grouped');
xlabel('次用户编号'); 
ylabel('值');
title('SU最优效用'); 
legend('效用'); 
grid on;


%SU功率随迭代演化 
figure('Name','SU功率演化','Color','w');
subplot(121);
plot(1:T_max, SU_Power_Hist,'LineWidth',1.5);
xlabel('迭代次数'); 
ylabel('SU功率');
title('各SU功率随WOA迭代变化');
legend(arrayfun(@(x)sprintf('SU%d',x),1:N_SU,'UniformOutput',false));
grid on;

%价格-功率响应曲线 
lambda_range = linspace(0.1,5,100);
P_response   = zeros(length(lambda_range),N_SU);
for k = 1:length(lambda_range)
    lam = lambda_range(k)*ones(1,N_SU);
    P_response(k,:) = SU_BestResponse(lam, h_su, w, N0, Pmax);
end
subplot(122);
plot(lambda_range, P_response,'LineWidth',1.8);
xlabel('价格 \lambda'); ylabel('SU最优功率');
title('Stackelberg博弈:价格-功率响应');
grid on;

%不同SU数量下PU效用 
SU_range = 2:2:14;
PU_util_vs_N = zeros(size(SU_range));
for k = 1:length(SU_range)
    n  = SU_range(k);
    h1 = 0.5 + 0.8*rand(1,n);
    h2 = 0.2 + 0.6*rand(1,n);
    PU_util_vs_N(k) = quickWOA(h1,h2,ones(1,n),N0,Pmax,I_th,C_coef,n,20,50,lambda_min,lambda_max);
end
figure('Name','SU数量影响','Color','w');
subplot(121);
plot(SU_range, PU_util_vs_N,'-o','LineWidth',2,'MarkerFaceColor','b');
xlabel('SU数量'); 
ylabel('PU最优效用');
title('SU数量对PU效用影响'); grid on;

%干扰门限影响 
Ith_range = 0.2:0.2:2.0;
PU_util_vs_I = zeros(size(Ith_range));
for k = 1:length(Ith_range)
    PU_util_vs_I(k) = quickWOA(h_su,h_pu_su,w,N0,Pmax,Ith_range(k),C_coef,...
                                N_SU,20,50,lambda_min,lambda_max);
end
subplot(122);
plot(Ith_range, PU_util_vs_I,'-s','LineWidth',2,'MarkerFaceColor','r');
xlabel('干扰门限 I_{th}'); ylabel('PU效用');
title('干扰门限对PU效用影响'); grid on;

%信道增益影响(3D)
h_range = linspace(0.2,1.5,15);
[Hg,Hpg] = meshgrid(h_range,h_range);
Z = zeros(size(Hg));
for i=1:size(Hg,1)
    for j=1:size(Hg,2)
        Z(i,j)=quickWOA(Hg(i,j)*ones(1,N_SU),Hpg(i,j)*ones(1,N_SU),...
                        w,N0,Pmax,I_th,C_coef,N_SU,15,40,lambda_min,lambda_max);
    end
end
figure('Name','信道增益3D','Color','w');
subplot(121);
surf(Hg,Hpg,Z); shading interp; colorbar;
xlabel('h_{su}'); ylabel('h_{pu-su}'); zlabel('PU效用');
title('信道增益对PU效用的影响');

subplot(122);
SNR = h_su.*p_opt/N0;
Rate = log2(1+SNR);
bar(Rate,'FaceColor',[0.8 0.4 0.2]);
xlabel('SU编号'); ylabel('速率 (bps/Hz)');
title('各SU传输速率'); grid on;

 
fprintf('\n===== 最终结果 =====\n');
fprintf('最优PU效用: %.4f\n',BestScore);
fprintf('最优价格向量: '); disp(BestWhale);
fprintf('SU最优功率: '); disp(p_opt);
fprintf('总干扰: %.4f / 门限 %.4f\n',sum(h_pu_su.*p_opt),I_th);

5.算法理论概述

5.1 系统模型

设系统有1个主用户和N个次用户,第i个次用户的发射功率为pi,自身信道增益为hi,对主用户的干扰信道增益为gi,加性高斯白噪声功率为N0。

第i个次用户的接收信噪比为:

由香农公式可得其传输速率为:

5.2 Stackelberg博弈建模

跟随者(SU)效用函数:传输收益减去支付给PU的费用:

其中wi为效用权重,λi为PU对SUi收取的单位功率价格。

领导者(PU)效用函数:收取的总费用减去干扰惩罚:

其中Ith是干扰门限,η是惩罚系数。

5.3 Stackelberg均衡求解(内层)

固定λi,对SU效用求一阶偏导:

解得SU的最佳响应函数:

5.4 具体的实现步骤

参数初始化

设置SU数量N、噪声N0、信道增益hi,gi、最大功率Pmax⁡、干扰门限Ith、WOA种群规模Nw、最大迭代次数Tmax⁡、价格搜索范围[λmin⁡,λmax⁡]。

种群初始化

在价格空间中随机生成Nw只鲸鱼:

适应度评估

对每只鲸鱼Xi=λ:

更新最优鲸鱼

位置更新

更新每只鲸鱼位置,并使用边界处理:

迭代终止

达到Tmax⁡后输出X∗和对应的SU最优功率p∗,绘制各项仿真图。

6.算法完整程序工程

OOOOO

OOO

O

关注GZH后输入回复:0054

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

简简单单做算法

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值