资源简介

matlab程序,基于遗传算法的OFDM自适应资源分配算法,不是本人写的哈

资源截图

代码片段和文件信息

%基于遗传算法的OFDM自适应资源分配算法

%RA准则下的OFDM自适应资源分配问题,涉及载波和功率的分配,是一个既含有离散决策变量,又含有连续决策变量的非线性优%化模型,且含有较为复杂的非线性约束,因此适合采用智能优化算法进行求解。
function [BESTX1BESTX2BESTYALLX1ALLX2ALLY]=GA2(KNPmHBBBPN0)
%% 本源码实现遗传算法,用于RA准则下的多用户OFDM自适应资源分配
%% 输入参数列表
%  K         迭代次数
%  N         种群规模,要求是偶数
%  Pm        变异概率
%  H         信道增益矩阵,K*N的矩阵,表示用户k在子信道n上的信道增益,无单位,取值范围0~1
%  BBB       总带宽(Hz)
%  P         总功率(W)
%  N0        加性高斯白噪声功率谱密度(W/Hz)
% GreenSim团队原创作品,转载请注明
% Email:greensim@163.com
% GreenSim团队主页:http://blog.sina.com.cn/greensim
% [color=red]欢迎访问GreenSim——算法仿真团队→http://blog.sina.com.cn/greensim
%% 输出参数列表
%  BESTX1    K×1细胞结构,每一个元素是M×1向量,记录每一代的最优个体的第一分量
%  BESTX2    K×1细胞结构,每一个元素是M×1向量,记录每一代的最优个体的第二分量
%  BESTY     K×1矩阵,记录每一代的最优个体的评价函数值
%  ALLX1     K×1细胞结构,每一个元素是M×N矩阵,记录全部个体的第一分量
%  ALLX2     K×1细胞结构,每一个元素是M×N矩阵,记录全部个体的第二分量
%  ALLY      K×N矩阵,记录全部个体的评价函数值

%% 第一步
[KKNN]=size(H);
M=NN;%决策变量个数,子载波个数
farm1=zeros(MN);%每一列是一个样本
for i=1:N
    farm1(:i)=unidrnd(KKM1);
end
farm2=zeros(MN);%每一列是一个样本
for i=1:N
    farm2(:i)=RandSeq(M);
end
%输出变量初始化
ALLX1=cell(K1);
ALLX2=cell(K1);
ALLY=zeros(KN);
BESTX1=cell(K1);
BESTX2=cell(K1);
BESTY=zeros(K1);
k=1;%迭代计数器初始化

%% 第二步:迭代过程
while k<=K
%% 以下是交叉过程
    newfarm1=zeros(M2*N);
    Ser=randperm(N);%两两随机配对的配对表
    A=farm1(:Ser(1));
    B=farm1(:Ser(2));
    P0=unidrnd(M-1);
    a=[A(1:P0:);B((P0+1):end:)];%产生子代a
    b=[B(1:P0:);A((P0+1):end:)];%产生子代b
    newfarm1(:2*N-1)=a;%加入子代种群
    newfarm1(:2*N)=b;   
    for i=1:(N-1)
        A=farm1(:Ser(i));
        B=farm1(:Ser(i+1));
        P0=unidrnd(M-1);
        a=[A(1:P0:);B((P0+1):end:)];
        b=[B(1:P0:);A((P0+1):end:)];
        newfarm1(:2*i-1)=a;
        newfarm1(:2*i)=b;
    end   
    FARM1=[farm1newfarm1];
   

评论

共有 条评论