基于QPLMTS算法的边缘计算任务调度器源码及使用说明

版权申诉
5星 · 超过95%的资源 3 下载量 80 浏览量 更新于2024-10-06 6 收藏 47KB ZIP 举报
资源摘要信息:"基于QPLMTS算法的边缘计算场景下的任务调度器源码+项目说明.zip" 1. 项目概述: 该资源提供了一个基于QPLMTS(Q-Learning、优先级列表与线性加权法的调度长度、服务成本多目标协同优化任务调度算法)的任务调度器源码,特别适用于边缘计算场景。它旨在解决静态DAG(有向无环图)任务集的调度问题,并将任务调度过程分为任务排序与节点绑定两个阶段。该调度器可以为计算机相关专业的学习者和从业人员提供一个实践的平台,并且具备一定的可扩展性,允许用户基于现有代码进行功能的修改和增强。 2. QPLMTS算法: QPLMTS算法是一种新型的多目标协同优化任务调度算法,它融合了Q-Learning、优先级列表和线性加权法。该算法主要面向静态DAG任务集,通过两阶段任务排序和节点绑定来实现边缘计算下的任务调度。该算法首先基于Upward Rank评估任务的紧要程度,其次引入时间差分的强化学习机制进行任务优先级排序,并最终通过β权重因子对优化目标进行加权打分。 3. 运行环境: - 语言环境:Python3.6及以上版本。 - 依赖环境:需要Python包matplotlib、sympy、pymysql、numpy、tqdm等,以及Daggen工具。 4. 运行方法: - 创建QPL类的实例。 - 使用数据集发生器或边缘计算系统API初始化DAG任务数据和边缘节点数据。 - 运行QPLMTS算法核心模块以生成调度结果。 - 执行实验分析模块以分析调度结果。 5. 主要函数与功能: # 数据预处理区: - 数据集发生器:ReadDataSet_Auto(),负责根据任务集规模和边缘节点数生成静态DAG任务集和边缘节点集。 # QPLMTS算法核心区: - Upward Rank值计算模块:CalUR(),计算所有任务的Upward Rank值,并使用递归结构和LRU_Cache进行高效计算。 - 调度Q表产生模块:Q_Process(),产生基于任务Upward Rank的Q-Learning Reward,进而生成调度Q表,并提供Reward变化记录。 - 任务分发次序产生模块:CalCTPS(),根据最大Q值原则计算任务分发次序CTPS。 - 边缘节点绑定模块:AllocateNode(),基于CTPS进行节点打分,遍历所有任务生成边缘节点-任务绑定表,并将数据上行到MySQL。 # 一体化调度区: - QPLMTS算法一步调度模块:QPLMTS(),直接产生一次QPLMTS调度结果。 - HEFT算法一步调度模块:HEFT(),直接产生一次HEFT(经典算法)调度结果。 # 实验分析区: - 学习率实验模块:ParaOpt_LearningRate(),进行学习率参数设计实验,生成学习率图表。 - β权重因子实验模块:ParaOpt_Weight(),进行β权重因子参数设计实验,生成β权重因子图表。 - Q表迭代次数实验模块:ParaOpt_Q(),执行Q表迭代次数实验,生成Q表迭代次数图表。 # 功能模块: - MySQL操作模块:__InputMysql(),用于执行数据到MySQL的输入操作。 - 更新结果模块:UpdateResult(),用于更新数据结果。 - 最早完成时间计算模块:__ETFT()、__ETIT()、__EEAT(),分别计算任务的最早完成时间。 - 服务成本计算模块:__Cost(),用于计算任务的服务成本。 6. 项目文件列表: - daggen_commons.c:通用的Daggen源文件。 - daggen.c:Daggen核心源文件。 - daggen:Daggen可执行文件。 - .gitignore:指定Git忽略文件规则。 - daggen_commons.h:Daggen通用头文件。 - LICENSE:项目使用的开源许可说明。 - 项目说明.md:提供项目的详细说明文档。 - QPL.py:包含QPLMTS算法核心逻辑的Python脚本。 该资源对于学习边缘计算、任务调度算法以及强化学习在计算机科学中的应用具有较高的教育和研究价值。