首页> 中国专利> 用于解决一类现实组合优化问题的算法开发环境的方法和装置

用于解决一类现实组合优化问题的算法开发环境的方法和装置

摘要

本发明涉及用于一种用于解决一类组合优化问题的算法开发环境。很多实际的现实应用可归结为组合优化问题。近年来,提出了用于解决这些问题的很多公知的算法。努力定制满足专用于特定领域的应用的算法仍很重要。而且,用于代码生成和修改的常规方法是冗长的和由此而低效的。为了满足快速生成用于高效解决给定类的现实问题的算法的需要,本发明的实施例包括了用于管理过程模块库的分层树(hierarchical tree)结构。基于优化的管理和面向对象的设计理念,用户通过直观的图形用户界面配置并生成遗传算法(GA)。定制生成的GA的目标搜寻方法可以很容易被实现以解决各种优化问题。这样,显著提高了算法开发的效率。

著录项

  • 公开/公告号CN101331505A

    专利类型发明专利

  • 公开/公告日2008-12-24

    原文格式PDF

  • 申请/专利号CN200680046884.8

  • 发明设计人 林明觉;徐一梁;

    申请日2006-12-08

  • 分类号G06N3/12(20060101);

  • 代理机构11283 北京润平知识产权代理有限公司;

  • 代理人周建秋;王凤桐

  • 地址 新加坡新加坡市

  • 入库时间 2023-12-17 21:10:54

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2011-12-14

    授权

    授权

  • 2009-02-18

    实质审查的生效

    实质审查的生效

  • 2008-12-24

    公开

    公开

说明书

技术领域

本发明涉及集成的问题解决领域。更具体地,本发明涉及一种系统,其用于利用任何其他形式的启发式或超启发式搜索快速开发具有混合可能性的遗传算法,以解决组合优化问题的特定类的现实应用。实现这种定制算法的方法只需对编码花很少的精力,却交出高效解决给定类的问题的算法形式的结果。在一种方式中,本发明涉及配置用于提供供应链管理的解决方案的遗传算法(GA),但是应理解的是本发明并非仅限于该用途。

背景技术

本说明书中的讨论是由于发明人认识到某些现有技术的问题而产生。

在最近几十年,现实情况中组合优化的应用日益增多。经常地,这些现实情况问题对应于已在学术中被分类的多类组合优化问题。随着问题范围的扩大,这些问题的计算复杂度趋向于指数增长。这些问题属于被称之为NP-hard的一类问题。NP-hardness使得这些优化问题通过精确的穷举方法或确定性的算法是难以计算的。因此,出现很多基于启发式和超启发式的方法以满足为这些问题配置快速和高效的解决方案的需要。这些方法被分类为逼进解决方法,且算法通常在本质上是非确定性的。例子可包括进化计算、模拟退火、禁忌搜索、神经网络、自适应贪婪方法,以及最近的诸如蚁群优化的群集智能方法。

但是,为了利用这些算法的能力解决现实问题,通常需要花相当多的精力来设计、实现和定制算法以适合问题领域的具体性质。常规算法开发过程往往需要大量的繁重且低效的低级代码生成和修改。考虑到这些,越来越多的人转为开发平台以使算法开发和问题解决过程更加容易。特别关心的是涉及进化算法的这类问题解决环境,所述进化算法已经由于其普遍性和健壮性而吸引了很多的注意。

在美国专利No.6,112,126中,提出了一种自适应的面向对象的优化系统,其包括目标搜寻(goal-seeking)智能软件对象。但是,本发明仅专用于解决过程控制优化。它对一般的问题解决没有多少帮助。

在美国专利No.6,263,352、美国专利No.6,086,617中,提出了Epogy过程集成和设计优化软件以及递阶进化工程设计系统(HEEDS)软件、具有包括遗传算法的各种优化技术的问题解决环境。它们提供了友好用户界面以研究用于解决所提出的不同的优化问题的各种优化工具。这一类平台促进了算法设计过程并因此大大提高了解决问题的效率。但是,这些软件工具实质上是模拟环境。虽然在这些环境下各种算法可以被配置和高效地执行,但该执行依赖于整个系统。虽然是总控问题解决算法,但对于需要嵌入的实时解算器的应用,这一类环境不提供配置高效独立程序的灵活性。在美国专利No.5,581,657中,在特定遗传算法中,引入了分布计算技术以增强现有的优化技术解决问题的能力。但是,因为它实质上仍是算法执行者,不能满足快速生成独立问题解决算法的需要。

在美国专利No.6,286,017中,提出了一种帮助用户快速生成独立应用的图形环境。它包括由表格处理软件(spreadsheet)管理的模块库,并采取其他软件重用技术。用户能利用它提供的友好的图形用户界面(GUI)从库中获得过程。基于所选的过程,自动生成独立的应用。但是,该发明仅针对编程事件。它不涉及任何算法设计知识。因此,当需要开发诸如超启发法的复杂算法时,它可能不满足解决方法的需要。

TOMLAB是MATLAB中的普通优化环境。它实质上是MATLAB工具箱,其封装了各种优化过程,该过程包括类似遗传算法的复杂的超启发法。它大概使用户很容易获得集成的过程和例程以建立源代码形式的应用。但是,它不能自动生成源代码且用户必须处理功能编程语言,即MATLAB编程语言。这对可能不熟悉MATLAB语言的用户是个大障碍。而且,它需要昂贵的第三方软件环境,即MATLAB,的支持。

进化算法的简单规范(EASEA)是专用于进化算法(EA)规范的高级脚本语言。它从公知的EA库中获取各种EA过程和例程:GALib和EO。用户用EASEA语言编写.ez文件以配置进化算法。然后EASEA编译器将.ez文件编译成C++文件。然后所生成的C++文件被编译并与对应的库链接以产生执行原始.ez文件中指定的进化算法的可执行文件。这样,可避免算法开发中最繁重的代码生成工作。因此,可以显著提高应用开发的效率。但是,EASEA以及其他类似的语言,即进化算法建模语言(EAML),仍然是一种基于文本形式的语言,虽然它比任何功能编程语言具有更高的抽象度。这两种脚本语言都需要专门设计的编译器来将脚本语言转换成功能编程语言。而且,普通用户必须熟悉该语言的语法。

本发明书中文档、设备、行为或知识的任何讨论都被包括以解释本发明的上下文。不应当认为是承认任何所述材料形成为部分现有技术的基础或此处的公开内容和权利要求的优先权日或之前的相关技术中的普通公知常识。

发明内容

大体上,本发明提供了一种用于解决至少一个组合优化问题的配置搜索算法的过程组件的数据结构,以及使用所述结构的方法和装置。所述数据结构是具有与配置过程组件的方式相关联的节点的树。数据树的遍历对应于配置过程组件的步骤。

通过遍历算法而引导用户逐节点地经过树结构,在每个节点在可用的选项间做选择。某些所述选项包括确定遍历算法采取哪一路径经过树结构的选项。这使通用的软件系统成为可能,该软件系统提供开放且友好的界面;使用户能够根据解决方法而快速地配置进化算法并自动地优化算法的配置以解决一类组合优化问题。所提到的这类问题是那些其解决方案可被表示为排列串结构(permutation string structure)的问题。

本发明的第一个具体表达是配置用于解决至少一个组合优化问题的搜索算法的一个或多个过程组件的一种方法,所述方法对每个过程组件使用代表配置该过程组件的方式的对应数据结构,

所述数据结构包括在树结构中被关联到一起的多个节点,多个所述节点代表将要做出的用于配置过程组件的相应选择。

所述方法包括通过遍历算法遍历树结构来配置所述过程组件,其中多个所述节点依次被标记为当前节点,以及,在当前节点代表将要做出的用于配置过程组件的选择时,接收做出当前节点所代表的选择的输入。

本发明的可替换点可以用所述方法中使用的数据结构来表示。

特别地,本发明的可替换表达是一种配置用于解决至少一个组合优化问题的搜索算法的过程组件所使用的数据结构,其中所述数据结构包括代表算法的过程组件的可能配置的树结构,所述树结构包括:

代表算法的组件的主节点;

起源于所述主根节点的一个或多个第一节点,每个第一节点是(i)代表配置过程组件的一个或多个选项的变化节点(variation node),或者(ii)代表配置过程组件所需的一个或多个选择的属性节点(property node);

一个或多个第二节点,每个第二节点起源于所述第一节点之一,其中如果第二根节点起源于变化节点,所述第二节点代表对应选项之一,以及如果第二根节点起源于属性节点,所述第二节点代表选择之一。

本发明的可替换表达是一种配置用于解决组合优化问题的搜索算法的过程组件所使用的数据结构,其中所述数据结构包括代表算法的组件过程的可能配置的树结构,

所述树结构包括在分层结构中链接在一起的多个子树;

每个子树与过程组件的对应方面相关联,以及是以下之一:

与配置过程组件的对应方面的多个选项相关联的变化子树,或

与过程组件的对应方面所需的一个或多个选择相关联的属性子树。

在本发明的另一方面中提供一种在配置用于解决组合优化问题的算法中所使用的数据格式,其中所述数据格式包括树结构,所述树结构包括:

主根节点;

起源于所述主根节点的至少一个第一根节点;

起源于所述第一根节点的至少一个第二根节点,其中所述至少一个第二根节点包括下列之一:

a)所述第一根节点的变化;

b)指向所述第一根节点的一个或多个变化的节点;

c)所述第一根节点的每个变化所共有的属性;

d)指向所述第一根节点的每个变化所共有的属性的节点;

e)另一个第一根节点;

f)另一个第二根节点;

g)NULL。

在另一方面中,本发明提供一种配置用于生成解决至少一个组合优化问题的算法的启发式搜索过程的至少一个过程组件的方法,所述至少一个过程组件包括具有变化节点和属性节点的树结构,所述方法包括根据以下步骤遍历所述树结构:

a)选择包含起源于所述树的主根节点的根节点的子树;

b)选择起源于所述根节点的一个节点;

c)确定所选的一个节点是叶节点还是另一子树的根节点;

d)如果所选的一个变化节点是另一子树的根节点,对所述另一子树重复步骤b)和c);

e)如果所选的一个节点是叶节点,返回所述叶节点的值以配置过程组件;

其中执行步骤a)到e)以使得变化节点优先于属性节点。

优选地,所述算法可包括遗传算法和/或混合遗传算法。

在另一方面中,本发明提供一种配置用于解决优化问题的遗传算法的方法,所述方法包括步骤:

a)提供代表遗传算法的各个可能的配置的初始的染色体群体;

b)基于适应度(fitness)函数评价染色体群体以指定群体的成员作为父代;

c)对父代执行一个或多个遗传操作以繁殖后代;

d)用后代和父代一起更新群体;

e)确定所更新的群体是否满足结束条件;

f)重复步骤a)到e)直到满足结束条件。

在优选方面中,本发明提供适于配置用于生成解决至少一个组合优化问题的算法的启发式搜索过程的至少一个过程组件的设备,所述设备包括适于根据预定的指令集操作的处理器装置(means),结合有所述指令集的所述设备适于执行此处公开的方法。

在另一优选方面中,本发明提供一种计算机程序产品,该产品包括:

计算机可用介质,该介质包括包含在所述介质上的计算机可读程序代码和计算机可读系统代码,其用于在数据处理系统中配置用于生成解决至少一个组合优化问题的算法的启发式搜索过程的至少一个过程组件,所述计算机程序产品包括:

所述计算机可用介质中的计算机可读代码,其用于执行此处公开的方法中的任何一个方法的方法步骤。

本发明的优选实施例使得本发明可以满足总控解决方案提供者的需要和挑战。所述优选实施例为开发者提供了平台以通过集成的问题解决环境来配置用于高效解决现实优化问题的算法。不具有关于算法设计的很深的背景知识和具有中等水平的编程技能的用户或系统集成商,可使用该平台配置和生成混合有环境中提供的任何启发法或超启发法的遗传算法。结果是基于很高水平的用户说明书而生成的独立程序。通过将问题领域具体特征引入源代码,用户需要很少的编码精力就可定制生成的解决各种关心的问题的程序。这样,算法开发的效率得到了显著的提高。本发明特别适用于这类具有排列解析结构(solution structure)的优化问题,因为很多现实问题的解决方案可归结为排列串。

本发明的其他方面和优选方面被公开在说明书中和/或限定在所附的权利要求中,形成本发明的说明的一部分。

特别是,本发明的某些实施例提供了许多优点和/或有益的结果,如下:

1、用于设计和开发解决复杂优化问题的高效算法的综合问题解决环境。

2、所述环境与用于设计和配置混合遗传算法的变量的开发平台有关。

3、遗传算法开发平台致力于一类广泛适用的组合优化问题,由此解析结构可用排列串代表。

4、所述遗传算法开发平台还包括基于模块的过程库。

5、所述基于模块的库采用“左变化-右属性”树结构的新的分层树结构作为管理和组织过程模块的方法。

6、所述遗传算法开发平台还包括用于配置混合遗传算法的高级图形用户界面。

7、所述图形用户界面实现了用于算法配置的树结构的可视化。

8、所述“左变化-右属性”树结构还包括“左变化-右属性”树遍历规则。这种遍历规则,与深度优先树遍历规则一起,引导用户通过沿着分层树和子树遍历而完成算法的配置。

9、所述基于模块的库基于面向对象的构架。

10、源代码生成器,其能基于用户指定的配置来生成独立程序,并且基于面向对象的基于模块的库和以上树结构而被执行。

11基于目标搜寻的程序定制由源代码生成器产生,以解决各种优化问题。

通过下面给出的详细说明,本发明的其他适用范围将变得明显。但是应理解,详细说明和具体实施例虽然表明了本发明的优选实施例,但仅通过示例性方式给出,因为通过这些详细说明,本发明的主旨和范围中的各种改变和修改对本领域技术人员而言是很显然的。

附图说明

通过参考结合附图的优选实施例的以下说明,相关领域技术人员可以更好地理解本申请的其他公开内容、目的、优点和方面,其仅通过示例性的方式给出,且因此不是对本发明的限制,其中:

图1显示了遗传算法(或混合遗传算法)流程图的一些可能的功能构造,由可被作为本发明的实施例的方法和装置配置的搜索算法中的过程组件组成。

图2显示了本发明的一个实施例,其是组件“后代生产者”的分层树结构。

图3显示了本发明的一个实施例,其是组件“个体操作”的树结构。

图4显示了本发明的一个实施例,其是组件“群体初始化”的树结构。

图5显示了本发明的一个实施例,其是组件“群体更新”的树结构。

图6显示了本发明的一个实施例,其是组件“群体评价”的树结构。

图7显示了本发明的一个实施例,其是组件“结束条件”的树结构。

图8示出了组件“后代生产者”的示例配置的流程。

图9显示了根据结构观点而将任一遗传算法分成三个组件。

具体实施方式

实用性

本发明具有广泛的实用性。其用作问题解决环境的效用的证明已实现为具有工业相关性的应用。对本发明的基于排列的问题使用算法开发环境,生成混合遗传算法以及随后集成到供应链管理工作流。混合GA作为计划和调度引擎以管理由一队卡车将燃料分配到零售店(用于驾车者的加油站)。每个零售店提交针对补充燃料的种类和数量的订单或需求。

我们把全部计划者称为燃料燃料运送卡车调度系统(FTDS)。每辆卡车具有有限的容量。从指定的仓库或分配中心开始,它只能运载有限数量的燃料以分派到给定区域中的各个站。优化的主要目的是使分派成本最小,其通常由总的运送距离或时间而定。FTDS帮助计划人为燃料卡车生成一组路径。除了卡车容量的限制,通常有更多约束,如时间因素(在指定时间期限中递送)和服务优先级,也需要考虑。

由于本发明的优选实施例,我们配置了混合遗传算法并生成了对应的源代码。结合问题领域具体特征后,如卡车和站点信息、距离信息等,在相当短的时间内获得了调度程序的第一个版本。利用常规的系统开发方法,算法的编码周期可能需要几周或甚至几个月。

常规的算法开发过程通常需要花很多精力在低级代码生成和修改。这是繁重和低效的,且似乎不能跟上应用的数量以及多样性的迅速增长,以及伴随着这一事实:一些问题领域的复杂度需要手工算法以获得适度的可接受的性能水平。考虑到这些,需要开发一个平台以集成有关用于解决特定类的问题的算法的设计和开发的资源。在本发明的实施例中,我们致力于具有排列解析结构的这类优化问题。这意味着问题的任何可能的解决方案可被编码为排列串。

在本发明的优选实施例中,典型的系统结合了用于配置解决适于所提到的这类问题的优化问题的解决方法的过程模块。利用这些实施例,可以方便地配置遗传算法的基于启发式的过程。

图1示出了GA(或混合GA)流程图的一些可能的配置。从图中,GA模块中有6个组件。首先,“群体初始化”过程产生初始的染色体群体。然后,在生成环中,基于适应度函数评价这些染色体。在大多数情况下,关于群体的统计信息还需要通过“群体评价”过程模块获得。之后,个体的群体被指定为父代。使用“后代生产者”过程(例如,交叉和/或克隆),父代繁殖以创建后代的成员。虽然在GA中不是必须的,“个体操作”(例如变异和/或局部搜索)经常应用于改变或提高后代的这些现有成员的遗传成分。最后,遵循“群体更新”机制,所产生的后代和父代一起,组成了新的父代群体用于进一步繁殖。重复此过程直到GA搜索收敛或满足结束条件。

模块的每个组件与为用户提供用于调节和测试算法的各个配置的选项的一组属性和性质相关。以分层树结构管理和组织所有属性和性质。我们将这一结构称为“左变化-右属性”树结构。

图2表示了“后代生产者”组件的树结构。它用于从用于后续繁殖操作的父代生成后代个体。“后代生产者”的形式为虚线椭圆节点的左孩子变化作为左子树的根以表示其父代的变化,即“后代生产者”(例如交叉和克隆等),而作为右孩子的虚线矩形框“属性”是右子树的根,表明“后代生产者”的所有变化的共同属性,如“父代选择”。类似地,后续的子树按相同结构而被管理和组织。例如,作为“后代生产者”的变化之一的“交叉”包含变化,如“一致交叉”、“顺序-1交叉”、“一点交叉”等等,组织在其左子树中。同时,所有这些变化具有一个共同特征,即,“交叉率(crossover rate)”,用六边形框表示的实数参数。因此,其被表示为“交叉”的右子树中的节点。注意,虚线框“变化”和“属性”还以不同方式限定配置左和右子树的规则。对于“变化”子树,用户仅需选择其一个孩子(即一个变化)并配置这个孩子的对应子树。对于“属性”子树,需要配置所有的孩子。当系统实现遍历算法时,递归地应用此规则以遍历先前存在的树结构,需要用户在所有需要从多个选项或者数值中进行选择的点之处进行输入。系统由此而指导用户配置可行的算法。

本领域技术人员会认可,不难理解这一分层树结构可随意容纳其他用于进行修饰的过程。过程可与现有的过程定位在相同水平,作为它们的兄弟。例如,其他交叉操作符,如部分匹配交叉(PMX),通过将它们定位为现有“一致交叉”、“顺序-1交叉”和“一点交叉”的兄弟,可以容易地引入系统。使用与前述相同的树结构来管理它们对应的性质和特征。因此,此结构可提供开放和易于升级的系统。

注意,树结构可以以多种方式重新设计而不改变其重要性或有用性,且不将树结构排除在本发明的范围之外。例如,标记为“父代选择”的节点的属性(右)子树是空的(“NULL”),表明不必选择属性。在本发明的范围内设计树结构的另一技术中,标记为NULL的节点可从图中省略。在设计树结构的又一技术中,标记为“属性”的节点也可省略。

图3示出了“个体操作”组件的树结构。它是应用于现有个体以提高其质量或改变其结构的一组过程。我们结合两种形式的“个体操作”:“2-交换局部搜索”和“变异”。结合了几个局部搜索的变化如“禁忌搜索”以及两种形式的变异(扰乱变异和有窗变异)。如上所述,通过遵循“左变化-右属性”规则,可引入任何已建立的过程。

图4示出了“群体初始化”组件的树结构。遗传算法开始于将要被指定为父代的初始群体。“群体初始化”过程负责生成该初始群体。在这个组件中,指定了群体大小(重要的GA参数)。初始的个体群体的质量能够对整个遗传算法的性能具有显著影响。因此,一般应用某些类型的基于启发法的局部搜索以提高初始群体的质量。本发明为用户提供对初始的个体群体应用“个体操作”的选项。注意,图4中的条目100是“个体操作”的独立实例。其配置可不同于生成环(如果有的话)中“个体操作”的配置。我们在图4中省略这个子树的结构,其已通过图3的方式而被详细表示。

图5示出了“群体更新”框的树结构。其用于确定哪个后代应该被接受到选择池中用于进一步繁殖下一代。这三个方案被显示为子树以及每个方案简要解释如下:

PU_1:用一定数量的精英(精英数目)替换重叠群体。

PU_2:一旦产生一定数量(更新间隔)的后代,仅来自父代的最好的染色体和后代被接受并添加到选择池中。

PU_3:只接受比最差的现有父代好且不同于现有群体中的成员的孩子。

“精英数目”和“更新间隔”是属性并分别被设置为PU_1和PU_2的实数参数。

图6示出了“群体评价”框的树结构。它用于评价当前父代群体。因此,用于评价个体适应度的“适应度函数”被封装在这个组件中作为其属性。此外,一些预处理,如“适应度换算”和“分类”经常在繁殖开始之前应用于父代群体。我们引入4种换算方法:线性换算、∑截断、幂律换算和分级。其中一些与实数参数相关,实数参数被设置为与对应的换算方法相关的属性。

图7示出了“结束条件”框的树结构。其用于控制结束遗传算法的模式。我们贯彻了三个准则:“时间”、“代的最大数目”和“收敛”。时间准则当用户定义的计算时间限制到达时结束遗传算法,而“代的最大数目”准则当迭代的数目到达用户指定的代数时结束算法。“收敛”准则通过计算连续的解决质量没有任何提高的代的数目来检测进化是否收敛。一旦所述数目超过用户限定的值,认为进化过程已收敛并因此结束。

利用由上述分层树结构管理的基于模块的过程库,用户能够自由地研究算法设计的各个方面。从图2到图7,显示出,与被配置的算法相关的可能“特征”被定位为对应树中的叶节点。这表明,用户确定算法的某一“特征”的工作实际上是找出在对应树中从根节点到特定叶节点的路径的过程。因此,配置完整算法的任务成为遍历树以找出从根节点开始到叶节点的一组路径的过程,递归地应用上述“左变化-右属性”规则。在本发明中,应用深度优先遍历模式。

图8示出了组件“后代生产者”的示例配置的流程。从根开始,它首先遍历“后代生产者”的变化(左)子树。根据“左变化-右属性”规则,仅选择一个变化,例如“交叉”。然后继续遍历对应的子树(“交叉”)。按照深度优先规则(中序遍历,LVR模式),它首先遍历“交叉”的变化(左)子树,假设用户选择“一致”交叉,它到达第一叶节点,并继续遍历“交叉”的属性(右)子树。与之相关的是实数参数“交叉率”。为“交叉率”指定实数值参数之后,流程前进到第二叶节点并继续遍历“后代生产者”的属性(右)子树。这里,只剩下“父代选择”特征要被配置。为此,我们从遍历“父代选择”的变化(左)子树开始。假设用户从“父代选择”可用的三个变化中选择“竞赛”,它到达第三叶节点。因为“父代选择”的属性(右)子树是空的(NULL),这棵树的遍历和这个组件的配置完成。上述遍历过程覆盖了从根节点到三个叶节点的三个路径:“一致”、“交叉率”和“竞赛”。这样,用户配置了可行的“后代生产者”实例,这是一种利用竞赛父代选择方法和实数交叉率的一致交叉的形式。此算法的其他组件的配置可以类似地进行以获得完整的遗传算法。

注意,利用分层树结构,系统开发者在配置算法的过程中仅通过图形用户界面参与高级用户系统交互以处理具体问题领域。任何遗传算法的变化可用流程图表示,其基于上述的6个组件的框而得到。每个组件的配置可以用树结构可视化实现。用这种方法,即使具有有限算法设计专业知识的一般用户都能通过非常高水平和直观的图形界面来配置和设计各种遗传算法。这样,算法设计的效率大大提高。

配置所需的遗传算法后,用户能使用本发明的代码生成器基于他/她指定的配置生成源代码,例如,C++源代码文件。本发明采用面向对象的构架来实现代码生成功能。树结构中每个节点(除了“变化”和“属性”节点,可认为其是附属节点)被当作对象(即使对实数参数,因为它可具有如范围、精度等属性)并被实现为类。对树中的任一对象,其属性子树成员可被表示为类的成员变量。“变化”孩子可被实现为父代(基类)的子类。孩子还可具有其自己的特征,即变化和/或属性,可以被类似地设置为其超类(superclass)和/或成员变量。从上述说明中,用户配置信息被存储在树结构中。优选实施例中的代码生成器的基本原理是沿着由用户配置限定的从根到叶节点的路径,以及然后按照.h文件和.cpp文件获取并生成对应的对象/类。所有生成的文件构成独立程序。它可以看作用于解决各种现实问题的遗传算法模块。

如图9所示,任何遗传算法从结构的观点都可被分成3个组件:遗传表示、遗传操作和适应度函数。本发明的优选实施例致力于基于排列的优化问题。自动地生成编码为排列串的人工染色体。所有遗传操作,如交叉和变异,是专门为处理排列串而设计的。它们通常是与问题无关的,虽然不同操作可导致因问题而异的性能。因此,通常花费大多数的编码时间的遗传操作的生成也遵循用户的高级说明书而被自动完成。仅适应度函数涉及问题的具体领域信息,并因此是与问题相关的。适应度函数用于基于所讨论的问题的具体领域的知识来评价个体。它在指导GA研究整个解决前景中发挥很大作用。它对指导算法向最优收敛也很重要。给定问题的具体领域信息可以只被存储在特别生成的类:问题中。原则上,人们只需在所生成的遗传算法模块中手工实现适应度函数以为解决特定领域的问题而定制它。注意,适应度函数的空白模块也被生成为源代码占位符。用户只需重写它的函数体来为不同的问题定制算法。这样,避免了算法开发中最耗时的代码生成工作。还最小化了代码修改和定制所耗的精力。它与上述算法设计的高级配置过程一起,显著提高了算法开发的效率。

虽然已结合本发明的具体实施例描述了本发明,但应该理解为能做进一步的修改。本申请意欲覆盖本发明的任何变化用途或改编,所述改编大体上遵循本发明的原理且包括脱离本公开内容但属于在本发明所属的领域中的已知的或惯例的实践的范围且可应用于上述本质特征的那些改变。

因为本发明可以在不脱离本发明的本质特征的主旨的情况下被实现为几种形式,应理解除非指定,上述实施例并非用于限制本发明,而应在所附权利要求所限定的本发明的主旨和范围内进行宽泛地理解。意欲将各种修改和等价布置包括在本发明和所附权利要求的主旨和范围中。因此,具体实施例应被理解为可实践本发明的原理的很多方式的示例。在以下的权利要求中,装置+功能句子意欲覆盖执行限定功能的结构,并且不仅是结构的等价,还有等价结构。例如,虽然钉子和螺丝钉可能不是结构等价物,因为钉子采用圆柱形表面把木质部分固定在一起,而螺丝钉采用螺旋状表面把木质部分固定在一起,但在紧固木质部分的环境中,钉子和螺丝钉是等价结构。

本说明书中所使用的“包括/包含”是用于指明规定的特征、整数、步骤或组件的存在,但并不排除存在或添加一个或多个其他特征、整数、步骤、组件或其组合。因此,除非上下文清楚地要求,在说明和权利要求中,词语“包括”、“包含”等等应被理解为包含的意思,而不是排他或穷举的意思;即,意思是“包括,但不限于”。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号