CN110908782B - 一种基于遗传算法优化的封装类分布式作业任务调度方法及系统 - Google Patents
一种基于遗传算法优化的封装类分布式作业任务调度方法及系统 Download PDFInfo
- Publication number
- CN110908782B CN110908782B CN201911058747.1A CN201911058747A CN110908782B CN 110908782 B CN110908782 B CN 110908782B CN 201911058747 A CN201911058747 A CN 201911058747A CN 110908782 B CN110908782 B CN 110908782B
- Authority
- CN
- China
- Prior art keywords
- job
- population
- individual
- individuals
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/12—Computing arrangements based on biological models using genetic models
- G06N3/126—Evolutionary algorithms, e.g. genetic algorithms or genetic programming
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Physiology (AREA)
- Genetics & Genomics (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于遗传算法优化的封装类分布式作业任务调度方法及系统,用以缓解由于作业量分布不均匀导致系统运行效率较低的问题。方法包括:读取所有作业数据量以及节点数量,为每个节点分配唯一的节点ID,以及为每个作业分配唯一的作业ID和执行节点;构建当前种群包括选择算子,还包括采用交叉算子、变异算子之一或组合;启动所有节点,执行当前构建的种群中的所有作业队列池的所有作业队列;获取每一作业队列池中执行耗时最长的作业队列,以该作业队列的执行时长作为该个体的适应度值;各个体携带其适应度值返回重新构建当前种群;达到最大迭代次数时,输出适应度值最小的个体及其适应度值。系统包括:构建当前种群模块等模块。
Description
技术领域
本发明涉及互联网领域,特别涉及一种基于遗传算法优化的封装类分布式作业任务调度方法及系统。
背景技术
遗传算法是一种基于生物自然选择与遗传机理的随机搜索与优化方法,通常待处理的作业任务可以分为可拆分式作业任务和封装类作业任务两种类型。其中可拆分类作业任务较为常见:如数据抽取清洗转换过程(ETL)任务中将数据源拆分成若干各子数据源,将其分配到不同的节点并行执行;网络数据传输中将数据分包传输等。封装类作业任务由一系列不可拆分的原子任务组成,单个任务的执行只能由单一节点执行,如:数字证书的认证过程;数据加密过程等。
常规的分布式算法有:先进先出(FIFO)、短作业优先(SJF)、时间片轮转(RR)、优先级等。对于可拆分式作业任务,通过将大作业任务拆分成较小的作业任务后,系统中的所有作业任务数据量分布较均匀。使用常规分布式算法进行调度后,由于不同作业任务的数据量经过拆分后分布较均匀,系统各执行节点分配的作业任务总数据量接近一致,系统整体运行效率较高;对于封装类作业任务,由于不同作业任务的总量、消耗资源不一致,使用常规调度方法容易导致以下缺点:
如使用FIFO调度算法,这种算法将任务按先进先出的顺序依次分配到各个执行节点,容易出现不同节点的最终分配任务总数据量不一致,从而导致部分执行节点闲置的情况。另外,这种调度算法会导致短作业任务等待的现象。如中国专利“CN106648845A一种分布式任务调度系统及方法”提出的一种分布式任务调度系统及方法。该系统包括至少一个调度模块以及至少两个执行模块;调度模块用于接收外部输入的配置信息,并根据配置信息向至少两个执行模块中的至少一个执行模块发起调度请求;执行模块用于在接收来自调度模块的调度请求后,根据调度请求采用FIFO的方式执行对应的业务逻辑。该专利提出的调度方法只是将队列中的任务按照先进先出的方式分配到各个节点上,并没有对作业的调度进行优化,对于作业很多、不同作业的数据量分布不均的情况,仍会出现部分节点闲置的问题。
使用SJF调度算法,这种算法优先考虑短作业任务,系统响应性较好,但是同样会由于不同任务总数据量不一致导致部分节点闲置的问题。
使用RR调度算法,这种算法对每个任务分配固定的时间片,系统响应性好,但是会出现由于时间片设置不当导致系统用于切换任务的开销较大,导致系统整体运行效率不高。
使用基于优先级的调度算法,这种算法针对每个任务的特点设置相应的优先级,对于特定的任务适用性较好,但是具有一定的片面性。如中国专利“CN108205541A分布式网络爬虫任务的调度方法及装置”提供了一种基于优先级的调度方法,这种方法可以配置任务的优先级,相较于普通调度方法具有更大的灵活性,并且针对特定的任务可以大幅提升系统运行效率。但是这种方法需要手动配置各种任务的优先级,对于作业数量较大的场景,很难定义出较为合适的优先级,从而导致出现系统资源的浪费问题,其适用场景较片面。
还有一些学者提出了其他的调度策略,例如中国专利“CN108270837A一种利用闲置资源的分布式任务调度方法及系统”提供了一种利用闲置设备资源对多任务进行调度的方法。这种方法根据各个待分发任务的预计执行时间以及所述可用设备列表中的各个所述目标设备的闲置时间,按照任务分发策略将各个所述任务分发至时间匹配的所述各个目标设备。其任务分发策略为:设备在闲置时间内所能执行的总原子任务数量大于待分配的原子任务数量。这种方法相考虑了每个节点的处理能力及可用性,在一定程度上提升了系统的效率,但是其没有考虑每个任务的总数据量不同的影响,由于各个任务总数据量不同,其在各个设备上分布不均,仍然会出现部分设备闲置的情况。
发明内容
本发明提供了一种基于遗传算法优化的封装类分布式作业任务调度方法及系统,用以缓解由于作业量分布不均匀导致系统运行效率较低的问题。
本发明的一种基于遗传算法优化的封装类分布式作业任务调度方法,将在同一节点执行的作业列为相同作业队列,各作业队列的集合设为作业队列池,所述作业队列池称为个体,各个体的集合称为种群,包括下列步骤:初始步骤:读取所有作业数据量以及可独立执行的节点数量,为每个节点分配唯一的节点ID,以及为每个作业分配唯一的作业ID和执行节点;构建当前种群的步骤:包括选择算子,还包括采用交叉算子、变异算子之一或组合;任务执行的步骤:启动所有节点,执行所述当前构建的种群中的所有作业队列池的所有作业队列;获得适应度值的步骤:获取每一作业队列池中执行耗时最长的作业队列,以该作业队列的执行时长作为该个体的适应度值;迭代步骤:各个体携带其适应度值返回所述构建当前种群的步骤,其中所述选择算子依据所述适应度值完成选择;输出步骤:达到最大迭代次数时,输出适应度值最小的个体及其适应度值。
进一步的,所述的选择算子具体包括:对所述返回个体的适应度值排序,按由小到大的顺序读取返回个体数量N%的个体形成较优个体群,以及按由大到小的顺序读取返回个体数量M%的个体形成较差个体群;将所述较优个体群成倍复制,使复制后的较优个体数量达到M%,以及从所述较差个体群中随机选取个体,使选取的较差个体数量达到N%,集合形成优选种群;所述N%+M%=100%。优选的,所述N%=20%,所述M%=80%。
进一步的,所述交叉算子具体包括:从所述优选种群中随机挑选两个个体,根据作业ID从被选择的两个个体中随机选择一个相同的作业,交换该作业在所述两个个体中的节点ID,完成一次交叉操作。优选的,设置交叉操作的次数为种群的大小,每次交叉操作时生成一个随机数,如果随机数小于给定的交叉概率值,则再进行一次交叉操作。
进一步的,所述变异算子具体包括:从所述优选种群中随机选择一个作业,将该作业分配的节点ID替换为其它任意一个节点ID,完成一次变异操作。优选的,设置变异操作的次数为种群大小,每次变异操作时生成一个随机数,如果随机数小于给定的变异概率值,则再进行一次变异操作。
进一步的,所述任务执行的步骤中还包括:如果当前作业执行失败,则将其加入到所属作业队列的尾部。
本发明的一种基于遗传算法优化的封装类分布式作业任务调度系统,将在同一节点执行的作业列为相同作业队列,各作业队列的集合设为作业队列池,所述作业队列池称为个体,各个体的集合称为种群,包括:初始化模块,用于读取所有作业数据量以及可独立执行的节点数量,为每个节点分配唯一的节点ID,以及为每个作业分配唯一的作业ID和执行节点;构建当前种群模块,用于构建当前一代的种群,包括选择算子子模块,还包括采用交叉算子子模块、变异算子子模块之一或组合;任务执行模块,用于启动所有节点,执行所述当前构建的种群中的所有作业队列池的所有作业队列;获得适应度值模块,用于获取每一作业队列池中执行耗时最长的作业队列,以该作业队列的执行时长作为该个体的适应度值;迭代模块,用于将各个体携带其适应度值返回给所述构建当前种群模块,其中所述选择算子子模块依据所述适应度值完成选择;输出模块,用于在达到最大迭代次数时,输出适应度值最小的个体及其适应度值。
进一步的,所述的选择算子子模块对所述返回个体的适应度值排序,按由小到大的顺序读取返回个体数量N%的个体形成较优个体群,以及按由大到小的顺序读取返回个体数量M%的个体形成较差个体群;将所述较优个体群成倍复制,使复制后的较优个体数量达到M%,以及从所述较差个体群中随机选取个体,使选取的较差个体数量达到N%,集合形成优选种群;所述N%+M%=100%。
进一步的,所述交叉算子子模块从所述优选种群中随机挑选两个个体,根据作业ID从被选择的两个个体中随机选择一个相同的作业,交换该作业在所述两个个体中的节点ID,完成一次交叉操作。优选的,设置交叉操作的次数为种群的大小,每次交叉操作时生成一个随机数,如果随机数小于给定的交叉概率值,则所述交叉算子子模块再进行一次交叉操作。
进一步的,所述变异算子子模块从所述优选种群中随机选择一个作业,将该作业分配的节点ID替换为其它任意一个节点ID,完成一次变异操作。优选的,设置变异操作的次数为种群大小,每次变异操作时生成一个随机数,如果随机数小于给定的变异概率值,则所述变异算子子模块再进行一次变异操作。
进一步的,所述任务执行模块中,如果当前作业执行失败,则将其加入到所属作业队列的尾部。
本发明提出的基于遗传算法优化的封装类分布式作业任务调度方法及系统,其在系统运行前对系统各个节点的处理能力和每个任务的总量进行评估,将不同任务的调度方法转换为求解约束问题的最优值,利用遗传算法的全局搜索能力求解出每个任务被分配执行的最佳节点ID,每个节点中分布的任务总作业量趋近一致,使得所有节点的总执行时间一致,从而使系统总体运行效率达到最高。相较于专利CN108270837A提出的依赖预先设置的策略分配任务的方法和专利CN108205541A提出的基于优先级分配任务的方法,本专利利用遗传算法自动求解出了不同任务的最优调度组合,适用场景较之更广。相较于专利CN106648845A提出的基于FIFO的方式分配任务的方法,本专利在各个节点上分配的任务总数据量更趋近合理,系统执行效率更高。
附图说明
图1为本发明实施例1的基于遗传算法优化的封装类分布式作业任务调度方法的步骤流程图;
图2为本发明实施例1的种群中每个个体的编码原理示意图;
图3为本发明实施例1中不同个体之间的交叉方式示意图;
图4为本发明实施例1中个体变异方式示意图;
图5为本发明实施例2的基于遗传算法优化的封装类分布式作业任务调度方法的步骤流程图;
图6为本发明实施例3的基于遗传算法优化的封装类分布式作业任务调度方法的步骤流程图;
图7为本发明实施例4的基于遗传算法优化的封装类分布式作业任务调度方法的步骤流程图;
图8为本发明实施例5的基于遗传算法优化的封装类分布式作业任务调度系统结构示意图;
图9为本发明实施例6的基于遗传算法优化的封装类分布式作业任务调度系统结构示意图;
图10为本发明实验例1中本专利的方法及系统耗时与迭代次数关系示意图;
图11为本发明实验例1中本专利的方法及系统中每个节点所分配的作业总量示意图;
图12为本发明实验例1中FIFO调度算法中每个节点所分配的作业总量示意图;
图13为本发明实验例1中RR调度算法中每个节点所分配的作业总量示意图;
图14为本发明实验例1中PRIORITY调度算法中每个节点所分配的作业总量示意图;
图15为本发明实验例1中SJF调度算法中每个节点所分配的作业总量示意图。
具体实施方式
发明人在遗传算法的基础上对遗传算法的选择算子进行了部分改进,提出了一种基于遗传算法优化的封装类分布式作业任务调度方法及系统,将系统整体运行效率最优作为遗传算法优化的目标,使用各作业任务的每一种调度组合作为遗传空间的染色体,进行基因编码。利用遗传算法拥有全局搜索能力的特点,求解出对各作业任务的最优调度组合,使得所有执行节点分配的任务总数据量趋于合理,从而使系统整体运行效率接近最优。以下通过若干实施例详细说明,各实施例中将在同一节点执行的作业列为相同作业队列,各作业队列的集合设为作业队列池,作业队列池也称为个体,各个体的集合称为种群,以下不再赘述。
实施例1、本实施例的基于遗传算法优化的封装类分布式作业任务调度方法,参见图1所示,包括下列步骤:
S10、本步骤为初始步骤,读取所有作业数据量以及可独立执行的节点数量,为每个节点分配唯一的节点ID,以及为每个作业分配唯一的作业ID和执行节点。
更为具体的,上述独立执行节点数与并发数量相同。本实施例中创建了以下数据结构:作业队列:至少存储每个节点需要运行的作业编号;作业队列池:用于存储作业队列,根据设置的并发数量,定义作业队列的数量,每个作业队列对应一个节点执行。
采用符号编码法,将作业队列中每个作业的节点分配ID连续,作为个体编码,个体即作业队列池,个体的适应度值由作业队列池中耗时最长的队列所决定。种群中每个个体的编码原理示意图如图2所示,每个个体由一维的矩阵构成,矩阵的长度为所有作业的总数目。矩阵中的元素为对应位置的作业被分配执行的节点ID。通过优化不同作业被分配的执行节点,使所有节点的执行总耗时接近一致。
S11、构建当前种群,包括:
S111、选择算子子步骤。
需要说明的是遗传算法中,种群经过一次迭代(交叉、变异过程)后,需要将优势个体保留、劣势个体淘汰(选择过程),因此选择算子应位于交叉算子、变异算子之后,但是由于初代种群的生成为随机初始化的过程,为了加快遗传算法的进化速度,本实施例中将选择算子放置到交叉算子和变异算子的前面,这样保证了在种群发生交叉和变异过程前,种群经过选择算子后已经处于一个较优的状态,交叉和变异的个体选择时则无需考虑其个体的优劣,直接在当前种群中随机选择个体进行交叉、变异操作,从而简化了交叉和变异算子的过程。其中,交叉算子和变异算子在本质上都是属于增大样本多样性的操作,没有先后之分,本实施例中优选交叉算子在前,变异算子在后的方案。算法迭代开始前,针对已经初始化好的种群,挑选出其中最优个体作为全局最优个体,在每次迭代完成后,将当前种群中的最优个体与全局最优个体进行比较,更新全局最优个体,并将其复制后加入至种群中参与迭代,从而保证了每次迭代的过程中,全局最优个体始终朝着较优的方向进化,这样的操作称为精英保留。本实施例中在算法迭代的过程中加入了精英保留策略,加速算法向全局最优解的收敛。
本实施例中,为了简化选择算子的计算过程,采用确定式选择算子作为个体挑选方式,以优势个体与劣势个体为N:M的比例进行个体选择。N+M=100,N与M值的确定可根据实验结果进行观测调整,优选按照2:8原则进行确定。直接选择上一代种群中最优的N%的个体(即较优个体群),将其复制多份组成下一代种群中最优的M%的个体,将上一代种群中剩下的M%的个体(即较差个体群)中随机选取组成下一代种群中的N%的个体。这种选择方式降低了选择算子的时间复杂度,在下一代种群中较优和较差的个体均得到了保留,既保证了种群多样性,避免算法陷入局部最优,又提升了选择算子的效率。
S112、交叉算子子步骤。
为了简化运算,本实施例中选择单点交叉的方式进行交叉操作,不同个体之间的交叉方式如图3所示。由于在发生交叉前已经经过选择算子过程,此时种群已经处于一个较优的状态,因此交叉的个体的选择直接在当前种群中随机挑选个体进行交叉操作。设置交叉的次数为种群的大小,每次交叉时生成一个随机数,如果随机数小于给定的交叉概率值,则从种群中随机挑选出两个个体,根据作业ID随机选择一个作业,交换其在两个个体之间的节点ID,得到两个新的个体作为下一代种群中的个体。
S113、变异算子子步骤。
个体的变异方式如图4所示。同理,在发生变异前种群已经经过选择算子过程,变异个体的选择直接在当前种群中随机挑选个体。设置变异的总次数为种群大小,每次变异时生成一个随机数,如果其值小于给定的变异概率值,则从种群中随机挑选出一个个体,进行变异操作。变异操作如下:随机选择一个作业,将其对应位置上的节点ID替换为其它任意一个节点的ID。
S12、任务执行
具体是调度程序启动所有节点执行当前构建的种群中的所有作业队列池的所有作业队列。并且实时监控每个作业、作业队列的运行状态,由于数据在抽取转换的过程中由于网络环境等的变化,可能导致当前作业失败,因此针对每个作业提供了运行重试机会,默认3次,本实施例中所涉及到的作业均彼此独立,没有依赖关系,在执行的过程中,各个节点均相互独立执行,在保证系统高效、正确的运行的基础上,对于失败的作业,只需重新将其放入对应的作业队列的尾部即可,维护方便。
S13、获得适应度值
对于每个个体,定义适应度值函数为所有节点执行完毕所需的时间t,t值为队列池中所有队列实际运行完毕的时间,将t作为每个个体的适应度值。适应度值较小的个体作为较优个体。随着种群的进化,每代个体均相对于上代较优,最终求解出全局近似最优个体,将其作为所有作业的最佳分配方式。适应度函数公式如下:
t=max(tqueue);
其中,tqueue为队列池中每个队列运行完毕所消耗的时间;获取每一作业队列池中执行耗时最长的作业队列,以该作业队列的执行时长t作为该个体的适应度值。
S14、判断并迭代
判断是否达到最大迭代次数,如果未达到,则各个体携带其适应度值返回步骤S11重新构建下一代种群,选择算子依据个体携带的适应度值完成选择,交叉算子和变异算子也按上述完成操作;如果已达到,则转入步骤S15。
S15、输出
达到最大迭代次数时,输出适应度值最小(即最优)的个体及其适应度值。之后,可以此个体及其适应度值作为模型参考,构建其它种群和个体。
本实施例提出的调度方法,利用了遗传算法的全局搜索能力,计算出每个作业最佳分配执行节点,从而使所有的节点的总工作量接近一致,有效解决了多节点系统中由于不同节点工作量分布不均导致的资源闲置的问题。提高了系统的整体效率。
实施例2、本实施例的基于遗传算法优化的封装类分布式作业任务调度方法,参见图5所示,包括下列步骤:
S20、本步骤为初始步骤,读取所有作业数据量以及可独立执行的节点数量,为每个节点分配唯一的节点ID,以及为每个作业分配唯一的作业ID和执行节点。
更为具体的,上述独立执行节点数与并发数量相同。本实施例中创建了以下数据结构:作业队列:至少存储每个节点需要运行的作业编号;作业队列池:用于存储作业队列,根据设置的并发数量,定义作业队列的数量,每个作业队列对应一个节点执行。
采用符号编码法,将作业队列中每个作业的节点分配ID连续,作为个体编码,个体即作业队列池,个体的适应度值由作业队列池中耗时最长的队列所决定。种群中每个个体由一维的矩阵构成,矩阵的长度为所有作业的总数目。矩阵中的元素为对应位置的作业被分配执行的节点ID。通过优化不同作业被分配的执行节点,使所有节点的执行总耗时接近一致。
S21、构建当前种群,包括:
S211、选择算子子步骤。
需要说明的是遗传算法中,种群经过一次迭代(交叉、变异过程)后,需要将优势个体保留、劣势个体淘汰(选择过程),因此选择算子应位于交叉算子、变异算子之后,但是由于初代种群的生成为随机初始化的过程,为了加快遗传算法的进化速度,本实施例中将选择算子放置到交叉算子和变异算子的前面,这样保证了在种群发生交叉和变异过程前,种群经过选择算子后已经处于一个较优的状态,交叉和变异的个体选择时则无需考虑其个体的优劣,直接在当前种群中随机选择个体进行交叉、变异操作,从而简化了交叉和变异算子的过程。其中,交叉算子和变异算子在本质上都是属于增大样本多样性的操作,没有先后之分,本实施例中优选变异算子在前,交叉算子在后的方案。算法迭代开始前,针对已经初始化好的种群,挑选出其中最优个体作为全局最优个体,在每次迭代完成后,将当前种群中的最优个体与全局最优个体进行比较,更新全局最优个体,并将其复制后加入至种群中参与迭代,从而保证了每次迭代的过程中,全局最优个体始终朝着较优的方向进化,这样的操作称为精英保留。本实施例中在算法迭代的过程中加入了精英保留策略,加速算法向全局最优解的收敛。
本实施例中,为了简化选择算子的计算过程,采用确定式选择算子作为个体挑选方式,以优势个体与劣势个体为N:M的比例进行个体选择。N+M=100,N与M值的确定可根据实验结果进行观测调整,优选按照2:8原则进行确定。直接选择上一代种群中最优的N%的个体(即较优个体群),将其复制多份组成下一代种群中最优的M%的个体,将上一代种群中剩下的M%的个体(即较差个体群)中随机选取组成下一代种群中的N%的个体。这种选择方式降低了选择算子的时间复杂度,在下一代种群中较优和较差的个体均得到了保留,既保证了种群多样性,避免算法陷入局部最优,又提升了选择算子的效率。
S212、变异算子子步骤。
个体的变异方式同理,在发生变异前种群已经经过选择算子过程,变异个体的选择直接在当前种群中随机挑选个体。设置变异的总次数为种群大小,每次变异时生成一个随机数,如果其值小于给定的变异概率值,则从种群中随机挑选出一个个体,进行变异操作。变异操作如下:随机选择一个作业,将其对应位置上的节点ID替换为其它任意一个节点的ID。
S213、交叉算子子步骤。
为了简化运算,本实施例中选择单点交叉的方式进行交叉操作。由于在发生交叉前已经经过选择算子过程,此时种群已经处于一个较优的状态,因此交叉的个体的选择直接在当前种群中随机挑选个体进行交叉操作。设置交叉的次数为种群的大小,每次交叉时生成一个随机数,如果随机数小于给定的交叉概率值,则从种群中随机挑选出两个个体,根据作业ID随机选择一个作业,交换其在两个个体之间的节点ID,得到两个新的个体作为下一代种群中的个体。
S22、任务执行
具体是调度程序启动所有节点执行当前构建的种群中的所有作业队列池的所有作业队列。并且实时监控每个作业、作业队列的运行状态,由于数据在抽取转换的过程中由于网络环境等的变化,可能导致当前作业失败,因此针对每个作业提供了运行重试机会,默认3次,本实施例中所涉及到的作业均彼此独立,没有依赖关系,在执行的过程中,各个节点均相互独立执行,在保证系统高效、正确的运行的基础上,对于失败的作业,只需重新将其放入对应的作业队列的尾部即可,维护方便。
S23、获得适应度值
对于每个个体,定义适应度值函数为所有节点执行完毕所需的时间t,t值为队列池中所有队列实际运行完毕的时间,将t作为每个个体的适应度值。适应度值较小的个体作为较优个体。随着种群的进化,每代个体均相对于上代较优,最终求解出全局近似最优个体,将其作为所有作业的最佳分配方式。适应度函数公式如下:
t=max(tqueue);
其中,tqueue为队列池中每个队列运行完毕所消耗的时间;获取每一作业队列池中执行耗时最长的作业队列,以该作业队列的执行时长t作为该个体的适应度值。
S24、判断并迭代
判断是否达到最大迭代次数,如果未达到,则各个体携带其适应度值返回步骤S21重新构建下一代种群,选择算子依据个体携带的适应度值完成选择,交叉算子和变异算子也按上述完成操作;如果已达到,则转入步骤S25。
S25、输出
达到最大迭代次数时,输出适应度值最小(即最优)的个体及其适应度值。之后,可以此个体及其适应度值作为模型参考,构建其它种群和个体。
本实施例提出的调度方法,利用了遗传算法的全局搜索能力,计算出每个作业最佳分配执行节点,从而使所有的节点的总工作量接近一致,有效解决了多节点系统中由于不同节点工作量分布不均导致的资源闲置的问题。提高了系统的整体效率。
实施例3、本实施例的基于遗传算法优化的封装类分布式作业任务调度方法,参见图6所示,包括下列步骤:
S30、本步骤为初始步骤,读取所有作业数据量以及可独立执行的节点数量,为每个节点分配唯一的节点ID,以及为每个作业分配唯一的作业ID和执行节点。
更为具体的,上述独立执行节点数与并发数量相同。本实施例中创建了以下数据结构:作业队列:至少存储每个节点需要运行的作业编号;作业队列池:用于存储作业队列,根据设置的并发数量,定义作业队列的数量,每个作业队列对应一个节点执行。
采用符号编码法,将作业队列中每个作业的节点分配ID连续,作为个体编码,个体即作业队列池,个体的适应度值由作业队列池中耗时最长的队列所决定。种群中每个个体由一维的矩阵构成,矩阵的长度为所有作业的总数目。矩阵中的元素为对应位置的作业被分配执行的节点ID。通过优化不同作业被分配的执行节点,使所有节点的执行总耗时接近一致。
S31、构建当前种群,包括:
S311、选择算子子步骤。
需要说明的是遗传算法中,种群经过一次迭代后,需要将优势个体保留、劣势个体淘汰(选择过程),因此选择算子应位于交叉算子之后,但是由于初代种群的生成为随机初始化的过程,为了加快遗传算法的进化速度,本实施例中将选择算子放置到交叉算子的前面,这样保证了在种群发生交叉过程前,种群经过选择算子后已经处于一个较优的状态,交叉的个体选择时则无需考虑其个体的优劣,直接在当前种群中随机选择个体进行交叉操作,从而简化了交叉算子的过程。算法迭代开始前,针对已经初始化好的种群,挑选出其中最优个体作为全局最优个体,在每次迭代完成后,将当前种群中的最优个体与全局最优个体进行比较,更新全局最优个体,并将其复制后加入至种群中参与迭代,从而保证了每次迭代的过程中,全局最优个体始终朝着较优的方向进化,这样的操作称为精英保留。本实施例中在算法迭代的过程中加入了精英保留策略,加速算法向全局最优解的收敛。
本实施例中,为了简化选择算子的计算过程,采用确定式选择算子作为个体挑选方式,以优势个体与劣势个体为N:M的比例进行个体选择。N+M=100,N与M值的确定可根据实验结果进行观测调整,优选按照2:8原则进行确定。直接选择上一代种群中最优的N%的个体(即较优个体群),将其复制多份组成下一代种群中最优的M%的个体,将上一代种群中剩下的M%的个体(即较差个体群)中随机选取组成下一代种群中的N%的个体。这种选择方式降低了选择算子的时间复杂度,在下一代种群中较优和较差的个体均得到了保留,既保证了种群多样性,避免算法陷入局部最优,又提升了选择算子的效率。
S312、交叉算子子步骤。
为了简化运算,本实施例中选择单点交叉的方式进行交叉操作。由于在发生交叉前已经经过选择算子过程,此时种群已经处于一个较优的状态,因此交叉的个体的选择直接在当前种群中随机挑选个体进行交叉操作。设置交叉的次数为种群的大小,每次交叉时生成一个随机数,如果随机数小于给定的交叉概率值,则从种群中随机挑选出两个个体,根据作业ID随机选择一个作业,交换其在两个个体之间的节点ID,得到两个新的个体作为下一代种群中的个体。
S32、任务执行
具体是调度程序启动所有节点执行当前构建的种群中的所有作业队列池的所有作业队列。并且实时监控每个作业、作业队列的运行状态,由于数据在抽取转换的过程中由于网络环境等的变化,可能导致当前作业失败,因此针对每个作业提供了运行重试机会,默认3次,本实施例中所涉及到的作业均彼此独立,没有依赖关系,在执行的过程中,各个节点均相互独立执行,在保证系统高效、正确的运行的基础上,对于失败的作业,只需重新将其放入对应的作业队列的尾部即可,维护方便。
S33、获得适应度值
对于每个个体,定义适应度值函数为所有节点执行完毕所需的时间t,t值为队列池中所有队列实际运行完毕的时间,将t作为每个个体的适应度值。适应度值较小的个体作为较优个体。随着种群的进化,每代个体均相对于上代较优,最终求解出全局近似最优个体,将其作为所有作业的最佳分配方式。适应度函数公式如下:
t=max(tqueue);
其中,tqueue为队列池中每个队列运行完毕所消耗的时间;获取每一作业队列池中执行耗时最长的作业队列,以该作业队列的执行时长t作为该个体的适应度值。
S34、判断并迭代
判断是否达到最大迭代次数,如果未达到,则各个体携带其适应度值返回步骤S31重新构建下一代种群,选择算子依据个体携带的适应度值完成选择,交叉算子也按上述完成操作;如果已达到,则转入步骤S35。
S35、输出
达到最大迭代次数时,输出适应度值最小(即最优)的个体及其适应度值。之后,可以此个体及其适应度值作为模型参考,构建其它种群和个体。
本实施例提出的调度方法,利用了遗传算法的全局搜索能力,计算出每个作业最佳分配执行节点,从而使所有的节点的总工作量接近一致,有效解决了多节点系统中由于不同节点工作量分布不均导致的资源闲置的问题。提高了系统的整体效率。
实施例4、本实施例的基于遗传算法优化的封装类分布式作业任务调度方法,参见图7所示,包括下列步骤:
S40、本步骤为初始步骤,读取所有作业数据量以及可独立执行的节点数量,为每个节点分配唯一的节点ID,以及为每个作业分配唯一的作业ID和执行节点。
更为具体的,上述独立执行节点数与并发数量相同。本实施例中创建了以下数据结构:作业队列:至少存储每个节点需要运行的作业编号;作业队列池:用于存储作业队列,根据设置的并发数量,定义作业队列的数量,每个作业队列对应一个节点执行。
采用符号编码法,将作业队列中每个作业的节点分配ID连续,作为个体编码,个体即作业队列池,个体的适应度值由作业队列池中耗时最长的队列所决定。种群中每个个体由一维的矩阵构成,矩阵的长度为所有作业的总数目。矩阵中的元素为对应位置的作业被分配执行的节点ID。通过优化不同作业被分配的执行节点,使所有节点的执行总耗时接近一致。
S41、构建当前种群,包括:
S411、选择算子子步骤。
需要说明的是遗传算法中,种群经过一次迭代后,需要将优势个体保留、劣势个体淘汰(选择过程),因此选择算子应位于变异算子之后,但是由于初代种群的生成为随机初始化的过程,为了加快遗传算法的进化速度,本实施例中将选择算子放置到变异算子的前面,这样保证了在种群发生变异过程前,种群经过选择算子后已经处于一个较优的状态,变异的个体选择时则无需考虑其个体的优劣,直接在当前种群中随机选择个体进行变异操作,从而简化了变异算子的过程。算法迭代开始前,针对已经初始化好的种群,挑选出其中最优个体作为全局最优个体,在每次迭代完成后,将当前种群中的最优个体与全局最优个体进行比较,更新全局最优个体,并将其复制后加入至种群中参与迭代,从而保证了每次迭代的过程中,全局最优个体始终朝着较优的方向进化,这样的操作称为精英保留。本实施例中在算法迭代的过程中加入了精英保留策略,加速算法向全局最优解的收敛。
本实施例中,为了简化选择算子的计算过程,采用确定式选择算子作为个体挑选方式,以优势个体与劣势个体为N:M的比例进行个体选择。N+M=100,N与M值的确定可根据实验结果进行观测调整,优选按照2:8原则进行确定。直接选择上一代种群中最优的N%的个体(即较优个体群),将其复制多份组成下一代种群中最优的M%的个体,将上一代种群中剩下的M%的个体(即较差个体群)中随机选取组成下一代种群中的N%的个体。这种选择方式降低了选择算子的时间复杂度,在下一代种群中较优和较差的个体均得到了保留,既保证了种群多样性,避免算法陷入局部最优,又提升了选择算子的效率。
S412、变异算子子步骤。
个体的变异方式同理,在发生变异前种群已经经过选择算子过程,变异个体的选择直接在当前种群中随机挑选个体。设置变异的总次数为种群大小,每次变异时生成一个随机数,如果其值小于给定的变异概率值,则从种群中随机挑选出一个个体,进行变异操作。变异操作如下:随机选择一个作业,将其对应位置上的节点ID替换为其它任意一个节点的ID。
S42、任务执行
具体是调度程序启动所有节点执行当前构建的种群中的所有作业队列池的所有作业队列。并且实时监控每个作业、作业队列的运行状态,由于数据在抽取转换的过程中由于网络环境等的变化,可能导致当前作业失败,因此针对每个作业提供了运行重试机会,默认3次,本实施例中所涉及到的作业均彼此独立,没有依赖关系,在执行的过程中,各个节点均相互独立执行,在保证系统高效、正确的运行的基础上,对于失败的作业,只需重新将其放入对应的作业队列的尾部即可,维护方便。
S43、获得适应度值
对于每个个体,定义适应度值函数为所有节点执行完毕所需的时间t,t值为队列池中所有队列实际运行完毕的时间,将t作为每个个体的适应度值。适应度值较小的个体作为较优个体。随着种群的进化,每代个体均相对于上代较优,最终求解出全局近似最优个体,将其作为所有作业的最佳分配方式。适应度函数公式如下:
t=max(tqueue);
其中,tqueue为队列池中每个队列运行完毕所消耗的时间;获取每一作业队列池中执行耗时最长的作业队列,以该作业队列的执行时长t作为该个体的适应度值。
S44、判断并迭代
判断是否达到最大迭代次数,如果未达到,则各个体携带其适应度值返回步骤S41重新构建下一代种群,选择算子依据个体携带的适应度值完成选择,变异算子也按上述完成操作;如果已达到,则转入步骤S45。
S45、输出
达到最大迭代次数时,输出适应度值最小(即最优)的个体及其适应度值。之后,可以此个体及其适应度值作为模型参考,构建其它种群和个体。
本实施例提出的调度方法,利用了遗传算法的全局搜索能力,计算出每个作业最佳分配执行节点,从而使所有的节点的总工作量接近一致,有效解决了多节点系统中由于不同节点工作量分布不均导致的资源闲置的问题。提高了系统的整体效率。
实施例5、本实施例的一种基于遗传算法优化的封装类分布式作业任务调度系统,参见图8所示,包括:初始化模块50、构建当前种群模块51、任务执行模块52、获得适应度值模块53、迭代模块54、输出模块55,其中构建当前种群模块51中包括选择算子子模块511、交叉算子子模块512和变异算子子模块513。
初始化模块50,用于读取所有作业数据量以及可独立执行的节点数量,为每个节点分配唯一的节点ID,以及为每个作业分配唯一的作业ID和执行节点。更为具体的,上述独立执行节点数与并发数量相同。本实施例中创建了以下数据结构:作业队列:至少存储每个节点需要运行的作业编号;作业队列池:用于存储作业队列,根据设置的并发数量,定义作业队列的数量,每个作业队列对应一个节点执行。采用符号编码法,将作业队列中每个作业的节点分配ID连续,作为个体编码,个体即作业队列池,个体的适应度值由作业队列池中耗时最长的队列所决定。种群中每个个体由一维的矩阵构成,矩阵的长度为所有作业的总数目。矩阵中的元素为对应位置的作业被分配执行的节点ID。通过优化不同作业被分配的执行节点,使所有节点的执行总耗时接近一致。
对于构建当前种群模块51需要说明的是遗传算法中,种群经过一次迭代(交叉、变异过程)后,需要将优势个体保留、劣势个体淘汰(选择过程),因此选择算子子模块511应位于交叉算子子模块512、变异算子子模块513之后,但是由于初代种群的生成为随机初始化的过程,为了加快遗传算法的进化速度,本实施例中将选择算子子模块511放置到交叉算子子模块512和变异算子子模块513的前面,这样保证了在种群发生交叉和变异过程前,种群经过选择算子后已经处于一个较优的状态,交叉和变异的个体选择时则无需考虑其个体的优劣,直接在当前种群中随机选择个体进行交叉、变异操作,从而简化了交叉和变异算子的过程。其中,交叉算子子模块512和变异算子子模块513在本质上都是属于增大样本多样性的操作模块,没有先后之分,本实施例中优选交叉算子子模块512在前,变异算子子模块513在后的方案。算法迭代开始前,针对已经初始化好的种群,挑选出其中最优个体作为全局最优个体,在每次迭代完成后,将当前种群中的最优个体与全局最优个体进行比较,更新全局最优个体,并将其复制后加入至种群中参与迭代,从而保证了每次迭代的过程中,全局最优个体始终朝着较优的方向进化,这样的操作称为精英保留。本实施例中在算法迭代的过程中加入了精英保留策略,加速算法向全局最优解的收敛。
本实施例中,为了简化选择算子子模块511的计算过程,采用确定式选择算子作为个体挑选方式,以优势个体与劣势个体为N:M的比例进行个体选择。N+M=100,N与M值的确定可根据实验结果进行观测调整,优选按照2:8原则进行确定。直接选择上一代种群中最优的N%的个体(即较优个体群),将其复制多份组成下一代种群中最优的M%的个体,将上一代种群中剩下的M%的个体(即较差个体群)中随机选取组成下一代种群中的N%的个体。这种选择方式降低了选择算子的时间复杂度,在下一代种群中较优和较差的个体均得到了保留,既保证了种群多样性,避免算法陷入局部最优,又提升了选择算子的效率。
为了简化运算,本实施例中交叉算子子模块512采用单点交叉的方式进行交叉操作。由于在发生交叉前已经经过选择算子过程,此时种群已经处于一个较优的状态,因此交叉的个体的选择直接在当前种群中随机挑选个体进行交叉操作。设置交叉的次数为种群的大小,每次交叉时生成一个随机数,如果随机数小于给定的交叉概率值,则从种群中随机挑选出两个个体,根据作业ID随机选择一个作业,交换其在两个个体之间的节点ID,得到两个新的个体作为下一代种群中的个体。
同理,在发生变异前种群已经经过选择算子过程,变异算子子模块513直接在当前种群中随机挑选个体。设置变异的总次数为种群大小,每次变异时生成一个随机数,如果其值小于给定的变异概率值,则从种群中随机挑选出一个个体,进行变异操作。变异操作如下:随机选择一个作业,将其对应位置上的节点ID替换为其它任意一个节点的ID。
任务执行模块52调度程序启动所有节点执行当前构建的种群中的所有作业队列池的所有作业队列。并且实时监控每个作业、作业队列的运行状态,由于数据在抽取转换的过程中由于网络环境等的变化,可能导致当前作业失败,因此针对每个作业提供了运行重试机会,默认3次,本实施例中所涉及到的作业均彼此独立,没有依赖关系,在执行的过程中,各个节点均相互独立执行,在保证系统高效、正确的运行的基础上,对于失败的作业,只需重新将其放入对应的作业队列的尾部即可,维护方便。
对于每个个体,定义适应度值函数为所有节点执行完毕所需的时间t,t值为队列池中所有队列实际运行完毕的时间,将t作为每个个体的适应度值。适应度值较小的个体作为较优个体。随着种群的进化,每代个体均相对于上代较优,最终求解出全局近似最优个体,将其作为所有作业的最佳分配方式。适应度函数公式如下:
t=max(tqueue);
其中,tqueue为队列池中每个队列运行完毕所消耗的时间;获得适应度值模块53获取每一作业队列池中执行耗时最长的作业队列,以该作业队列的执行时长t作为该个体的适应度值。
迭代模块54判断是否达到最大迭代次数,如果未达到,则各个体携带其适应度值返回构建当前种群模块51重新构建下一代种群,选择算子子模块511依据个体携带的适应度值完成选择,交叉算子子模块512和变异算子子模块513也按上述完成操作;如果已达到,则转入输出模块55。
输出模块55输出适应度值最小(即最优)的个体及其适应度值。之后,可以此个体及其适应度值作为模型参考,构建其它种群和个体。
本实施例提出的调度方法,利用了遗传算法的全局搜索能力,计算出每个作业最佳分配执行节点,从而使所有的节点的总工作量接近一致,有效解决了多节点系统中由于不同节点工作量分布不均导致的资源闲置的问题。提高了系统的整体效率。
实施例6、本实施例的一种基于遗传算法优化的封装类分布式作业任务调度系统,参见图9所示,包括:初始化模块60、构建当前种群模块61、任务执行模块62、获得适应度值模块63、迭代模块64、输出模块65,其中构建当前种群模块61中包括选择算子子模块611和交叉算子子模块612。
初始化模块60,用于读取所有作业数据量以及可独立执行的节点数量,为每个节点分配唯一的节点ID,以及为每个作业分配唯一的作业ID和执行节点。更为具体的,上述独立执行节点数与并发数量相同。本实施例中创建了以下数据结构:作业队列:至少存储每个节点需要运行的作业编号;作业队列池:用于存储作业队列,根据设置的并发数量,定义作业队列的数量,每个作业队列对应一个节点执行。采用符号编码法,将作业队列中每个作业的节点分配ID连续,作为个体编码,个体即作业队列池,个体的适应度值由作业队列池中耗时最长的队列所决定。种群中每个个体由一维的矩阵构成,矩阵的长度为所有作业的总数目。矩阵中的元素为对应位置的作业被分配执行的节点ID。通过优化不同作业被分配的执行节点,使所有节点的执行总耗时接近一致。
对于构建当前种群模块61需要说明的是遗传算法中,种群经过一次迭代后,需要将优势个体保留、劣势个体淘汰(选择过程),因此选择算子子模块611应位于交叉算子子模块612之后,但是由于初代种群的生成为随机初始化的过程,为了加快遗传算法的进化速度,本实施例中将选择算子子模块611放置到交叉算子子模块612的前面,这样保证了在种群发生交叉过程前,种群经过选择算子后已经处于一个较优的状态,交叉的个体选择时则无需考虑其个体的优劣,直接在当前种群中随机选择个体进行交叉操作,从而简化了交叉算子子模块612的计算过程。算法迭代开始前,针对已经初始化好的种群,挑选出其中最优个体作为全局最优个体,在每次迭代完成后,将当前种群中的最优个体与全局最优个体进行比较,更新全局最优个体,并将其复制后加入至种群中参与迭代,从而保证了每次迭代的过程中,全局最优个体始终朝着较优的方向进化,这样的操作称为精英保留。本实施例中在算法迭代的过程中加入了精英保留策略,加速算法向全局最优解的收敛。
本实施例中,为了简化选择算子子模块611的计算过程,采用确定式选择算子作为个体挑选方式,以优势个体与劣势个体为N:M的比例进行个体选择。N+M=100,N与M值的确定可根据实验结果进行观测调整,优选按照2:8原则进行确定。直接选择上一代种群中最优的N%的个体(即较优个体群),将其复制多份组成下一代种群中最优的M%的个体,将上一代种群中剩下的M%的个体(即较差个体群)中随机选取组成下一代种群中的N%的个体。这种选择方式降低了选择算子的时间复杂度,在下一代种群中较优和较差的个体均得到了保留,既保证了种群多样性,避免算法陷入局部最优,又提升了选择算子的效率。
为了简化运算,本实施例中交叉算子子模块612采用单点交叉的方式进行交叉操作。由于在发生交叉前已经经过选择算子过程,此时种群已经处于一个较优的状态,因此交叉的个体的选择直接在当前种群中随机挑选个体进行交叉操作。设置交叉的次数为种群的大小,每次交叉时生成一个随机数,如果随机数小于给定的交叉概率值,则从种群中随机挑选出两个个体,根据作业ID随机选择一个作业,交换其在两个个体之间的节点ID,得到两个新的个体作为下一代种群中的个体。
任务执行模块62调度程序启动所有节点执行当前构建的种群中的所有作业队列池的所有作业队列。并且实时监控每个作业、作业队列的运行状态,由于数据在抽取转换的过程中由于网络环境等的变化,可能导致当前作业失败,因此针对每个作业提供了运行重试机会,默认3次,本实施例中所涉及到的作业均彼此独立,没有依赖关系,在执行的过程中,各个节点均相互独立执行,在保证系统高效、正确的运行的基础上,对于失败的作业,只需重新将其放入对应的作业队列的尾部即可,维护方便。
对于每个个体,定义适应度值函数为所有节点执行完毕所需的时间t,t值为队列池中所有队列实际运行完毕的时间,将t作为每个个体的适应度值。适应度值较小的个体作为较优个体。随着种群的进化,每代个体均相对于上代较优,最终求解出全局近似最优个体,将其作为所有作业的最佳分配方式。适应度函数公式如下:
t=max(tqueue);
其中,tqueue为队列池中每个队列运行完毕所消耗的时间;获得适应度值模块63获取每一作业队列池中执行耗时最长的作业队列,以该作业队列的执行时长t作为该个体的适应度值。
迭代模块64判断是否达到最大迭代次数,如果未达到,则各个体携带其适应度值返回构建当前种群模块61重新构建下一代种群,选择算子子模块611依据个体携带的适应度值完成选择,交叉算子子模块612也按上述完成操作;如果已达到,则转入输出模块65。
输出模块65输出适应度值最小(即最优)的个体及其适应度值。之后,可以此个体及其适应度值作为模型参考,构建其它种群和个体。
本实施例提出的调度方法,利用了遗传算法的全局搜索能力,计算出每个作业最佳分配执行节点,从而使所有的节点的总工作量接近一致,有效解决了多节点系统中由于不同节点工作量分布不均导致的资源闲置的问题。提高了系统的整体效率。
上述实施例7、8还可变为构建当前种群模块中包括选择算子子模块、交叉算子子模块和变异算子子模,变异算子子模在交叉算子子模块之前的方案;以及构建当前种群模块中包括选择算子子模块和变异算子子模的方案。在此不再赘述,都应在本专利保护范围之内。
实验例1,进一步论证本专利的调度方法和系统的可行性及技术效果。与现有技术相比,本发明提出的技术方案中提供了作业的最优分配方式,与传统的调度方法相比,该方法可以有效缓解由于作业量分布不均匀导致系统运行效率较低的问题,并且保证了数据的完整性,降低了系统出错的可能性,下面是针对12个测试文本,分别使用先进先出调度(FIFO)、短作业优先调度(SJF)、时间片轮转调度(RR)、优先级调度(PRIORITY)以及基于遗传算法优化的调度方法进行实验,其中优先级调度算法设定以任务数据量最大为优先级,实验条件及结果如下:
实验条件:数据抽取作业任务,将统计以下12个文本文件中所有英文字符的数量(总数据量为5630412行)。将统计每个文件的所有英文字符的数量作业封装为一个作业任务,分别使用FIFO、SJF、RR、PRIORITY和基于遗传算法优化的调度方法进行调度,使用4个进程模拟4个节点。记录所有任务执行完毕耗时情况,以及各执行节点执行任务的总数据量。
实验环境:
12个文本的数据总量为5630412行,分布如下:
表名 | 数据量 |
text1 | 840360 |
text2 | 84036 |
text3 | 504216 |
text4 | 84036 |
text5 | 252108 |
text6 | 168072 |
text7 | 756324 |
text8 | 84036 |
text9 | 336144 |
text10 | 672288 |
text11 | 1344576 |
text12 | 504216 |
总作业耗时(3次测试取均值):
单位:秒
本专利的方法及系统耗时与迭代次数关系示意图,参见图10所示。
本专利的方法及系统中每个节点所分配的作业总量示意图,参见图11所示。
FIFO调度算法中每个节点所分配的作业总量示意图,参见图12所示。
RR调度算法中每个节点所分配的作业总量示意图,参见图13所示。
PRIORITY调度算法中每个节点所分配的作业总量示意图,参见图14所示。
SJF调度算法中每个节点所分配的作业总量示意图,参见图15所示。
从总作业耗时结果中可以看出,基于遗传算法的作业调度方法明显优于普通作业调度方法,与FIFO调度算法相比,其总运行效率提升33.2%,与SJF调度算法相比,其总运行效率提升32.2%,与RR调度算法相比,其总运行效率提升了28.8%,与PRIORITY调度算法相比,其总运行效率提升了12.3%,。从每个节点所分配的作业总数据量示意图中可以看出,使用遗传算法的调度方法每个节点处理的数据量相对较均衡,而FIFO和SJF调度算法则出现了节点作业总数据量分布不均的情况,RR调度算法中所有节点的总作业数据量分布均衡,但是由于需要在不同节点之间切换作业任务产生了切换开销,系统整体运行效率下降。由此可见,相较于普通的分布式调度算法,本发明提出的调度算法提升了系统的整体运行效率。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (13)
1.一种基于遗传算法优化的封装类分布式作业任务调度方法,将在同一节点执行的作业列为相同作业队列,各作业队列的集合设为作业队列池,所述作业队列池称为个体,各个体的集合称为种群,其特征在于,包括下列步骤:
初始步骤:读取所有作业数据量以及可独立执行的节点数量,为每个节点分配唯一的节点ID,以及为每个作业分配唯一的作业ID和执行节点;
构建当前种群的步骤:包括选择算子,还包括采用交叉算子、变异算子之一或组合;
任务执行的步骤:启动所有节点,执行所述当前构建的种群中的所有作业队列池的所有作业队列;
获得适应度值的步骤:获取每一作业队列池中执行耗时最长的作业队列,以该作业队列的执行时长作为该个体的适应度值;
迭代步骤:各个体携带其适应度值返回所述构建当前种群的步骤,其中所述选择算子依据所述适应度值完成选择;
输出步骤:达到最大迭代次数时,输出适应度值最小的个体及其适应度值;
所述的选择算子具体包括:对所述返回个体的适应度值排序,按由小到大的顺序读取返回个体数量N%的个体形成较优个体群,以及按由大到小的顺序读取返回个体数量M%的个体形成较差个体群;将所述较优个体群成倍复制,使复制后的较优个体数量达到M%,以及从所述较差个体群中随机选取个体,使选取的较差个体数量达到N%,集合形成优选种群;所述N%+M%=100%。
2.如权利要求1所述的基于遗传算法优化的封装类分布式作业任务调度方法,其特征在于,所述N%=20%,所述M%=80%。
3.如权利要求1所述的基于遗传算法优化的封装类分布式作业任务调度方法,其特征在于,所述交叉算子具体包括:从所述优选种群中随机挑选两个个体,根据作业ID从被选择的两个个体中随机选择一个相同的作业,交换该作业在所述两个个体中的节点ID,完成一次交叉操作。
4.如权利要求3所述的基于遗传算法优化的封装类分布式作业任务调度方法,其特征在于,设置交叉操作的次数为种群的大小,每次交叉操作时生成一个随机数,如果随机数小于给定的交叉概率值,则再进行一次交叉操作。
5.如权利要求1所述的基于遗传算法优化的封装类分布式作业任务调度方法,其特征在于,所述变异算子具体包括:从所述优选种群中随机选择一个作业,将该作业分配的节点ID替换为其它任意一个节点ID,完成一次变异操作。
6.如权利要求5所述的基于遗传算法优化的封装类分布式作业任务调度方法,其特征在于,设置变异操作的次数为种群大小,每次变异操作时生成一个随机数,如果随机数小于给定的变异概率值,则再进行一次变异操作。
7.如权利要求1所述的基于遗传算法优化的封装类分布式作业任务调度方法,其特征在于,所述任务执行的步骤中还包括:如果当前作业执行失败,则将其加入到所属作业队列的尾部。
8.一种基于遗传算法优化的封装类分布式作业任务调度系统,将在同一节点执行的作业列为相同作业队列,各作业队列的集合设为作业队列池,所述作业队列池称为个体,各个体的集合称为种群,其特征在于,包括:
初始化模块,用于读取所有作业数据量以及可独立执行的节点数量,为每个节点分配唯一的节点ID,以及为每个作业分配唯一的作业ID和执行节点;
构建当前种群模块,用于构建当前一代的种群,包括选择算子子模块,还包括采用交叉算子子模块、变异算子子模块之一或组合;
任务执行模块,用于启动所有节点,执行所述当前构建的种群中的所有作业队列池的所有作业队列;
获得适应度值模块,用于获取每一作业队列池中执行耗时最长的作业队列,以该作业队列的执行时长作为该个体的适应度值;
迭代模块,用于将各个体携带其适应度值返回给所述构建当前种群模块,其中所述选择算子子模块依据所述适应度值完成选择;
输出模块,用于在达到最大迭代次数时,输出适应度值最小的个体及其适应度值,
所述的选择算子子模块对所述返回个体的适应度值排序,按由小到大的顺序读取返回个体数量N%的个体形成较优个体群,以及按由大到小的顺序读取返回个体数量M%的个体形成较差个体群;将所述较优个体群成倍复制,使复制后的较优个体数量达到M%,以及从所述较差个体群中随机选取个体,使选取的较差个体数量达到N%,集合形成优选种群;所述N%+M%=100%。
9.如权利要求8所述的基于遗传算法优化的封装类分布式作业任务调度系统,其特征在于,所述交叉算子子模块从所述优选种群中随机挑选两个个体,根据作业ID从被选择的两个个体中随机选择一个相同的作业,交换该作业在所述两个个体中的节点ID,完成一次交叉操作。
10.如权利要求9所述的基于遗传算法优化的封装类分布式作业任务调度系统,其特征在于,设置交叉操作的次数为种群的大小,每次交叉操作时生成一个随机数,如果随机数小于给定的交叉概率值,则所述交叉算子子模块再进行一次交叉操作。
11.如权利要求8所述的基于遗传算法优化的封装类分布式作业任务调度系统,其特征在于,所述变异算子子模块从所述优选种群中随机选择一个作业,将该作业分配的节点ID替换为其它任意一个节点ID,完成一次变异操作。
12.如权利要求11所述的基于遗传算法优化的封装类分布式作业任务调度系统,其特征在于,设置变异操作的次数为种群大小,每次变异操作时生成一个随机数,如果随机数小于给定的变异概率值,则所述变异算子子模块再进行一次变异操作。
13.如权利要求8所述的基于遗传算法优化的封装类分布式作业任务调度系统,其特征在于,所述任务执行模块中,如果当前作业执行失败,则将其加入到所属作业队列的尾部。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911058747.1A CN110908782B (zh) | 2019-11-01 | 2019-11-01 | 一种基于遗传算法优化的封装类分布式作业任务调度方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911058747.1A CN110908782B (zh) | 2019-11-01 | 2019-11-01 | 一种基于遗传算法优化的封装类分布式作业任务调度方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110908782A CN110908782A (zh) | 2020-03-24 |
CN110908782B true CN110908782B (zh) | 2022-08-19 |
Family
ID=69816159
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911058747.1A Active CN110908782B (zh) | 2019-11-01 | 2019-11-01 | 一种基于遗传算法优化的封装类分布式作业任务调度方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110908782B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112181613B (zh) * | 2020-09-09 | 2023-02-17 | 国家计算机网络与信息安全管理中心 | 异构资源分布式计算平台批量任务调度方法及存储介质 |
CN111984426B (zh) * | 2020-10-09 | 2023-07-25 | 中国平安人寿保险股份有限公司 | 任务调度方法、装置、电子设备及存储介质 |
CN112328380B (zh) * | 2020-11-10 | 2024-06-25 | 武汉理工大学 | 一种基于异构计算的任务调度方法及装置 |
CN113448705B (zh) * | 2021-06-25 | 2023-03-28 | 皖西学院 | 一种不平衡作业调度算法 |
CN113592257B (zh) * | 2021-07-14 | 2024-03-29 | 交通银行股份有限公司 | 一种集中作业任务调度方法 |
CN115858087B (zh) * | 2022-11-08 | 2023-07-18 | 瀚博创芯半导体(成都)有限公司 | 在云计算系统中部署多个进程的方法、装置、设备及介质 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7668788B2 (en) * | 2005-06-06 | 2010-02-23 | Wren William E | Resource assignment optimization using direct encoding and genetic algorithms |
CN101630380A (zh) * | 2009-07-08 | 2010-01-20 | 西安电子科技大学 | 基于多种群进化机制的作业车间调度方法 |
CN102508708B (zh) * | 2011-11-30 | 2014-04-23 | 湖南大学 | 基于改进遗传算法的异构多核节能任务调度方法 |
CN104869154A (zh) * | 2015-04-27 | 2015-08-26 | 江务学 | 统筹资源可信度与用户满意度的分布式资源调度方法 |
CN106648845A (zh) * | 2016-09-23 | 2017-05-10 | 努比亚技术有限公司 | 一种分布式任务调度系统及方法 |
CN108205541B (zh) * | 2016-12-16 | 2020-12-04 | 北大方正集团有限公司 | 分布式网络爬虫任务的调度方法及装置 |
CN108270837B (zh) * | 2017-01-04 | 2021-04-30 | 北京京东尚科信息技术有限公司 | 一种利用闲置资源的分布式任务调度方法及系统 |
CN110389819B (zh) * | 2019-06-24 | 2022-06-21 | 华中科技大学 | 一种计算密集型批处理任务的调度方法和系统 |
-
2019
- 2019-11-01 CN CN201911058747.1A patent/CN110908782B/zh active Active
Non-Patent Citations (3)
Title |
---|
一种基于混合概率选择算子的改进遗传算法;赵鑫宁等;《成都信息工程大学学报》;20160615;第31卷(第03期);247-254 * |
求解作业车间调度问题的改进自适应遗传算法;王万良等;《系统工程理论与实践》;20040225(第2期);58-62 * |
车间调度问题及其进化算法分析;苏子林;《机械工程学报》;20080815;第44卷(第08期);242-247 * |
Also Published As
Publication number | Publication date |
---|---|
CN110908782A (zh) | 2020-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110908782B (zh) | 一种基于遗传算法优化的封装类分布式作业任务调度方法及系统 | |
Muthuvelu et al. | A dynamic job grouping-based scheduling for deploying applications with fine-grained tasks on global grids | |
El-Rewini et al. | Scheduling parallel program tasks onto arbitrary target machines | |
US8185908B2 (en) | Dynamic scheduling in a distributed environment | |
Page et al. | Dynamic task scheduling using genetic algorithms for heterogeneous distributed computing | |
US8434085B2 (en) | Scalable scheduling of tasks in heterogeneous systems | |
Page et al. | Framework for task scheduling in heterogeneous distributed computing using genetic algorithms | |
CN111381950A (zh) | 一种面向边缘计算环境基于多副本的任务调度方法和系统 | |
CN109857535B (zh) | 面向Spark JDBC的任务优先级控制的实现方法及装置 | |
CN1643499A (zh) | 在多线程网络处理器中的线程信令 | |
Pollard et al. | Evaluation of an interference-free node allocation policy on fat-tree clusters | |
CN112148468B (zh) | 一种资源调度方法、装置、电子设备及存储介质 | |
CN113886034A (zh) | 任务调度方法、系统、电子设备及存储介质 | |
CN111343288B (zh) | 作业调度方法、系统及计算设备 | |
US8028291B2 (en) | Method and computer program product for job selection and resource allocation of a massively parallel processor | |
Zhong et al. | Speeding up Paulson’s procedure for large-scale problems using parallel computing | |
CN116932201A (zh) | 一种面向深度学习训练任务的多资源共享调度方法 | |
CA2631255A1 (en) | Scalable scheduling of tasks in heterogeneous systems | |
Stavrinides et al. | The impact of input error on the scheduling of task graphs with imprecise computations in heterogeneous distributed real-time systems | |
CN113094179B (zh) | 作业分配方法、装置、电子设备及可读存储介质 | |
US7460544B2 (en) | Flexible mesh structure for hierarchical scheduling | |
Barbosa et al. | Dynamic job scheduling on heterogeneous clusters | |
CN116010051A (zh) | 一种联邦学习多任务调度方法及装置 | |
Wang et al. | An efficient framework for online virtual network embedding in virtualized cloud data centers | |
RU2296362C1 (ru) | Способ обслуживания разноприоритетных запросов пользователей вычислительной системы |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |