王朝百科
分享
 
 
 

GP算法

王朝百科·作者佚名  2009-10-31  
宽屏版  字体: |||超大  

遗传编程(GP)属于进化计算(Evolutionary Computation,EC)模型的一种。EC是一种借鉴自然界进化机制而产生的并行随机搜索算法。进化算法的基本原理是选择和改变,它区别于其他搜索方法有两个显著特征:首先这些算法都是基于种群(population)的;其次在种群中个体(indvidual)之间存在竞争。

为搜索特定的(感兴趣的)查询需要一种工具,这种工具可智能生成一组查询并以它们是否能导出与用户给定的同样的对象集来进行评价。GP算法对这一类问题是很实用的。

2.1 函数集与端点集

一般GP中可生成的程序集是使用者定义的函数集和端点集。表1给出了相应的函数集和端点集,其中函数集由1.3中定义的查询算子、逻辑运算算子以及比较算子所组成。

函数集 {SEL,REL,G-REL,RES},{UNI,INT,DIF},{AND,OR,NOT}, {>,>=,=,<,<=} 端点集类集,属性集,值集

表1 函数集和端点集

在我们的应用中还有一些具有不同句法的查询算子。每个算子具有不同的句法且假定的数据库是面向对象的。因此,它具有为创建个体而使用的特别的函数集(或算子集)和端点集。从而,构成种群的所有个体的创建必然受到每个算子的约束[3]。约束可以是算子的句法和查询的类型,或者是为创建查询选择适当属性值的领域知识。比较算子和逻辑算子只使用于查询的谓词。当比较符号操作数时,仅使用'='。

端点集由CLASS-SET、SLOT-SET和VALUE-SET组成。CLASS-SET由1.2中定义的类名组成,SLOT-SET由每个类的所有属性构成,VALUE-SET由数值和符号值所构成(它们均为属性值)。数值由整型或实型数构成,其数值范围由所用数据库模式定义。符号值由字符串表示的符号属性值构成。

2.2 创建初始种群

为了创建一个个体(查询),首先必须确定特定查询所返回的对象类型。结果类型被选择后,从所选类型返回例子的算子集中随机地选择一个算子,这个过程对查询的每个参数递归地进行。最初,那些句法正确的预定义数量的查询被随机地产生,形成初始种群。

2.3 选择属性值

由于可选择范围大,要从某个查询的值集中选择一个属性值(数值或符号常数)是相当困难的。对于一个范围为[1,10000]的整数集,随机选到一个特定整数的概率仅为1/10000。而对于符号常数,则需要很强的背景知识。因此,我们仅就发生在数据库里的范围选择属性值。

2.4 繁殖新一代种群

每个个体用预定义的适应函数来进行评价。较适应的查询有较高的概率被选来繁殖新种群,这个过程用三个遗传算子:选择、杂交和变异来完成。为了产生下一代,选择算子根据个体的适应值来选择个体。我们用一个树来表示一个查询,杂交算子用交换两个父辈的子树来创建两个后代。变异算子用一个新的子树来代替一个父辈的子树,从而产生一个新的后代。选择-杂交-变异循环反复地进行直到终止标准被满足。

2.5 评价(适应函数测量)

我们使用如下的适应函数f来评价种群中的个体查询i :

f ( ni , hi ) = T - ( hi * hi ) / ni ,

其中:ni > 0 , T ≥ hi , 且 i = 1 ,2 ,… ,种群的大小(T是被确定的对象集的势,hi是一个个体查询i 被选中的次数,ni是查询 i 结果集的势)。

上述适应函数依赖于hi和ni ,如果一个查询没有被选中(hi=0),则函数的值为T,这是最差的一个适应值。另一方面,如果查询结果能够很好地匹配提交给系统的对象集,那么它的适应值为0(在这种情况下hi = ni = T )。如果种群中出现个体适应值远远超过种群平均适应值,该个体很快就会在群体中占有绝对的比例,从而出现过早收敛的现象。另一方面,在搜索过程的后期,群体的平均适应值可能会接近群体的最优适应值,从而导致搜索目标难以得到改善,出现停滞现象[4]。为了防止上述情况的发生,我们将对一个个体查询的例子个数 ni 作为分母。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如何用java替换看不见的字符比如零宽空格&#8203;十六进制U+200B
 干货   2023-09-10
网页字号不能单数吗,网页字体大小为什么一般都是偶数
 干货   2023-09-06
java.lang.ArrayIndexOutOfBoundsException: 4096
 干货   2023-09-06
Noto Sans CJK SC字体下载地址
 干货   2023-08-30
window.navigator和navigator的区别是什么?
 干货   2023-08-23
js获取referer、useragent、浏览器语言
 干货   2023-08-23
oscache遇到404时会不会缓存?
 干货   2023-08-23
linux下用rm -rf *删除大量文件太慢怎么解决?
 干货   2023-08-08
刀郎新歌破世界纪录!
 娱乐   2023-08-01
js实现放大缩小页面
 干货   2023-07-31
生成式人工智能服务管理暂行办法
 百态   2023-07-31
英语学习:过去完成时The Past Perfect Tense举例说明
 干货   2023-07-31
Mysql常用sql命令语句整理
 干货   2023-07-30
科学家复活了46000年前的虫子
 探索   2023-07-29
英语学习:过去进行时The Past Continuous Tense举例说明
 干货   2023-07-28
meta name="applicable-device"告知页面适合哪种终端设备:PC端、移动端还是自适应
 干货   2023-07-28
只用css如何实现打字机特效?
 百态   2023-07-15
css怎么实现上下滚动
 干货   2023-06-28
canvas怎么画一个三角形?
 干货   2023-06-28
canvas怎么画一个椭圆形?
 干货   2023-06-28
canvas怎么画一个圆形?
 干货   2023-06-28
canvas怎么画一个正方形?
 干货   2023-06-28
中国河南省郑州市金水区蜘蛛爬虫ip大全
 干货   2023-06-22
javascript简易动态时间代码
 干货   2023-06-20
感谢员工的付出和激励的话怎么说?
 干货   2023-06-18
 
>>返回首页<<
 
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有