基于遗传禁忌算法的案例检索策略

基于遗传禁忌算法的案例检索策略
基于遗传禁忌算法的案例检索策略

 第13卷第1期 2004年2月

系统工程理论方法应用

SYST E M S EN G I N EER I N G-TH EOR Y M ETHODOLO GY A PPL I CA T I ON S

V o l .13N o.1 

Feb .2004 

文章编号:100522542(2004)0120010204

基于遗传禁忌算法的案例检索策略

黄继鸿, 雷战波, 李欣苗

(西安交通大学管理学院,西安710049)

【摘要】将遗传算法和禁忌算法引入案例推理系统,首先使用遗传算法对案例检索中案例属性的权重进行优化,提出了基于遗传禁忌混合算法的检索策略,并应用于基于案例推理的企业财务危机智能预警支持系统,提高了系统的效率和质量。

关键词:遗传禁忌算法;案例检索;案例推理;智能预警支持系统中图分类号:T P 18 文献标识码:A

Research on Case Retr ieval Porcess Based on a Hybr id Approach

Usi ng Genetic A lgor ith m s and Tabu Search

H UA N G J i 2hong , L E I ZH an 2bo , L I X in 2m iao

(Schoo l of M anagem en t ,X i’an J iao tong U n iv .,X i’an 710049,Ch ina )

【Abs tra c t 】T h is p ap er in troduces a hyb rid app roach u sing genetic algo rith i m and tabu search (GA T S )in to

case 2based reason ing system .F irstly ,GA is u sed to find an op ti m al o r near op ti m al w eigh t vecto r fo r the attribu tes of cases in case index ing and retrieving .T hen a retrieval p rocess is p ropo sed based on the hyb rid app roach u sing GA T S ,w h ich is app lied to in telligen t early 2w arn ing suppo rt system fo r en terp rise financial crisis based on case 2based reaso ing and i m p roves bo th accu racy and efficiency of the system .Ke y w o rds :genetic algo rith i m and tabu search (GA T S );case retrieval ;case 2base reason ing ;in telligen t early 2w arn ing suppo rt system

收稿日期:2002211211 修订日期:2003201217

基金项目:国家自然科学基金项目(79970012);国家自然科学基

金重大项目(5999047024)

作者简介:黄继鸿(19782),男,博士生。主要从事决策支持系统

与人工智能的研究。

案例推理(Case 2B ased R eason ing ,CBR )是人工智能应用中的一种重要推理技术,其推理过程为“检索→重用→修正→存储”。而案例检索是CBR 的核心技术,它直接决定CBR 的速度和精度,很多CBR 系统实际上就是一个检索系统。在CBR 中,检索通常分为两个阶段,即若干相关候选案例的检索和最佳案例的选择。目前在A I 技术中,案例的检索策略主要有最近相邻策略(KNN )、归纳推理策略、知识引导策略等,其中,KNN 法由于概念清晰、计算简便而被普遍采用。但是,KNN 在实际应用中存

在着两个不可回避的问题:案例特征权重的确定及检索时间随案例数目呈线性增长。这两个问题严重影响着KNN 法的案例检索质量与效率,尤其对于大型复杂案例库。本文使用遗传算法(Genetic A lgo 2rithm ,GA )对案例属性权重进行了优化,提出基于遗传禁忌混合算法(GA T S )的检索策略,并且应用在基于CBR 的企业财务危机智能预警支持系统(CBR 2IE W SS ),提高了系统的检索效率和质量。

1 遗传禁忌算法

1.1 GA 及其缺陷

GA [1]

是一种有别于以往优化算法的一种新搜索算法,它是建立在自然选择和群体遗传学机理基础上的随机、迭代、进化、并行搜索(寻优)算法,模拟

自然中的生命进化机制。一般GA 包含3个基本算子:选择、交叉、变异。通过这3个算子的共同作用对

染色体群施加生存压力,使群体经过一系列迭代得以朝着更好解的方向进化。同其他传统搜索方法相比,GA的主要特点是:①使用问题参数的编码集,而不是参数本身进行工作;②在点群中而不是在一个单点上进行寻优;③仅使用问题本身所具有的目标函数进行工作,而不使用函数的导数或其它的辅助信息;④使用随机转换规则而不是确定性规则来工作。

尽管GA能够胜任大多数组合优化问题,但是对于像大规模神经元网络的权系数优化、网络的结构优化等超大规模的优化问题,GA的应用就受到了限制。究其原因,主要在于GA在进化搜索过程中,每代总是要维持一个较大的群体规模,从而使计算次数呈非多项式时间增加,限制了GA的使用。

GA的另一个不足之处是“早熟”。造成这种未成熟收敛的原因,一方面是GA中最重要的遗传算子——交叉算子使群体中的染色体具有局部相似性,从而使搜索停滞不前;另一方面是变异概率又太小,以至于不能使搜索转向其他的解空间进行搜索。此外,GA还有爬山能力差的弱点。

1.2 禁忌算法及其缺陷

禁忌算法(T abu Search,T S)是一种亚启发式随机搜索算法[1],它从一个初始可行解出发,选择一系列的特定搜索方向(移动)作为试探,选择实现让特定的目标函数值变化最多的移动。为了避免陷入局部最优解,T S搜索中采用了一种灵活的“记忆”技术,对已经进行的优化过程进行记录和选择,指导下一步的搜索方向,这就是T abu表的建立。T abu表中保存了最近若干次迭代过程中所实现的移动的反方向移动,凡是处于T abu表中的移动,在当前迭代过程中是不允许实现的,这样可以避免算法重新访问在最近若干次迭代过程中已经访问过的解群,从而防止了循环,帮助算法摆脱局部最优解。另外,为了尽可能不错过产生最优解的“移动”,T S搜索还采用“释放准则”的策略。

T S的搜索速度比GA快,但T S对于初始解具有较强的依赖性。一个较好的初始解可使T S在解空间中搜索到更好的解,而一个较差的初始解则会降低T S的收敛速度。为此,人们往往使用启发式算法来获得一个较好的初始解,提高T S的性能。T S 的另一缺陷是在搜索过程中初始解只能有一个,在每代也只是把一个解移动到另一个解,而不像GA 那样每代都是对解集(群体)进行操作。

1.3 遗传禁忌算法

为了克服GA中的早熟问题,并提高它的运算

效率,许多学者已经做了大量工作,并提出一些改进方法[2,3]。GA T S就是其中一种重要方法,它根据禁忌搜索算法的思想,对GA中进化时的核心算子——交叉算子和变异算子进行改造。本文引入一个短期记忆装置,即长度为L的禁忌表,表中记录了最近进行的L个移动。由于这些移动在目前的迭代中是被禁止的,所以L称为禁忌长度。根据这一原则,重新定义了遗传操作算子,分别记作禁忌交叉算子(T SCO)和禁忌变异算子(T S M O)。由于禁忌搜索的引入,使之拥有了记忆功能,从而具有较强的“爬山”能力。它能在搜索过程中跳出局部最优解,转向其他区域进行搜索,从而使获得更好解的概率大大增加。

T SCO算子作为交叉算子,在一个长度为T的禁忌表中记录着染色体的适应值,渴望水平取父代群体适应值的平均值。进行T SCO操作时,首先把子代的适应值同渴望水平相比较,如果比渴望水平好,则破禁,即这个子代染色体进入到下一代之中;如果子代比渴望水平差,但不属于禁忌,也接受这个子代;若是属于禁忌,则选择最好的那个父代进入到下一代中。从T SCO的重组过程可以看出,具有高适应值的子代进入到下一代的机会是很大的,但是并不是所有的高适应值的子代一定都进入到下一代。因为T SCO使用了禁忌表,它可以限制适应值相同的子代出现的次数,因此可使群体中尽可能保持染色体结构的多样性,从而避免算法早熟。

T S M O的禁忌表定义如下:在每个染色体中增设L个信息位,存储最近L个发生变异的信息位的号码。每次发生变异时,都将变异信息位的号码与禁忌表中的号码进行比较,若在表中,则属于禁忌范围;若变异后的个体的适应值大于渴望水平,则可进入下一代。首先,把一个解(染色体)作为输入(初始解),经T S M O作用,返回一个解作为输出。不同之处在于,T S M O是一个搜索过程,因此需要调用适应度函数来确定移动值,并根据移动值和禁忌表决定接受哪个移动(输出)。同样,由于T S M O是一个T S搜索过程,在搜索过程中可以接受劣解,因此, T S M O具有强于其他变异算子(例如倒位和部分倒位变异算子)的爬山能力。

2 基于GA的案例检索权重优化

2.1 最近相邻法

最近相邻法是应用最为广泛的方法,用数学公式表示为

Si m i=∑n i=1w j Si m i,j(1)

1

1

 第1期黄继鸿,等:基于遗传禁忌算法的案例检索策略

式中:Si m i 指案例库中第i 个旧案例与问题案例的综合相似度(也称综合匹配度);w j 指第j 个属性指标的权重;Si m i ,j 是第i 个旧案例的第j 个属性指标与问题案例的该属性指标的相似度,

Si m i ,j = Y 3j -Y i ,j Y 3

j (2)Y 3

j 是问题案例第j 个属性指标的值,Y i ,j 是案例库

中第i 个旧案例第j 个属性指标的值。

选择何种CBR 策略是CBR 推理过程中最为重要的部分,推理策略不同,得到新问题的解也不同。在CBR 2IE W SS 中,把GA T S 和KNN 结合起来构成混合检索策略。

2.2 案例属性权重优化

在最近相邻法中,案例属性特征权重的确定方法有A H P 、D elp h i 法等,如果案例特征权重不能正确赋值,KNN 检索的案例质量将难以得到保证,因此,首先采用GA 对特征权重进行优化。

2.2.1 适应度函数数学模型的建立 适应度函数的建立是GA 应用中的关键所在。对案例特征权重优劣的评价使用测试例集的检索精度这个指标,即GA 中适应度的度量。GA 优化的目标就是寻找最优

特征权重向量从而使检索精度最好。

将案例分为测试案例集T 和参考案例集R ,GA 适应度函数的数学模型表示为

m ax CR =1

n

∑n i =1

CA i

(3)s .t CA i =

1O (T i )=O (S j (i ))0

其他

 

 S j (i )=m in

∑l

k =1

w

k

T i ,k -R j ,k

T

i ,k

j ∈R

(4)

式中:CR 为系统检索精度;CA i 为测试集中第i 个案例的检索精度,取值为1或0,如测试集中第i 个案例的警度和参考集中最相似案例的警度都是“轻警”,则取值为1;否则为0;O (T i )是测试集中第i 个案例的预警结果;O (S j (i ))是参考集与测试集中第i 个案例最相似案例的预警结果;S j (i )是测试集中第i 个案例和参考集中第j 个案例的相似度;T ik 和R jk 分别为对应的属性值;l 为属性的数量;n 为测试案例的数目。

2.2.2 求解最优权重的算法

(1)随机产生m 个特征权重向量W =(w 1,w 2,…,w n ),组成初始群体;

(2)在给定特征权重向量下,将测试案例集中

的案例分别输入CBR 系统进行检索,计算出和测试案例相似度最大的案例;

(3)根据式(3)计算在给定特征权重向量下

CBR 系统的检索精度CR ;

(4)评估m 个特征权重向量分别对应的系统检

索精度(适应度)CR ;

(5)判断GA

的收敛条件(如最大进化代数)是否满足。如果满足,则停止,输出当前适应度最大的特征权重向量作为最优权重向量;否则,对特征权重向量进行选择、交叉、变异等操作,产生下一代特征权重向量群体,重复上述过程。图1为该算法的流程。

图1 最优权重确定的算法流程

3 基于GATS 的混合检索技术在

CBR 中的应用

3.1 编 码

GA T S 用于案例的检索可采用如表1所示的简

单的二进制编码方案。本文以13个财务指标为例,对于每个基因位,用0或1表示。例如资产负债率的基因位是1,表示一个可以接受的比较合理的债务水平,其值低于k ;否则,0代表着比较高的债务水平。特别地,数值a ~m 由专家群体根据行业特征和企业的实际情况经过研讨之后做出决策。各控制参数分别选作:种群容量为50,交叉率P c =0.7,变异率P m =0.005。3.2 适应度函数

案例检索是求解最相似的案例,结合最近相邻法给出问题的适应度函数,用下式计算:

m ax F i =1-Si m i (5)3.3 遗传操作

(1)选择算子。选择的目的是把优化的个体直

接遗传到下一代或通过配对交叉产生新的个体再遗传到下一代。排序选择机制是一种基于群体内各个

21— 系 统 工 程 理 论 方 法 应 用

第13卷 

个体之间的相对适应度设计的等级选择机制。首先根据各个个体的适应度大小进行排序,然后基于所排序号按某种规则进行选择。本文采用排序选择机制进行操作。

表1 GA使用时的染色体编码方案

财务指标合理基因不合理基因1营业利润率≥a1

2净利润率≥b1

3资产收益率≥c1

4资本利润率≥d1

5净资产收益率≥e1

6成本利润率≥f1

7应收款周转率≥g1

8存货周转率≥h1

9固定资产周转率≥i1

10流动比率≥j1

11资产负债率≤k1>k0

12速动比率≥11<10

13负债权益比率≥m1

(2)禁忌交叉算子。设x是父代经过交叉产生的一个子代染色体。如果x的适应值大于父代群体适应值的平均值,则接受它进入下一代;否则,如果x不在禁忌表中,同样接受x,如果属于禁忌,那么选择父代中最好的染色体进入到下一代。

(3)禁忌变异算子。设x是一个最优解(染色体),禁忌表的长度为L,用于存放最近发生变异的信息位的号码。对x进行变异操作产生新的染色体x′,将变异信息位的号码与禁忌表中的号码进行比较,若在表中,属于禁忌;若不在表中,且小于渴望水平,更新禁忌表;否则,如果x′的适应值大于渴望水平,接受它。

4 结 语

GA T S结合最近相邻法的混合检索技术应用于本文设计的基于CBR2IE W SS中,该系统不仅能够分析定量指标,并且结合专家知识和经验对企业内外部环境进行定性预警。结果表明:比单纯的最近相邻法确实提高了检索速度,并且提高了案例推理的质量。应用CBR2IE W SS对企业财务状况进行预警,促进企业管理人员提高警惕,采取措施防止危机发生,加强管理,成为企业很有效的管理工具。

参考文献:

[1] 陈国良,王煦法,庄镇泉,等.遗传算法及其应用[M].

北京:人民邮电出版社,1996.

[2] 李大卫,王 莉,王梦光.遗传算法与禁忌搜索算法的

混合策略[J].系统工程,1998,(9):28-34.

[3] M an taw y A H,You ssef L A bdel2M agid,Shok ri Z Se2

li m.A new genetic2based tabu search algo rithm fo r

un it comm itm en t p rob lem[J].E lectric Pow er System s R esearch,1999,49:71-78.

[4] Hongkyu Jo,Ingoo H an.Bank rup tcy p redicti on u sing

case2based reason ing,neu ral netw o rk s and discri m i2 nan t analysis[J].Expert System s w ith A pp licati on,

1997,13(2):97-108.

[5] 姜丽红,刘 豹.案例推理在智能化预测支持系统中

的应用研究[J].决策与决策支持系统,1996,6(4):63

-69.

[6] Kyung2Sh ik Sh in,Ingoo H an.Case2based reason ing

suppo rted by genetic algo rithm s fo r co rpo rate bond

rating[J].Expert System s w ith A pp licati on s,1999,

16:85-95.

[7] E lhadi M T.Bank rup tcy suppo rt system:tak ing ad2

van tage of info rm ati on retrieval and case2based rea2 son ing[J].Expert System s w ith A pp licati on s,2000,

18:215-219.

《CAJ-CD规范》执行优秀期刊

3

1

 第1期黄继鸿,等:基于遗传禁忌算法的案例检索策略

禁忌搜索算法浅析

禁忌搜索算法浅析 摘要:本文介绍了禁忌搜索算法的基本思想、算法流程及其实现的伪代码。禁忌搜索算法(Tabu Search或Taboo Search,简称TS算法)是一种全局性邻域搜索算法,可以有效地解决组合优化问题,引导算法跳出局部最优解,转向全局最优解的功能。 关键词:禁忌搜索算法;组合优化;近似算法;邻域搜索 1禁忌搜索算法概述 禁忌搜索算法(Tabu Search)是由美国科罗拉多州大学的Fred Glover教授在1986年左右提出来的,是一个用来跳出局部最优的搜寻方法。在解决最优问题上,一般区分为两种方式:一种是传统的方法,另一种方法则是一些启发式搜索算法。使用传统的方法,我们必须对每一个问题都去设计一套算法,相当不方便,缺乏广泛性,优点在于我们可以证明算法的正确性,我们可以保证找到的答案是最优的;而对于启发式算法,针对不同的问题,我们可以套用同一个架构来寻找答案,在这个过程中,我们只需要设计评价函数以及如何找到下一个可能解的函数等,所以启发式算法的广泛性比较高,但相对在准确度上就不一定能够达到最优,但是在实际问题中启发式算法那有着更广泛的应用。 禁忌搜索是一种亚启发式随机搜索算法,它从一个初始可行解出发,选择一系列的特定搜索方向(移动)作为试探,选择实现让特定的目标函数值变化最多的移动。为了避免陷入局部最优解,TS搜索中采用了一种灵活的“记忆”技术,对已经进行的优化过程进行记录和选择,指导下一步的搜索方向。 TS是人工智能的一种体现,是局部领域搜索的一种扩展。禁忌搜索是在领域搜索的基础上,通过设置禁忌表来禁忌一些已经历的操作,并利用藐视准则来奖励一些优良状态,其中涉及邻域(neighborhood)、禁忌表(tabu list)、禁忌长度(tabu 1ength)、候选解(candidate)、藐视准则(candidate)等影响禁忌搜索算法性能的关键因素。迄今为止,TS算法在组合优化、生产调度、机器学习、电路设计和神经网络等领域取得了很大的成功,近年来又在函数全局优化方面得到较多的研究,并大有发展的趋势。 2禁忌搜索算法的基本思想 禁忌搜索最重要的思想是标记对应已搜索的局部最优解的一些对象,并在进一步的迭代搜索中尽量避开这些对象(而不是绝对禁止循环),从而保证对不同的有效搜索途径的探索,TS的禁忌策略尽量避免迂回搜索,它是一种确定性的局部极小突跳策略。 禁忌搜索是对局部邻域搜索的一种扩展,是一种全局逐步寻求最优算法。局部邻域搜索是基于贪婪思想持续地在当前解的邻域中进行搜索,虽然算法通用易实现,且容易理解,但搜索性能完全依赖于邻域结构和初解,尤其会陷入局部极小而无法保证全局优化型。 禁忌搜索算法中充分体现了集中和扩散两个策略,它的集中策略体现在局部搜索,即从一点出发,在这点的邻域内寻求更好的解,以达到局部最优解而结束,为了跳出局部最优解,扩散策略通过禁忌表的功能来实现。禁忌表中记下已经到达的某些信息,算法通过对禁

遗传算法的c语言程序

一需求分析 1.本程序演示的是用简单遗传算法随机一个种群,然后根据所给的交叉率,变异率,世代数计算最大适应度所在的代数 2.演示程序以用户和计算机的对话方式执行,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的命令;相应的输入数据和运算结果显示在其后。3.测试数据 输入初始变量后用y=100*(x1*x1-x2)*(x1*x2-x2)+(1-x1)*(1-x1)其中-2.048<=x1,x2<=2.048作适应度函数求最大适应度即为函数的最大值 二概要设计 1.程序流程图 2.类型定义 int popsize; //种群大小 int maxgeneration; //最大世代数 double pc; //交叉率 double pm; //变异率 struct individual

{ char chrom[chromlength+1]; double value; double fitness; //适应度 }; int generation; //世代数 int best_index; int worst_index; struct individual bestindividual; //最佳个体 struct individual worstindividual; //最差个体 struct individual currentbest; struct individual population[POPSIZE]; 3.函数声明 void generateinitialpopulation(); void generatenextpopulation(); void evaluatepopulation(); long decodechromosome(char *,int,int); void calculateobjectvalue(); void calculatefitnessvalue(); void findbestandworstindividual(); void performevolution(); void selectoperator(); void crossoveroperator(); void mutationoperator(); void input(); void outputtextreport(); 4.程序的各函数的简单算法说明如下: (1).void generateinitialpopulation ()和void input ()初始化种群和遗传算法参数。 input() 函数输入种群大小,染色体长度,最大世代数,交叉率,变异率等参数。 (2)void calculateobjectvalue();计算适应度函数值。 根据给定的变量用适应度函数计算然后返回适度值。 (3)选择函数selectoperator() 在函数selectoperator()中首先用rand ()函数产生0~1间的选择算子,当适度累计值不为零时,比较各个体所占总的适应度百分比的累计和与选择算子,直到达到选择算子的值那个个体就被选出,即适应度为fi的个体以fi/∑fk的概率继续存在; 显然,个体适应度愈高,被选中的概率愈大。但是,适应度小的个体也有可能被选中,以便增加下一代群体的多样性。 (4)染色体交叉函数crossoveroperator() 这是遗传算法中的最重要的函数之一,它是对个体两个变量所合成的染色体进行交叉,而不是变量染色体的交叉,这要搞清楚。首先用rand ()函数产生随机概率,若小于交叉概率,则进行染色体交叉,同时交叉次数加1。这时又要用rand()函数随机产生一位交叉位,把染色

一种求解装箱问题的混合算法-最新文档

一种求解装箱问题的混合算法 : This paper presents a new hybrid algorithm based on genetic algorithm and tabu search for bin packing problem. It combines the advantage of global search ability of genetic algorithm with the adaptability of tabu search and has better convergence performance than simple genetic algorithm. At last, an practical example is applied to prove the efficiency of this algorithm. 0引言 装箱问题(Bin Packing Problem, BPP)是一类重要的组合优化问题,在现实生活中有着广泛的应用背景,特别在现代物流中,许多问题都抽象化为装箱问题或其变形,如货物如何装载,才能提高运载器具的利用率,从而降低运输成本;物流任务应如何调度,才能提高运行效率,等等。但在理论上,装箱问题是一个NP难题[1],很难精确求解。因此对其求解进行研究具有重要的理论价值和实际意义。 到目前为止,针对该问题人们提出了许多算法,但都有其局限性:枚举法和分支定界等精确算法在箱子数目稍大时,会出现“组合爆炸”;一些近似算法如下次适应NF、首次适应FF、降序首次适应FFD、最佳适应BF等,在解决复杂的装箱问题时结果与物品的体积数据有较大关系,在极端情况下很不理想;遗传

MATLAB课程遗传算法实验报告及源代码

硕士生考查课程考试试卷 考试科目: 考生姓名:考生学号: 学院:专业: 考生成绩: 任课老师(签名) 考试日期:年月日午时至时

《MATLAB 教程》试题: A 、利用MATLA B 设计遗传算法程序,寻找下图11个端点最短路径,其中没有连接端点表示没有路径。要求设计遗传算法对该问题求解。 a e h k B 、设计遗传算法求解f (x)极小值,具体表达式如下: 321231(,,)5.12 5.12,1,2,3i i i f x x x x x i =?=???-≤≤=? ∑ 要求必须使用m 函数方式设计程序。 C 、利用MATLAB 编程实现:三名商人各带一个随从乘船渡河,一只小船只能容纳二人,由他们自己划行,随从们密约,在河的任一岸,一旦随从的人数比商人多,就杀人越货,但是如何乘船渡河的大权掌握在商人手中,商人们怎样才能安全渡河? D 、结合自己的研究方向选择合适的问题,利用MATLAB 进行实验。 以上四题任选一题进行实验,并写出实验报告。

选择题目: B 、设计遗传算法求解f (x)极小值,具体表达式如下: 321231(,,)5.12 5.12,1,2,3i i i f x x x x x i =?=???-≤≤=? ∑ 要求必须使用m 函数方式设计程序。 一、问题分析(10分) 这是一个简单的三元函数求最小值的函数优化问题,可以利用遗传算法来指导性搜索最小值。实验要求必须以matlab 为工具,利用遗传算法对问题进行求解。 在本实验中,要求我们用M 函数自行设计遗传算法,通过遗传算法基本原理,选择、交叉、变异等操作进行指导性邻域搜索,得到最优解。 二、实验原理与数学模型(20分) (1)试验原理: 用遗传算法求解函数优化问题,遗传算法是模拟生物在自然环境下的遗传和进化过程而形成的一种自适应全局优化概率搜索方法。其采纳了自然进化模型,从代表问题可能潜在解集的一个种群开始,种群由经过基因编码的一定数目的个体组成。每个个体实际上是染色体带有特征的实体;初始种群产生后,按照适者生存和优胜劣汰的原理,逐代演化产生出越来越好的解:在每一代,概据问题域中个体的适应度大小挑选个体;并借助遗传算子进行组合交叉和主客观变异,产生出代表新的解集的种群。这一过程循环执行,直到满足优化准则为止。最后,末代个体经解码,生成近似最优解。基于种群进化机制的遗传算法如同自然界进化一样,后生代种群比前生代更加适应于环境,通过逐代进化,逼近最优解。 遗传算法是一种现代智能算法,实际上它的功能十分强大,能够用于求解一些难以用常规数学手段进行求解的问题,尤其适用于求解多目标、多约束,且目标函数形式非常复杂的优化问题。但是遗传算法也有一些缺点,最为关键的一点,即没有任何理论能够证明遗传算法一定能够找到最优解,算法主要是根据概率论的思想来寻找最优解。因此,遗传算法所得到的解只是一个近似解,而不一定是最优解。 (2)数学模型 对于求解该问题遗传算法的构造过程: (1)确定决策变量和约束条件;

禁忌搜索算法评述(一)

禁忌搜索算法评述(一) 摘要:工程应用中存在大量的优化问题,对优化算法的研究是目前研究的热点之一。禁忌搜索算法作为一种新兴的智能搜索算法具有模拟人类智能的记忆机制,已被广泛应用于各类优化领域并取得了理想的效果。本文介绍了禁忌搜索算法的特点、应用领域、研究进展,概述了它的算法基本流程,评述了算法设计过程中的关键要点,最后探讨了禁忌搜索算法的研究方向和发展趋势。 关键词:禁忌搜索算法;优化;禁忌表;启发式;智能算法 1引言 工程领域内存在大量的优化问题,对于优化算法的研究一直是计算机领域内的一个热点问题。优化算法主要分为启发式算法和智能随机算法。启发式算法依赖对问题性质的认识,属于局部优化算法。智能随机算法不依赖问题的性质,按一定规则搜索解空间,直到搜索到近似优解或最优解,属于全局优化算法,其代表有遗传算法、模拟退火算法、粒子群算法、禁忌搜索算法等。禁忌搜索算法(TabuSearch,TS)最早是由Glover在1986年提出,它的实质是对局部邻域搜索的一种拓展。TS算法通过模拟人类智能的记忆机制,采用禁忌策略限制搜索过程陷入局部最优来避免迂回搜索。同时引入特赦(破禁)准则来释放一些被禁忌的优良状态,以保证搜索过程的有效性和多样性。TS算法是一种具有不同于遗传和模拟退火等算法特点的智能随机算法,可以克服搜索过程易于早熟收敛的缺陷而达到全局优化1]。 迄今为止,TS算法已经广泛应用于组合优化、机器学习、生产调度、函数优化、电路设计、路由优化、投资分析和神经网络等领域,并显示出极好的研究前景2~9,11~15]。目前关于TS 的研究主要分为对TS算法过程和关键步骤的改进,用TS改进已有优化算法和应用TS相关算法求解工程优化问题三个方面。 禁忌搜索提出了一种基于智能记忆的框架,在实际实现过程中可以根据问题的性质做有针对性的设计,本文在给出禁忌搜索基本流程的基础上,对如何设计算法中的关键步骤进行了有益的总结和分析。 2禁忌搜索算法的基本流程 TS算法一般流程描述1]: (1)设定算法参数,产生初始解x,置空禁忌表。 (2)判断是否满足终止条件?若是,则结束,并输出结果;否则,继续以下步骤。 (3)利用当前解x的邻域结构产生邻域解,并从中确定若干候选解。 (4)对候选解判断是否满足藐视准则?若成立,则用满足藐视准则的最佳状态y替代x成为新的当前解,并用y对应的禁忌对象替换最早进入禁忌表的禁忌对象,同时用y替换“bestsofar”状态,然后转步骤(6);否则,继续以下步骤。 (5)判断候选解对应的各对象的禁忌情况,选择候选解集中非禁忌对象对应的最佳状态为新的当前解,同时用与之对应的禁忌对象替换最早进入禁忌表的禁忌对象。 (6)转步骤(2)。 算法可用图1所示的流程图更为直观的描述。 3禁忌搜索算法中的关键设计 3.1编码及初始解的构造 禁忌搜索算法首先要对待求解的问题进行抽象,分析问题解的形式以形成编码。禁忌搜索的过程就是在解的编码空间里找出代表最优解或近似优解的编码串。编码串的设计方式有多种策略,主要根据待解问题的特征而定。二进制编码将问题的解用一个二进制串来表示2],十进制编码将问题的解用一个十进制串来表示3],实数编码将问题的解用一个实数来表示4],在某些组合优化问题中,还经常使用混合编码5]、0-1矩阵编码等。 禁忌搜索对初始解的依赖较大,好的初始解往往会提高最终的优化效果。初始解的构造可以

遗传算法解决TSP问题

遗传算法解决TSP问题 姓名: 学号: 专业:

问题描叙 TSP问题即路径最短路径问题,从任意起点出发(或者固定起点),依次经过所有城市,一个城市只能进入和出去一次,所有城市必须经过一次,经过终点再到起点,从中寻找距离最短的通路。 通过距离矩阵可以得到城市之间的相互距离,从距离矩阵中的到距离最短路径,解决TSP问题的算法很多,如模拟退火算法,禁忌搜索算法,遗传算法等等,每个算法都有自己的优缺点,遗传算法收敛性好,计算时间少,但是得到的是次优解,得不到最有解。 算法设计 遗传算法属于进化算法的一种,它通过模仿自然界的选择与遗传的机理来寻找最优解. 遗传算法有三个基本算子:选择、交叉和变异。 数值方法求解这一问题的主要手段是迭代运算。一般的迭代方法容易陷入局部极小的陷阱而出现"死循环"现象,使迭代无法进行。遗传算法很好地克服了这个缺点,是一种全局优化算法。 生物在漫长的进化过程中,从低等生物一直发展到高等生物,可以说是一个绝妙的优化过程。这是自然环境选择的结果。人们研究生物进化现象,总结出进化过程包括复制、杂交、变异、竞争和选择。一些学者从生物遗传、进化的过程得到启发,提出了遗传算法。算法中称遗传的生物体为个体,个体对环境的适应程度用适应值(fitness)表示。适应值取决于个体的染色体,在算法中染色体常用一串数字表示,数字串中的一位对应一个基因。一定数量的个体组成一个群体。对所有个体进行选择、交叉和变异等操作,生成新的群体,称为新一代遗传算法计算程序的流程可以表示如下: 第一步准备工作 (1)选择合适的编码方案,将变量(特征)转换为染色体(数字串,串长为m)。通常用二进制编码。 (2)选择合适的参数,包括群体大小(个体数M)、交叉概率PC和变异概率Pm。 (3)确定适应值函数f(x)。f(x)应为正值。 第二步形成一个初始群体(含M个个体)。在边坡滑裂面搜索问题中,取已分析的可能滑裂面组作为初始群体。 第三步对每一染色体(串)计算其适应值fi,同时计算群体的总适应值。 第四步选择

基于遗传算法的matlab源代码

function youhuafun D=code; N=50;%Tunable maxgen=50;%Tunable crossrate=0.5;%Tunable muterate=0.08;%Tunable generation=1; num=length(D); fatherrand=randint(num,N,3); score=zeros(maxgen,N); while generation<=maxgen ind=randperm(N-2)+2;%随机配对交叉 A=fatherrand(:,ind(1:(N-2)/2)); B=fatherrand(:,ind((N-2)/2+1:end)); %多点交叉 rnd=rand(num,(N-2)/2); ind=rnd tmp=A(ind); A(ind)=B(ind); B(ind)=tmp; %%两点交叉 %for kk=1:(N-2)/2 %rndtmp=randint(1,1,num)+1; %tmp=A(1:rndtmp,kk); %A(1:rndtmp,kk)=B(1:rndtmp,kk); %B(1:rndtmp,kk)=tmp; %end fatherrand=[fatherrand(:,1:2),A,B]; %变异 rnd=rand(num,N); ind=rnd[m,n]=size(ind); tmp=randint(m,n,2)+1; tmp(:,1:2)=0; fatherrand=tmp+fatherrand; fatherrand=mod(fatherrand,3); %fatherrand(ind)=tmp; %评价、选择 scoreN=scorefun(fatherrand,D);%求得N个个体的评价函数 score(generation,:)=scoreN; [scoreSort,scoreind]=sort(scoreN); sumscore=cumsum(scoreSort); sumscore=sumscore./sumscore(end); childind(1:2)=scoreind(end-1:end); for k=3:N tmprnd=rand; tmpind=tmprnd difind=[0,diff(t mpind)]; if~any(difind) difind(1)=1; end childind(k)=scoreind(logical(difind)); end fatherrand=fatherrand(:,childind); generation=generation+1; end %score maxV=max(score,[],2); minV=11*300-maxV; plot(minV,'*');title('各代的目标函数值'); F4=D(:,4); FF4=F4-fatherrand(:,1); FF4=max(FF4,1); D(:,5)=FF4; save DData D function D=code load youhua.mat %properties F2and F3 F1=A(:,1); F2=A(:,2); F3=A(:,3); if(max(F2)>1450)||(min(F2)<=900) error('DATA property F2exceed it''s range (900,1450]') end %get group property F1of data,according to F2value F4=zeros(size(F1)); for ite=11:-1:1 index=find(F2<=900+ite*50); F4(index)=ite; end D=[F1,F2,F3,F4]; function ScoreN=scorefun(fatherrand,D) F3=D(:,3); F4=D(:,4); N=size(fatherrand,2); FF4=F4*ones(1,N); FF4rnd=FF4-fatherrand; FF4rnd=max(FF4rnd,1); ScoreN=ones(1,N)*300*11; %这里有待优化

一个简单实用的遗传算法c程序完整版

一个简单实用的遗传算 法c程序 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

一个简单实用的遗传算法c程序(转载) 2009-07-28 23:09:03 阅读418 评论0 字号:大中小 这是一个非常简单的遗传算法源代码,是由Denis Cormier (North Carolina State University)开发的,Sita (University of North Carolina at Charlotte)修正。代码保证尽可能少,实际上也不必查错。对一特定的应用修正此代码,用户只需改变常数的定义并且定义“评价函数”即可。注意代码的设计是求最大值,其中的目标函数只能取正值;且函数值和个体的适应值之间没有区别。该系统使用比率选择、精华模型、单点杂交和均匀变异。如果用Gaussian变异替换均匀变异,可能得到更好的效果。代码没有任何图形,甚至也没有屏幕输出,主要是保证在平台之间的高可移植性。读者可以从,目录 coe/evol中的文件中获得。要求输入的文件应该命名为‘’;系统产生的输出文件为‘’。输入的文件由几行组成:数目对应于变量数。且每一行提供次序——对应于变量的上下界。如第一行为第一个变量提供上下界,第二行为第二个变量提供上下界,等等。 /**************************************************************************/ /* This is a simple genetic algorithm implementation where the */ /* evaluation function takes positive values only and the */ /* fitness of an individual is the same as the value of the */ /* objective function */ /**************************************************************************/ #include <> #include <> #include <> /* Change any of these parameters to match your needs */ #define POPSIZE 50 /* population size */

论文-禁忌搜索算法

基于禁忌搜索算法的车辆路径选择 摘要:本文从VRP的提出背景与求解方法出发,阐释了禁忌搜索算法的原理与影响算法性能的关键因素,进而将禁忌搜索算法的思想运用于解决车辆路径问题,在VRP问题初始解的基础上,用禁忌搜索算法优化车辆配送路线,设计出直观且策略易于理解的客户直接排列的解的表示方法,最后将该算法用C语言实现并用于求解VRP问题,测试结果表明该算法可行且解的质量较高。 关键词:车辆路径问题;禁忌搜索;邻域;禁忌表 1.引言 物流配送过程的成本构成中,运输成本占到52%之多,如何安排运输车辆的行驶路径,使得配送车辆依照最短行驶路径或最短时间费用,在满足服务时间限制、车辆容量限制、行驶里程限制等约束条件下,依次服务于每个客户后返回起点,实现总运输成本的最小化,车辆路径问题正是基于这一需求而产生的。求解车辆路径问题(Vehicle Routing Problem简记VRP)的方法分为精确算法与启发式算法,精确算法随问题规模的增大,时间复杂度与空间复杂度呈指数增长,且VRP问题属于NP-hard问题,求解比较困难,因此启发式算法成为求解VRP问题的主要方法。禁忌搜索算法是启发式算法的一种,为求解VRP提供了新的工具。本文通过一种客户直接排列的解的表示方法,设计了一种求解车辆路径问题的新的禁忌搜索算法。 因此研究车辆路径问题,就是要研究如何安排运输车辆的行驶路线,使运输车辆依照最短的行驶路径或最短的时间费用,依次服务于每个客户后返回起点,总的运输成本实现最小。 2.车辆路径问题的禁忌搜索算法 2.1 车辆路径问题的描述 车辆路径问题的研究目标是对一系列送货点或取货点,确定适当的配送车辆行驶路线,使车辆有序地通过它们,在满足一定的约束条件(如货物需求量、发送量交发货时间、车辆容量限制、行驶里程限制、时间限制等)下,达到一定的目标(如路程最短、费用最小、时间尽量少、使用车辆尽量少等)。参见下图2.1所示:其中0表示配送中心,1~8表示客户编号。 图2.1 车辆路径问题 在本文中为使得问题易于理解,将该问题描述为:有一定数量的客户,各自有不同数量的货物需求,且每个客户的位置和需求量一定,一个物流中心提供这些货物,并有一个车队负责分送货物,每台配送车辆的载重量一定,这里假设车辆的型号一致,即最大载重量和最

禁忌搜索和应用

目录 一、摘要 (2) 二、禁忌搜索简介 (2) 三、禁忌搜索的应用 (2) 1、现实情况 (2) 2、车辆路径问题的描述 (3) 3、算法思路 (3) 4、具体步骤 (3) 5、程序设计简介 (3) 6、算例分析 (4) 四、禁忌搜索算法的评述和展望 (4) 五、参考文献 (5)

禁忌搜索及应用 一、摘要 工程应用中存在大量的优化问题,对优化算法的研究是目前研究的热点之一。禁忌搜索算法作为一种新兴的智能搜索算法具有模拟人类智能的记忆机制,已被广泛应用于各类优化领域并取得了理想的效果。本文介绍了禁忌搜索算法的特点、应用领域、研究进展,概述了它的算法基本流程,评述了算法设计过程中的关键要点,最后探讨了禁忌搜索算法的研究方向和发展趋势。 二、禁忌搜索简介 禁忌搜索(Tabu Search或Taboo Search,简称TS)的思想最早由Glover(1986)提出,它是对局部领域搜索的一种扩展,是一种全局逐步寻优算法,是对人类智力过程的一种模拟。TS算法通过引入一个灵活的存储结构和相应的禁忌准则来避免迂回搜索,并通过藐视准则来赦免一些被禁忌的优良状态,进而保证多样化的有效探索以最终实现全局优化。相对于模拟退火和遗传算法,TS是又一种搜索特点不同的meta-heuristic算法。 迄今为止,TS算法在组合优化、生产调度、机器学习、电路设计和神经网络等领域取得了很大的成功,近年来又在函数全局优化方面得到较多的研究,并大有发展的趋势。 禁忌搜索是人工智能的一种体现,是局部领域搜索的一种扩展。禁忌搜索最重要的思想是标记对应已搜索的局部最优解的一些对象,并在进一步的迭代搜索中尽量避开这些对象(而不是绝对禁止循环),从而保证对不同的有效搜索途径的探索。禁忌搜索涉及到邻域(neighborhood)、禁忌表(tabu list)、禁忌长度(tabu length)、候选解(candidate)、藐视准则(aspiration criterion)等概念。 三、禁忌搜索的应用 禁忌搜索应用的领域多种多样,下面我们简单的介绍下基于禁忌搜索算法的车辆路径选择。 1、现实情况 物流配送过程的成本构成中,运输成本占到52%之多,如何安排运输车辆的行驶路径,使得配送车辆依照最短行驶路径或最短时间费用,在满足服务时间限制、车辆容量限制、行驶里程限制等约束条件下,依次服务于每个客户后返回起点,实现总运输成本的最小化,车辆路径问题正是基于这一需求而产生的。求解车辆路径问题(vehicle routing problem简记vrp)的方法分为精确算法与启发式算法,精确算法随问题规模的增大,时间复杂度与空间复杂度呈指数增长,且vrp问题属于np-hard问题,求解比较困难,因此启发式算法成为求解vrp问题的主要方法。禁忌搜索算法是启发式算法的一种,为求解vrp提供了新的工具。本文通过一种客户直接排列的解的表示方法,设计了一种求解车辆路径问题的新的禁忌搜索算法。 因此研究车辆路径问题,就是要研究如何安排运输车辆的行驶路线,使运输车辆依照最

遗传算法与优化问题重要 有代码

实验十遗传算法与优化问题 一、问题背景与实验目的 遗传算法(Genetic Algorithm —GA),是模拟达尔文的遗传选择和自然淘汰的生 物进化过程的计算模型,它是由美国Michigan大学的J.Holland教授于1975 年首先提出的?遗传算法作为一种新的全局优化搜索算法,以其简单通用、鲁棒 性强、适于并行处理及应用范围广等显著特点,奠定了它作为21世纪关键智能 计算之一的地位. 本实验将首先介绍一下遗传算法的基本理论,然后用其解决几个简单的函数最值问题,使读者能够学会利用遗传算法进行初步的优化计算. 1. 遗传算法的基本原理 遗传算法的基本思想正是基于模仿生物界遗传学的遗传过程. 它把问题的参 数用基因代表,把问题的解用染色体代表(在计算机里用二进制码表示),从而 得到一个由具有不同染色体的个体组成的群体.这个群体在问题特定的环境里生存竞争,适者有最好的机会生存和产生后代. 后代随机化地继承了父代的最好特征,并也在生存环境的控制支配下继续这一过程. 群体的染色体都将逐渐适应环 境,不断进化,最后收敛到一族最适应环境的类似个体,即得到问题最优的解.值得注意的一点是,现在的遗传算法是受生物进化论学说的启发提出的,这种学说 对我们用计算机解决复杂问题很有用,而它本身是否完全正确并不重要(目前生物界对此学说尚有争议). (1)遗传算法中的生物遗传学概念 由于遗传算法是由进化论和遗传学机理而产生的直接搜索优化方法;故而在 这个算法中要用到各种进化和遗传学的概念. 首先给出遗传学概念、遗传算法概念和相应的数学概念三者之间的对应关系.这些概念如下:

(2)遗传算法的步骤 遗传算法计算优化的操作过程就如同生物学上生物遗传进化的过程,主要有三个基本操作(或称为算子):选择(Selection)、交叉(Crossove)、变异(Mutation). 遗传算法基本步骤主要是:先把问题的解表示成“染色体”,在算法中也就 是以二进制编码的串,在执行遗传算法之前,给出一群“染色体”,也就是假设 的可行解.然后,把这些假设的可行解置于问题的“环境”中,并按适者生存的原则,从中选择出较适应环境的“染色体”进行复制,再通过交叉、变异过程产生更适应环境的新一代“染色体”群.经过这样的一代一代地进化,最后就会收敛到最适应环境的一个“染色体”上,它就是问题的最优解. 下面给出遗传算法的具体步骤,流程图参见图1: 第一步:选择编码策略,把参数集合(可行解集合)转换染色体结构空间; 第二步:定义适应函数,便于计算适应值; 第三步:确定遗传策略,包括选择群体大小,选择、交叉、变异方法以及确定交叉概率、变异概率等遗传参数; 第四步:随机产生初始化群体; 第五步:计算群体中的个体或染色体解码后的适应值; 第六步:按照遗传策略,运用选择、交叉和变异算子作用于群体,形成下一代群体; 第七步:判断群体性能是否满足某一指标、或者是否已完成预定的迭代次数,不满足则返回第五步、或者修改遗传策略再返回第六步. 图1 一个遗传算法的具体步骤

遗传算法C语言源代码(一元函数和二元函数)

C语言遗传算法代码 以下为遗传算法的源代码,计算一元代函数的代码和二元函数的代码以+++++++++++++++++++++++++++++++++++++为分割线分割开来,请自行选择适合的代码,使用时请略看完代码的注释,在需要更改的地方更改为自己需要的代码。 +++++++++++++++++++++++++++++++一元函数代码++++++++++++++++++++++++++++ #include #include #include #include #define POPSIZE 1000 #define maximization 1 #define minimization 2 #define cmax 100 #define cmin 0 #define length1 20 #define chromlength length1 //染色体长度 //注意,你是求最大值还是求最小值 int functionmode=minimization; //变量的上下限的修改开始 float min_x1=-2;//变量的下界 float max_x1=-1;//变量的上界 //变量的上下限的修改结束 int popsize; //种群大小 int maxgeneration; //最大世代数 double pc; //交叉率 double pm; //变异率 struct individual { char chrom[chromlength+1]; double value; double fitness; //适应度 }; int generation; //世代数 int best_index; int worst_index;

禁忌搜索算法摘录

禁忌(Tabu Search)算法是一种亚启发式(meta-heuristic)随机搜索算法1,它从一个初始可行解出发,选择一系列的特定搜索方向(移动)作为试探,选择实现让特定的目标函数值变化最多的移动。为了避免陷入局部最优解,TS搜索中采用了一种灵活的“记忆”技术,对已经进行的优化过程进行记录和选择,指导下一步的搜索方向,这就是Tabu表的建立。 为了找到“全局最优解”,就不应该执着于某一个特定的区域。局部搜索的缺点就是太贪婪地对某一个局部区域以及其邻域搜索,导致一叶障目,不见泰山。禁忌搜索就是对于找到的一部分局部最优解,有意识地避开它(但不是完全隔绝),从而获得更多的搜索区间。兔子们找到了泰山,它们之中的一只就会留守在这里,其他的再去别的地方寻找。就这样,一大圈后,把找到的几个山峰一比较,珠穆朗玛峰脱颖而出。 当兔子们再寻找的时候,一般地会有意识地避开泰山,因为他们知道,这里已经找过,并且有一只兔子在那里看着了。这就是禁忌搜索 中“禁忌表(tabu list)”的含义。那只留在泰山的兔子一般不会就安家在那里了,它会在一定时间后重新回到找最高峰的大军,因为这个时候已经有了许多新的消息,泰山毕竟也有一个不错的高度,需要重新考虑,这个归队时间,在禁忌搜索里面叫做“禁忌长度(tabu length)”;如果在搜索的过程中,留守泰山的兔子还没有归队,但是找到的地方全是华北平原等比较低的地方,兔子们就不得不再次考虑选中泰山,也就是说,当一个没有兔子留守的地方优越性太突出,超过 了“best so far”的状态,就可以不顾及有没有兔子留守,都把这个地方考虑进来,这就叫“特赦准则(aspiration criterion)”。这三个概念是禁忌搜索和一般搜索准则最不同的地方,算法的优化也关键在这里。 伪码表达 procedure tabu search; begin initialize a string vc at random,clear up the tabu list; cur:=vc; repeat select a new string vn in the neighborhood of vc; if va>best_to_far then {va is a string in the tabu list} begin

遗传算法的C语言程序案例

遗传算法的C语言程序案例 一、说明 1.本程序演示的是用简单遗传算法随机一个种群,然后根据所给的交叉率,变异率,世代数计算最大适应度所在的代数 2.演示程序以用户和计算机的对话方式执行,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的命令;相应的输入数据和运算结果显示在其后。3.举个例子,输入初始变量后,用y= (x1*x1)+(x2*x2),其中-2.048<=x1,x2<=2.048作适应度函数求最大适应度即为函数的最大值 4.程序流程图

5.类型定义 int popsize; //种群大小 int maxgeneration; //最大世代数 double pc; //交叉率 double pm; //变异率 struct individual { char chrom[chromlength+1]; double value; double fitness; //适应度 }; int generation; //世代数 int best_index; int worst_index; struct individual bestindividual; //最佳个体 struct individual worstindividual; //最差个体 struct individual currentbest; struct individual population[POPSIZE]; 3.函数声明 void generateinitialpopulation(); void generatenextpopulation(); void evaluatepopulation(); long decodechromosome(char *,int,int); void calculateobjectvalue(); void calculatefitnessvalue(); void findbestandworstindividual(); void performevolution(); void selectoperator(); void crossoveroperator(); void mutationoperator(); void input(); void outputtextreport(); 6.程序的各函数的简单算法说明如下: (1).void generateinitialpopulation ()和void input ()初始化种群和遗传算法参数。 input() 函数输入种群大小,染色体长度,最大世代数,交叉率,变异率等参数。 (2)void calculateobjectvalue();计算适应度函数值。 根据给定的变量用适应度函数计算然后返回适度值。 (3)选择函数selectoperator() 在函数selectoperator()中首先用rand ()函数产生0~1间的选择算子,当适度累计值不为零时,比较各个体所占总的适应度百分比的累计和与选择算子,直到达到选择算子的值那个个

禁忌搜索算法公式

6.2基于均衡原理的LRP 算法设计 6.2.1基于均衡原理的LRP 算法整体流程 基于均衡原理的LRP 算法整体流程如下: step1:初始化,设置整体收敛性判断参数δ; step2:随机生成一组LRP 选址问题的解D ,求出相应的目标值F ; step3:根据上层解D ,利用Frank-Wolfe 算法(见6.2.3节)求出各客户的 货物总量Q j 及客户在各配送中心的货物均衡分配量x j i ,; step4:根据D 及x j i ,运用禁忌算法求解VRP 问题(见6.2.4节),得出各配送 中对各客户的单位货物配送费用C j i ,; step5:根据 x j i ,及公式(6-8)求出下层 x j i ,与 d i 的关系y d x j i i j i W ,,+ =; step6:将LRP 模型上层目标函数中用代替,并代入下层求得的Q j 和C j i ,,运用禁忌算法 求得新的LRP 选址规划的解'Z 及目标函数'F (见6.2.2节); step7:如果δ<-F F ' ,转step8,算法结束,D 、F 为LRP 的最终解和解值;否则 '':,:F F D D ==,转step3; step8:算法结束。 6.2.2 LRP 选址规划的禁忌算法 模型上层是基于0-1整数规划的选址问题。由于选址问题是NP-hard ,如果 用精确算法求解,对节点数目的限制将有严格的要求。本章根据模型的特点, 采用禁忌算法优化产业选址问题。 1.解的构造和初始解的生成 采用二进制编码,编码长度为潜在的配送中心地点数量N T ,对于编码中位置i ,1表示选中i 点作为厂址,0表示没有选中。对于解中任意点i ,产生随机数δ,如果N T N /≥δ,则置i 点为0,否则置1。重复以上步骤m 次,得到初始解。 2.邻域的搜索 根据本章选址问题的特点,设计了三种邻域操作,分别为自身取反、2-swap 交换和2-opt 交换。 1).自身取反。为单点操作,即选择解中i 点,对该点的值取反; 2).2-swap 交换。为双点操作,选择解中两点进行交换,其它位置的值不变。例如解001101中的2、6点被选中,则2-swap 交换后变为:011100; 3).2-opt 交换。为多点操作,选择解中两点进行交换,同时两点之间的值逆序改变。例如解001101中的2、6点被选中,则2-swap 交换后变为:010110;

禁忌遗传算法求解最小支配集

2007,43(24) 1引言 寻找出图的最小支配集(minimumdominatingset)是一个 古老的难题,其概念最早出现在国际象棋比赛中。1862年,De Jaenisch就考虑了控制整个棋盘所需要的最少皇后个数问题, 这个问题接和图的支配集有直接的联系。 作简单图G,其顶点与棋盘上的64个格子一一对应,其两 个顶点在G中相关联当且仅当两个对应格子中的一个格子可 以由位于另一个格子中的皇后控制,于是,支配棋盘中全部格 子的皇后个数就是图G的最小支配集的基数。 关于图的支配集的相关定义可以描述为:给定一个无环、无向简单连通图G=<V,E>,V表示图的点集,E表示图的边集。对图G的顶点子集S!V,S≠!,若对#vi∈V,vi要么属于S,要么至少与S的一个顶点相邻,则称S为G的支配集(dominatingset),属于S的顶点称为支配点,其它顶点为非支配点;若S的任何真子集都不是支配集,则称S为G极小支配集(minimaldominatingset);若不存在任何支配集S’,使得|S’|<|S|,则称S为G的最小支配集,|S|为图G的支配数,记作!(G)。 如图1、2所示: 对图G=<V,E>,点集为V={v1,v2,…,vn},其最小支配集的数学模型可以描述为 f=min n i=1 %xi(1)st.xj∨[A(i,j)?xi]=1,xi=1,j=(1,2,…,n)(2) A(i,j)= 1结点vi与结点vj相关联 0结点vi与结点vj不相关 ’ 联 (3)xi= 1点vi作为支配点 0点vj不作为支配 ’ 点 (4)目标函数表示以最少的顶点作为支配点,约束条件(2)表示任意顶点vj要么与支配点关联,要么是支配点。 在运筹学图论中,如何寻找一个网络图的最小支配集已经被证明是NP-hard问题,与之相关的问题还有如何寻找一个网络图的最大独立集、最小点覆盖、最小边覆盖和最大团,还有一类组合优化问题如图着色问题、最大匹配问题等也与之相关,因此解决最小支配集问题具有重要的理论意义;同时,最小支配集也具有广泛的实际应用背景,比如地面作战计划的制定[1]、城市交通网和通讯网的建造[2],以及物流网络中心的选址[6]等。 然而,目前还没有一个求解最小支配集的有效算法,理论上讲求图的最小支配集并不困难,只要采取逐点试探法,最终 禁忌遗传算法求解最小支配集 廖飞雄,马良 LIAOFei-xiong,MALiang 上海理工大学管理学院,上海200093 CollegeofManagement,UniversityofShanghaiforScienceandTechnology,Shanghai200093,China LIAOFei-xiong,MALiang.TSGAforsolvingminimumdominatingset.ComputerEngineeringandApplications,2007,43(24):81-84. Abstract:HowtofindaminimumdominatingsetforanetworkisaNP-hardproblem.Thispapergivesabackwardsequentialheuristicalgorithmandatabusearchalgorithm,tosolvethisminimumdominatingsetproblem.Andfurthermore,thesetwoalgo-rithmsarecombinedintoamoreeffectivehybridalgorithm—TSGAinordertoovercometheirdisadvantagesofgettingintolocaloptimumandacceleratethespeedofconvergence.Seriesofexperimentsonrandomnetworksandlogisticsnetworklocationprob-lemsaretestedthatshowtheeffectivenessoftheTSGAforsolvingtheminimumdominatingsetproblem. Keywords:minimumdominatingset;heuristicalgorithm;TabuSearch(TS);GeneticAlgorithm(GA) 摘要:如何寻找一个网络图的最小支配集是NP难题。分别设计了逆序启发式算法和禁忌搜索算法,并在此基础上提出了禁忌遗传算法(TSGA)用于求解最小支配集;将禁忌搜索和遗传算法结合起来,弥补了彼此的不足,既有效地避免了算法易陷入局部最优解的缺陷,又加快了算法的收敛速度。经对大量随机网络图的测试和对物流网络选址问题的求解,验证了TSGA算法的优越性。关键词:最小支配集;启发式算法;禁忌搜索;遗传算法 文章编号:1002-8331(2007)24-0081-04文献标识码:A中图分类号:TP18 基金项目:上海市重点学科建设项目资助(No.T0502);上海市教委科技发展基金资助项目(No.05EZ31)。 作者简介:廖飞雄(1983-),硕士研究生,主要从事系统工程、智能优化研究;马良(1964-),博士,教授,博士生导师,主要从事智能优化研究。 ComputerEngineeringandApplications计算机工程与应用81

相关文档
最新文档