交叉算法
1. 交叉法原理
交叉法原理是利用化合价书写物质化学式的方法,它适用于两种元素或两种基团组成的化合物。其根据的原理是化合价法则:正价总数与负价总数的代数和为0或正价总数与负价总数的绝对值相等。
我们常说十字交叉法实际上是十字交叉相比法,它是一种图示方法。十字交叉图示法实际上是代替求和公式的一种简捷算法,它特别适合于两总量、两关系的混合物的计算(即2—2型混合物计算),用来计算混合物中两种组成成分的比值。
它是进行二组混合物平均量与组分计算的一种简便方法。凡可按M1·n1+M2·n2=M·n计算的问题,均可按十字交叉法计算。M表示某混合物的平均量,M1.M2则表示两组分对应的量。如M表示平均相对分子质量,M1.M2则表示两组分各自的相对分子质量,n1.n2表示两组分在混合物中所占的份额,n1:n2在大多数情况下表示两组分的物质的量之比,有时也可以是两组分的质量之比,判断时关键看n1,n2表示混合物中什么物理量的份额,如物质的量、物质的量分数、体积分数,则n1:n2表示两组分的物质的量之比;如质量、质量分数、元素质量百分含量,则n1:n2表示两组分的质量之比。
十字交叉法于二元组分混合体系的计算方法,常用于计算二元组分的比例关系。
方法有相乘法,是利用化合价书写物质化学式的方法它适用于两种元素或两种基团组成的化合物,其根据的原理是化合价法则:正价总数与负价总数的代数和为0或正价总数与负价总数的绝对值相等。
相比法。十字交叉法实际上是十字交叉相比法,它是一种图示方法。十字交叉消去法简称为十字消去法,它是一类离子推断题的解法,采用“十字消去”可缩小未知物质的范围,以便于利用题给条件确定物质,找出正确答案。
2. 交叉算子是谁提出的
20世纪90年代后,遗传算法的发展迎来了它的兴盛时期,理论研究和应用研究都成了极其热门的课题。尤其是遗传算法的应用研究显得格外活跃,不但它的应用领域扩大,而且利用遗传算法进行优化和规则学习的能力也显着提高,同时产业应用方面的研究也在摸索之中。此外一些新的理论和方法在应用研究中亦得到了迅速的发展,这些无疑均给遗传算法增添了新的活力。遗传算法的应用研究在不断地发展,已从最初的组合优化求解发展到了很多更新、更工程化的应用领域。
由于遗传算法应用领域在不断地扩展,遗传算法的研究引发了几个不得不令人注目的新动向:一是基于遗传算法的机器学习,这一新的研究课题把遗传算法从历来离散的搜索空间的优化搜索算法扩展到具有独特的规则生成功能的崭新的机器学习算法。这一新的学习机制对于解决人工智能中知识获取和知识优化精炼的瓶颈难题带来了希望。二是遗传算法正在和神经网络、模糊推理及混沌理论等智能计算方法不断地渗透和结合。这对开拓21世纪中新的智能计算技术将具有重要的意义。三是并行处理的遗传算法的研究非常活跃。这一研究既有利于促进遗传算法本身的发展,又有利于促进新一代智能计算机体系结构的研究。四是遗传算法正和一个人工生命的崭新研究领域不断地渗透。五是它与进化规划以及进化策略等进化计算理论在日益地结合。EP和ES几乎是和遗传算法几乎是同时发展起来的,同遗传算法一样,它们也是模拟自然界生物进化机制的智能计算方法,但这三者也有各自的特点。目前,关于EP、ES和遗传算法三者间的对比研究和彼此间结合的研究和探讨已成了热点。
在20世纪90年代初,D.Whitey提出了基于领域交叉的交叉算子,它是特别针对用序号表示基因的个体的交叉,并将其应用到了TSP问题中,通过实验对其进行了验证。D.H.Ackley等提出了随即迭代遗传爬山法采用了一种复杂的概率选举机制,此机制中由m个“投票者”来共同决定新个体的值(m表示群体的大小)。实验的最终结果表明,与单点交叉、均匀交叉的神经遗传算法相比,在SIGH所测试的六个函数中,其中有四个表现出更好的性能。所以从总体上看,比现存的其他算法相比,在求解速度上SIGH具有更强的竞争力。
后来又有人将遗传算法与单一方法结合了起来,形成了单一操作的多亲交叉算子。该算子在根据两个母体以及一个额外的个体产生新个体,事实上他的交叉结果与对三个个体用选举交叉产生的结果一致。同时,人们还将三者交叉算子和点交叉、均匀交叉做了对比。对比结果表明,前者比后两个表现出了更好的性能。
国内也有不少的专家和学者对遗传算法的交叉算子进行改进。2002年,戴晓明等应用多种群遗传并行进化的思想,对不同种群基于不同的遗传策略,如变异概率,不同的变异算子等来搜索变量空间,同时还利用种群间迁移算子来进行遗传信息交流,以解决经典遗传算法的收敛到局部最优值问题。在2004年又有专家针对简单遗传算法在较大规模组合优化问题上搜索效率不高的现象,提出了一种用基因块编码的并行遗传算法。该方法所依据的基本框架是粗粒度并行遗传算法,在染色体群体中识别出可能的基因块,然后用基因块作为新的基因单位对染色体重新编码,产生长度较短的染色体,在用重新编码的染色体群体作为下一轮以相同方式演化的初始群体。而到了2005年,针对用并行遗传算法求解TSP的这一问题,又有人指出用弹性策略来维持群体的多样性的方法,使得算法突破了局部收敛,向全局最优解的方向发展。
3. 在遗传算法中,什么是交叉概率
交叉的目的是为了产生新的解.
了解了目的,就好理解了.
从解集中以一定概率来选取两个解,进行交叉以便产生新的解,这个概率就是交叉概率.
但要注意,交叉概率太大的话,就失去意义了,就变成随机算法了;太小的话,收敛太慢.通常的做法是采用自适应的方法.
4. 写出把两个单链表交叉合并的算法。假设单链表的结点结构如下:
以下是将A、B链表交叉合并到A的伪代码:(头结点非空)
起始:
pNodeA,pNodeB指向两链表各自的头结点:
……………………………………………………………………………………
pRet = pNodeAFirst;//保存A链表头结点。
while( pNodeA && pNodeB )//任一链表完结即结束
{
//保存原来指向的下一结点
pTmpA = pNodeA->next;
pTmpB = pNodeB->next;
//合并
pNodeA->next = pNodeB;
pNodeB->next = pNodeA->next;
//往前行进
pNodeA = pTmpA;
pNodeB = pTmpB;
}
随手写的,请自测。
上述未经测试
5. 多数组任意交叉算法挑战题
这没有啥难度的吧,直接递归就可以了啊
算法描叙:
1. 从给定位置x,y出发,对候选的八个位置
(x-2,y+1)
(x+2,y+1)
(x-2,y-1)
(x+2,y-1)
(x-1,y+2);
(x+1,y+2)
(x-1,y-2)
(x+1,y-2)
确定是否越界,如果没有越界,就分别对其进行递归。
2.当递归次数到达k次,也就说马走了k次,把最终坐标保存。
当所有递归结束,将获得所谓的位置。
#pragma warning(disable:4786)
#include <iostream>
6. 谁给我解释下遗传算法中的交叉概率,变异概率和代沟
1、交叉概率用于判断两两个体是否需要交叉;变异概率用于判断任一个体是否需要变异。
2、在一次进化迭代中,交叉通常是采用两两互相不重复交叉的方式,即个体1和个体2,个体3和个体4...个体n-1和个体n,或者个体1和个体n/2,个体2和个体n/2+1...个体n/2-1和个体n。以第一种方式为例,对于个体1和个体2,产生一个[0,1]之间的随机数,如果该随机数小于交叉概率,则个体1和个体2进行交叉操作,否则继续产生随机数判断之后的两个个体。
当然也可以采用随机交叉的方式,这时的交叉次数不能确定。
3、两两个体之间的交叉操作有不同的交叉方式,即:如果采用十进制编码,会有不同的交叉公式;如果采用二进制编码,有单点交叉和多点交叉。
7. 遗传算法 交叉的个数怎么确定
遗传算法中的选择、交叉和变异都是随机操作,而不是确定的精确规则。这说明遗传算法是采用随机方法进行最优解搜索,选择体现了向最优解迫近,交叉体现了最优解的产生,变异体现了全局最优解的复盖。
8. 反应热 十字交叉算法
先取极值
假设全部为H2,则放热5mol*285.6KJ/mol = 1428KJ
假设全部为C3H8,则放热5mol*2220KJ/mol = 11100KJ
现放热6164KJ
则有,
H2 1428--------4936
------------6164-------
C3H8 11100--------4736
右上为左下与中间差的绝对值,右下为左上与中间差的绝对值
(‘--’为了好看才画的,当作不存在)
所以H2和C3H8体积比为4936:4736
(题目应该是6264KJ吧,那样就正好1:1)
9. 遗传算法中的交叉算子具体怎么实现~跪求文字描述以及算法描述~。详细点
交叉算子分好几种,有单点交叉、两点交叉、多点交叉、融合交叉、均匀交叉等,最简单的是单点交叉,假设个体的长度为N,那么就随机产生一个(1,N)范围内的整数r,然后将要交叉的两个母代个体从r这个地方截为两段,交换母代个体的后半段,就产生了新子代个体。这就是简单的单点交叉。详细可以看《遗传算法——理论、应用与软件实现》这本书中对交叉算子的介绍。参考资料是一个简单遗传算法的C代码及介绍。