[Communication] Design of Adaptive SCMA Resource Scheduling Algorithm Based on Matlab Simulation

?Author’s brief introduction: A Matlab simulation developer who loves scientific research. He cultivates his mind and technology at the same time. Matlab project cooperation can be privately messaged.

Personal homepage: Matlab Research Studio

Personal creed: Investigate knowledge.

For more Matlab simulation content click

Intelligent optimization algorithm Neural network prediction Radar communication Wireless sensor Power system

Signal Processing Image Processing Path Planning Cellular Automata UAV

? Content introduction In order to meet the ultra-high speed, high throughput, ultra-high reliability, ultra-low delay and other indicators in the future network, the emerging communication network will be more and more heterogeneous, ultra-dense, and diversified. As a result, the internal interference of the network system will also become multi-level and complicated. Issues such as strong internal interference and resource collision will greatly limit the system capacity and service quality. Therefore, reasonable solutions are urgently needed for these emerging communication networks. Resource scheduling strategy, an effective and complete resource scheduling strategy. It can reduce the execution time and cost of tasks, improve service quality, increase the throughput of the entire network system, and improve overall resource utilization.

? part of the code end

for i=1:num_ue<br><br>    [angle_min(i), sector]=min(angle(:,i));<br><br>end<br><br>distance.sector_antenna_gain=antenna.gain(angle_min);<br><br><br><br>%% Calculate path loss<br><br>UE.distance=sqrt((LTEconfig.UE.Position_X-LTEconfig.BS.Position_X).^2 + (LTEconfig.UE.Position_Y-LTEconfig.BS.Position_Y).^2);<br><br>UE.pathloss= LTE_pathloss_enb_to_ue(UE.distance);%num_ue*1<br><br><br><br>%% Calculate signal and noise<br><br>LTEconfig.UE.receiver_noise_figure = 9; % Receiver noise figure in dB<br><br>thermal_noise_W=10^(LTEconfig.UE.thermal_noise_density/10) / 1000 * LTEconfig.System.Bandwidth* 10^(LTEconfig.UE.receiver_noise_figure/10);% thermal noise in the system<br><br>UE.signal=10.^((distance.sector_antenna_gain'-UE.pathloss)/10);<br><br>UE.noise=thermal_noise_W + LTEconfig.ue_interference_enbs;<br><br>UE.signal_db=10*log10(UE.signal);<br><br>UE.noise_db=10*log10(UE.noise);<br><br><br><br>%% Generate a time-varying small-scale fading channel<br><br>SimType=8; % set the simulation type<br><br>ltepar=lteparset(SimType,num_ue); % configure simulation parameters<br><br>ltepar.nUE=num_ue; %number of users<br><br>ltepar.Ntot=4; %The number of occupied subcarriers<br><br>ltepar.Bandwidth=625e3; % system bandwidth<br><br>ltepar.Nfft=512; ?T points<br><br>ltepar.Fs=7.68e6; % sampling frequency<br><br>h=cell(1,ltepar.nUE,num_subframe);<br><br>sc_signal=cell(1,ltepar.nUE);%% cell array<br><br>sc_noise=cell(1,ltepar.nUE);%% element cell array<br><br>sc_snr_TTI_dB=zeros(ltepar.Ntot,ltepar.nUE,num_subframe);<br><br>subframe_i=1;<br><br>while subframe_i<=num_subframe<br><br>    chan=cell(1,ltepar.nUE);<br><br>    for k=1:ltepar.nUE<br><br>        [chan{k}, h{1,k,subframe_i}]=channelmodel(ltepar.ChanModPar.PDP_dB,ltepar.Fs,ltepar.CarrierFrequency,...<br><br>            ltepar.UEpar.speed,ltepar.ChanModPar.FadeType,ltepar.ChanModPar.CorrType,ltepar.ChanModPar.M,ltepar.psi(:,:,:,:,k),ltepar.theta(:,:,:,: ,k),...<br><br>            ltepar.phi(:,:,:,:,k), subframe_i*1e-3, ltepar.UEpar.nTX, ltepar.BSpar.nRX, ltepar.ChanModPar.TxCorrMatrix, ltepar.ChanModPar.RxCorrMatrix);<br><br>        sc_signal{1,k}=calculate_SC_REC(h{1,k,subframe_i},UE.signal_db(k));<br><br>        sc_noise{1,k}=calculate_SC_REC(h{1,k,subframe_i},UE.noise_db(k));<br><br>        sc_signal_TTI(:,k,subframe_i)=sc_signal{1,k};<br><br>        sc_noise_TTI(:,k,subframe_i)=sc_noise{1,k};<br><br>    end<br><br>    subframe_i=subframe_i + 1;<br><br>end<br><br><br><br>%% Initialize some parameters<br><br>flag=0;<br><br>for ss=1:1:300<br><br>    p_max(ss)=0.05*ss + 0;% power allocated within the group<br><br>    EE=3000*ones(1,5);% energy efficiency initialization<br><br>    m1=0.003;% iteration step size<br><br>    m2=0.05;% iteration step size<br><br>    p=zeros(1,J);% user power in the group<br><br>    r=zeros(1,J);% user capacity in the group<br><br>    num_iter=3500;%%Number of iterations

% num_iter=7500;%% number of iterations

p_ue=zeros(num_iter,J);<br><br>    p_signal=zeros(1,J);% signal power<br><br>    p_noise=zeros(1,J);% noise power<br><br>    <br><br>    %% Calculation of power allocation factor between carriers for a single user<br><br>    for jj=1:1:J<br><br>        a11=sum(sc_signal_TTI(2,jj,:))*sum(sc_noise_TTI(1,jj,:))/(sum(sc_signal_TTI(1,jj,:))*sum(sc_noise_TTI(2,jj,:)) + sum(sc_signal_TTI(2,jj,:))*sum(sc_noise_TTI(1,jj,:)));<br><br>        a12=sum(sc_signal_TTI(1,jj,:))*sum(sc_noise_TTI(2,jj,:))/(sum(sc_signal_TTI(1,jj,:))*sum(sc_noise_TTI(2,jj,:)) + sum(sc_signal_TTI(2,jj,:))*sum(sc_noise_TTI(1,jj,:)));<br><br>        a21=sum(sc_signal_TTI(3,jj,:))*sum(sc_noise_TTI(1,jj,:))/(sum(sc_signal_TTI(1,jj,:))*sum(sc_noise_TTI(3,jj,:)) + sum(sc_signal_TTI(3,jj,:))*sum(sc_noise_TTI(1,jj,:)));<br><br>        a22=sum(sc_signal_TTI(1,jj,:))*sum(sc_noise_TTI(3,jj,:))/(sum(sc_signal_TTI(1,jj,:))*sum(sc_noise_TTI(3,jj,:)) + sum(sc_signal_TTI(3,jj,:))*sum(sc_noise_TTI(1,jj,:)));<br><br>        a31=sum(sc_signal_TTI(4,jj,:))*sum(sc_noise_TTI(1,jj,:))/(sum(sc_signal_TTI(1,jj,:))*sum(sc_noise_TTI(4,jj,:)) + sum(sc_signal_TTI(4,jj,:))*sum(sc_noise_TTI(1,jj,:)));<br><br>        a32=sum(sc_signal_TTI(1,jj,:))*sum(sc_noise_TTI(4,jj,:))/(sum(sc_signal_TTI(1,jj,:))*sum(sc_noise_TTI(4,jj,:)) + sum(sc_signal_TTI(4,jj,:))*sum(sc_noise_TTI(1,jj,:)));<br><br>        a41=sum(sc_signal_TTI(3,jj,:))*sum(sc_noise_TTI(2,jj,:))/(sum(sc_signal_TTI(2,jj,:))*sum(sc_noise_TTI(3,jj,:)) + sum(sc_signal_TTI(3,jj,:))*sum(sc_noise_TTI(2,jj,:)));<br><br>        a42=sum(sc_signal_TTI(2,jj,:))*sum(sc_noise_TTI(3,jj,:))/(sum(sc_signal_TTI(2,jj,:))*sum(sc_noise_TTI(3,jj,:)) + sum(sc_signal_TTI(3,jj,:))*sum(sc_noise_TTI(2,jj,:)));<br><br>        a51=sum(sc_signal_TTI(4,jj,:))*sum(sc_noise_TTI(2,jj,:))/(sum(sc_signal_TTI(2,jj,:))*sum(sc_noise_TTI(4,jj,:)) + sum(sc_signal_TTI(4,jj,:))*sum(sc_noise_TTI(2,jj,:)));<br><br>        a52=sum(sc_signal_TTI(2,jj,:))*sum(sc_noise_TTI(4,jj,:))/(sum(sc_signal_TTI(2,jj,:))*sum(sc_noise_TTI(4,jj,:)) + sum(sc_signal_TTI(4,jj,:))*sum(sc_noise_TTI(2,jj,:)));<br><br>        a61=sum(sc_signal_TTI(4,jj,:))*sum(sc_noise_TTI(3,jj,:))/(sum(sc_signal_TTI(3,jj,:))*sum(sc_noise_TTI(4,jj,:)) + sum(sc_signal_TTI(4,jj,:))*sum(sc_noise_TTI(3,jj,:)));<br><br>        a62=sum(sc_signal_TTI(3,jj,:))*sum(sc_noise_TTI(4,jj,:))/(sum(sc_signal_TTI(3,jj,:))*sum(sc_noise_TTI(4,jj,:)) + sum(sc_signal_TTI(4,jj,:))*sum(sc_noise_TTI(3,jj,:)));<br><br>        <br><br>        %% 4 carriers and 6 users are mapped according to the pre-defined criteria<br><br>        switch jj<br><br>            case 1<br><br>                p_signal(jj)=a11*sum(sc_signal_TTI(1,jj,:)) + a12*sum(sc_signal_TTI(2,jj,:));%%carrier 1 and 2 This is the gain, sc_signal_TTI refers to the carrier transmission The gain in , does not need the true value 2 because of the capacity<br><br>                p_noise(jj)=sum(sc_noise_TTI(1,jj,:)) + sum(sc_noise_TTI(2,jj,:));%% carrier 1 and 2<br><br>            case 2<br><br>                p_signal(jj)=a21*sum(sc_signal_TTI(1,jj,:)) + a22*sum(sc_signal_TTI(3,jj,:));%% carrier 1 and 3<br><br>                p_noise(jj)=sum(sc_noise_TTI(1,jj,:)) + sum(sc_noise_TTI(3,jj,:));%% carrier 1 and 3<br><br>            case 3<br><br>                p_signal(jj)=a31*sum(sc_signal_TTI(1,jj,:)) + a32*sum(sc_signal_TTI(4,jj,:));%%carrier 1 and 4<br><br>                p_noise(jj)=sum(sc_noise_TTI(1,jj,:)) + sum(sc_noise_TTI(4,jj,:));%% carrier 1 and 4<br><br>            case 4<br><br>                p_signal(jj)=a41*sum(sc_signal_TTI(2,jj,:)) + a42*sum(sc_signal_TTI(3,jj,:));%% carrier 2 and 3<br><br>                p_noise(jj)=sum(sc_noise_TTI(2,jj,:)) + sum(sc_noise_TTI(3,jj,:));%% carrier 2 and 3<br><br>            case 5<br><br>                p_signal(jj)=a51*sum(sc_signal_TTI(2,jj,:)) + a52*sum(sc_signal_TTI(4,jj,:));%% carrier 2 and 4<br><br>                p_noise(jj)=sum(sc_noise_TTI(2,jj,:)) + sum(sc_noise_TTI(4,jj,:));%% carrier 2 and 4<br><br>            otherwise<br><br>                p_signal(j

? operation result

? References [1] Chen Ming. Design and Implementation of Machine Learning-Based Adaptive Resource Scheduling Algorithms in Future Communication Networks [D]. Beijing University of Posts and Telecommunications, 2018.

[2] Ye Qing. Research on non-orthogonal multiple access wireless resource allocation [D]. Chongqing University of Posts and Telecommunications, 2018.

[3] Zheng Zhong, He Feng, Li Haoruo, et al. TTE Communication Scheduling Algorithm Based on Greedy Random Adaptive Search Method [J]. Journal of Beihang University, 2021.

[4] Yang Jiechen. Resource Scheduling Algorithm Simulation and Software Radio Platform Implementation of LTE System [D]. Southwest Jiaotong University, 2014.

[5] Liao Xiao, Li Kuanrong, Bai Jingpo, et al. Algorithm Design and System Development for Full Coverage of 5G UAV Heterogeneous Network Emergency Communication[J]. Microcomputer Application, 2023, 39(1):3.

Complete code Part of the theory cites online literature, if there is any infringement, contact the blogger to delete it Follow me to receive a large number of matlab e-books and mathematical modeling materials