论文部分内容阅读
人工智能和机器学习的共同目标是让计算机在没有明确的程序指导下解决问题,因此在过去的几十年里,有关计算机代码的人工演化是一项迅猛发展的技术,各相关领域的人们都期望能有一种自动化系统,将针对问题的细致描述(用数据结构、函数等相对简单的表达方式)作为输入,然后就能得到满意的解决方案。自动程序设计(AP)就是实现这种自动化系统的技术。现有的主要方法包括:遗传程序设计(GP),交叉爬山程序设计(XOHC),交叉模拟退火程序设计(XOSA)。
本文借鉴微粒群算法(PSO)中种群参考的思想,对交叉爬山程序设计进行改进,提出基于种群参考的交叉爬山程序设计(SXOHC):在交叉爬山程序设计种群进化的同时加入与种群的历史最优解交叉的操作,以使个体在进化过程中得到种群中有利的进化信息从而提高搜索能力,并在一定程度上避免个体早熟现象。同样本文把种群参考的思想结合到交叉模拟退火程序设计中,提出基于种群参考的交叉模拟退火程序设计(SXOSA),实验证明此方法提高了交叉模拟退火程序设计的优化能力。
另外,本文利用微粒群算法来优化自动程序设计进化过程中的常量节点,提出基于PSO参数估计的自动程序设计方法,提高解的精度,避免由于常量节点的值不合适而导致好的解结构被淘汰的现象。 Koza利用遗传程序设计成功解决两类模式分类问题,当程序返回非负数时输入样本属于一类,记类1,否则属于另一类,记类-1。Kishore把n类模式分类问题分解成n个两类分类问题,需要求n个分类表达式。第i个分类表达式判定第i类,属于第i类的样本属于类1,不属于第i类的所有样本属于类-1。它的缺点是随着类别数目的增加,训练时间会增加地很快。本文提出一种用自动程序设计解决多类模式分类问题的直接方法,此方法只要求一个分类表达式,利用分类表达式的不同输出值来区分不同的类。对于n类模式分类问题,记第0,1,2,…,n-1类,那我们就用自动程序设计方法进化分类表达式使之对于第i类样本的特征属性输入,输出值为i。这样我们就可以直接根据分类表达式的输出值预测样本的类别了。而且本文提出相应于此多类模式分类方法的一种应用较广的函数集和终点集方案,并用基于种群参考的交叉爬山程序设计(SXOHC)来实现,对UCI Database的new-thyroid数据进行实验,结果表明此方法是可行的。