m基于GA遗传优化的多因素加权竞价博弈频谱分配算法matlab仿真

news2024/11/28 6:33:19

目录

1.算法描述

2.仿真效果预览

3.MATLAB核心程序

4.完整MATLAB


1.算法描述

       假设有M个用户均为MIMO Full Duplex,N个频率,1<N<M,设计算法实现M个用户与N个频率的匹配。

       由于在一个MIMO系统中,用户数量M大于可用的频谱个数N,因此,必有一部分用户存在频谱共享的问题。目前,现有的关于频谱分配的方法主要有基于竞价的分配方法,基于博弈论的分配方法,现有资料,主要都是这两种方法。下面针对这个问题,提出如下的改进方案:

       这个改进方案,命名为基于改进遗传优化算法的多因素加权竞价博弈频谱分配算法。

       这里,有别于传统的频谱分配方法,这里的分配方法,考虑了多种因素,我们分别假设为y1,y2,y3,。。。。。yn,并通过遗传优化算法,计算一种分配方案,即M个用户分配到N个频谱上, 分别计算以不同因素进行划分所得到的效益值V1,V2,V3,。。。。。Vn,,最后将这将这n个因素进行加权,得到其综合效益值:

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

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

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

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

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

       竞价和博弈相结合的联合分配方法;

        值最大的用户,有先分配频谱资源,值最小的,则根据实际频谱资源情况,进行共用某一相同的频谱资源。

2.仿真效果预览

matlab2022a仿真结果如下:

3.MATLAB核心程序

clc;
clear;
close all;
warning off;
addpath(genpath(pwd));
K=20;           %用户对数
N=2;           %收发天线数
INR_dB=5;INR=db2pow(5);
eta=INR/N;     %用户对间的干扰
SI=db2pow(20); %自干扰
u=1;           %weighted
k = db2pow(-40);
beta = db2pow(-40);
 
times=5;
SNR_dB= -10:10:50;
rho_real=db2pow(SNR_dB)/N;
sum_rate_HD=zeros(1,length(rho_real));
sum_rate_FD=zeros(1,length(rho_real));
sum_rate_HD_TDMA=zeros(1,length(rho_real));
sum_rate_FD_TDD=zeros(1,length(rho_real));
 
for tt=1:times
    tt
    %通信信道
    H_cha= rayleigh( N,N,2*K);
    %自干扰信道
    H_sel= rayleigh( N,N,2*K);
    %用户间干扰信道
    H_int= rayleigh( N,N,8*K);
    
    Rate_HD=zeros(1,length(rho_real));
    Rate_HD_TDMA=zeros(1,length(rho_real));
    Rate_FD=zeros(1,length(rho_real));
    Rate_FD_TDD=zeros(1,length(rho_real));
    
    i=1;
    for rho=rho_real
%               rho
        V=right_singular(H_cha,2*K);
        [ Rate_HD_get ] = HD_MIMO_interference(N,H_int,H_cha,H_sel,V,rho,eta,beta,k,u ,K);
        Rate_HD(i)=Rate_HD_get;
        [ Rate_FD_get ] = FD_MIMO_interference(N,H_int,H_cha,H_sel,V,rho,eta,SI,beta,k,u ,K);
        Rate_FD(i)=Rate_FD_get;
        i=i+1;
    end
   sum_rate_HD=sum_rate_HD+Rate_HD;
   sum_rate_FD=sum_rate_FD+Rate_FD;
end
 
sum_rate_HD=real(sum_rate_HD/times/2);
sum_rate_FD=real(sum_rate_FD/times);
figure;
semilogy(SNR_dB,sum_rate_FD,'b-^','linewidth',2);
hold on
semilogy(SNR_dB,sum_rate_HD,'b-s','linewidth',2);
grid on;
xlabel('SNR (dB)')
ylabel('sum Rate (b/s/HZ)')
legend('FD','HD')
01-140m

4.完整MATLAB

V

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/85605.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

web自动化测试入门篇04——selenium+python基础方法封装

&#x1f60f;作者简介&#xff1a;博主是一位测试管理者&#xff0c;同时也是一名对外企业兼职讲师。 &#x1f4e1;主页地址&#xff1a;【Austin_zhai】 &#x1f646;目的与景愿&#xff1a;旨在于能帮助更多的测试行业人员提升软硬技能&#xff0c;分享行业相关最新信息。…

记录一次解决centos不定时触发oom的经历

前言 前一段时间&#xff0c;业务部门的系统不定时的反馈&#xff0c;系统打开不了&#xff0c;提示&#xff1a; 等技术开发同学反应过来去查看业务状态时&#xff0c;服务又恢复了&#xff0c;由于不是核心的业务&#xff0c;并且出问题差不多1分钟左右&#xff0c;没太在意…

【Vue 快速入门系列】todoList案例小总结

文章目录一、案例效果二、项目介绍三、版本更新迭代末、项目素材1.css样式2.html一、案例效果 如下图所示&#xff0c;制作一个这样的记事本&#xff0c;可以使用这个记事本进行数据的存储以及管理&#xff0c;样式是天禹老师写好的我们直接使用就好了&#xff0c;主要在这个小…

[UE][UE5]零基础学习-学习记录1-UE5安装与基本使用方法

[UE5]学习1-UE5安装与基本使用方法写在前面01.作者碎碎念2.UE5安装方法01.UE5需要的电脑配置02.UE5安装方法001.Epic下载002.下载安装UE503.基本使用方法001.创建项目打开现有的项目&#xff1a;002.文件目录结构003.用户界面介绍1).3D画面视窗2).菜单栏3).内容浏览器4).属性面…

关于CM3/CM4位带操作的总结

1.位带操作定义 STM32的存储器映射中的内存区域和外设区域有一段地址空间&#xff08;都是最低1MB&#xff09;是位带区域&#xff0c;跟这个区域相对应的有一段位带别名区域&#xff0c;位带别名区的大小是位带区的32倍&#xff0c;位带别名区的每一个地址都对应位带区域的一个…

C. Hamiltonian Wall edu139 div2

Problem - C - Codeforces 题意是给你一个2*n的网格&#xff0c;让你一笔把所有的B涂满&#xff0c;并且只能涂一次&#xff0c;问你是否可行 分析&#xff1a; 其实分析的时候我想到了转移。每一次的结果是由上一次转移而来&#xff0c;所以如果前后矛盾的话&#xff0c;即…

人工智能:智能语音技术应用场景介绍

❤️作者主页&#xff1a;IT技术分享社区 ❤️作者简介&#xff1a;大家好,我是IT技术分享社区的博主&#xff0c;从事C#、Java开发九年&#xff0c;对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉&#xff1a; 数据库领域优质创作者&#x1f3c6;&#x…

虹科QA | SWCF2022 12月6日演讲笔记:C波段卫星与5G之间的干扰排查及解决方案

虹科2022年度SWCF卫星通信与仿真测试研讨会正在进行中。昨日精彩演讲&#xff1a;C波段卫星与5G之间的干扰排查及解决方案&#xff0c;感谢大家的观看与支持&#xff01; 昨晚的直播间收到一些粉丝的技术问题&#xff0c;虹小科汇总了热点问题并请讲师详细解答&#xff0c;在此…

目前UI设计薪资待遇怎么样?工作好找吗?

UI设计的火爆&#xff0c;导致有很多年轻人都愿意投身于这个行业。有很多年轻的朋友都在问&#xff0c;UI设计的薪资待遇怎么样&#xff1f;工作难找吗&#xff1f;本文统一解答一下。 1、UI设计的薪资水平 UI设计的薪资待遇一直很好&#xff0c;学习UI设计之前没有任何相关基础…

PMP每日一练 | 考试不迷路-12.13(包含敏捷+多选)

被延期考试的宝子 一定要坚持刷题 每日5道PMP习题助大家上岸PMP&#xff01; ​题目1-2&#xff1a; ​1.一位主要相关方要求将每日站立会议的持续时间人15分钟增加到1小时。Scrum主管应该做什么? ( ) A.接受建议并建议团队更改会议时间表 B.安排与产品负责人和团队开…

窗口销毁消息 WM_DESTROY 的正确处理方式

上次&#xff0c;我提到了可能导致正常的消息循环被破坏的怪异之处。 有一位读者 Adrian 指出&#xff0c;WM_GETMINMAXINFO 消息在顶级窗口 WM_NCCREATE 之前到达。这确实很不幸&#xff0c;但&#xff08;无论是否错误&#xff09;十多年来一直如此&#xff0c;现在修改它会…

【实时数仓】实现用户行为日志相关功能(源码)

文章目录一 准备用户行为日志-DWD层1 代码实现&#xff08;1&#xff09;识别新老访客&#xff08;2&#xff09;利用侧输出流实现数据拆分&#xff08;3&#xff09;将不同流的数据推送到下游kafka的不同Topic&#xff08;分流&#xff09;a 封装方法b 程序中调用kafka工具类获…

数据链路层

文章目录数据链路层的功能ARP协议DNS-------域名解析&#xff08;浅浅的了解一下&#xff09;在浏览器中输入URL后&#xff0c;发生的事情&#xff08;经典面试题&#xff09;ICMP协议NAT技术代理服务器网络核心知识大总结数据链路层的功能 对比理解网络层。 网络层 &#xff…

飞控学习随记

常见指令 编译Arduplane程序 cd ardupilot/ ./waf plane 进入 Tools/autotest 文件夹中&#xff0c;启动3D flightgear ./fg_quad_view.sh 进入ArduPLane文件夹中&#xff0c;启动仿真 sim_vehicle.py --map --console -L KSFO&#xff08;-L 选择起飞位置&#xff09; 解锁…

字节女测试工程师万字总结的软件测试入门技巧

成为一个优秀的测试工程师需要具备哪些知识和经验&#xff1f; 针对这个问题&#xff0c;可以直接拆分以下三个小问题来详细说明&#xff1a; 1、优秀软件测试工程师的标准是什么&#xff1f; 2、一个合格的测试工程师需要具备哪些专业知识&#xff1f; 3、一个合格的测试工程…

前端vue项目部署到生产环境(包括nginx安装及配置)

一.vue3项目打包 vue3项目 使用vue-cli创建的&#xff0c;使用npm run build打包到dist 二.在服务器上安装nginx 1.去nginx的官网下载windows版本的nginx&#xff0c;下载地址&#xff1a;nginx: download 最好安装稳定版&#xff0c;下载完成后解压nginx压缩包&#xff1a…

Android Studio实现数独小游戏,休闲益智

文章目录一、项目概述二、开发环境三、详细设计3.1 界面设计3.2 逻辑设计四、运行演示一、项目概述 数独是一种逻辑解谜游戏&#xff0c;它规则稍复杂&#xff0c;解题过程富有挑战性。本次安卓数独小游戏&#xff0c;主页面有继续游戏、新游戏、关于和退出四个功能&#xff0…

【实训项目】教师工作量管理系统(超级详细)

目录 一、需求与分析 1. 项目概述 1.1 教师信息处理 1.2 教师工作量数据处理&#xff1a; 1.3 教师综合信息输出 2. 需求分析 3. 模块设计 3.1 功能模块 3.2 所有功能模块的流程图 二、设计与实现 1. 程序设计 1.1 教师工作量管理系统 1.2 登录系统 1.3 主函数…

初级算法之字符串

344. 反转字符串 编写一个函数&#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 思路一: 从中间开始向两边遍历,然后两边交换位置,最终获得字符串的反转 // class Solution {public void reverseString(char[] s) {int len s.length,siz…

二、JavaScript——Hello World

1. 创建文件 提前在本地新建好文件夹用于存储项目代码&#xff0c;再通过VSode打开指定存储代码的指定文件夹&#xff0c;并新建HelloWorld.html文件 HelloWorld.html文件新建成功之后&#xff0c;输入“&#xff01;”点击自动生成标签 自动生成的标签如下&#xff1a; <!…