一种基于贪心策略与遗传算法融合的多表连接方法及系统
文献发布时间:2024-04-18 20:02:18
技术领域
本发明属于数据库管理技术领域,尤其涉及一种基于贪心策略与遗传算法融合的多表连接方法及系统。
背景技术
当PostgreSQL后台接收到查询语句后,首先会对其进行查询分析的操作,包括词法、语法和语义分析,生成查询树;随后对该查询树进行查询重写操作,生成新的查询树;接下来便需要根据新的查询树,综合关系表的访问方式、连接方式和连接次序等问题,生成最优的路径;再基于此生成可执行的计划并执行。
路径表示了对表中数据的访问方式,由对表的访问方式和连接方式组合而得。每种路径所展现的运行效率各不相同,因此,其中的关键便在于如何生成一条效率最高的连接路径供执行器执行。在PostgreSQL中,存在动态规划算法和遗传算法两种方式生成最优路径。当所要执行的查询需要操作大量关系表时,为提高生成最优路径的效率,PostgreSQL会采用遗传算法的方式进行。遗传算法将路径作为染色体(个体),将表的连接代价作为子代的适应值,通过不断地交叉、变异和选择,挑选出连接代价最低的子代作为结果。
尽管在涉及大量关系表时,相较于动态规划算法,遗传算法的运行效率更高。但在面对复杂问题和大规模的搜索空间时,仍会消耗较多的运行时间和计算资源,从而给系统运行和用户使用带来影响。PostgreSQL中的遗传算法默认采用随机方式生成初始种群。然而遗传算法对初始种群的依赖性较强,随机生成的种群可能包含较多质量不佳的个体,从而导致收敛速度慢、最终生成的路径较差等问题。另外,对于子代的生成和选择方式,PostgreSQL采用类似于轮盘赌的方式对父代进行挑选,即连接代价越小(排名越靠前)的父代越有可能被选择,进行杂交生成下一代;随后去除排名最后的个体,并将新的个体插入。然而该策略会削弱种群中的个体多样性,容易导致算法陷入局部最优的情况。
发明内容
鉴于以上现有技术的不足,发明的目的在于提供一种基于贪心策略与遗传算法融合的多表连接方法及系统,解决了现有技术中容易出现收敛速度慢,个体多样性差的问题。
本发明的第一方面,提出了一种基于贪心策略与遗传算法融合的多表连接方法,所述方法包括:
S1,基于各个需要连接的表构建连接代价矩阵;
S2,基于贪心策略构建初始化种群;
S3,通过初始化种群进行交叉操作和变异操作,得到子代种群并计算子代种群的个体适应度值;
S4,通过锦标赛机制对子代种群进行选择,重复演化过程,直到满足预设的演化代数,得到输出结果。
进一步地,基于各个需要连接的表构建连接代价矩阵的步骤中,确定需要连接的表的数量m,确定每个表的扫描代价,构建m*m的连接代价矩阵,连接代价矩阵中A
进一步地,构建m*m的连接代价矩阵的步骤中,采用循环嵌套连接、归并连接和Hash连接的方式构建连接代价矩阵。
进一步地,S2步骤中,基于贪心策略构建初始化种群的步骤,具体包括:随机挑选一个表元素,基于连接代价矩阵,每次选择与当前表元素连接代价最小的表元素进行组合,依此类推,直至产生完整个体。
进一步地,若出现重复,则按照连接代价对连接方式进行顺延或随机选择另外的表元素,重复本过程,直至初始个体数达到初始种群规定数量N。
进一步地,S3中,通过初始化种群进行交叉操作和变异操作,得到子代种群并计算子代种群的个体适应度值的步骤,具体包括:通过父代个体进行两两杂交,生成子代种群,对子代种群中的个体进行变异操作,计算变异后个体的个体适应度值。
进一步地,对个体进行杂交操作和变异操作均按照PostgreSQL中的默认方式进行。
进一步地,通过锦标赛机制对子代种群进行选择的步骤,具体包括:对混合种群中的个体适应度值进行降序排列,按预设比例挑选出适应度值最优的个体,直接进入下一代;随后采用锦标赛策略,对个体进行选择。
进一步地,在采用锦标赛策略进行选择的过程中,若选择了重复个体,则重新进行挑选。
本发明的第二方面,提出了一种基于贪心策略与遗传算法融合的多表连接系统,所述系统包括:
代价矩阵构建单元,所述代价矩阵构建单元用于基于各个需要连接的表构建连接代价矩阵;
初始种群构建单元,所述初始种群构建单元用于基于贪心策略构建初始化种群;
个体适应度值计算单元,用于通过初始化种群进行交叉操作和变异操作,得到子代种群并计算子代种群的个体适应度值;
演化选择单元,所述演化选择单元用于通过锦标赛机制对子代种群进行选择,重复演化过程,直到满足预设的演化代数,得到输出结果。
本发明有益效果如下:
本发明所述的方法和系统,基于贪心策略的初始种群生成方式查询优化中的路径生成本质上与TSP相似,每个表元素可以被当作城市,表元素之间的连接代价可视为城市之间的路径长度;对于PostgreSQL而言,由于要考虑用户体验以及资源消耗,种群数量以及迭代次数达到充分的可能性较低,因此对初始种群进行的生成便具有重要的意义;基于贪心策略能够使初始化种群时具有一定的指向性。对于依赖初始种群的遗传算法而言,该方式能够提升初始种群的质量,加快算法的收敛速度,提升最终结果的效果。
附图说明
附图仅用于示出具体实施例的目的,而并不认为是对本发明的限制,在整个附图中,相同的参考符号表示相同的部件。显而易见地,下面描述中的附图仅仅是本发明实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种基于贪心策略与遗传算法融合的多表连接方法的流程图;
图2为本发明实施例提供的基于贪心策略进行种群初始化的流程图;
图3为本发明实施例提供的基于锦标赛策略进行子代选择的流程图;
图4为本发明实施例的提供的一种基于贪心策略与遗传算法融合的多表连接系统的架构图。
具体实施方式
为了使本领域的人员更好地理解本发明实施例中的技术方案,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。应该理解,这些描述只是示例性的,并非用于限定本发明的范围。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明公开的概念。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的方法和系统的例子。
本发明提出了一种基于贪心策略与遗传算法融合的多表连接方法,解决了现有技术中容易出现收敛速度慢,个体多样性差的问题。
TSP(Travelling Salesman Problem,旅行商问题):指对于给定的一系列城市和每对城市之间的距离,找到访问每一座城市仅一次并回到起始城市的最短回路。
方法实施例
如图1所示,为本发明实施例提供的一种基于贪心策略与遗传算法融合的多表连接方法的流程图,所述方法包括:
S1,基于各个需要连接的表构建连接代价矩阵;
S2,基于贪心策略构建初始化种群;
S3,通过初始化种群进行交叉操作和变异操作,得到子代种群并计算子代种群的个体适应度值;
S4,通过锦标赛机制对子代种群进行选择,重复演化过程,直到满足预设的演化代数,得到输出结果。
在本实施例中,对于算法的起始阶段,生成初始种群,基于TSP的思路,采用贪心策略对种群进行初始化。其中每个表可视为城市,表格之间的连接代价可视为城市之间的路径长度。
假设有m个表,首先需要结合表的大小以及各个约束条件所对应的选择度,对每个表的扫描代价进行计算;
随后分别对三种连接方式(循环嵌套连接、归并链接和Hash连接)构建m*m的连接代价矩阵,矩阵中的元素A
接下来进行种群的初始化,随机挑选一个表元素,基于连接代价矩阵,每次选择与当前表元素连接代价最小的表元素进行组合,依此类推,直至产生完整个体。
若出现重复,则按照连接代价对连接方式进行顺延或随机选择另外的表元素。
重复上述过程直至初始个体数达到初始种群规定数量N。
如图2所示,在每一代的计算中,父代个体两两杂交,从而生成新的子代种群;
随后对子代的个体进行变异操作,并计算其变异后的个体适应度值(杂交和变异操作均采用PostgreSQL中的默认方式进行)。
完成适应度计算之后,需要从父代和子代的混合种群的2N个个体中挑选出N个进入下一代的计算。
如图3所示,此处的子代选择函数以锦标赛选择机制为基础进行改进而来。
首先对混合种群中的个体适应度值进行从高到低进行排序,并按一定比例k挑选出适应度值最优的个体,直接进入下一代;
随后采用锦标赛策略,对个体进行选择。
如果选择了重复个体,则重新进行挑选。
如图4所示,本发明实施例还提供了一种基于贪心策略与遗传算法融合的多表连接系统,所述系统包括:
代价矩阵构建单元,所述代价矩阵构建单元用于基于各个需要连接的表构建连接代价矩阵;
初始种群构建单元,所述初始种群构建单元用于基于贪心策略构建初始化种群;
个体适应度值计算单元,用于通过初始化种群进行交叉操作和变异操作,得到子代种群并计算子代种群的个体适应度值;
演化选择单元,所述演化选择单元用于通过锦标赛机制对子代种群进行选择,重复演化过程,直到满足预设的演化代数,得到输出结果。
本发明申请人结合说明书附图对本发明的实施示例做了详细的说明与描述,但是本领域技术人员应该理解,以上实施示例仅为本发明的优选实施方案,详尽的说明只是为了帮助读者更好地理解本发明精神,而并非对本发明保护范围的限制,相反,任何基于本发明的发明精神所作的任何改进或修饰都应当落在本发明的保护范围之内。
最后应说明的是,以上实施例仅用以说明本发明实施例的技术方案,而非对其限制。尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。