1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/Z56YlZ5v
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
在本课题中,将通过GA优化算法,搜索最佳的参数v,进一步提升概率整形后的系统性能。以 64QAM 的误码率(BER)作为适应度函数。误码率越低,表明该概率整形因子 对应的星座点概率分布越优。在实际计算时,可通过蒙特卡罗仿真来估计误码率。具体步骤为:依据当前的 计算每个星座点的发送概率,生成大量发送符号,经过加性高斯白噪声(AWGN)信道传输,接收符号并进行解调,统计错误比特数,进而计算误码率。
通过GA算法,获得最优的参数v,以降低 64QAM 的误码率。
4.部分源码
................................................................
MAXGEN = 15;
NIND = 20;
Nums = 1;
Chrom = crtbp(NIND,Nums*10);
%sh
Areas = [];
for i = 1:Nums
Areas = [Areas,[0;0.25]];% 优化概率整形参数v
end
FieldD = [rep([10],[1,Nums]);Areas;rep([0;0;0;0],[1,Nums])];
gen = 0;
for a=1:1:NIND
%计算对应的目标值
X = rand(1,Nums)/10;%初始值
[epls] = func_obj(X);
E = epls;
Js(a,1) = E;
end
Objv = (Js+eps);
gen = 0;
%%
while gen < MAXGEN
gen
Pe0 = 0.998;
pe1 = 0.002;
FitnV=ranking(Objv);
Selch=select('sus',Chrom,FitnV);
Selch=recombin('xovsp', Selch,Pe0);
Selch=mut( Selch,pe1);
phen1=bs2rv(Selch,FieldD);
for a=1:1:NIND
X = phen1(a,:);
%计算对应的目标值
[epls]= func_obj(X);
E = epls;
JJ(a,1) = E;
end
Objvsel=(JJ);
[Chrom,Objv]=reins(Chrom,Selch,1,1,Objv,Objvsel);
gen=gen+1;
%保存参数收敛过程和误差收敛过程以及函数值拟合结论
Error(gen) = mean(JJ) ;
[V,I] = min(JJ);
VVV(gen) = phen1(I,:);
VVV2(gen) = mean2(phen1) ;
end
figure;
plot(Error,'linewidth',2);
grid on
xlabel('迭代次数');
ylabel('遗传算法优化过程');
legend('Average fitness');
[V,I] = min(JJ);
VV = phen1(I,:);
save GA_OPT.mat Error VV
0X_076m
---