GT-GAOA卸载算法

背景:我实现该算法是在边缘计算单个工作流环境中,下面可以看到此背景下的java代码实现。

1.算法伪代码


下面是procedure1与procedure2:

2.参数说明

M是任意移动设备 i 计算任务的类型数,C是迭代次数,N是移动设备数。

3.结果

一个最优的计算卸载决策S,整体最小计算费用…

4.分析

(1)Algorithm2:

  1. 初始化:初始化每个终端设备MD上的一个工作流的所有任务(假设任务数为taskNum个)设置为不卸载{0,0,…,0}。
  2. 对于每一个MD i 上的一个工作流:按照Procedure1计算MD i 的局部最优卸载决策(这个卸载决策具有最小的优化目标值),如果新计算出来的MD i 的优化目标值小于之前的优化目标值,则将该MD i 添加到博弈更新圈。
  3. 只要博弈更新圈不为空:从博弈更新圈中随机挑选一个MD i ,赋予 i 更新卸载决策的机会,i 进行更新,并广播给其他MD(因为该更新的MD会占用公共资源),保存 i 更新后的卸载策略。博弈圈中的其他MD暂不更新。
  4. 基于计算卸载决策 S 计算整体最小的优化目标值(eg:Time、Energy)。
  5. 返回 S 与最小优化目标值。

(2)Procedure1~2:

  1. 对于工作流中的每一个job(卸载任务):
  2. 分别计算job在本地、边缘服务器、云服务器上的优化目标值 a,b,c。
  3. 先找出不卸载的job:如果当前 job 在本地执行优化目标值最小,则设置它的卸载策略为0(不卸载),卸载的 job 放在一个集合M中。
  4. 再遍历M集合,分别计算该任务 job 卸载到云服务器、边缘服务器的优化目标值 c,d。
  5. 若c < d 卸载到云服务器,反之,卸载到边缘服务器。
5.我的java代码实现
/*** 卸载策略初始化*/
void GT_GAOAInit(){offloadStra = new int[taskNum];offloadJobIndex = new ArrayList<>();for (int i = 0; i < taskNum; i++) {offloadStra[i] = 0;}
}
/*** 根据贪心近似最优卸载策略对每个job选取最优卸载位置*/
void GreedyApproximationOffloading(){// 依次是卸载到云层、雾层、本地double time1 = 0, time2 = 0, time3 = 0;double energy1 = 0, energy2 = 0, energy3 = 0;powerModel = (FogLinearPowerModel) getmobile().getHost().getPowerModel();// 获取云、雾、终端层的平均Mipsdouble cAvgMips = getcloud().getAverageMips();double fAvgMips = getFogNode().getAverageMips();double mAvgMips = getmobile().getAverageMips();// 先计算不需要卸载的任务集合for (int i = 0; i < taskNum; i++) {Job job = joblist.get(i);time1 = job.getCloudletLength() / cAvgMips+ getJobFileSize(job) / parameter / WAN_Bandwidth;//卸载所需能耗 = 空闲功率 * 云执行时间 + 传输功率 * (发送数据大小 + 接收数据大小 ) / WAN带宽energy1 = powerModel.getStaticPower() * job.getCloudletLength() / cAvgMips+ powerModel.getSendPower() * getJobFileSize(job) / parameter / WAN_Bandwidth;time2 = job.getCloudletLength() / fAvgMips+ getJobFileSize(job) / parameter / LAN_Bandwidth;energy2 = powerModel.getStaticPower() * job.getCloudletLength() / fAvgMips+ powerModel.getSendPower() * getJobFileSize(job) / parameter / LAN_Bandwidth;time3 = job.getCloudletLength() / mAvgMips;energy3 = powerModel.getMaxPower() * job.getCloudletLength() / mAvgMips;switch (optimize_objective){case "Time":if(Math.min(time1,time2) < time3) {// 该job需要卸载offloadJobIndex.add(i);}break;case "Energy":if(Math.min(energy1,energy2) < energy3) {// 该job需要卸载offloadJobIndex.add(i);}break;default:break;}}// 再计算其余任务是卸载到雾还是云for (int i = 0; i < offloadJobIndex.size(); i++) {int t = offloadJobIndex.get(i);Job job = joblist.get(t);time1 = job.getCloudletLength() / cAvgMips+ getJobFileSize(job) / parameter / WAN_Bandwidth;//卸载所需能耗 = 空闲功率 * 云执行时间 + 传输功率 * (发送数据大小 + 接收数据大小 ) / WAN带宽energy1 = powerModel.getStaticPower() * job.getCloudletLength() / cAvgMips+ powerModel.getSendPower() * getJobFileSize(job) / parameter / WAN_Bandwidth;time2 = job.getCloudletLength() / fAvgMips+ getJobFileSize(job) / parameter / LAN_Bandwidth;energy2 = powerModel.getStaticPower() * job.getCloudletLength() / fAvgMips+ powerModel.getSendPower() * getJobFileSize(job) / parameter / LAN_Bandwidth;switch (optimize_objective){case "Time":if(time1 < time2){// 卸载到云上offloadStra[t] = 2;}else{// 卸载到雾上offloadStra[t] = 1;}break;case "Energy":if(energy1 < energy2){// 卸载到云上offloadStra[t] = 2;}else{// 卸载到雾上offloadStra[t] = 1;}break;default:break;}}
}
@Override
public void BeforeOffloading(double deadline) {this.deadline = deadline;GT_GAOAInit();joblist = getjobList();for (int i = 0; i < workflowNum; i++) {GreedyApproximationOffloading();}
}

边缘计算卸载算法--GT-GAOA相关推荐

  1. 移动边缘计算卸载技术笔记(二)

    2.2 MEC部署方案 MEC 的服务是由拥有计算和存储功能的 MEC服务器提供的. 4G网络中的部署方案: SCC 部署方案:SCC 部署根据 SCM 部署方式的不同,可分为 2 种情况. (小基站 ...

  2. (论文分析)基于契约理论和贝叶斯匹配博弈的分层多址边缘计算卸载

    论文题目:Computation Offloading in Hierarchical Multi-Access Edge Computing Based on Contract Theory and ...

  3. 主流边缘计算的算法实例

    目前市场上那些边缘计算算法比较主流?边缘计算有那些算法实例呢?让英码信息科技小编为你讲解. 1.人脸及关键点检测 关键点监测是通过快速检测人脸并标记出人脸坐标,提取包括脸颊.眉.眼.口.鼻等人脸五官的 ...

  4. 资源受限的移动边缘计算系统中计算卸载问题研究

    摘要:本文针对边缘计算卸载问题,提出了两个创新点,并进行建模,在模拟实验中都得到了最好的结果.一是在用户-MEC-云端架构中,设计了对计算结果缓存,流行的计算结果进行缓存,再次请求则直接回复,不必计算 ...

  5. 边缘计算那些事儿--边缘卸载技术

    0 背景 前面笔者有对边缘计算系统做过一次综述,从本文开始,笔者将重点解读边缘计算技术栈,首先介绍的是边缘计算卸载技术.所谓卸载技术,即将终端或者云端的计算任务卸载到边缘侧,通过综合判断性能.能耗.时 ...

  6. 基于遗传算法(GA)的计算卸载策略的求解(二)

    3.编码方式 葛海波的文章<改进遗传算法的边缘计算卸载策略>卸载地点为边缘端和云端,他的基因编码取值为(0,1,2),0表示在本地端执行,1表示在边缘端执行,2表示在云端执行:每条染色体对 ...

  7. 深度学习学习笔记-论文研读4-基于深度强化学习的多用户边缘计算任务卸载调度与资源分配算法

    本人学识浅薄,如有理解不到位的地方还请大佬们指出,相互学习,共同进步 概念引入 强化学习 DQN算法 边缘计算 边缘计算,是指在靠近物或数据源头的一侧,采用网络.计算.存储.应用核心能力为一体的开放平 ...

  8. 多无人机辅助移动边缘计算中的任务卸载和轨迹优化

    摘要: 提出了一个多无人机辅助移动边缘计算系统,系统部署了多个配备计算资源的无人机为本地资源有限的移动用户提供计算卸载机会.每个用户的计算任务分为两部分:一部分卸载到关联的无人机进行计算,剩余部分在本 ...

  9. 【论文笔记:场景】边缘计算中分布式协作的动态卸载模型:森林火灾管理的一个用例

    [摘要]:随着物联网(IoT)的发展,数据量不断增长并变得更加多样化.将数据传输到云端时存在几个问题,例如网络带宽和延迟的限制.这引起了人们对边缘计算研究的极大兴趣,边缘计算处理和分析数据导致的网络终 ...

最新文章

  1. Makefile文件的编写规则
  2. HDU 1236 ( 排名 )
  3. 13.2System类中的常用方法
  4. 如何正确使用AD构造企业的组织架构
  5. 基于内容的自适应视频传输算法及其应用
  6. HEVC/H265 HM10.0 分析(三)TAppDecTop.cpp
  7. php编写大型网站问题集
  8. HTTP性能测试工具wrk安装及使用
  9. 生成式对抗神经网络code实现
  10. 【渝粤教育】电大中专工程图学基础 (2)作业 题库
  11. Unity3d 周分享(20期 2019.6.30 )
  12. python模拟登录京东网页
  13. 改为dns服务器响应的原因,2020年dns服务器异常的原因及解决方法
  14. Flutter 环境搭建遇到的坑
  15. 结构化英语查询语言SQL
  16. 正则表达式 第一次碰到某个特定字符就返回
  17. uni-app 图标字体引用
  18. 【C语言】STM32控制步进电机——一种S形加减速曲线的推导与实现
  19. 取消“996”、大裁员、年终奖缩水,这届互联网人没有余粮?
  20. sk_buff 里的head、data、len, data_len, tail,end

热门文章

  1. 设计模式之模板方法模式详解
  2. 每日三思:微信小程序多层级父子组件如何在子组件滚动加载
  3. 虚拟机的桥接模式和NAT模式
  4. 无人机优化无线传感器网络matlab代码
  5. 42岁大厂高管,给30岁-39岁人提个醒:这6个让你变强的习惯,要尽快养成
  6. jenkins自动化部署
  7. 串行通信基础、串行数据传输方式
  8. Linux服务器/VPS 基本测试 包括硬盘速度/网络速度
  9. baiduRanking多站点批量百度排名查询
  10. 如何干掉学校无良的网页认证登录,然后连上路由器