m基于GA遗传优化算法的认知中继网络最优中继功率分配和最佳中继节点选择算法matlab仿真

1.算法概述



如图1表示一个潜伏式认知中继网络,在这个场景中有一对主用户和一对次级用户,主用户由一个发射器和一个接收器组成,次级用户由一个发射器、一个接收器和n个中继节点组成。次级用户的认知节点之间没有直接链路,中继节点采用放大转发工作模式。假设场景中涉及到的信道都是相互独立的块衰落信道,也就是说即时功率增益在每个传输块之间是保持不变的,但是当一个传输块变化到另一个传输块时是可能发生改变的。


在现有捕获信道状态信息的技术支持下,假设次级用户能够获取完美的信道状态信息,即次级用户发射端和中继节点能通过不同的方法获取信道即时功率增益,从而使次级用户发射端和中继节点能够实现发射功率的最优分配以获得次级用户的最大吞吐量。


主用户在通信过程中可以采取不同的发射方案。为了计算的方便,本文假设主用户采用恒定功率的分配方案。为了从总体上保护主用户的通信质量,在主用户接收端考虑一个长时间平均的SINR约束条件。这个约束条件在本文中称为平均SINR约束条件,表述如下:


为了保护主用户的实时传输,使其不会因为最大化次级用户的吞吐量而被中断,确保主用户的传输质量,进而保证主用户的业务质量,本文也对主用户接收端的每个传输状态的SINR强加一个约束。这个约束称为谷值SINR约束,表述如下:  


本文的优化标是在平均SINR约束、谷值SINR约束以及平均发射功率约束下,充分的利用共享的频谱资源,获取尽可能大的次级用户吞吐量。


2.仿真效果预览

matlab2022a仿真结果如下:


3.核心MATLAB代码预览

%次用户发射端到中继节点功率增益

f3   = 2;

%中继节点到次用户接收端功率增益

f4   = 3;

%中继节点到主用户接收端之间的信道即时功率增益

f5   = 3;

%预先确定的主用户能够接受的最小的平均SINR阈值

A1 = 3.6;

A2 = 2.5;

%次级用户发射端和中继节点的平均发射功率预算

Q1 = 3.48;

Q2 = 3.3;

%**************************************************************************

%%

%先确定lemda1,lemda2,lemda3,lemda4

Num     = 2000;

beta1   = zeros(1,Num);

beta2   = zeros(1,Num);

beta3   = zeros(1,Num);

beta4   = zeros(1,Num);

lemdas1 = zeros(1,Num);

lemdas2 = zeros(1,Num);

lemdas3 = zeros(1,Num);

lemdas4 = zeros(1,Num);

lemda1  = 0;

lemda2  = 0;

lemda3  = 0;

lemda4  = 0;


for k = 1:Num-1

%步长的动态调整

alpha        = 0.15;

beta1(k)     = alpha*((Num-k+1)/Num)^k;

beta2(k)     = alpha*((Num-k+1)/Num)^k;

beta3(k)     = alpha*((Num-k+1)/Num)^k;

beta4(k)     = alpha*((Num-k+1)/Num)^k;

lemdas1(k+1) = lemdas1(k) - beta1(k)*(mean((P1*f1)./(P2*f2 + N0))-A1);

lemdas2(k+1) = lemdas2(k) - beta2(k)*(mean((P1*f1)./(P3*f5 + N0))-A2);

lemdas3(k+1) = lemdas3(k) - beta3(k)*(Q1 - mean(P2));

lemdas4(k+1) = lemdas4(k) - beta4(k)*(Q2 - mean(P3));

end

%通过迭代,获得四个lemda

lemda1  = lemdas1(end);

lemda2  = lemdas2(end);

lemda3  = lemdas3(end);

lemda4  = lemdas4(end);


figure(1);

plot(lemdas1,'b','linewidth',2);

hold on

plot(lemdas2,'r','linewidth',2);

hold on

plot(lemdas3,'k','linewidth',2);

hold on

plot(lemdas4,'g','linewidth',2);

grid on

legend('lemda1','lemda2','lemda3','lemda4');

xlabel('迭代次数');

ylabel('lemda');

axis([0,Num,-2,2]);


%%

%通过优化,计算得到最后最佳的功率分配情况

%先通过遗传优化获得最佳的P2和P3

%**********************首先通过我使用的优化过程计算**************************

%根据中继节点数目,产生每个次用户-中继的信道参数

SNR0 = 15;

SNR  = [8,12,15,20,4,11];

%测试发送数据

Signal = 1e6*rand(1,2);

x      = 2*Signal-1;


for jAFN = 1:AFN

jAFN

zsnl   = sqrt(1/(10^((SNR(jAFN))/10)));

zsnl0  = sqrt(1/(10^((SNR0)/10)));

%如下为需要拟合的参数

P2o    = 3;

P3o    = 3;

%根据遗传算法进行参数的拟合

MAXGEN = 200;

NIND   = 600;

Chrom  = crtbp(NIND,2*10);

%14个变量的区间

Areas  = [0  ,0;

20 ,20];


FieldD = [rep([10],[1,2]);Areas;rep([0;0;0;0],[1,2])];

P2x_NIND    = zeros(NIND,1);

P3x_NIND    = zeros(NIND,1);

P2x         = zeros(MAXGEN,1);

P3x         = zeros(MAXGEN,1);

T           = zeros(MAXGEN,1);

gen         = 0;


for a=1:1:NIND

P2x_NIND(a) = P2o;      

P3x_NIND(a) = P3o;

%计算对应的目标值

%计算不同中继点对应的信噪比

Ysr     = sqrt(P2x_NIND(a)*f3)*x + zsnl*randn;

Ysd     = sqrt(P3x_NIND(a))/sqrt(P2x_NIND(a)*f3 + N0)*sqrt(f4) * Ysr + zsnl0*randn;

Rr      = sum(Ysd.^2)/sum(x.^2);


L       = func_obj(Rr,mean(P1),P2x_NIND(a),P3x_NIND(a),f1,f2,f3,f4,f5,N0,lemda1,lemda2,lemda3,lemda4);

E       = 1/L;

J(a,1)  = E;

end

Objv  = (J+eps);

gen   = 0;

while gen < MAXGEN;   

FitnV=ranking(Objv);    

Selch=select('sus',Chrom,FitnV);    

Selch=recombin('xovsp', Selch,0.9);   

Selch=mut( Selch,0.01);   

phen1=bs2rv(Selch,FieldD);   

for a=1:1:NIND  

if  gen == 1

P2x_NIND(a) = P2o;      

P3x_NIND(a) = P3o;

else

P2x_NIND(a) = phen1(a,1);      

P3x_NIND(a) = phen1(a,2);

end

%计算不同中继点对应的信噪比

Ysr     = sqrt(P2x_NIND(a)*f3)*x + zsnl*randn;

Ysd     = sqrt(P3x_NIND(a))/sqrt(P2x_NIND(a)*f3 + N0)*sqrt(f4) * Ysr + zsnl0*randn;

Rr      = sum(Ysd.^2)/sum(x.^2);

%计算对应的目标值                   

L       = func_obj(Rr,mean(P1),P2x_NIND(a),P3x_NIND(a),f1,f2,f3,f4,f5,N0,lemda1,lemda2,lemda3,lemda4);                       

E       = 1/L;

JJ(a,1) = E;

end

Objvsel=(JJ+eps);    

[Chrom,Objv]=reins(Chrom,Selch,1,1,Objv,Objvsel);   

gen=gen+1;

%保存参数收敛过程和误差收敛过程以及函数值拟合结论

P2x(gen)   = mean(P2x_NIND);

P3x(gen)   = mean(P3x_NIND);

Ysr     = sqrt(P2x(gen)*f3)*x + zsnl*randn;

Ysd     = sqrt(P3x(gen))/sqrt(P2x(gen)*f3 + N0)*sqrt(f4) * Ysr + zsnl0*randn;

Rr      = sum(Ysd.^2)/sum(x.^2);

%计算对应的吞吐量

T(gen)     = log2(1+Rr);

end

%计算对应的目标值    

Ysr           = sqrt(P2x(end)*f3)*x + zsnl*randn;

Ysd           = sqrt(P3x(end))/sqrt(P2x(end)*f3 + N0)*sqrt(f4) * Ysr + zsnl0*randn;

Rr            = sum(Ysd.^2)/sum(x.^2);

Tp2p3(jAFN)   = log2(1+Rr);

P2_best(jAFN) = P2x(end);      

P3_best(jAFN) = P3x(end);

end


%获得最佳中继点

[V,I] = max(Tp2p3);


disp('最优中继点:');

I


disp('最优功率分配结果:');

P2_best(I)

P3_best(I)


disp('吞吐量:');

Tp2p3(I)

01_088_m

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容