- 1、本文档共174页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章 遗传算法、蚁群算法、粒子群算法.
人工智能 华中科技大学水电与数字化工程学院 连续优化问题算法三:CACA算法 该算法通过把各维变量离散化,在算法的每一次迭代中,先根据蚁群优化原理求出最优解所在的区域,然后在各区域中运用遗传算法确定解的具体值。 参考文献: 1、陈峻,沈洁,秦玲. 蚁群算法求解连续空间优化问题的一种方法. 软件学报,2002年,13(12):2317-2323 2、王晗. 基于蚁群算法的制动器参数优化设计. 吉林大学工学硕士学位论文. 2007年 选取一定长度,将可行域在各维分量上离散成若干等长度的子区间。 为了确定解的具体值,可在各个子区间已有的取值中保存若干几个适应度较好的解的分量作为候选组。然后使用遗传算法中的选择、交叉、变异等操作,在候选组中确定解的相应分量的值。对子区间候选组内各分量值的选择,相当于对问题的局部寻优。 单蚁在n维连续空间中路径选择图 问题映射 参数的数据结构及初始化 1) 子区间初始化 子区间初始化包括子区间范围的初始化和各子区间内候选组的初始化。 选取一定长度?,设ki=[(ui-li)/ ?],将可行域在第i维上离散成ki个子区间,i=1,2,?,n。 由于各维分量的子区间的个数不一致,因此,定义一个二维的链表数组C,以Cij表示第i维的第j个子区间,需要对各子区间Cij的上下边界Lij 、Uij 及候选组进行初始化。 各候选组一般先初始化为空,在需要的时候根据遗传操作生成相应的候选值。 对规模为m的蚁群,设计变量维数为n的问题,定义一个nxm的矩阵AC,用以记录蚁群各维分量上的值。 2) 蚁群初始化 AC一般先随机初始化为约束域内某些值,并根据各子区间边界,计算各分量所属子区间。 在CACA中,子区间之间的连线对应蚂蚁的寻优路径,信息素分布在各维分量的各个子区间上。 记t时刻第i分量的第了个子区间j上的信息素为?ij(t)。 与子区间的初始化类似, ?也用一个二维链表来实现。 根据初始蚁群各分量所属的子区间,对相应的?进行初始化。 3) 信息素初始化 选择概率计算 CACA中没有定义启发信息,直接根据信息素决定转移概率的大小。同时,为更好地利用最优解的信息,利用下式来选择第i分量值所在的子区间号j: q:(0,1)之间的随机数;q0:状态转移概率 q0是一个确定选取最佳解分量值所在的子区间的概率,例如可取q0=0.8,信息量最大的子区间以高概率0.8被选中,其余的子区间以0.2的概率参与选择。 arg max {?ij|1?j?ki}表示分量i的信息量最大的子区间号。 信息素更新(局部和全局更新) 1) 信息素局部更新 由于算法中以q0的概率选择ki个子区间中信息量最大的子区间,因此信息量最大的那个子区间常常被选中,这就使得新一代解的该分量值集中在这个子区间,容易发生停滞现象。 为了避免这种现象,算法对所选的子区间的信息量进行局部更新,对被选中的子区间立即适当地减少其信息量,使其他蚂蚁选中该子区间的概率降低。 更新后的信息量是原来的信息量和有关第i个分量各子区间的最小信息量的凸组合,当信息量最大的子区间被多次选中之后,信息量减少到ki个子区间的信息量的平均水平,从而蚂蚁选择其他子区间的概率增加,增加了所建立解的多样性,同时也有效减少了停滞现象的发生. 设第k个个体的第i个分量选中第j个子区间,则按下式局部更新子区间j的信息量: 2) 信息素全局更新 全局更新发生在所有蚂蚁完成路径选择,即得到各自解之后,按下式进行更新计算: 局部优化 在确定某分量所在区间后,用遗传算法相关操作对该子区间内候选组内的值进行选择,以实现对问题的局部优化。 设gij表示第i分量候选组j中候选值的个数,根据不同的gij值,对候选组进行选择、交叉、变异等遗传操作。 1)若gij=0,则在[Lij Uij ]内产生一个随机数作为解的分量,跳过选择、交叉、变异等操作; 2)若gij=1 ,则跳过选择、交叉操作,自接对这个候选值进行变异操作,以变异后的值作为该分量的值; 3)若gij=2,即候选组里有两个候选值,则跳过选择操作,直接对这两个候选值进行交叉、变异等操作; 4) 否则,选择两个分量后进行交叉、变异操作。 在选择操作中,根据候选组里各候选值的适应度的大小,用“赌轮”的方法选取两个值。 1)选择 2)交叉 在交叉操作中,设进行交叉的两个值为xi(1)和xi(2),对它们的交叉过程按下式进行(交叉后只产生一个新的个体,而且可以保证遗传操作的结果仍然在子区间中): 3)变异 变异按如下公式进行,设对候选值xi进行变异: 可以保证遗传操作的结果仍然在子区间中。 候选组更新 为避免子区间内候选值的个数gij无限制增大,在所有蚂蚁构造完各自的解后,需对各子区间的候选组进行更新。即选取蚁群中适应度最好的num个解,将其分量插入相应的
文档评论(0)