首页 > 编程语言 >基于GA优化的竞价博弈频谱分配算法的matlab仿真

基于GA优化的竞价博弈频谱分配算法的matlab仿真

时间:2022-10-26 21:58:00浏览次数:94  
标签:频谱 用户 matlab GA N1 N2 N3 N4 gen

目录

一、理论基础

二、核心程序

三、仿真测试结果

作者ID :fpga和matlab
CSDN主页:https://blog.csdn.net/ccsss22?type=blog
擅长技术:
1.无线基带,无线图传,编解码
2.机器视觉,图像处理,三维重建
3.人工智能,深度学习
4.智能控制,智能优化
5.其他

一、理论基础

由于在一个MIMO系统中,用户数量M大于可用的频谱个数N,因此,必有一部分用户存在频谱共享的问题。目前,现有的关于频谱分配的方法主要有基于竞价的分配方法,基于博弈论的分配方法。这里,有别于传统的频谱分配方法,这里的分配方法,考虑了多种因素,我们分别假设为y1,y2,y3,。。。。。yn,并通过遗传优化算法,计算一种分配方案,即M个用户分配到N个频谱上, 分别计算以不同因素进行划分所得到的效益值V1,V2,V3,。。。。。Vn,,最后将这将这n个因素进行加权,得到其综合效益值:

 

 

 

这里,主要通过遗传算法来优化,获得不同的频谱资源,分别分配多个不同的用户。这里,权值由预先设置得到。

因素1:不同用户的当前的信道优劣情况,如果当前某部分用户信道情况较差,为了进一步提升其通信质量,则优先将这部分用户分配单独的频率资源,而对于信道情况较好的一部分用户,可以允许多个用户共用某一频率。这样可以保证更可能多的用户能够正常通信。

因素2:用户的需求情况进行分配,如果当前用户的通信属于实时性需求较强的情况,则优先分配频谱资源(这里涉及到具体的业务模型,比如视频,电话等各种业务)而对于实时性要求较低的情况(如短信,文字信息等各种业务),则可以分配同一频率,做类似同频不同时的通信。

因素3:如果某些用户分配了相同的频率,则考虑同一频率下不同用户的排队时长,时长越短,则说明当前分配策略较优。比如同一频率,单个用户发送100bit信息,和100个用户发送100bit信息,用时肯定短。再比如,有2个频率资源,5个用户,在发送业务类似的情况下,那么一个频率分配2个用户,一个频率分配3个用户的排队时间,肯定优于1个资源分配一个用户,其余一个频率分配四个用户。

根据遗传优化算法流程可知,其详细步骤如下所示:

步骤一:选择问题解的一个编码,给出一个有N个染色体的初始群体。编码的主要功能为确定用何种码制,然后将问题参数编码形成基因码链,每一个码链代表一个个体,表示优化问题的一个解。 根据编码方式不同可以分为二进制编码和实数编码两种类型,其中二进制编码的优势在于编码方式简单,便于遗传算法的交叉和编码操作。

步骤二:对群体中的每一个染色体,计算它的适应函数值。适应函数值为群体进化时的选择提供了依据,一般来说适应度越高,解的素质越好。适应度函数可以根据目标函数而定。

步骤三:若停止规则满足,则算法停止,否则计算概率P,并以此概率分布,从旧的种群pop(t)中随机选取N个染色体构成一个新的种群。选择操作常见的操作方式有比例 选择和排序选择方式。

步骤四:通过交叉,得到N个染色体的交叉集合。交叉的主要功能从种群中随机选择两个染色体,按一定的概率进行基因交换,交换位置的选取是随机的。

步骤五:以较小的变异概率,使得某染色体的一个基因发生变异,形成新的群体mutpop(t+1)。令t=t+1,pop(t)=mutpop(t),重复第2步。

二、核心程序

rng(1)
%初始值
N1 = 10;
N2 = 10;
N3 = 10;
N4 = 10;
NUM = N1+N2+N3+N4;%40个用户
M = 4;%4个频率资源
%下面开始使用遗传优化算法
%根据遗传算法进行参数的拟合
MAXGEN = 201;
NIND = 50;
Nums = 3;
%每个值优化
Chrom = crtbp(NIND,Nums*10);
Areas = [1 ,1 ,1;
NUM,NUM,NUM];
FieldD = [rep([10],[1,Nums]);Areas;rep([0;0;0;0],[1,Nums])];
gen = 0;
for a=1:1:NIND
%计算对应的目标值
[Moneys,N1,N2,N3,N4] = func_obj(N1,N2,N3,N4);
Js(a,1) = Moneys;
end
Objv = (Js+eps);
gen = 0;
fit2 = [];
Price2 = [];
%%
while gen < MAXGEN;
gen
%定义交叉概率和变异概率
if gen == 0
Pe0 = 0.95;
pe1 = 0.002;
else
Pe0 = 0.95*1/(1+exp(-1e4*f));
pe1 = 0.002*1/(1+exp(-1e4*f));
end
FitnV=ranking(Objv);
%遗传选择
Selch=select('sus',Chrom,FitnV);
%遗传交叉
Selch=recombin('xovmp', Selch,Pe0);
%遗传变异
Selch=mut( Selch,pe1);
phen1=bs2rv(Selch,FieldD);
Moneys3 = [];
for a=1:1:NIND
N1(a) = floor(phen1(a,1))+1;
N2(a) = floor(phen1(a,2))+1;
N3(a) = floor(phen1(a,3))+1;
N4(a) = NUM - (N1(a) + N2(a) + N3(a));
%计算对应的目标值
if N4(a) >= 1 & N4(a) <= NUM
[Moneys,N1(a),N2(a),N3(a),N4(a)] = func_obj(N1(a),N2(a),N3(a),N4(a));
else
Moneys = 10000;
end
JJ(a,1) = Moneys;
end
Objvsel = JJ ;
[Chrom,Objv]= reins(Chrom,Selch,1,1,Objv,Objvsel);
gen = gen+1;
[VV,II] = min(Objv);
indx = find(JJ==10000);
JJ(indx) = [];
fmax = max(JJ);
fave = mean(JJ);
f = fmax-fave;
N1_ = N1(II);
N2_ = N2(II);
N3_ = N3(II);
N4_ = NUM - (N1_ + N2_ + N3_);
fit(gen) = 1/std([N1_,N2_,N3_,N4_]);
if gen <= 64
fit2(gen) = mean(fit(1:gen));
else
fit2(gen) = mean(fit(gen-64:gen));
end
end
clc;
%输出分配结果
N1_best = N1(II)
N2_best = N2(II)
N3_best = N3(II)
N4_best = NUM - (N1_best + N2_best + N3_best)
ITER = [1:MAXGEN];

三、仿真测试结果

 

 

 

 A01-140

标签:频谱,用户,matlab,GA,N1,N2,N3,N4,gen
From: https://www.cnblogs.com/matlabfpga/p/16830200.html

相关文章

  • 使用matlab根据液体扩散图片分析其对应的等浓度线
    目录一、理论基础二、核心程序三、仿真测试结果作者ID:fpga和matlabCSDN主页:https://blog.csdn.net/ccsss22?type=blog擅长技术:1.无线基带,无线图传,编解码2.机器视觉......
  • 基于形态学处理的交通标志检测分割算法matlab仿真
    目录一、理论基础二、核心程序三、仿真测试结果作者ID:fpga和matlabCSDN主页:https://blog.csdn.net/ccsss22?type=blog擅长技术:1.无线基带,无线图传,编解码2.机器视觉......
  • Anaconda Navigator启动闪退
    问题描述win10新装的AnacondaNavigator启动闪退,且JupyterNotebook启动dos也会有大量警告。解决方法通过软件升级,依次输入如下命令:condaupdatecondacondaupdateanacond......
  • Python调用matlab函数
    参考文章:安装用于Python的MATLAB引擎API环境:MATLABR2022a、Anaconda、python3.9检验配置检查Python版本是否与Matlab版本相匹配安装API打开matlab在命令行中输入......
  • D - Div Game -- ATCODER
    D-DivGamehttps://atcoder.jp/contests/abc169/tasks/abc169_d参考:https://blog.csdn.net/justidle/article/details/106474626 思路计算n中所有质数的幂,No......
  • MATLAB循环注意事项
    循环中的变量要记得每次循环清为空值%---日数据---%day_nbq=[];%外部有大循环所以每次要把变量清空day_n=Cell_n_total_1(:,7);forc......
  • matlab生成随机数的rand、randi和randn三种形式
    matlab中关于随机数的产生有3种库函数,下面我们来看看它们的形式:1、rand(…)它是生成0~1之间(开环,不包含0和1两个数)均匀分布的伪随机数,也就是无穷次试验其中每个数产生的概......
  • Matlab绘图高级部分
    图形是呈现数据的一种直观方式,在用Matlab进行数据处理和计算后,我们一般都会以图形的形式将结果呈现出来。尤其在论文的撰写中,优雅的图形无疑会为文章加分。本篇文章非完全......
  • Istio gateway
    Gateway配置要点Gateway定义运行在网格边缘的负载均衡器,负责接收入站或出站的HTTP/TCP连接主要定义应该暴露到网格外部的端口、要使用的协议类型、以及SNI配置等......
  • 【HDLBits刷题日记】06 Basic Gates
    Exams/m2014q4hmoduletop_module(inputin,outputout);assignout=in;endmoduleExams/m2014q4imoduletop_module(outputout);assignout=......