在问题解决环境中用于超启发式算法的自动配置的方法和装置的制作方法

文档序号:6570844阅读:242来源:国知局

专利名称::在问题解决环境中用于超启发式算法的自动配置的方法和装置的制作方法
技术领域
:本发明涉及一种自动配置用于在应用域的区域内执行最优化的搜索算法的软件工具。更具体地,本发明涉及一种问题解决环境,其结合了一种用于最优化超启发式的设计和配置的进化学习方法,来解决各种复杂组合最优化问题。
背景技术
:很多现实生活场景中的问题解决方案包含搜索实体的一种最优组合或者排列。组合的数量虽然是有限的,但是通常非常庞大,达到了使尝试所有可能的组合无法成为一种选择的程度。在计算机科学领域,这种问题被称是难以计算的并且该搜索过程通常被称作组合最优化。精确的穷举方法往往会导致低质量的解决方案,且无法承受该搜索过程可能带来高计算成本的事实。因此,一类随机算法,特别是超启发式算法对于这类组合最优化问题是有用的。存在近似的方法具有在合理的时间内保证高质量的解决方案的能力。然而,为了完全利用超启发式的潜力以解决现实生活的问题,要求具有算法设计和编码的渊博知识,以及所处理的问题的特定领域的知识。并且,根据不同的现实生活情景用户可能在算法的性能上具有不同的需求和期望。这些可能导致在算法设计和构造上的显著的不同。没有算法设计的必要专业知识,不可能完成具有令人满意的性能的算法。具有包括遗传算法在内的各种最优化技术的问题解决环境之前已经被提出。参见美国专利号6,263,325,美国专利号6,086,617,Epogy过程集成和设计优化软件(可在http://www.synaps-inc.com/PDF/Epogy_Brochure.pdf获得),和被称作分级进化工程设计系统(HierarchicalEvolutionaryEngineeringDesignSystem,HEEDS)的最优化软件(可在hup:〃www.redcedartech.com/ot/获得)。这些系统提供友好的用户界面,用于研究解决不同最优化问题的各种最优化工具。此类平台方便了算法设计的过程进而很大地增强了问题解决的效率。然而,这些软件工具实际上是仿真环境。虽然各种算法能够有效地在这些环境中被配置并执行,然而该执行取决于整个系统。对于很多要求嵌入式实时解算器的应用来说,此类环境虽然是一种总控问题解决算法,但不能提供配置有效的独立程序的灵活性。在美国专利号6,286,017中,提出了一种图形环境,其帮助用户快速生成独立的应用。它包括由表才各处理软件(spreadsheet)管理的才莫块库,并采用其它软件重用技术。用户能够利用其提供的友好的GUI从该库中取回程序。基于所选择的过程,自动生成独立应用。然而,该发明只针对编程事件。它不包含任何算法设计知识。因此,当需要开发类似于超启发式的复杂算法时,其可能不能满足解决方法的需要。TOMLAB(可在http:〃tomlab.biz/获得)是MATLAB中的一种综合优化环境。它实质上是一个MATLAB工具箱,其封装了各种最优化过程,包括类似于遗传算法的复杂超启发式算法。其假设使用户更容易获得集成程序和例程以建立源代码形式的应用。然而,它不能自动生成源代码并且用户必须处理功能编程语言,即MATLAB编程语言。这对于不熟悉MATLAB语言的用户是一个大的障碍。而且,它要求昂贵的第三方软件环境,即MATLAB,的支持。进化算法的简单规范(EASEA),其可在hup://fractables.inria.fr/evo_lab/EV0-easea_engl.html获得,是专门用于进化算法(EA)规范的高级脚本语言。它从公知的EA库中获得各种EA程序和例程,EA库可以为GALib和E0。用户用EASEA语言编写.ez文件以配置进化算法。然后该.ez文件由EASEA编i奪器编i奪成C++文件。所生成的C++文件依次被编译并与对应的库链接以生成执行原始.ez文件中指定的进化算法的可执行文件。这样,在算法开发中最繁重的代码生成工作可被避免。因而显著提高了应用开发的效率。然而,EASEA和另一类似的语言,进化算法建模语言(EAML),仍然都是基于文本的语言形式,虽然它们比任何功能编程语言更高级。这两种脚本语言都要求专门设计的编译器来把脚本语言转换成功能编程语言。并且,普通用户必须熟悉该语言的语法。要重点提出的是上面引用的现有技术都没有涉及自动配置算法的问题,该算法对于想要解决的一类给定问题是最优的。作为结果的解决方法的质量非常大的取决于编程者或者系统开发者的经验和专业。更重要的,没有基于测试问题的取样进行学习的机制。在M.Birrattari,etal.(2002)的科技论文中,提出了一种竟争算法,用于配置超启发式算法的参数。虽然作为结果的AC0算法是人为竟争的,该被提出的竟争算法只能在超启发式算法中协调实数参数,并且其不能处理其它配置的问题,如结构、程序选择等。在K.0.Stanley等(2005)的科技论文中,提出了一种名为NER0的进化系统。其将神经网络编码为人造染色体并使用遗传算法来进化该染色体(即神经网络),以达到实时游戏的目的。其不仅最优化参数设置,还最优化神经网络的拓朴结构。其还能够根据实时游戏场景的动态变化调整神经网络。NER0实现了人为竟争的结果并且满足了快速生成具有优良性能的复杂系统(即本例中的神经网络)的需要。然而,NERO专用于神经进化,其不能处理为更广范围的问题解决需求而进化其它综合超启发式算法的问题。在美国专利号5,867,397,美国专利号6,360,191和美国专利号6,532,453中,J.Koza提出了一种名为遗传编程的新的问题解决技术。它把解决方法或系统(计算机程序编码)编码到基于人工染色体的树中,并且然后采用在遗传算法中的操作来进化该染色体(即,该解决方法程序)。遗传编程不仅最优化参数设置,还最优化对于给定问题的解决方法的结构。遗传编程已经在非常宽范围的现实生活应用中成功地产生了很多人为竟争结果。然而目前为止,其只被证明可应用于相对简单的系统,如曲线函数近似,RLC电路设计或者甚至在美国专利号6,327,582中提出的编程问题。其没有解决对超启发式算法自动配置以达到在现实生活应用中的一般最优化目标的需求。
发明内容一种算法(如超启发式算法)的配置,包括参数设置,结构,程序,程序的连接,混合兼容性等,可以对作为结果的算法的性能具有显著的影响。加上用户可能对想要的算法的性能具有各种要求和期望,诸如效率,鲁棒性,稳定性等等的事实,构造合适的搜索算法的过程可能是耗时的。另一方面,获得最优化的人工编制的算法,特别是对于复杂的超启发式算法,要求对被处理的该类算法完全的了解和熟悉。而且,其经常要求深入的经验,积累的专业知识,并且有些时候甚至是灵感,其通常经过在相关领域内多年的工作才能获得。目前,人的智力和创造力在对性能最优化方面具有一定水平的超启发性算法的设计中起着决定性的作用。基于这些考虑,需要开发一种人工智能驱动方法,来自动地最优化用于解决各类现实生活中的问题的复杂算法的结构。在申请人相应的申请PCT/SG2006/000382中(在本申请优先权日尚未公开)我们提出了一种环境,用于配置搜索算法的一个或多个程序组件以解决至少一个组合的最优化问题。对于每个程序组件,该环境使用一个相应的数据结构表示用于配置该程序组件的选项。该数据结构是一个节点的树状结构,表示为了配置该程序组件而将会作出的各个选择。用户被遍历算法引导一个节点一个节点地经过该树状结构,在每个节点用户在可能的选项之间做出选择。某些选项包括决定该遍历算法采用哪条路径通过该树状结构。这使得一个提供开放和友好界面的普通软件系统成为可能,使用户能够快速地构造一基于进化算法的解决方法并自动地最优化该算法的配置以解决一类组合最优化问题。此类被处理的问题是那些解决方法能够被表示成排列字符串结构的问题。本发明概括地涉及以上方案的开发,其中不是要求用户在各个节点做出选择,而是该选择自动地由或然算法进行。执行树状结构的多电子遍历,每个因而导致各自的候选搜索算法。使用一评价标准以便对所产生的候选搜索算法中的每一个生成各自的数字的质量索引,代表所产生的候选搜索算法的质量。优选地,使用包含目标最优化问题的示例的训练数据组获得该质量索引。在配置过程中,候选算法基于其在训练组上的仿真性能水平被加以评价。解决方案的评价质量可以可选地考虑到其它期望的性能因素。该因素可以包括用于表示期望的搜索算法的效率,效果,鲁棒性或稳定性的参数。包括相应配置的该搜索算法被用在用于解决测试问题设置的搜索算法中,并且候选算法产生的解决方案的质量被评价。解决方案的评价质量可以可选地考虑其它需要,如用户特別指定的需要。优选的,每个或然选择功能由一组一个或多个的数字追踪值定义。典型地,至少一组追踪值定义了这样的或然功能,该或然功能用于在遍历算法中从多个路径选项中选择哪一个选项被选中。典型地,至少一组追踪值定义了这样的或然功能,该或然功能用于,例如从一组预先定义的选项之一中,选择数字参数(如下面所述,这也可能被认为是路径选项,如果每个可能的数字参数值被看作是一个节点)。上述步骤优选地被多次执行,为该组追踪值尝试不同的各个选择。对于每组追踪值,其产生的一个或多个的候选搜索算法的各个质量索引被评价以产生追踪值质量索引,表示该组追踪值的质量。该追踪值质量索引可以用作最优化算法的质量函数。最优化算法选择连续组的追踪值,基于之前生成的各组追踪值以及它们相应的追踪值质量索引。该最优化算法可以,例如,是遗传算法,但是其它公知的最优化算法也可能是合适的。因而,本发明在一方面使一种新的进化学习方法成为可能,该方法用于9为一类被处理的组合最优化问题的超启发式算法自动地最优化其配置。没有在超启发式算法设计方面良好背景知识和经验的用户或者系统集成者可以使用本发明的优选实施例来自动地搜索超启发式算法的最优配置(在特定实施例中包括最优化的程序结构,参数调整,程序选择等等),以解决一类组合最选化问题。用户首先从一类被处理的问题中选择一些问题作为训练组。用户可以按照效率,效果,鲁棒性,稳定性或其它任何性能因素预先指定该算法期望的特性。如所讨论的,本发明的实施例具有能力Al训练组学习,改编其内部上下文,重复地自我训练以产生具有越来越好的性能的算法。一旦用户对找到的最佳算法的性能满意,它们生成该算法的源代码作为独立程序,对于在训练中使用的此类问题或任何其它类似问题,其能够作为问题解决最优化算法。这样,算法最优化和生成的成本被显著地缩小。开发的算法的质量和效率以及普通用户的问题解决能力可以显著增强。作为举例,参照下列附图介绍本发明的实施例,其中图1,包括图1A至图1E,表示各种形式的遗传最优化算法(或混合遗传算法)的各自流程图,算法包括由本发明实施例配置的程序组件;图3表示本发明的实施例使用的组件个体操作的树状结构;图4表示本发明的实施例使用的组件群体初始化的树状结构;图5表示本发明的实施例使用的组件群体更新的树状结构;图9表示由本发明的实施例执行实现训练程序的示意性代码示意图;图IO表示被图9的实施例釆用的子代生产者中追踪的初始化示意图;图ll表示由图9的实施例产生的子代生产者中追踪的更新;图12是图9的实施例的流程图。具体实施方式下面的说明基于一类超启发式算法,其被应用来解决具有排列解决方案结构的组合最优化问题。这指的是其中可能的解决方案能够被编码为排列字符串的域问题。虽然我们集中在排列表示的问题上,本发明的方法是表示独立的并且因此能够被扩展和应用到其它的解决方案表示,如二元字符串或实数等。(i)超启发式算法这里介绍的超启发式算法可以用流程图表示,其包括各种程序模块。图1,其由图1A至1E组成,显示了本发明可被应用的五个遗传算法(GA)或混合GA的流程图。任何遗传算法从结构的观点看都能够被划分成三个组件遗传表示、遗传操作和适应度函数。本发明着重于基于排列的最优化问题。自动生成被编码为排列字符串的人工染色体。所有的遗传操作,如交叉和突变,被专门设计用于处理排列字符串。这些操作趋于与大多数基于GA的问题解决相同的标准特征。它们通常是问题独立的,尽管不同的操作可能导致性能随问题而变化。图1A至1E的全部流程图都使用了从六个基本程序组件当中选择的程序组件。首先参见图1A,所示的GA算法的第一步骤是群体初始化(PopulationInitialization)程序组件,其产生染色体的初始群体。然后在生成环中基于适应度函数对这些染色体加以评估。之后,通过群体评价(PopulationEvaluation)程序组件获得该群体的统计信息。然后,使用终止条件(terminationcondition)程序确定是否达到了终止标准。此后,个体的群体被指定为父代。使用子代生产者(OffspringProducer)程序组件(如,交叉和/或克隆)父代繁殖以创建后代的成员。最终,遵循群体更新(PopulationUpdate)机制,产生的后代与当前代的父代一起,组成用于进一步的繁殖的新的父代群体。重复此过程直至终止条件得到满足。图1B表示一个类似的GA,除了其包括一个附加的程序组件个体操作(IndividualOperations)(如,突变和/或本地:溲索),其^皮应用于改变或改善子代现存成员的遗传组成。图1C显示了一种变化,其中个体操作程序组件被执行N次。图1D显示了一种变化,其中具有多个可能的个体操作程序组件,并且得到满足。图1E显示了图1D的程序的一种变化,其中对于子代生产者程序模块也具有两种选项,并且哪个被执行取决于两个互相排斥的情况C和D的哪一个得到满足。(ii)用于配置程序模块的数据结构在图l的流程图中,每个程序组件由一组特征和属性定义,因此调整并测试这些特征和属性对应于配置该程序组件。新加坡专利申请号200508032-0(目前未公开)关于一种用于构造超启发式算法的用户驱动的方法和框架。该方法使用才艮据下面介绍的左变化-右属性(leftvariation-rightproperty)规则设置的树状结构。例如,图2表示了用于子代生产者组件的树状结构。它用于从用于后代繁殖操作的父代群体中生成子代个体。形式为虚线椭圆形节点的该子代生产者的左侧子变体作为左侧子树的根,以表示其父代的变化,即OffspringProducer子代生产者的变化,(如交叉和克隆等)。而作为右侧子代的虚线矩形框"属性"是右侧子树的根,表示该OffspringProducer子代生产者的所有变化的共同属性,如父代选l奪Parent(s)Selection,类似的,后续的子树按相同的结构来管理和组织。例如,作为子代生产者的变化之一的交叉(Crossover)包i舌i口一至丈交叉(UniformCrossover)、力顷序一l交叉(Order—1Crossover)、一点交叉(One-PointCrossover)等变化,这些变化被组织在它左侧子树中。同时,所有这些变化具有一个共同特征,即交叉率(CrossoverRate),用六边形框表示的实#1参#1。因此,其-皮表示为交叉的右侧子树中的节点。注意,虚线框"变化"(variation)和"属性"(property)还以不同的方式限定用于配置左侧和右侧子树的规则。对于"变化"子树,用户只需选择一个子节点(即一处变化)并遍历该子节点对应的子树。对于"属性,,子树,所有子代都需要被配置。在系统指导用户配置可行的算法时这一MJ'H皮递归应用。该分级树状结构是开放的以容纳其它用于修饰的新的程序或想法。新的程序能够被定位于与现有的程序相同的等级上,成为其兄弟。例如,其它公知或新的交叉操作器,如部分匹配交叉(PMX),能够通过将其定位为现有的一致交叉,顺序-1交叉和一点交叉的兄弟,而容易的引入系统中。使用与前述相同的树状结构来管理它们对应的属性和特征。因此,此结构可提供开放和容易升级的系统。图3示出了用于个体操作组件的树状结构。其是应用于现有个体以提高其质量或改变其结构的一组程序。我们结合两种形式的个体操作,2-交换局部搜索和突变。结合了局部搜索的若干变化,如禁忌搜索(tabusearch)以及两种形式的突变(护C舌L变异和力口窗变异windowedmutation)。如上面所述,通过遵循左变化-右属性规则,可以引入任何已建立或者新的程序。图4显示了用于GA模块的群体初始化组件的树状结构。遗传算法开始于将被指定为父代的初始群体。群体初始化程序负责生成该初始群体。在这个组件中,作为一个重要的GA参数,群体大小(populationsize)被指定。具有三种可用的初始化机制随机初始化,贪婪随机自适应搜索过程(GreedyRandomizedAdaptiveSearchProcedure,GRASP)和虫义群优化(AntColonyOptimization,AC0)。我们已经在一类公知的组合最优化问题上,即二次分配问题(QAP)上,测试了该树状结构环境。因此,被应用的GRASP程序(项300)是在Li等1994中为解决QAP而加以介绍的程序,而项200表示ACO程序的独立实例。这样,该树状结构为用户才是供了以直观的方式混合GA和AC0的选项。由于个体的最初样本的质量可能对整个遗传算法(或混合-GA)的性能具有显著影响,普遍应用某种基于本地搜索的启发式算法来改善个体的初始组的质量。该环境为用户提供了对个体的最初群体应用个体操作的选项。图4中的项IOO是一个个体操作的独立示例。它的配置可能与在图1中的生成环中的个体操作(如果有的话)不同。我们忽略图4中这些子树的结构,其已经由图3详细表示过了。图5表示GA模块的群体更新框的树状结构。其用于确定哪个后代应被接受到选择池中用于下一代的进一步繁殖。这三个方案被表示为子树并且每个方案的简要解释如下PU-1:以一定数量的精英(精英的数目)重叠群体置换PU_2:—旦产生一定数量(更新间隔)的后代,仅来自父代和子代二者的最好的染色体被接受并被添加到选择池中。这也常被称为平截选择(truncationselection),代。精英的数目和更新间隔是属性并分别被设置为PU-l和PU-2的实数参数。图6表示了GA才莫块的群体评价PopulationEvaluation框的树状结构。它用于评价当前父代群体。因此,用于评价个体的适应度的适应度函数被封装在这个组件中作为其属性。此外,一些预处理,如适应度换算(FitnessScaling)和分类(Sorting),常常在繁殖开始前应用到父代群体。我们引入四种公知的换算方法线性换算(LinearScaling),Sigma截断(Truncation),幂律换算(PowerLawScaling)以及分级(Ranking)。其中一些与实数参数相关,该实数参数被设置为与对应的换算方法相关的属性。图7示出了框终止条件的树状结构。其用于控制结束算法的模式。我们釆用三条标准时间,叠代的最大数目和收敛。当达到用户定义的计算时间限制时该时间标准终止算法,而当叠代的数目达到用户指定的代的数量时叠代的最大数目标准终止算法。收敛准则通过计算解决质量没有任何提高的连续叠代的数量来检测进化最否收敛。一旦所述数目超过用户定义的值,则认为进化过程已经收敛并因此终止。利用上述分级树状结构管理的基于模块的程序库,用户能够自由研究算法设计的各个方面。从图2到图7,显示出,与正被配置的算法相关的可能"特征"位于相应树的叶节点。这表明用户确定算法的合适的"特征"的工作实际上是找出在对应树中从根节点到特定叶节点的路径的过程。因此,配置完整算法的任务成为遍历树以找出从根节点开始到叶节点的一组路径的过程,递归地应用上述左变化-右属性的规则。在这一环境下,应用遍历的深度优先模式。图8示出了组件子代生产者的举例取样配置的流程。从根开始,它首先遍历子代生产者的变化(左)子树。根据左变化一右属性"规则,只选择一个变化,例如交叉。然后继续遍历对应的子数(交叉)。由于深度优先规则(中序inorder遍历,LVR模式),它首先遍历交叉的变化(左)子树。假设用户选择一致交叉,它到达第一叶节点,并继续遍历交叉的属性(右)子树。与之相关的是实数参数交叉率。在为交叉率指定实数值参数之后,流程进至第二叶节点并继续遍历子代生产者的属性(右)子树。这里,只剩父代选择特征仍需被构造配置。为此,我们从遍历父代选择的变化(左)子树开始。假设用户从父代选择可用的三个变化中选择竟赛(Tournament),它到达第三叶节点。因为父代选择的属性(右)子树是空的,对此树的遍历和该组件构造配置完成。上述遍历过程覆盖了从根节点到三个叶节点的三个路径一致,交叉率和竟赛。这样,用户配置可行的子代生产者实例,这是一种利用竟赛父代选择方法和实数交叉率一致交叉的形式。此算法的其它组件的配置可以类似的进行以达到完整的遗传算法驱动搜索过程。注意,利用该新的分级树状结构,系统开发者在配置算法的过程中仅通过图形用户界面参与高级用户系统交互以处理具体问题领域。任何遗传算法的变化可以用流程图表示,该流程图基于上述的6个组件的框而获得。每个组件的配置能够由树状结构的可视化实现。用这种方法,即使具有有限的算法设计专业知识的初学者用户也能够通过非常高水平和直观的图形界面来配置和设计各种遗传算法。这样,算法设计的效率大为提高。配置所需要的遗传算法后,用户能够使用本发明的代码生成器基于他/她指定的构造配置生成0++源代码文件。本发明采用面向对象框架来实现代码生成功能。树状结构中的每个节点(除了"变化"和"属性"节点,该节点其可认为是附属节点)被认为是一个对象(即使对于实数参数,因为它可能具有如范围、精度等属性),并可以作为一类被实现。对于树中的任意对象,其属性子树成员可被表示为类的成员变量。变化子代能够被实现为父代(基类)的子类。子代进一步地可以具有它们自己的特征,即变化和/或属性,其可以被类似地设置为它们的超类和/或成员变量。从上述说明中,用户配置信息被存储在树状结构中。本发明的代码生成器的基本原理是沿着由用户配置所限定的从根到叶节点的路径,以及然后4妄照.h文件和.cpp文件获取并生成对应的对象/类。所有生成的文件构成独立程序,它可被看成是用于解决各种现实生活的问题的遗传算法模块。简要的说,通过上面说明的树状结构方法的方案,普通操作的生成,其通常是编码工作中最耗时的部份,会遵循用户的高级指示说明而自动地执行。只有适应度函数包含问题的域指示信息,并且因而是依赖于问题依赖的。适应度函数被用来基于正在被处理的问题的域指示特定知识评价个体。其在引导GA开发整个解决方案前景上起到了关键作用。其还在把算法引向对最优收敛中起到关键作用。给定问题的域指示信息能够排它地被单独存储在专门生成的0++目标类中。原理上,只需要在生成的遗传算法模块中手工应用该适应度函数以定制其用于解决特定域的问题。注意,也生成作为源代码占位符的适应度函数的空白模块。用户只需要重写它的函数体以为不同的问题定制算法。这样,避免了算法开发中最耗时的代码生成工作。最小化了代码修改和定制所消耗的精力。它与上述算法设计的高级配置过程一起,显著200提高了算法的开发效率。然而,尽管上述方案简化了算法开发的配置和生成过程,其对改善用于被处理的特定类问题的结果算法的质量没有作用。结果算法的性能仍然非常大地取决于用户的经验和专业知识。没有在超启发式算法设计方面良好的知识或关于问题领域的专业知识的人可能仍然在设计和配置运行良好的算法方面面临困3#。(iii)通过采用树状结构对搜索算法的自动配置本发明的实施例注意从原理上揭示算法的最优结构的一个方法是列举根-叶路径的所有可能组合。然而,该方式的时间复杂性是不易操作的。本发明的实施例基于进化学习方法来处理对用于一类被处理的问题的超启发式算法的自动配置的需要。期望的先决条件是通过进化学习过程配置的算法应当是最优的或接近最优的。实施例使用"遍历分割节点"的概念,在该概念中为配置算法必须做出选择。如上所述,"变化"可视节点是遍历分割节点的示例,其决定通过树状结构的路径,如从根节点到给定的叶节点。而且,实数参数节点(如图2中的"交叉率,,)也属于"遍历分割节点,,,因为这里需要对指定到该参数特定值的决定。这能够能过重画该树以使用于设置该实数的各种数字选项被设置为从该参数节点发出的节点(叶节点)而变得清楚。因此,为参数值而选择实数值中的一个在重画的树中对应于在从该参数节点发出的节点中的选择相应的一个。我们对"遍历分割节点"的每个分支放置一个追踪值以引导做出决定。该追踪能够被看作每个分支的追踪值。假定有n个从"遍历分割节点"发出的分支,并且^)(1=1,2...;j^,2…n)表示在叠代i的节点的第j个分支(选择)的追踪值。在叠代i选择一个分支的决定基于该追踪值。Oie《0=■Be'<i^fd#fc(《,,4《'》》《1》函数DesicionMake通常是或然函数,并且它能够具有纟艮多变量。一种可能形式可能基于筒单的轮盘选择其中P(/)表示在叠代i第j个分支被选择的概率。这样,系统能够通过在之前设置的追踪的强度引导下遍历该树来配置算法。图9表示自动配置的训练过程的示意代码。对应的流程图在图12中所示。该流程开始于步骤l("开始")。在图12的步骤2,在树中的追踪被初始化。"遍历分割节点"的每个分支被分配一追踪值。通常,全都被给定相同的初始追踪值。用于子代生成程序的该初始化的树状结构如图IO所示。注意,在图10中,与图2相反,用于设置实数值参数"交叉率"三个预定义的选择被表示为各自的叶节点(选项是设置参数为0.4,0.7和1,0)。因此,节点"交叉率",其是图2中的一个叶节点,在图10中是一个可视的遍历分割节点。接着,在对应于一组步骤3-7的进化环中,如前面所述由追踪值引导,通过遍历该树该算法产生候选搜索算法(即,每个程序组件的配置)。即,为将被评价的候选算法的程序组件的每一个产生各自的结构,从而形成候选算法。该过程被重复直至在步骤8中确定产生的候选算法的数量等于#PopSize。在步骤9和10中这些算法通过在训练组上执行测试进程被依次评价,该训练组包含若干正被处理问题的目标的一类的被处理问题的简单取样范例。对于在树中的追踪值基于在当前的叠代中表现最好的一些算法加以更新(步骤ll)。接着决定终止条件是否得到满足(步骤12)。如果没有,以上步骤(除了追踪初始化)被重复直到终止条件得到满足。如果这样,该算法终止(步骤13),并且具有被修正的追踪值的树被输出作为训练过程的结果。.J-S图ll表示追踪更新(即,图12中的步骤11)的过程,作为程序模块子代生产者的一个示例。假定在之前的叠代i中执行最好的算法包含用图11中的粗体根-叶路径表示的子代生产者结构配置。我们接着沿该结构配置覆盖的路径增加相关追踪值的权重。相应地,该结构配置未覆盖的该追踪的相对值可以被减少。这样,好的结构配置特征被给予更多在下一叠代中被给予更多被选中的机会,并且随着进化过程的进行该性能以或然和统计的方式被累加。最终,该评价过程收敛于一些根-叶路径,其以沿着路径大的相对追踪值支配该树。这些路径,即配置,组成了一个好的算法,该算法从基于要处理的问题的目标类的训练中得到。其质量通过在被处理的最优化问题的范例上扭^于测试而-验i正。由于不同的现实生活场景,用户可以对算法的性能具有不同的要求。这些要求和不同能够以系统评价算法(如,基于不同的测量制式)加以具体化。有必要强调,实施例具有能力不仅从被处理问题的特定性质中进行学习,还从用户对算法要求的不同进行学习。问题的域特定的性质,与用户要求一起,引导搜索向着适合问题情景的配置收敛。实际应用本发明具有广泛范围的实际应用。在现实生活情景中有许多问题可以被转换成组合最优化问题。本发明在具有工业相关性的应用中作为问题解决环境和算法最优化的应用的一个示例,本发明的一个实施例被用来生成并最优化混合遗传算法。该算法随后被集成到供应链管理工作流。混合GA作为计划和调度引擎以管理由一队卡车将燃料分配给零售店(用于驾车者的加油站)。每个零售店提交针对补充燃料的种类和数量的订单或需求。我们把全部计划者称为燃料运送卡车调度系统(FTDS)。每辆卡车具有有限的容量。从指定的仓库或分配中心开始,它只能运载有限数量的燃料以分派到给定区域内的各个站点。优化的主要目标是最小化分派成本,其通常由总的运送距离或时间来计算。FTDS帮助人为计划者来生成燃料卡车的一组路径。除了卡车容量的限制,通常还有更多的约束,如时间因素(在指定的时间窗内传送)和服务优先级,这些也需要考虑。我们用PCT/SG2006/000383中介绍的系统配置混合遗传算法和生成相应的源代码。结合问题的域特定的特征,如卡车和站点信息,距离信息等,之后在相当短的时间内获得调度的第一个版本。利用常规的系统开发方法,算法的编码周期可能需要几周甚至几个月。为了改进该算法,我们应用本发明生成并最优化混合遗传算法并在一组公知的组合最优化问题,即二次分配问题,的基准上测试。本发明产生的算法能够达到人为竟争并且与在文献上最近报道的方法相比达到更好的结果。使用本发明执行的一个学习过程使用配置设置文件,其包括用于控制学习过程的参数以及在训练过程中使用的最优化问题的范例。使用的参数是算法_池—尺寸(Algorithm—Pool—Size)这指的是群体池的大小;池中的每个个体代表一候选算法结构。在执行中,为学习过程的每个叠代配置并评估10个算法。存档—尺寸(Archive—Size)该Archive-Size值制定被维持的算法的数量。它们对应于在学习过程中发现的最佳算法。自动配置引擎以它们的性能水平顺序分类算法。在执行中使用值为10。最大_叠代(Max—Iteration)其指定叠代的最大数量以执行学习过程。在本执行中使用值为100。每个算法的实验次数(N腿ber-0f—Trials—For-Each—Algorithm)本参数指定进化过程中执行每个算法的试验的数量。因为算法在性质上是随机的,执行多个试验进程以获得一个指示性的平均性能水平。在执行中使用值为10。需更新追踪的最佳算法的数量(How—Many—Top-Algorithm-To_Update_Trace)这指定了在档案中表现最佳算法的数量,该算法被允许更新树中的追踪值。该参数的值将不超过Archive-Size。在执行中,使用值为3。每实例训练的叠代数量(Each_Instance-Train_For-How-Many_Iterations)该参数指定了在对训练组的每个范例训练中后续叠代的数量。训练组中的该范例被以随机顺序选择。在执行中使用值为2。追踪初始量(Initial-Amount—0f-Trace)其指定了在每个"遍历分割节点"追踪值的初始量。在执行中使用值20.0。训练组包括用于二次分配问题(QAP)的公知基准数组的四个范例(称为kra30b.dat,nug30.dat,tai40a.dat禾口chr25a.dat)。虽然只有本发明的一个实施例被详细介绍,在本发明的范围内很多变例是可能的,这对本领域技术人员而言的清楚的。权利要求1.一种获得一组或然函数的方法,该或然函数用于配置搜索算法以解决组合性最优化问题,所述搜索算法包括一个或多个的程序组件,所述方法对每个程序组件使用相应的数据结构来表示用于配置所述程序组件的选项,每个数据结构包括在树状结构中结合在一起的多个节点,作为遍历分割节点的多个所述节点代表为配置相应程序组件而做出的各个选择,所述遍历分割节点与所述或然函数中的各个函数相关联,所述方法包括(a)选择当前的或然函数;(b)产生一个或多个的候选算法,通过执行遍历算法遍历树状结构产生每个候选算法,该遍历算法中多个所述节点被相继标识为当前节点,并且,在当前节点是遍历分割节点时,执行相关联的当前或然函数以做出由当前节点代表的选择;(c)评价候选算法的评价步骤;以及(d)获得修正的或然函数并返回步骤(b)直到满足终止标准。2.根据权利要求1所述的方法,其中至少部分所述遍历分割节点是变化节点,在这些节点上相关的或然函数选择多个路径选项之一以<更遍历相应的树状结构。3.根据权利要求1所述的方法,其中至少部分所述遍历分割节点是如下节点,在该节点上相关的或然函数选择多个选项之一以便设置数字参数。4.根据权利要求1或2或3的方法,其中所述与每个遍历分割节点相关的或然函数由各个组的一个或多个的数字追踪值来定义。5.根据前述权利要求中的任一项所述的方法,其中所述评价步骤(c)包括执行候选算法以解决一组一个或多个的测试问题,并评价所述候选算法产生的一个或多个解决方案的质量。6.根据权利要求5所述的方法,其中使用用户定义质量函数来评价所述一个或多个解决方案的质量。7.—种获得然算法的方法,该或然算法用于配置搜索算法以解决组合性最优化问题,所述方法包括(a)为一个或多个候选或然算法中的每一个生成一个或多个的候选搜索算法,每个候选或然算法由多个或然函数定义,每个所述或然函数由各个当前组的数字追踪值定义;(b)—个评价步骤,评价一个或多个的候选搜索算法的质量以形成代表相应組的追踪值的质量索引;(c)判断终止标准是否得到满足;以及(d)如果所述判断为否,基于质量索引生成一个或多个新组的追踪值来取代部分或全部当前组的追踪值,并且回到步骤(a)。8.—种配置搜索算法的方法,该方法包括执行根据权利要求1至6中任一项所述的方法以生成一组或然函数,并且然后选择被评价的候选算法中的至少一个用作搜索算法以便解决实际最优化问题。9.一种配置搜索算法的方法,该方法包括执行根据权利要求7所述的方法以生成或然算法,并且选择被评价的候选搜索算法中的至少一个用作搜索算法以便解决实际最优化问题。10.根据权利要求8或9所述的方法,其中所述评价步骤使用一组测试问题,该问题中实际最优化问题是统计学上典型的。11.一种配置用于解决组合最优化问题的搜索算法的方法,所述搜索算法包括一个或多个的程序组件,所述方法对每个程序组件-使用相应的数据结构来表示用于配置所述程序组件的选项,每个数据结构包括在树状结构中结合在一起的多个节点,作为遍历分割节点的多个所述节点代表为配置相应程序组件而做出的各个选择,所述遍历分割节点与所述或然函数中的各个函数相关联,所述方法包括(a)选择当前的或然函数;(b)产生一个或多个的候选算法,通过执行遍历算法遍历树状结构产生每个候选算法,该遍历算法中多个所述节点被相继标识为当前节点,并且,在当前节点是遍历分割节点时,执行相关联的当前或然函数以做出由当前节点代表的选择;(c)评价候选搜索算法;以及(d)获得修正的或然函数并返回步骤(b)直到满足终止标准。12.—种配置搜索算法以解决至少一个组合性最优化问题的方法,所述方法包括(a)为一个或多个或然算法中的每一个生成一个或多个的候选搜索算法,每个或然算法由多个或然函数定义,每个所述或然函数由各个当前组的数字追踪值定义;(b)评价一个或多个的候选搜索算法的质量以形成代表相应组追踪值的质量索引;(c)判断终止标准是否得到满足;以及(d)如果所述判断为否,基于质量索引生成一个或多个新组的追踪值来取代部分或全部当前组的追踪值,并且回到步骤(a);以及(e)如果所述判断为是,从生成的候选搜索算法中做出选择。13.根据权利要求8至12中任一项所述的方法,进一步包括生成执行配置的搜索算法的源代码。14.一种计算机系统,该系统被设置来执行由前述权利要求中的任一项定义的方法。15.—种包含可操作计算机指令的计算机程序产品,当该计算机程序产品被计算机系统读取时,使计算机系统执行根据权利要求1至13中任一项所述的方法。全文摘要公开了一种方法,该方法满足快速生成并最优化算法的需求,所述算法能够有效地在软件环境的框架内解决一给定类的问题。所述环境结合了一种进化学习方法,其自动地最优化算法程序组件的结构。以这种方式,算法开发的效率和质量被显著地提高。文档编号G06N3/00GK101617328SQ200680056768公开日2009年12月30日申请日期2006年12月22日优先权日2006年12月22日发明者徐一亮,林孟落,温悦瞬申请人:新加坡技术动态私人有限公司;南阳技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1