无人机边缘计算中的计算卸载——Stackelberg博弈方法论文复现附matlab代码

news2024/11/25 6:54:54

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法  神经网络预测 雷达通信  无线传感器

信号处理 图像处理 路径规划 元胞自动机 无人机  电力系统

⛄ 内容介绍

基于物联网的服务受益于云,云提供了几乎无限的功能,如存储、处理和通信。然而,移动用户在满足服务质量(QoS)规定的情况下从云接收计算仍然面临挑战。在本文中,我们研究了使用边缘计算的计算卸载,这是一种将计算传递到移动用户附近的普及网络边缘的新范式。然而,如果没有强有力的激励措施,本地边缘服务器可能不愿意帮助卸载计算。为了激励云服务运营商和本地边缘服务器所有者参与计算卸载,我们将云服务运营方和边缘服务器所有者之间的交互表述为Stackelberg游戏,以通过获得最佳支付和计算卸载策略,最大化云服务运营和边缘服务器拥有者的效用。通过理论分析,我们证明了博弈保证达到唯一的纳什均衡。然后,我们设计了两种计算卸载算法,可以在低延迟和降低复杂性方面量化它们的效率。此外,我们通过考虑边缘服务器所有者动态加入或离开计算卸载来扩展我们的工作。数值结果表明,我们提出的算法在计算卸载方面表现良好,并有效地激励边缘服务器所有者为计算卸载做出贡献。

⛄ 部分代码

function [bs_income,uav_income,user_outcome] = stackelberg_price_determined(bs,uav,user,epoch)

global user_num uav_num bs_num D ...

       relay_ok selected_uav_relay ...%need_bs need_uav

       offload_bs offload_uav offload_relay selected_uav selected_bs

% global M_i M_j F_i m_i f_i

M_i = ones(bs_num,user_num);    % price to the user i @bs

M_j = ones(bs_num,uav_num);     % price to hire the uav j @bs

F_i = zeros(bs_num,user_num);   % the resource allocate to the user i @bs

m_i = ones(uav_num,user_num);   % price to the user i @uav

f_i = zeros(uav_num,user_num);  % reource allocate to the user i @uav

[bs_income,uav_income,user_outcome] = deal(zeros(epoch,bs_num),zeros(epoch,uav_num),zeros(epoch,user_num));

[local,offload_bs,offload_uav,offload_relay]=deal(0.25*ones(user_num,1),0.25*ones(user_num,1),0.25*ones(user_num,1),0.25*ones(user_num,1)); % 卸载比例初始化

[at_local,to_bs,to_uav,by_relay] = deal(zeros(user_num,1),zeros(user_num,1),zeros(user_num,1),zeros(user_num,1));

relay_ok = zeros(bs_num,uav_num); % whether the uav choose to be relay for base station g 

[selected_uav,selected_bs,selected_uav_relay] = deal(zeros(user_num,1),zeros(user_num,1),zeros(user_num,1));

[dis_user_uav,dis_uav_bs,dis_user_bs] = get_distance(uav,user,bs);

[Rate_i_g,Rate_i_j,Rate_j_g_i] = deal(ones(user_num,bs_num),ones(user_num,uav_num),ones(uav_num,bs_num));

[record_1,record_2,record_3,record_4] = deal(zeros(user_num,epoch),zeros(user_num,epoch),zeros(user_num,epoch),zeros(user_num,epoch));

%% The Data trans speed subject to the distance between the objects

for b = 1:bs_num

   for i = 1:user_num

       Rate_i_g(i,b) = 1000 / dis_user_bs(i,b);

   end

   for j = 1:uav_num

       Rate_j_g_i(j,b) = 1000 / dis_uav_bs(j,b);

   end

end

for i = 1:user_num

    for j = 1:uav_num

        Rate_i_j(i,j) = 1000 / dis_user_uav(i,j);

    end

end

%% The User associate to the bs & uav nearby

for u = 1:user_num

    [~,selected_bs(u)] = min(dis_user_bs(u,:));

    [~,selected_uav(u)] = min(dis_user_uav(u,:));

    selected_uav_relay(u) = selected_uav(u);

%     need_bs(selected_bs(u)) = 1;need_uav(selected_uav(u)) = 1;

end

%% Game Iteration

for episode = 1:epoch

    now = episode;

    %% Game of Leader layer: Base station

    for b = 1:bs_num

        % alter the price for user i: M_i && the suitable resource: F_i

        for i = 1:user_num

            F_i(b,i) = (offload_bs(i)+offload_relay(i)) * D(i);

            M_i(b,i) = 250;%D(i) / Rate_i_g(i,b);

        end

        % alter the price for uav j : M_j

        for j = 1:uav_num

            M_j(b,j) = 50 / Rate_j_g_i(j,b);

        end

        % compute the profit of the base station b

        bs_income(episode,b) = utility_base_station(M_i(b,:),M_j(b,:),F_i(b,:),b);

    end

    %% Game of Vice-leader Layer : UAVs   

    for u = 1:uav_num

        % alter the price for user i: m_i

        for i = 1:user_num

            f_i(u,i) = offload_uav(i) * D(i);

            m_i(u,i) = 70;% D(i) / Rate_i_j(i,u);

        end

        % compute the profit of the uav j

        uav_income(episode,u) = utility_uav(m_i(u,:),f_i(u,:),Rate_j_g_i(u,:),M_j(:,u),u);

    end

    %% Game of follower layer: Users

    for i = 1:user_num

        [at_local(i),to_bs(i),to_uav(i),by_relay(i)] = ...

        utility_user(M_i(:,i),m_i(:,i),F_i(:,i),f_i(:,i),Rate_i_g,Rate_i_j,Rate_j_g_i,i);

        % allocate the compute task

        [local(i),offload_bs(i),offload_uav(i),offload_relay(i)] ...

            = offload_allocate(at_local(i),to_bs(i),to_uav(i),by_relay(i),D,i);

        [record_1(i,now),record_2(i,now),record_3(i,now),record_4(i,now)]=...

            deal(local(i),offload_bs(i),offload_uav(i),offload_relay(i));

        if offload_relay(i) ~= 0

            relay_ok(selected_bs(i),selected_uav_relay(i)) = 1;

        else

            relay_ok(selected_bs(i),selected_uav_relay(i)) = 0;

        end

        user_outcome(episode,i) = ...

        local(i) * at_local(i) + offload_bs(i) * to_bs(i) + offload_uav(i) * to_uav(i) + offload_relay(i) * by_relay(i);

    end

save stackelberg_RL

end

end

⛄ 运行结果

⛄ 参考文献

​[1] Yang L ,  Xu C ,  Zhan Y , et al. Incentive mechanism for computation offloading using edge computing: A Stackelberg game approach[J]. Computer Networks, 2017, 129(DEC.24):399-409.

⛄ Matlab代码关注

❤️部分理论引用网络文献,若有侵权联系博主删除

❤️ 关注我领取海量matlab电子书和数学建模资料

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

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

相关文章

不会还有人不会热修复吧?

Class流派原理 基本原理:加载类的时候是找element,每个element对于一个dex。我要把我修复的那个类单独放到dex插入dexlist前面,在你做类加载从前往后找优先从你的dex加载加载的就是你修复后的class.这就是 实现代码 通过context拿到pathClassLoader&am…

Qt跨平台截图工具

Qt跨平台截图工具 文章目录Qt跨平台截图工具1、概述2、实现效果3、软件构成4、关键代码5、源代码更多精彩内容👉个人内容分类汇总 👈👉Qt自定义模块、工具👈 1、概述 Qt版本:V5.12.5兼容系统: Windows&…

2022,记录与华为的这场会议

一、数据治理团体标准发布会 11月26日,中国计算机用户协会信息科技审计分会联合华为与擎创科技共同举办了“金融行业运维数据治理团体标准应用研讨暨2022年度调研报告线上发布会”。来自国家开发银行、中国建设银行、中国邮政储蓄银行、招商银行、兴业银行、中信银行…

【LeetCode_字符串_逻辑分析】9. 回文数

目录考察点第一次:2022年12月7日10:16:33解题思路代码展示题目描述给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左…

340页11万字智慧政务大数据资源平台大数据底座数据治理建设方案

目 录 第一章 项目概况 1.1 项目名称 1.2 项目单位 1.3 项目建设依据 1.4 项目建设内容和目标 1.4.1 建设内容 1.4.2 建设目标 1.5 项目投资估算及建设周期 1.5.1 项目投资估算 1.5.2 服务周期 第二章 现状 2.1 项目单位概况 2.1.1 单位职责、内设及下属机构、人员…

【配准图像】

MU-Net: A MULTISCALE UNSUPERVISED NETWORK FOR REMOTE SENSING IMAGE REGISTRATION (MU-Net:一种多尺度无监督遥感图像配准网络) 多传感器或多模态图像对的配准是许多遥感应用的基础性任务。为了实现高精度、低成本的遥感图像配准&#x…

彻底搞懂JS原型与原型链

说到JavaScript的原型和原型链,相关文章已有不少,但是大都晦涩难懂。本文将换一个角度出发,先理解原型和原型链是什么,有什么作用,再去分析那些令人头疼的关系。 一、引用类型皆为对象 原型和原型链都是来源于对象而…

浅谈Linux内核编程规范与代码风格

1 缩进 Tab的宽度是八个字符,因此缩进的宽度也是八个字符。有些异教徒想让缩进变成四个字符,甚至是两个字符的宽度,这些人和那些把 PI 定义为 3 的人是一个路子的。 注意:缩进的全部意义在于清晰地定义语句块的开始与结束&#…

《MongoDB》Mongo Shell中的基本操作-删除操作一览

前端博主,热衷各种前端向的骚操作,经常想到哪就写到哪,如果有感兴趣的技术和前端效果可以留言~博主看到后会去代替大家踩坑的~ 主页: oliver尹的主页 格言: 跌倒了爬起来就好~ 来个关注吧,点个赞…

分布式事务,单JVM进程与多数据库,分布式事务技术选型,0-1过程,代码全。

由于很多小白程序员在单一JVM进程配合多数据库的架构环境中,总是考虑一主多从的mysql集群环境。还不知道mysql集群数据库按照表纵向分割以后,也是可以走数据库使用事务的。那么这里使用到的就是分布式事务,XA协议。现在大部分主流的数据库都支持XA协议。这里不用太多废话,直…

【Web智能聊天客服】之JavaScript、jQuery、AJAX讲解及实例(超详细必看 附源码)

觉得有帮助请点赞关注收藏~~~ 一、JavaScript基础 Javascript是网页编程语言&#xff0c;决定网页元素的动作。HTML页面中通过<script></script>指定Javascript内容&#xff0c;通过//或者 /* */执行代码的备注功能&#xff0c;并且区分大小写。 1&#xff1a;变…

《视觉SLAM十四讲》示例程序编译报错处理(上)

高翔博士《视觉SLAM十四讲》这本书中的代码很不错&#xff0c;适合初学者。可惜有一些可能因为版本的问题会报错&#xff0c;本文总结一下我遇到的问题。 在slambook2/3rdparty文件夹git submodule update&#xff0c;这个版本是和书中的版本一致的。但我已经重新安装了新版Ei…

Webpack中的高级特性

自从webpack4以后&#xff0c;官方帮我们集成了很多特性&#xff0c;比如在生产模式下代码压缩自动开启等&#xff0c;这篇文章我们一起来探讨一下webpack给我们提供的高级特性助力开发。 探索webpack的高级特性 特性&#xff1a;treeShaking 顾名思义treeShaking&#xff0…

C++ Reference: Standard C++ Library reference: Containers: deque: deque: swap

C官网参考里链接&#xff1a;https://cplusplus.com/reference/deque/deque/swap-free/ 函数模板 <deque> std::swap (deque) template <class T, class Alloc> void swap (deque<T,Alloc>& x, deque<T,Alloc>& y); 交换两个双端队列容器的…

【ESP32调试-快速入门】

文章目录ESP32调试一. 环境搭建二. 运行OpenOCD1. 烧入blink2. 找到芯片型号对应的脚本文件&#xff0c;并运行脚本命令三. 运行GDBESP32调试 一. 环境搭建 ESP_IDF环境搭建 二. 运行OpenOCD 1. 烧入blink 如&#xff1a;安装环境中的examples中的blink 路劲&#xff1a;安装…

华为机试 - 探索地块建立

目录 题目描述 输入描述 输出描述 用例 题目解析 算法源码 题目描述 给一块n*m的地块&#xff0c;相当于n*m的二维数组&#xff0c;每个元素的值表示这个小地块的发电量&#xff1b; 求在这块地上建立正方形的边长为c的发电站&#xff0c;发电量满足目标电量k的地块数量…

汽车保养app开发,扩充汽车服务市场发展商机

从汽车市场规模来看&#xff0c;从2017年开始始终保持增长的发展趋势&#xff0c;在2021年市场规模达到140877.18亿元。互联网时代发展下&#xff0c;汽车后市场大力推广电子商务&#xff0c;将互联网技术与汽车保养服务相结合是汽车服务行业强大的必由之路。二者的结合可以让消…

centos7下搭建rabbitmq的开发环境

我们在项目开发的时候都不可避免的会有异步化的问题,比较好的解决方案就是使用消息队列,可供选择的队列产品也有很多,比如轻量级的redis, 当然还有重量级的专业产品rabbitmq,rabbitmq好就好在是用erlang(二郎神)开发的,它那天生的OTP并行计算框架,轻而易举的进程间通…

阿里云ssl免费证书申请

目录为什么申请SSL证书SSL证书申请支持的域名类型ssl免费证书申请过程为什么申请SSL证书 由于web服务部署需要使用https安全协议&#xff0c;因此需要申请相应域名的SSL证书用于部署。测试阶段&#xff0c;为节省成本&#xff0c;使用阿里云提供的免费SSL证书。 SSL证书申请支…

在Web服务器(IIS)上安装SSL证书并绑定网站

以windows server 2016为例 一、安装中间证书 1.下载中间证书文件 如果是RSA加密算法类的&#xff0c;下载此处。 如果是ECC加密算法类的&#xff0c;下载此处。 2.安装 双击下载好的文件进行安装&#xff0c;注意&#xff0c;安装过程中&#xff0c;存储位置要设”为本地…