论文部分内容阅读
水电能源的开发为现代社会的可持续发展提供了坚实的基础,水库(群)联合优化调度的研究,为提高水电能源利用率提供可行依据,是非常重要的研究项目,其研究方法主要为构建新模型以及求解算法的改进。随着优化调度对象规模的增大,传统求解算法会因“维数灾”而受限,在多种改进方法中,从执行端的角度出发,将算法并行化以增加执行效率是近年来新的研究成果。目前水库调度算法并行研究大都基于Fork/Join框架和MPI框架,在单台或者集群计算机运行:Fork/Join框架适用于在单台计算机上使用,对算法执行效率上的提高有限;MPI框架虽然可用于集群环境以获取超越单机环境的加速比,但MPI并行程序设计繁琐,需要考虑许多算法之外的问题,对设计人员的计算机专业知识要求较高,而且MPI框架在容灾方面存在不足,不能保证计算的可靠性。近年来各种集群计算引擎为海量数据处理提供了解决方案,其中Spark框架对分布式数据集上的迭代作业支持较好,被广泛应用于海量数据场景的机器学习、数据挖掘和图像处理等研究。Spark程序不仅可以运行在单机和本地集群上,也可以运行在资源配置灵活的云服务器上;程序设计方面Spark将数据切分、并行处理和容错健壮性等工作进行了封装,使并行程序的设计更加简单;在容灾方面Spark通过数据集之间的血统关系(Lineage)对丢失的数据进行恢复,数据可靠性高。运用Spark框架,本文对传统求解方法中的动态规划和离散微分动态规划算法进行了如下并行化研究:(1)通过研究动态规划的状态转移过程与Spark框架的运行机制,本文将多阶段状态转移过程转换为Key-Value型数据集的迭代计算,实现动态规划(DP)和离散微分动态规划(DDDP)算法的Spark并行化,在多核环境下以经典四水库问题和沅水串联两水库为例对Spark并行DP测试,以经典十水库问题和沅水混联四水库为例对Spark并行DDDP测试。(2)针对异构环境下运行Spark并行DP程序时,同阶段内任务完成时间不同步问题,提出了基于节点计算能力评估的任务分配模式,并搭建异构集群环境进行实验。研究结果表明将DP和DDDP算法Spark并行化后可有效提高算法计算效率;在集群环境下,Spark并行DDDP可以突破Fork/Join框架的加速比瓶颈;异构集群环境下使用基于节点计算能力评估的任务分配模式可有效减小同阶段内任务之间的不同步程度,提高计算资源使用效率。在节省计算时间和降低经济成本方面,Spark框架更富有应用前景。本文为水库调度算法的云计算技术研究提供了一定的研究基础。