实验环境与测试函数
本次实验采用7台Dell服务器搭建Spark集群,包含1个主节点和6个工作节点,采用standalone模式进行任务调度。服务器配置为8G内存、四核处理器。软件环境包括spark-1.2.0-bin-hadoop1、Hadoop-1.2.1、JDK1.7.0_71(Linux版)以及ubuntu12.04Server操作系统。
实验选用Deb等人提出的双目标函数ZDT1作为测试用例,该函数包含两个复杂的目标函数和约束条件,符合大规模复杂优化问题的要求。
实验结果与性能分析
mapPartitions和map算子性能对比
实验初始化8个不同规模的种群,在相同条件下分别使用mapPartitions和map算子实现SPGA算法,对ZDT1函数进行优化求解,并对比分析运行时间。
结果表明,使用mapPartitions算子实现的算法在所有种群规模下都明显优于map算子。随着种群规模的增大,两种算子的运行时间均有所增加,但mapPartitions算子与map算子之间的差距也越来越大。
分析原因,个体数量增加的同时,partition数量保持不变,因此mapPartitions算子无需增加初始化资源的时间,仅因种群规模扩大而增加了计算时间,因此算法效率更高。最终选择使用mapPartitions算子实现SPGA算法的变异和适应度操作。
算法运行时间对比
本次实验对比了串行遗传算法、基于MapReduce的并行遗传算法(MRPGA)和基于Spark的并行遗传算法在不同种群规模下求解ZDT1多目标优化问题的运行时间。
实验结果表明,当种群规模较小,个体数量小于0.2*10^5时,串行遗传算法执行时间最短,其次是SPGA算法。