CN114691370A - 一种基于遗传算法的任务分配方法和装置 - Google Patents
一种基于遗传算法的任务分配方法和装置 Download PDFInfo
- Publication number
- CN114691370A CN114691370A CN202210348803.0A CN202210348803A CN114691370A CN 114691370 A CN114691370 A CN 114691370A CN 202210348803 A CN202210348803 A CN 202210348803A CN 114691370 A CN114691370 A CN 114691370A
- Authority
- CN
- China
- Prior art keywords
- chromosome
- code
- task
- server
- fitness
- 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.)
- Pending
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/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
- G06F9/5044—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 considering hardware capabilities
-
- 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
- G06F9/505—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 considering the load
-
- 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/5083—Techniques for rebalancing the load in a distributed system
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Evolutionary Biology (AREA)
- Biomedical Technology (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Genetics & Genomics (AREA)
- Physiology (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于遗传算法的任务分配方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:根据待处理任务和服务器当前的资源情况进行编码,生成多段基因序列,对每段基因序列中的元素进行随机排序,得到初代染色体种群;从每个初代染色体种群中任选一个基因序列进行组合,得到多个染色体编码,计算每个染色体编码的适应度,选取两个适应度最小的染色体编码作为父代染色体编码以构建子代染色体;将子代染色体加入染色体种群中,重复迭代上述操作,得到多个子代染色体,对适应度值最小的一条子代染色体进行解码处理,得到任务编码以及服务器编码之间的对应关系,按照对应关系进行任务分配。该实施方式能合理利用服务器资源分配任务。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于遗传算法的任务分配方法和装置。
背景技术
由于互联网和云计算的快速发展,一些中小企业乃至大型企业都在搭建自己的网站,随之而来需要更多的服务器搭建分布式集群对用户请求进行服务。由于成本问题,企业更偏向使用性能较低的服务器来实现高性能和高可用的服务,但在服务器的迭代过程中,有些机房被置换掉,有些则被保留下来,因而对于相同Web应用产生不对等资源服务器处理用户请求(特别是cpu密集型服务器),造成如果用户请求到达优质服务器则响应时间相对较快,否则较慢,造成不良体验。
对于上述由于服务器资源差异引发的用户体验不佳的问题,目前通常使用负载均衡方式解决,如Nginx中常见的负载均衡策略-加权轮询法、加权随机法,均根据请求后端的服务器资源不同进行加权,配置高,则权重大,请求多些,反之请求少一些。这种配置方法应用到Web应用上,会造成配置高的服务器一直处理请求,而配置低的服务器则处于空置状态,造成资源的浪费,并没有从根本上解决请求响应慢的问题。
发明内容
有鉴于此,本发明实施例提供一种基于遗传算法的任务分配方法和装置,至少能够解决现有技术中服务器资源差异导致的请求未合理分配的现象。
为实现上述目的,根据本发明实施例的一个方面,提供了一种基于遗传算法的任务分配方法,包括:
根据待处理任务和服务器当前的资源情况进行编码,生成多段基因序列,对每段基因序列中的元素进行随机排序,得到初代染色体种群;其中,元素为任务编码和服务器编码中的一种;
从每个初代染色体种群中任选一个基因序列进行组合,得到多个染色体编码,计算每个染色体编码的适应度,选取两个适应度最小的染色体编码作为父代染色体编码以构建子代染色体;
将子代染色体加入染色体种群中,重复迭代上述操作,得到多个子代染色体,对适应度值最小的一条子代染色体进行解码处理,得到任务编码以及服务器编码之间的对应关系,按照所述对应关系进行任务分配。
可选的,染色体编码包括三段基因序列,不同基因序列之间相互独立;
第一段为任务基因序列,根据每个任务的预设响应时间分配权重,将权重附加到相应任务的编码上,以对附加权重后的任务编码进行排序组合所生成;
第二段为服务器资源基因序列,对单个服务器资源分别进行赋分并相乘,将赋分值附加到单个服务器的编码上,以对附加赋分值后的服务器编码进行排序组合所生成;
第三段为服务器负载剩余值基因序列,确定单个服务器在匹配一个任务后的剩余资源量,计算剩余资源量与单个服务器总资源量的比值,将比值附加到单个服务器的编码上,以对附加比值后的服务器编码进行排序组合所生成。
可选的,服务器资源包括计算资源和存储资源,其中,计算资源包括CPU资源和内存资源,存储资源为磁盘容量。
可选的,所述对每段基因序列中的元素进行随机排序,得到初代染色体种群,包括:
针对每段基因序列,使用六维组合测试方法,通过计算多个元素中六个元素进行组合,以进行初代染色体种群的全覆盖。
可选的,所述服务器负载剩余值基因序列,仅应用于任务数量大于服务器数量的场景;
所述计算每个染色体编码的适应度,包括:
对于任务量小于或等于服务器数量的场景,根据每个任务的编码、以及每个任务所匹配的服务器的编码,计算附加到任务编码上的权重与附加到服务器编码上的赋分值的乘积,累加所有乘积,得到单个染色体编码的适应度;或
对于任务量大于服务器数量的场景,根据每个任务的编码、以及每个任务所匹配的服务器的编码,计算附加到任务编码上的权重与附加到服务器编码上的赋分值的乘积,累加得到第一数值;
对于去除服务器数量个任务后的剩余任务,根据每个任务的编码、以及每个任务所匹配的服务器的编码,计算附加到任务编码上的权重与附加到服务器编码上的比值的乘积,累加得到第二数值;
累加所述第一数值和所述第二数值,得到单个染色体编码的适应度。
可选的,所述选取两个适应度最小的染色体编码作为父代染色体编码以构建子代染色体,包括:
按照轮盘赌逆选择方法,从多个染色体编码中选择一个染色体编码作为第一父代染色体编码,重复一次,得到第二父代染色体编码;
基于第一父代染色体编码的第一适应度、第二父代染色体编码的第二适应度、任务数量/服务器数量,计算父代保留基因数;
从适应度较大的第一父代染色体编码或第二父代染色体编码的每段基因序列中,选择所述父代保留基因数个元素,作为父代的固定基因,不足数量从剩余第二父代染色体编码/第一父代染色体编码中获取得到,按照获取顺序依次填入子代染色体中。
可选的,所述基于第一父代染色体编码的第一适应度、第二父代染色体编码的第二适应度、任务数量/服务器数量,计算父代保留基因数,包括:
累加所述第一适应度和所述第二适应度之和,计算数值较大的第一适应度或第二适应度与适应度之和的比值;
将比值与任务数量的乘积,作为父代保留基因数;或
将比值与服务器数量的乘积,作为父代保留基因数。
可选的,所述将子代染色体加入染色体种群中,还包括:
判断子代染色体是否发生变异,若发生,则对子代染色体中的基因顺序进行调换,以生成一个新的子代染色体,若不发生,则保留。
为实现上述目的,根据本发明实施例的另一方面,提供了一种基于遗传算法的任务分配装置,包括:
编码模块,用于根据待处理任务和服务器当前的资源情况进行编码,生成多段基因序列,对每段基因序列中的元素进行随机排序,得到初代染色体种群;其中,元素为任务编码和服务器编码中的一种;
构建模块,用于从每个初代染色体种群中任选一个基因序列进行组合,得到多个染色体编码,计算每个染色体编码的适应度,选取两个适应度最小的染色体编码作为父代染色体编码以构建子代染色体;
筛选模块,用于将子代染色体加入染色体种群中,重复迭代上述操作,得到多个子代染色体,对适应度值最小的一条子代染色体进行解码处理,得到任务编码以及服务器编码之间的对应关系,按照所述对应关系进行任务分配。
可选的,染色体编码包括三段基因序列,不同基因序列之间相互独立;
第一段为任务基因序列,根据每个任务的预设响应时间分配权重,将权重附加到相应任务的编码上,以对附加权重后的任务编码进行排序组合所生成;
第二段为服务器资源基因序列,对单个服务器资源分别进行赋分并相乘,将赋分值附加到单个服务器的编码上,以对附加赋分值后的服务器编码进行排序组合所生成;
第三段为服务器负载剩余值基因序列,确定单个服务器在匹配一个任务后的剩余资源量,计算剩余资源量与单个服务器总资源量的比值,将比值附加到单个服务器的编码上,以对附加比值后的服务器编码进行排序组合所生成。
可选的,服务器资源包括计算资源和存储资源,其中,计算资源包括CPU资源和内存资源,存储资源为磁盘容量。
可选的,所述编码模块,用于:
针对每段基因序列,使用六维组合测试装置,通过计算多个元素中六个元素进行组合,以进行初代染色体种群的全覆盖。
可选的,所述服务器负载剩余值基因序列,仅应用于任务数量大于服务器数量的场景;
所述构建模块,用于:
对于任务量小于或等于服务器数量的场景,根据每个任务的编码、以及每个任务所匹配的服务器的编码,计算附加到任务编码上的权重与附加到服务器编码上的赋分值的乘积,累加所有乘积,得到单个染色体编码的适应度;或
对于任务量大于服务器数量的场景,根据每个任务的编码、以及每个任务所匹配的服务器的编码,计算附加到任务编码上的权重与附加到服务器编码上的赋分值的乘积,累加得到第一数值;
对于去除服务器数量个任务后的剩余任务,根据每个任务的编码、以及每个任务所匹配的服务器的编码,计算附加到任务编码上的权重与附加到服务器编码上的比值的乘积,累加得到第二数值;
累加所述第一数值和所述第二数值,得到单个染色体编码的适应度。
可选的,所述构建模块,用于:
按照轮盘赌逆选择装置,从多个染色体编码中选择一个染色体编码作为第一父代染色体编码,重复一次,得到第二父代染色体编码;
基于第一父代染色体编码的第一适应度、第二父代染色体编码的第二适应度、任务数量/服务器数量,计算父代保留基因数;
从适应度较大的第一父代染色体编码或第二父代染色体编码的每段基因序列中,选择所述父代保留基因数个元素,作为父代的固定基因,不足数量从剩余第二父代染色体编码/第一父代染色体编码中获取得到,按照获取顺序依次填入子代染色体中。
可选的,所述构建模块,用于:
累加所述第一适应度和所述第二适应度之和,计算数值较大的第一适应度或第二适应度与适应度之和的比值;
将比值与任务数量的乘积,作为父代保留基因数;或
将比值与服务器数量的乘积,作为父代保留基因数。
可选的,还包括变异模块,用于:
判断子代染色体是否发生变异,若发生,则对子代染色体中的基因顺序进行调换,以生成一个新的子代染色体,若不发生,则保留。
为实现上述目的,根据本发明实施例的再一方面,提供了一种基于遗传算法的任务分配电子设备。
本发明实施例的电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述任一所述的基于遗传算法的任务分配方法。
为实现上述目的,根据本发明实施例的再一方面,提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现上述任一所述的基于遗传算法的任务分配方法。
根据本发明所述提供的方案,上述发明中的一个实施例具有如下优点或有益效果:为了解决资源合理分配、快速响应用户请求的问题,在改进遗传算法的基础上,优化Web集群的负载均衡策略,服务器在接收到用户任务时能合理利用目前现有的机器资源进行任务处理,并快速响应。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的一种基于遗传算法的任务分配方法的主要流程示意图;
图2是根据本发明实施例的一种创建基因序列的流程示意图;
图3是根据本发明实施例的一种计算染色体编码适应度的方法的流程示意图;
图4是根据本发明实施例的一种基于遗传算法的任务分配装置的主要模块示意图;
图5是本发明实施例可以应用于其中的示例性系统架构图;
图6是适于用来实现本发明实施例的移动设备或服务器的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
此处对本方案所涉及到的词语做解释如下:
遗传算法:是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程寻找最优解的方法。其主要特点是直接对结构对象进行操作,不存在求导和函数连续性的限定;具有内在的隐并行性和更好的全局寻优能力;采用概率化的寻优方法,无需确定的规则即可自动获取和指导优化的搜索空间,自适应地调整搜索方向。遗传算法以种群中的所有个体为对象,并利用随机化技术指导对一个被编码参数空间进行高效搜索。通过选择、交叉和变异构成了遗传算法的遗传操作,进而寻找最优解。
Pairwise Testing组合测试:又称成对组合覆盖,是当不可能遍历产品所有功能点时用到的一种测试手段,即用尽可能少的工作发现最多的缺陷(测试投入产出性价比)。成对组合覆盖要求任意两个因素(输入条件)的所有水平组合至少要被覆盖1次。经验证,测试结果覆盖率高达90%以上,可见是一种非常有效的测试用例设计方法。
参见图1,示出的是本发明实施例提供的一种基于遗传算法的任务分配方法的主要流程图,包括如下步骤:
S101:根据待处理任务和服务器当前的资源情况进行编码,生成多段基因序列,对每段基因序列中的元素进行随机排序,得到初代染色体种群;其中,元素为任务编码和服务器编码中的一种;
S102:从每个初代染色体种群中任选一个基因序列进行组合,得到多个染色体编码,计算每个染色体编码的适应度,选取两个适应度最小的染色体编码作为父代染色体编码以构建子代染色体;
S103:将子代染色体加入染色体种群中,重复迭代上述操作,得到多个子代染色体,对适应度值最小的一条子代染色体进行解码处理,得到任务编码以及服务器编码之间的对应关系,按照所述对应关系进行任务分配。
上述实施方式中,对于步骤S101,假设共有N个任务、M个可用服务器,由于每个服务器的资源配置有所不同,且不断在处理任务,因而其可用资源量也不相同,由此针对每个基因序列所赋值也不尽相同,具体赋值操作参见后续图2所示描述,在此不再赘述。
需要说明的是,所构建的基因序列是唯一的,即每段基因序列均是按照任务编码、服务器编码按序排列的。因而,在构建完毕基因序列后,对每段基因序列中的元素进行随机排序,得到三种初代染色体种群,分别针对任务基因序列、服务器资源基因序列和服务器负载剩余值基因序列。如针对{N1,N2,…,Ni}内的任务编码随机排序后,生成{N4,N1,…,Ni}、{N2,Ni,…,N1}等。
为减少后续待处理的染色体编码数量,受到6-ways组合测试生成测试用例的启发,通过计算N个元素中任意6个元素不重复组合来进行初代种群的全覆盖,此处根据染色体编码基因组随机生成条初代染色体种群;其中,6-ways组合测试是指基于结对测试Pairwise testing的基础上,输入参数生成测试用例,以达到全面覆盖测试的效果,测试覆盖率高达95%以上。
对于步骤S102,从每个初代染色体种群中,随机选择一个基因序列进行组合,得到染色体编码,如{{N1,N2,…,Ni},{M1,M2,…,Mj},{L1,L2,…,Lk}}、{{N4,Ni,…,N1},{M1,M5,…,M2},{L3,L2,…,Lk}},(i=N,j=M,k=N-M)等,其中,对于第二个染色体编码,表示将任务N4匹配给服务器M1。
遗传算法中,一个个体(解)的好坏用适应度函数值来评价,在本方案中f(x)就是适应度函数,适应度函数值越大,适应度函数值越大,解的质量越高。适应度函数是遗传算法进化的驱动力,也是进行自然选择的唯一标准,它的设计应结合求解问题本身的要求而定,具体计算方式参见后续图3所示描述,在此不再赘述。
本方案按照轮盘赌逆选择方法,选择适应度较小的两个染色体编码作为父代染色体编码,假设为P1、P2,P1的适应度值为S1、P2的适应度值为S2,且S1>S2,设定S为父代保留基因数量。需要说明的是,轮盘赌选择方法又称比例选择方法,其基本思想是:每个个体被选中的概率与其适应度大小成正比,轮盘赌逆选择方法基本思想相反,每次只能选择一个染色体编码,因而需进行两次操作。
计算父代保留基因数的公式,设定为(向上取整):
其中,N为染色体中任务的数量,M为染色体中服务器的数量,具体选择方式依据工作人员设定。
例如,服务器共需处理9个任务,设P1的适应度值为0.15,P2适应度值为0.125,计算得到因而需从P1的每个基因序列中,随机选择5个元素作为父代的固定基因,不足数量从P2中获取,之后按照获取顺序依次填入子代染色体中,得到新子代染色体C1。
对于步骤S103,新子代染色体C1,可能有15%的概率发生变异,若发生变异,需对C1内的基因段/元素位置进行调换,以生成一个新的子代染色体,但若不发生变异,则保留。
在完成上述染色体交叉操作和变异操作后,将新子代染色体C1或新生成的子代染色体,加入到染色体种群中,继续计算其适应度、选择染色体种群中适应度较小的两个染色体编码、计算子代染色体操作,直至满足一定次数迭代结束,从中找出适应度最小的一个子代染色体。
对该子代染色体进行解码操作,得到任务和服务器之间的对应关系,第一段为任务基因序列,第二段为服务器资源基因序列,这两段的每个位置相互对应,如{N1,N2,…,Ni},{M1,M2,…,Mj},任务N1和服务器M1是对应的,即将任务N1分配给服务器M1。
对于N>M的情况,在完成第一段和第二段对应关系后,若存在未分配的任务,继续考虑第三段服务器负载剩余值基因序列,同上述步骤确定每个任务所匹配的服务器编号,直至所有任务分配完毕为止。
上述实施例所提供的方法,为了解决资源合理分配、快速响应用户请求的问题,方案在改进遗传算法的基础上优化Web集群的负载均衡策略,以能合理利用当前服务器资源进行分配,并快速响应。
参见图2,示出了根据本发明实施例的一种创建基因序列的流程示意图,包括如下步骤:
S201:第一段为任务基因序列,根据每个任务的预设响应时间分配权重,将权重附加到相应任务的编码上,以对附加权重后的任务编码进行排序组合所生成;
S202:第二段为服务器资源基因序列,对单个服务器资源分别进行赋分并相乘,将赋分值附加到单个服务器的编码上,以对附加赋分值后的服务器编码进行排序组合所生成;
S203:第三段为服务器负载剩余值基因序列,确定单个服务器在匹配一个任务后的剩余资源量,计算剩余资源量与单个服务器总资源量的比值,将比值附加到单个服务器的编码上,以对附加比值后的服务器编码进行排序组合所生成。
上述实施方式中,对于步骤S201~S203,此处描述组成染色体编码的基因序列。假设共有M个服务器需处理N个任务,在构建染色体编码时将分为三段基因序列,每一段基因序列都是独立存在的:
1)任务基因序列,由任务的编码按序组成,每个任务编码被附加有不同的数值,具体形式为{N1,N2,…Ni,i=1,2,..,N}。预先针对每个任务设置有响应时间,如10000ms,每个任务因处理的数据平均响应时间而不同,按权重对任务编码进行标记,具体权重分配策略如下表1所示:
表1任务响应时间权重
任务响应时间(ms) | 权重 |
长(大于10000) | 0.5 |
中(小于10000,大于5000) | 0.3 |
低(小于5000) | 0.2 |
2)服务器资源基因序列,由服务器编码按序组成,具体形式为{M1,M2,…,Mj,j=1,2,…,M},此处的资源包括计算资源及存储资源,计算资源指CPU及内存,存储资源指磁盘容量,本方案暂不对网络资源进行分析。由于有些服务器的计算资源不同,因而需计算权重,具体赋值参见表2所示:
表2服务器资源
CPU | 赋分 | 内存 | 赋分 | 硬盘资源 | 赋分 |
4核 | 0.2 | 8g | 0.2 | 2T | 0.2 |
8核 | 0.3 | 16g | 0.3 | 4T | 0.3 |
16核 | 0.5 | 32g | 0.5 | 8T | 0.5 |
对于单个服务器,在针对CPU、内存和硬盘资源分别进行赋分后,会将这三个分值进行相乘,得到一个总数值,如上述0.2*0.2*0.2=0.008,将0.008附加到该服务器的编码上。需要说明的是,本方案中的附加可以是以右下角角标形式进行添加,不影响原编码的形态。
3)服务器负载剩余值基因序列,该序列主要应用于任务数量N大于服务器数量M的场景,此时需考虑每台服务器的剩余资源是否可以同时处理其他任务,所以还需要使用“资源评估工具”评估每个服务器剩余负载值,以评估剩余资源情况(百分比)。因而虽同样由服务器编码按序排列组成,但此时编码所附加的值区别于2)中的资源分值,为与2)序列区分,此时具体形式设为{L1,L2,…,Lk,k=1,2,…,N-M}。
根据剩余任务数量N-M,需随机选择(N-M)个服务器进行任务并行处理。低于每个服务器的剩余资源百分比,需大于20%才会被选择,以防止因负载值过高引起内存溢出OOM造成服务器宕机的情况。
进一步的,当N≤M时,可以仅生成1)和2)两段基因序列,无需3)基因序列,也可以具备3)基因序列,但此时序列中的元素为0或空即可,以便于与N>M情况统一管理。
上述实施例所提供的方法,阐述了基因序列的生成以及赋值过程,具体考虑每个任务的响应时间和服务器的资源情况,后续可以从序列中直接提取,无需再从其他渠道获取;另外,针对N≤M和N>M两种情况所生成的基因序列数量是可以不同的,使得管理具有多样性。
参见图3,示出了根据本发明实施例的一种计算染色体编码的适应度的方法流程示意图,包括如下步骤:
S301:对于任务量小于或等于服务器数量的场景,根据每个任务的编码、以及每个任务所匹配的服务器的编码,计算附加到任务编码上的权重与附加到服务器编码上的赋分值的乘积,累加所有乘积,得到单个染色体编码的适应度;
S302:对于任务量大于服务器数量的场景,根据每个任务的编码、以及每个任务所匹配的服务器的编码,计算附加到任务编码上的权重与附加到服务器编码上的赋分值的乘积,累加得到第一数值;
S303:对于去除服务器数量个任务后的剩余任务,根据每个任务的编码、以及每个任务所匹配的服务器的编码,计算附加到任务编码上的权重与附加到服务器编码上的比值的乘积,累加得到第二数值;
S304:累加所述第一数值和所述第二数值,得到单个染色体编码的适应度。
上述实施方式中,对于步骤S301~S304,具体阐述如何计算每个染色体编码的适应度,得出的适应度可以用于轮盘赌的占比值计算。假设M个服务器共处理N个任务,此处分两种情况:
1、当N≤M时,任务量小于服务器数量,此时直接从M个服务器中任选N个处理任务,每个服务器仅处理一个任务,无需考虑服务器的剩余资源,即不存在第三段基因序列或第三段基因序列为空。适应度函数为:
2、当N>M时,任务量大于服务器数量,在将M个任务平均分配到M个服务器后,仍有(N-M)个任务未被分配。适应度函数为:
除上述NiMj外,还包括NiLk,表示第i个任务匹配第k个服务器,将附加到Ni上的权重、附加到Lk上的比值(剩余资源量在总资源量的占比)相乘。将所得两个数值相加,得到该条染色体编码的适应度。
上述实施例所提供的方法,基于N和M的大小关系,采用不同方式计算染色体编码的适应度,一个服务器可以仅处理一个任务,在N>M的情况下也可以处理多个任务。
本发明采用改进的遗传算法优化Web集群的负载均衡问题,步骤如下:1)根据负载均衡的应用场景进行基因组合及染色体编码生成;2)根据染色体编码及6-ways组合测试生成测试用例方法,随机生成初代染色体种群;3)使用优化的适应度函数对初代染色体种群进行筛选(选择、变异)生成新子代染色体;4)迭代多次找出适应度值最小的子代染色体;5)对子代染色体进行解码可得集群负载均衡方案。
参见图4,示出了本发明实施例提供的一种基于遗传算法的任务分配装置400的主要模块示意图,包括:
编码模块401,用于根据待处理任务和服务器当前的资源情况进行编码,生成多段基因序列,对每段基因序列中的元素进行随机排序,得到初代染色体种群;其中,元素为任务编码和服务器编码中的一种;
构建模块402,用于从每个初代染色体种群中任选一个基因序列进行组合,得到多个染色体编码,计算每个染色体编码的适应度,选取两个适应度最小的染色体编码作为父代染色体编码以构建子代染色体;
筛选模块403,用于将子代染色体加入染色体种群中,重复迭代上述操作,得到多个子代染色体,对适应度值最小的一条子代染色体进行解码处理,得到任务编码以及服务器编码之间的对应关系,按照所述对应关系进行任务分配。
本发明实施装置中,染色体编码包括三段基因序列,不同基因序列之间相互独立;
第一段为任务基因序列,根据每个任务的预设响应时间分配权重,将权重附加到相应任务的编码上,以对附加权重后的任务编码进行排序组合所生成;
第二段为服务器资源基因序列,对单个服务器资源分别进行赋分并相乘,将赋分值附加到单个服务器的编码上,以对附加赋分值后的服务器编码进行排序组合所生成;
第三段为服务器负载剩余值基因序列,确定单个服务器在匹配一个任务后的剩余资源量,计算剩余资源量与单个服务器总资源量的比值,将比值附加到单个服务器的编码上,以对附加比值后的服务器编码进行排序组合所生成。
本发明实施装置中,服务器资源包括计算资源和存储资源,其中,计算资源包括CPU资源和内存资源,存储资源为磁盘容量。
本发明实施装置中,所述编码模块401,用于:
针对每段基因序列,使用六维组合测试装置,通过计算多个元素中六个元素进行组合,以进行初代染色体种群的全覆盖。
本发明实施装置中,所述服务器负载剩余值基因序列,仅应用于任务数量大于服务器数量的场景;
所述构建模块402,用于:
对于任务量小于或等于服务器数量的场景,根据每个任务的编码、以及每个任务所匹配的服务器的编码,计算附加到任务编码上的权重与附加到服务器编码上的赋分值的乘积,累加所有乘积,得到单个染色体编码的适应度;或
对于任务量大于服务器数量的场景,根据每个任务的编码、以及每个任务所匹配的服务器的编码,计算附加到任务编码上的权重与附加到服务器编码上的赋分值的乘积,累加得到第一数值;
对于去除服务器数量个任务后的剩余任务,根据每个任务的编码、以及每个任务所匹配的服务器的编码,计算附加到任务编码上的权重与附加到服务器编码上的比值的乘积,累加得到第二数值;
累加所述第一数值和所述第二数值,得到单个染色体编码的适应度。
本发明实施装置中,所述构建模块402,用于:
按照轮盘赌逆选择装置,从多个染色体编码中选择一个染色体编码作为第一父代染色体编码,重复一次,得到第二父代染色体编码;
基于第一父代染色体编码的第一适应度、第二父代染色体编码的第二适应度、任务数量/服务器数量,计算父代保留基因数;
从适应度较大的第一父代染色体编码或第二父代染色体编码的每段基因序列中,选择所述父代保留基因数个元素,作为父代的固定基因,不足数量从剩余第二父代染色体编码/第一父代染色体编码中获取得到,按照获取顺序依次填入子代染色体中。
本发明实施装置中,所述构建模块402,用于:
累加所述第一适应度和所述第二适应度之和,计算数值较大的第一适应度或第二适应度与适应度之和的比值;
将比值与任务数量的乘积,作为父代保留基因数;或
将比值与服务器数量的乘积,作为父代保留基因数。
本发明实施装置还包括变异模块,用于:
判断子代染色体是否发生变异,若发生,则对子代染色体中的基因顺序进行调换,以生成一个新的子代染色体,若不发生,则保留。
另外,在本发明实施例中所述装置的具体实施内容,在上面所述方法中已经详细说明了,故在此重复内容不再说明。
图5示出了可以应用本发明实施例的示例性系统架构500,包括终端设备501、502、503,网络504和服务器505(仅仅是示例)。
终端设备501、502、503可以是具有显示屏并且支持网页浏览的各种电子设备,安装有各种通讯客户端应用,用户可以使用终端设备501、502、503通过网络504与服务器505交互,以接收或发送消息等。
网络504用以在终端设备501、502、503和服务器505之间提供通信链路的介质。网络504可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
服务器505可以是提供各种服务的服务器,用于执行构建基因序列、构建初代染色体种群、构建染色体编码、计算适应度、生成子代染色体以及筛选操作。
需要说明的是,本发明实施例所提供的方法一般由服务器505执行,相应地,装置一般设置于服务器505中。
应该理解,图5中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图6,其示出了适于用来实现本发明实施例的终端设备的计算机系统600的结构示意图。图6示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图6所示,计算机系统600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有系统600操作所需的各种程序和数据。CPU 601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被中央处理单元(CPU)601执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括编码模块、构建模块、筛选模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,获取模块还可以被描述为“筛选解析模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:
根据待处理任务和服务器当前的资源情况进行编码,生成多段基因序列,对每段基因序列中的元素进行随机排序,得到初代染色体种群;其中,元素为任务编码和服务器编码中的一种;
从每个初代染色体种群中任选一个基因序列进行组合,得到多个染色体编码,计算每个染色体编码的适应度,选取两个适应度最小的染色体编码作为父代染色体编码以构建子代染色体;
将子代染色体加入染色体种群中,重复迭代上述操作,得到多个子代染色体,对适应度值最小的一条子代染色体进行解码处理,得到任务编码以及服务器编码之间的对应关系,按照所述对应关系进行任务分配。
根据本发明实施例的技术方案,为了解决资源合理分配、快速响应用户请求的问题,方案在改进遗传算法的基础上优化Web集群的负载均衡策略,以能合理利用当前服务器资源进行分配,并快速响应。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (11)
1.一种基于遗传算法的任务分配方法,其特征在于,包括:
根据待处理任务和服务器当前的资源情况进行编码,生成多段基因序列,对每段基因序列中的元素进行随机排序,得到初代染色体种群;其中,元素为任务编码和服务器编码中的一种;
从每个初代染色体种群中任选一个基因序列进行组合,得到多个染色体编码,计算每个染色体编码的适应度,选取两个适应度最小的染色体编码作为父代染色体编码以构建子代染色体;
将子代染色体加入染色体种群中,重复迭代上述操作,得到多个子代染色体,对适应度值最小的一条子代染色体进行解码处理,得到任务编码以及服务器编码之间的对应关系,按照所述对应关系进行任务分配。
2.根据权利要求1所述的方法,其特征在于,染色体编码包括三段基因序列,不同基因序列之间相互独立;
第一段为任务基因序列,根据每个任务的预设响应时间分配权重,将权重附加到相应任务的编码上,以对附加权重后的任务编码进行排序组合所生成;
第二段为服务器资源基因序列,对单个服务器资源分别进行赋分并相乘,将赋分值附加到单个服务器的编码上,以对附加赋分值后的服务器编码进行排序组合所生成;
第三段为服务器负载剩余值基因序列,确定单个服务器在匹配一个任务后的剩余资源量,计算剩余资源量与单个服务器总资源量的比值,将比值附加到单个服务器的编码上,以对附加比值后的服务器编码进行排序组合所生成。
3.根据权利要求2所述的方法,其特征在于,服务器资源包括计算资源和存储资源,其中,计算资源包括CPU资源和内存资源,存储资源为磁盘容量。
4.根据权利要求2所述的方法,其特征在于,所述对每段基因序列中的元素进行随机排序,得到初代染色体种群,包括:
针对每段基因序列,使用六维组合测试方法,通过计算多个元素中六个元素进行组合,以进行初代染色体种群的全覆盖。
5.根据权利要求2所述的方法,其特征在于,所述服务器负载剩余值基因序列,仅应用于任务数量大于服务器数量的场景;
所述计算每个染色体编码的适应度,包括:
对于任务量小于或等于服务器数量的场景,根据每个任务的编码、以及每个任务所匹配的服务器的编码,计算附加到任务编码上的权重与附加到服务器编码上的赋分值的乘积,累加所有乘积,得到单个染色体编码的适应度;或
对于任务量大于服务器数量的场景,根据每个任务的编码、以及每个任务所匹配的服务器的编码,计算附加到任务编码上的权重与附加到服务器编码上的赋分值的乘积,累加得到第一数值;
对于去除服务器数量个任务后的剩余任务,根据每个任务的编码、以及每个任务所匹配的服务器的编码,计算附加到任务编码上的权重与附加到服务器编码上的比值的乘积,累加得到第二数值;
累加所述第一数值和所述第二数值,得到单个染色体编码的适应度。
6.根据权利要求1所述的方法,其特征在于,所述选取两个适应度最小的染色体编码作为父代染色体编码以构建子代染色体,包括:
按照轮盘赌逆选择方法,从多个染色体编码中选择一个染色体编码作为第一父代染色体编码,重复一次,得到第二父代染色体编码;
基于第一父代染色体编码的第一适应度、第二父代染色体编码的第二适应度、任务数量/服务器数量,计算父代保留基因数;
从适应度较大的第一父代染色体编码或第二父代染色体编码的每段基因序列中,选择所述父代保留基因数个元素,作为父代的固定基因,不足数量从剩余第二父代染色体编码/第一父代染色体编码中获取得到,按照获取顺序依次填入子代染色体中。
7.根据权利要求6所述的方法,其特征在于,所述基于第一父代染色体编码的第一适应度、第二父代染色体编码的第二适应度、任务数量/服务器数量,计算父代保留基因数,包括:
累加所述第一适应度和所述第二适应度之和,计算数值较大的第一适应度或第二适应度与适应度之和的比值;
将比值与任务数量的乘积,作为父代保留基因数;或
将比值与服务器数量的乘积,作为父代保留基因数。
8.根据权利要求1或6所述的方法,其特征在于,所述将子代染色体加入染色体种群中,还包括:
判断子代染色体是否发生变异,若发生,则对子代染色体中的基因顺序进行调换,以生成一个新的子代染色体,若不发生,则保留。
9.一种基于遗传算法的任务分配装置,其特征在于,包括:
编码模块,用于根据待处理任务和服务器当前的资源情况进行编码,生成多段基因序列,对每段基因序列中的元素进行随机排序,得到初代染色体种群;其中,元素为任务编码和服务器编码中的一种;
构建模块,用于从每个初代染色体种群中任选一个基因序列进行组合,得到多个染色体编码,计算每个染色体编码的适应度,选取两个适应度最小的染色体编码作为父代染色体编码以构建子代染色体;
筛选模块,用于将子代染色体加入染色体种群中,重复迭代上述操作,得到多个子代染色体,对适应度值最小的一条子代染色体进行解码处理,得到任务编码以及服务器编码之间的对应关系,按照所述对应关系进行任务分配。
10.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-8中任一所述的方法。
11.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-8中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210348803.0A CN114691370A (zh) | 2022-04-01 | 2022-04-01 | 一种基于遗传算法的任务分配方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210348803.0A CN114691370A (zh) | 2022-04-01 | 2022-04-01 | 一种基于遗传算法的任务分配方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114691370A true CN114691370A (zh) | 2022-07-01 |
Family
ID=82140260
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210348803.0A Pending CN114691370A (zh) | 2022-04-01 | 2022-04-01 | 一种基于遗传算法的任务分配方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114691370A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116541165A (zh) * | 2023-04-23 | 2023-08-04 | 中国电子产品可靠性与环境试验研究所((工业和信息化部电子第五研究所)(中国赛宝实验室)) | 实时系统任务调度方法、装置、计算机设备以及存储介质 |
-
2022
- 2022-04-01 CN CN202210348803.0A patent/CN114691370A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116541165A (zh) * | 2023-04-23 | 2023-08-04 | 中国电子产品可靠性与环境试验研究所((工业和信息化部电子第五研究所)(中国赛宝实验室)) | 实时系统任务调度方法、装置、计算机设备以及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110618870B (zh) | 一种深度学习训练任务的工作方法及装置 | |
CN109743741B (zh) | 无线路由器部署方法、装置、存储介质及电子设备 | |
Li et al. | A hybrid load balancing strategy of sequential tasks for grid computing environments | |
CN109840154B (zh) | 一种移动云环境下基于任务依赖的计算迁移方法 | |
CN110991808B (zh) | 一种任务分配方法和装置 | |
CN109447264B (zh) | 云计算环境下基于vham-r模型的虚拟机放置遗传优化方法 | |
Li et al. | An effective scheduling strategy based on hypergraph partition in geographically distributed datacenters | |
CN113821318A (zh) | 一种物联网跨域子任务组合协同计算方法及系统 | |
CN108427602B (zh) | 一种分布式计算任务的协同调度方法及装置 | |
CN114595049A (zh) | 一种云边协同任务调度方法及装置 | |
CN110826915A (zh) | 资源调度方法、设备及计算机可读存储介质 | |
CN112272102A (zh) | 边缘网络业务卸载和调度方法及装置 | |
Zhao et al. | Optimize the placement of edge server between workload balancing and system delay in smart city | |
CN114691370A (zh) | 一种基于遗传算法的任务分配方法和装置 | |
US10320698B1 (en) | Determining network connectivity for placement decisions | |
CN111044062B (zh) | 路径规划、推荐方法和装置 | |
CN115225643A (zh) | 点云平台大数据分布式管理方法、装置及系统 | |
Awad et al. | A swarm intelligence-based approach for dynamic data replication in a cloud environment | |
CN113139639B (zh) | 一种基于mombi面向智慧城市应用多目标计算迁移方法和装置 | |
US9998392B1 (en) | Iterative network graph placement | |
Miao et al. | Efficient flow-based scheduling for geo-distributed simulation tasks in collaborative edge and cloud environments | |
CN115129463A (zh) | 算力调度方法及装置、系统及存储介质 | |
JP2021158591A (ja) | 制御量算出装置及び制御量算出方法 | |
CN114840326B (zh) | 资源调度方法、装置、电子设备及存储介质 | |
CN112787833A (zh) | 内容分发网络cdn服务器的部署方法和装置 |
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 |