遗传算法求解TSP问题实验报告推荐文档

遗传算法求解TSP问题实验报告推荐文档
遗传算法求解TSP问题实验报告推荐文档

人工智能实验报告

实验六遗传算法实验II

一、实验目的:

熟悉和掌握遗传算法的原理、流程和编码策略,并利用遗传求解函数优化问题,理解求解TSP

问题的流程并测试主要参数对结果的影响。

二、实验原理:

旅行商问题,即TSP问题(Traveling Salesman Problem)是数学领域中著名问题之一。假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路经的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。路径的选择目标是要求得的路径路程为所有路径之中的最小值。TSP问题是一个组合优化问题。该问题可以被证明具有NPC计算复杂性。因此,任何能使该问题的求解得以简化的方法,都将受到高度的评价和关注。

遗传算法的基本思想正是基于模仿生物界遗传学的遗传过程。它把问题的参数用基因代表,把问题的解用染色体代表(在计算机里用二进制码表示),从而得到一个由具有不同染色体的个体组成的群体。这个群体在问题特定的环境里生存竞争,适者有最好的机会生存和产生后代。后代随机化地继承了父代的最好特征,并也在生存环境的控制支配下继续这一过程。群体的染色体都将逐渐适应环境,不断进化,最后收敛到一族最适应环境的类似个体,即得到问题最优的解。要求利用遗传算法求解TSP问题的最短路径。

三、实验内容:

1、参考实验系统给出的遗传算法核心代码,用遗传算法求解TSP的优化问题,分析遗传算法求解不同规模TSP问题的算法性能。

2、对于同一个TSP问题,分析种群规模、交叉概率和变异概率对算法结果的影响。

3、增加1种变异策略和1种个体选择概率分配策略,比较求解同一TSP问题时不同变异策略及不同个体选择分配策略对算法结果的影响。

4、上交源代码。

四、实验报告要求:

1、画出遗传算法求解TSP问题的流程图。

开始初始化种群(随机产生城市坐标)确定种群规模、迭代次数、个体选择方式、交叉概率、变异概率等

计算染色体适应度值(城市之间的欧氏距离)按某个选择概率选择个体YES个体交叉个体变异P<迭代总次数N输入适应度最高的结

2、分析遗传算法求解不同规模的TSP问题的算法性能。

规模越大,算法的性能越差,所用时间越长。

3、对于同一个TSP问题,分析种群规模、交叉概率和变异概率对算法结果的影响。

(1)种群规模对算法结果的影响

x 0 1.1 3.5 3 7 8 4 4.5 9 2

2

2

4

4

9

5.1

y

4.5

1.1

8

3

实验次数:10

最大迭代步数:100

交叉概率:0.85

变异概率:0.15

种群规模平均适应度值最优路径

10 25.264 4-5-8-7-6-3-1-0-9-2

20 26.3428 2-9-1-0-3-6-7-5-8-4

30 25.1652 1-3-6-7-5-8-4-2-9-0

50 25.1652 0-1-3-6-7-5-8-4-2-9

80 25.1652 9-0-1-3-6-7-5-8-4-2

100 25.1652 1-0-9-2-4-8-5-7-6-3

150 25.1652 5-8-4-2-9-0-1-3-6-7

200 25.1652 1-3-6-7-5-8-4-2-9-0

250 25.1652 3-1-0-9-2-4-8-5-7-6

300 25.1652 5-8-4-2-9-0-1-3-6-7

如表所示,显然最短路径为25.1652m,最优路径为1-0-9-1-3-6-7-5-8-4-2或

3-1-0-9-2-4-8-5-7-6,注意到这是一圈,顺时针或者逆时针都可以。当种群规模为10,20时,并没有找到最优解。因此并不是种群规模越小越好。

交叉概率对算法结果的影

x 9 1.1 3.5 3.5 7 8 4 4.5 3 2

1

3

1

9

8.5

y

1.1

3

1

4

5.1

实验次数:15

种群规模:25

最大迭代步数:100

变异概率:0.15

实验结果:

(注:红色表示非最优解)

在该情况下,交叉概率过低将使搜索陷入迟钝状态,得不到最优解。

(3)变异概率对算法结果的影响

x 9 1.1 3.5 3.5 7 8 4 4.5 3 2

1

1

1

4

5.1

9

3

y

1.1

8.5

3

实验次数:10

种群规模:25

最大迭代步数:100

交叉概率:0.85

实验结果:

变异概率最好适应度最差适应度平均适应度最优解

0-6-2-1-9-3-8-7-4-5 29.4717 32.4911 34.732 0.001

8-4-5-0-2-6-9-1-3-7 34.6591 32.3714 29.0446 0.01

5-0-2-6-9-1-3-8-7-4 30.9417 0.1 28.0934 34.011

6-0-5-4-7-8-3-1-9-2 27.0935 0.15 30.2568 32.093

8-7-4-5-0-6-2-9-1-3

30.3144

32.2349 27.0935

0.2

从该表可知,当变异概率过大或过低都将导致无法得到最优解。

4、增加1种变异策略和1种个体选择概率分配策略,比较求解同一TSP问题时不同变异策略及不同个体选择分配策略对算法结果的影响。

不同变异策略和不同个体选择分配策略几乎不影响算法运行的时间,但会影响适应度。

五、实验心得与体会

通过本实验,更加深入体会了参数设置对算法结果的影响。同一个算法,参数值不同,获得的结果可能会完全不同。

同时通过本次实验,使自己对遗传算法有了更进一步的了解。遗传算法是一种智能优化算法,它能较好的近似求解TSP问题,在问题规模比较大的时候,遗传算法的优势就明显体现出来,当然不能完全保证能得到最优解。

MATLAB实验报告-遗传算法解最短路径以及函数最小值问题

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

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

选择题目: A 一、问题分析(10分) 1 2 3 4 5 6 8 9 10 11 1 2 1 6 8 3 1 7 9 4 6 7 2 9 4 2 1 1 如图如示,将节点编号,依次为 1.2.3.4.5.6.7.8.9.10.11,由图论知识,则可写出其带权邻接矩阵为: 0 2 8 1 500 500 500 500 500 500 500 2 0 6 500 1 500 500 500 500 500 500 8 6 0 7 500 1 500 500 500 500 500 1 500 7 0 500 500 9 500 500 500 500 500 1 500 500 0 3 500 2 500 500 500 500 500 1 500 3 0 4 500 6 500 500 500 500 500 9 500 4 0 500 500 1 500 500 500 500 500 2 500 500 0 7 500 9 500 500 500 500 500 6 500 7 0 1 2 500 500 500 500 500 500 1 500 1 0 4 500 500 500 500 500 500 500 9 2 4 0 注:为避免计算时无穷大数吃掉小数,此处为令inf=500。 问题要求求出任意两点间的最短路径,Floyd算法采用的是在两点间尝试插入顶点,比较距离长短的方法。我思考后认为,用遗传算法很难找到一个可以统一表示最短路径的函数,但是可以对每一对点分别计算,然后加入for循环,可将相互之间的所有情况解出。观察本题可发现,所有节点都是可双向行走,则可只计算i到j的路径与距离,然后将矩阵按主对角线翻折即可得到全部数据。二、实验原理与数学模型(20分) 实现原理为遗传算法原理: 按所选择的适应度函数并通过遗传中的复制、交叉及变异对个体进行筛选,使得适应度高的个体被保留下来,组成新的群体,新的群体既继承了上一代的信息,又优于上一代。这样周而复始,群体中个体适应度不断提高,直到满足一定的条件。 数学模型如下: 设图由非空点集合和边集合组成,其中 又设的值为,故可表示为一个三元组 则求最短路径的数学模型可以描述为:

实验六:遗传算法求解TSP问题实验分析

实验六:遗传算法求解TSP问题实验 一、实验目的 熟悉和掌握遗传算法的原理、流程和编码策略,并利用遗传求解函数优化问题,理解求解TSP问题的流程并测试主要参数对结果的影响。用遗传算法对TSP问题进行了求解,熟悉遗传算法地算法流程,证明遗传算法在求解TSP问题时具有可行性。 二、实验内容 参考实验系统给出的遗传算法核心代码,用遗传算法求解TSP的优化问题,分析遗传算法求解不同规模TSP问题的算法性能。 对于同一个TSP问题,分析种群规模、交叉概率和变异概率对算法结果的影响。 增加1种变异策略和1种个体选择概率分配策略,比较求解同一TSP问题时不同变异策略及不同个体选择分配策略对算法结果的影响。 1. 最短路径问题 所谓旅行商问题(Travelling Salesman Problem , TSP),即最短路径问题,就是在给定的起始点S到终止点T的通路集合中,寻求距离最小的通路,这样的通路成为S点到T点的最短路径。 在寻找最短路径问题上,有时不仅要知道两个指定顶点间的最短路径,还需要知道某个顶点到其他任意顶点间的最短路径。遗传算法方法的本质是处理复杂问题的一种鲁棒性强的启发性随机搜索算法,用

遗传算法解决这类问题,没有太多的约束条件和有关解的限制,因而可以很快地求出任意两点间的最短路径以及一批次短路径。 假设平面上有n个点代表n个城市的位置, 寻找一条最短的闭合路径, 使得可以遍历每一个城市恰好一次。这就是旅行商问题。旅行商的路线可以看作是对n个城市所设计的一个环形, 或者是对一列n个城市的排列。由于对n个城市所有可能的遍历数目可达(n- 1)!个, 因此解决这个问题需要0(n!)的计算时间。假设每个城市和其他任一城市之间都以欧氏距离直接相连。也就是说, 城市间距可以满足三角不等式, 也就意味着任何两座城市之间的直接距离都小于两城市之间的间接距离。 2. 遗传算法 遗传算法是由美国J.Holland教授于1975年在他的专著《自然界和人工系统的适应性》中首先提出的,它是一类借鉴生物界自然选择和自然遗传机制的随机化搜索算法。通过模拟自然选择和自然遗传过程中发生的繁殖、交叉和基因突变现象,在每次迭代中都保留一组候选解,并按某种指标从解群中选取较优的个体,利用遗传算子(选择、交叉和变异)对这些个体进行组合,产生新一代的候选解群,重复此过程,直到满足某种收敛指标为止。遗传算法在本质上是一种不依赖具体问题的直接搜索方法,是一种求解问题的高效并行全局搜索方法。其假设常描述为二进制位串,位串的含义依赖于具体应用。搜索合适的假设从若干初始假设的群体集合开始。当前种群成员通过模仿生物进化的方式来产生下一代群体,如随机变异和交叉。每一步,根据给定的适应度评估当前群体的假设,而后使用概率方法选出适应度最高的假设作为产生下一代的种子。

人工智能实验报告大全

人工智能实验报告大 全

人工智能课内实验报告 (8次) 学院:自动化学院 班级:智能1501 姓名:刘少鹏(34) 学号: 06153034 目录 课内实验1:猴子摘香蕉问题的VC编程实现 (1) 课内实验2:编程实现简单动物识别系统的知识表示 (5)

课内实验3:盲目搜索求解8数码问题 (18) 课内实验4:回溯算法求解四皇后问题 (33) 课内实验5:编程实现一字棋游戏 (37) 课内实验6:字句集消解实验 (46) 课内实验7:简单动物识别系统的产生式推理 (66) 课内实验8:编程实现D-S证据推理算法 (78)

人工智能课内实验报告实验1:猴子摘香蕉问题的VC编程实现 学院:自动化学院 班级:智能1501 姓名:刘少鹏(33) 学号: 06153034 日期: 2017-3-8 10:15-12:00

实验1:猴子摘香蕉问题的VC编程实现 一、实验目的 (1)熟悉谓词逻辑表示法; (2)掌握人工智能谓词逻辑中的经典例子——猴子摘香蕉问题的编程实现。 二、编程环境 VC语言 三、问题描述 房子里有一只猴子(即机器人),位于a处。在c处上方的天花板上有一串香蕉,猴子想吃,但摘不到。房间的b处还有一个箱子,如果猴子站到箱子上,就可以摸着天花板。如图1所示,对于上述问题,可以通过谓词逻辑表示法来描述知识。要求通过VC语言编程实现猴子摘香蕉问题的求解过程。 图1 猴子摘香蕉问题

四、源代码 #include unsigned int i; void Monkey_Go_Box(unsigned char x, unsigned char y) { printf("Step %d:monkey从%c走到%c\n", ++i, x, y);//x表示猴子的位置,y为箱子的位置 } void Monkey_Move_Box(char x, char y) { printf("Step %d:monkey把箱子从%c运到%c\n", ++i, x, y);//x表示箱子的位置,y为香蕉的位置 } void Monkey_On_Box() { printf("Step %d:monkey爬上箱子\n", ++i); } void Monkey_Get_Banana() { printf("Step %d:monkey摘到香蕉\n", ++i); } void main() { unsigned char Monkey, Box, Banana; printf("********智能1501班**********\n"); printf("********06153034************\n"); printf("********刘少鹏**************\n"); printf("请用a b c来表示猴子箱子香蕉的位置\n"); printf("Monkey\tbox\tbanana\n"); scanf("%c", &Monkey); getchar(); printf("\t"); scanf("%c", &Box); getchar(); printf("\t\t"); scanf("%c", &Banana); getchar(); printf("\n操作步骤如下\n"); if (Monkey != Box) { Monkey_Go_Box(Monkey, Box); } if (Box != Banana)

基于Matlab的遗传算法解决TSP问题的报告

报告题目:基于Matlab的遗传算法解决TSP问题 说明:该文包括了基于Matlab的遗传算法解决TSP问题的基本说明,并在文后附录了实现该算法的所有源代码。此代码经过本人的运行,没有发现错误,结果比较接近理论最优值,虽然最优路径图有点交叉。 因为本人才疏学浅,本报告及源代码的编译耗费了本人较多的时间与精力,特收取下载积分,还请见谅。若有什么问题,可以私信,我们共同探讨这一问题。 希望能对需要这方面的知识的人有所帮助!

1.问题介绍 旅行商问题(Traveling Salesman Problem,简称TSP)是一个经典的组合优化问题。它可以描述为:一个商品推销员要去若干个城市推销商品,从一个城市出发,需要经过所有城市后,回到出发地,应如何选择行进路线,以使总行程最短。从图论的角度看,该问题实质是在一个带权完全无向图中。找一个权值最小的Hemilton回路。其数学描述为:设有一个城市集合其中每对城市之间的距离(),i j d c c R +∈,求一对经过C中每个城市一次的路线()12,,n c c c ΠΠΠ?使 ()()() 1111min ,,n i n i i d c c d c c ?ΠΠΠΠ+=+∑其中()12,,12n n ΠΠΠ??是,的一个置换。 2.遗传算法 2.1遗传算法基本原理 遗传算法是由美国J.Holland 教授于1975年在他的专著《自然界和人工系统的适应性》中首先提出的,它是一类借鉴生物界自然选择和自然遗传机制的随机化搜索算法。 遗传算法模拟自然选择和自然遗传过程中发生的繁殖、交叉和基因突变现象,在每次迭代中都保留一组候选解,并按某种指标从解群中选取较优的个体,利用遗传算子(选择、交叉和变异)对这些个体进行组合,产生新一代的候选解群,重复此过程,直到满足某种收敛指标为止。 遗传算法,在本质上是一种不依赖具体问题的直接搜索方法,是一种求解问题的高效并行全局搜索方法。遗传算法在模式识别、神经网络、图像处理、机器学习、工业优化控制、自适应控制、负载平衡、电磁系统设计、生物科学、社会科学等方面都得到了应用。在人工智能研究中,现在人们认为“遗传算法、自适应系统、细胞自动控制、混沌理论与人工智能一样,都是对今后十年的计算技术有重大影响的关键技术”。 2.2遗传算法的流程 标准的遗传算法包括群体的初始化,选择,交叉,变异操作。流程图如图1所示,其主要步骤可描述如下: (1)随机产生一组初始个体构成的初始种群,并评价每一个个体的适配值。 (2)判断算法的收敛准则是否满足。若满足输出搜索结果;否则执行以下步骤。

遗传算法实验报告(仅供参照)

人工智能实验报告

遗传算法实验报告 一、问题描述 对遗传算法的选择操作,设种群规模为4,个体用二进制编码,适应度函数,x的取值区间为[0,30]。 若遗传操作规定如下: (1)选择概率为100%,选择算法为轮盘赌算法; (2)交叉概率为1,交叉算法为单点交叉,交叉顺序按个体在种群中的顺序; (3)变异几率为0 请编写程序,求取函数在区间[0,30]的最大值。 二、方法原理 遗传算法:遗传算法是借鉴生物界自然选择和群体进化机制形成的一种全局寻优算法。与传统的优化算法相比,遗传算法具有如下优点:不是从单个点,而是从多个点构成的群体开始搜索;在搜索最优解过程中,只需要由目标函数值转换得来的适应值信息,而不需要导数等其它辅助信息;搜索过程不易陷入局部最优点。目前,该算法已渗透到许多领域,并成为解决各领域复杂问题的有力工具。在遗传算法中,将问题空间中的决策变量通过一定编码方法表示成遗传空间的一个个体,它是一个基因型串结构数据;同时,将目标函数值转换成适应值,它用来评价个体的优劣,并作为遗传操作的依据。遗传操作包括三个算子:选择、交叉和变异。选择用来实施适者生存的原则,即把当前群体中的个体按与适应值成比例的概率复制到新的群体中,构成交配池(当前代与下一代之间的中间群体)。选择算子的作用效果是提高了群体的平均适应值。由于选择算子没有产生新个体,所以群体中最好个体的适应值不会因选择操作而有所改进。交叉算子可以产生新的个体,它首先使从交配池中的个体随机配对,然后将两两配对的个体按某种方式相互交换部分基因。变异是对个体的某一个或某一些基因值按某一较小概率进行改变。从产生新个体的能力方面来说,交叉算子是产生新个体的主要方法,它决定了遗传算法的全局搜索能力;而变异算子只是产生新个体的辅助方法,但也必不可少,因为它决定了遗传算法的局部搜索能力。交叉和变异相配合,共同完成对搜索空间的全局和局部搜索。 三、实现过程 (1)编码:使用二进制编码,随机产生一个初始种群。L 表示编码长度,通常由对问题的求解精度决定,编码长度L 越长,可期望的最优解的精度也就越高,过大的L 会增大运算量。 (2)生成初始群体:种群规模表示每一代种群中所含个体数目。随机产生N个初始串结构数据,每个串结构数据成为一个个体,N个个体组成一个初始群体,N表示种群规模的大小。当N取值较小时,可提高遗传算法的运算速度,但却降低种群的多样性,容易引起遗传算法早熟,出现假收敛;而N当取值较大时,又会使得遗传算法效率降低。一般建议的取值范围是20—100。遗传算法以该群体作为初始迭代点; (3)适应度检测:根据实际标准计算个体的适应度,评判个体的优劣,即该个体所代表的可行解的优劣。本例中适应度即为所求的目标函数; (4)选择:从当前群体中选择优良(适应度高的)个体,使它们有机会被选中进入下一次迭代过程,舍弃适应度低的个体。本例中采用轮盘赌的选择方法,即个体被选择的几率与其适应度值大小成正比; (5)交叉:遗传操作,根据设置的交叉概率对交配池中个体进行基因交叉操作,形成新一代的种群,新一代中间个体的信息来自父辈个体,体现了信息交换的原则。交叉概率控制

游戏人工智能实验报告四

实验四有限状态机实验 实验报告 一、实验目的 通过蚂蚁世界实验掌握游戏中追有限状态机算法 二、实验仪器 Windows7系统 Microsoft Visual Studio2015 三、实验原理及过程 1)制作菜单 设置参数:点击会弹出对话框,设置一些参数,红、黑蚂蚁的家会在地图上标记出来 运行:设置好参数后点击运行,毒药、食物、水会在地图上随机显示 下一步:2只红蚂蚁和2只黑蚂蚁会随机出现在地图上,窗口右方还会出现红、黑蚂蚁当前数量的统计 不断按下一步,有限状态机就会不断运行,使蚁群产生变化 2)添加加速键 资源视图中 下方

选择ID和键值 3)新建头文件def.h 在AntView.cpp中加入#include"def.h" 与本实验有关的数据大都是在这里定义的 int flag=0; #define kForage 1 #define kGoHome 2 #define kThirsty 3 #define kDead 4 #define kMaxEntities 200 class ai_Entity{ public: int type; int state; int row; int col; ai_Entity(); ~ai_Entity() {} void New (int theType,int theState,int theRow,int theCol); void Forage(); void GoHome(); void Thirsty(); void Dead(); }; ai_Entity entityList[kMaxEntities]; #define kRedAnt 1 #define kBlackAnt 2

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)确定决策变量和约束条件;

遗传算法解决TSP问题

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

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

遗传算法实验报告17643

信息与管理科学学院计算机科学系 实验报告 课程名称:人工智能 实验名称:遗传算法问题 姓名:苏鹏海贾美丽赵妍张汉昭 学号:1510003063 1510003024 班级:计科实验室:软件技术实验室指导教师:张慧日期: 2016.11.09

&&遗传算法问题 一、实验目的 1.熟悉和掌握遗传算法的原理、实质; 2.学会使用遗传算法解决问题; 3.学会编写遗传算法程序寻找函数最值; 二、实验原理 遗传算法是仿真生物遗传学和自然选择机理,通过人工方式所构造的一类搜索算法,从某种程度上说遗传算法是对生物进化构成进行的数学方式仿真。在遗传算法中染色体对应的是一系列符号序列,在标准的遗传算法(即基本遗传算法)中,通常用0, 1组成的位串表示,串上各个位置对应基因座,各位置上的取值对应等位基因。遗传算法对染色体进行处理,染色体称为基因个体。一定数量的基因个体组成基因种群。种群中个体的数目为种群的规模,各个体对环境的适应程度称为适应度。 三、实验内容 用遗传算法求根号2,也就是求方程f(x)=x*x-2=0的正整数解,x=1时f(1)<0,x=2时f(2)>0,由介值定理,则1到2中间存在一个根,根据代数基本定理和根的对称性知这就是我们要找的根,由目标函数得到适应度函数,我们选择个体都在[1,2]之间,那适应度函数我可以取 j(x)=40/(2+|x*x-2|)-10,由x的取值范围知j的范围是(0,10) x和y交叉就用取平均(x+y)/2,交叉概率取0.9,变异概率为0, 四、步骤分析 1.选择目标函数,确定变量定义域及编码精度,形成编码方案 2.随机产生一个规模为(即该种群中含有个体)的种群 2 3.个体评价:计算群体P(t)中各个个体适应度 4.选择运算:将选择算子作用于群体。选择的目的是把优化的个体直接遗传 到下一代或通过配对交叉产生新的个体再遗传到下一代。选择操作是建 立在群体中个体的适应度评估基础上的。(选择运算用轮盘赌算法) 5.对被选择进入匹配池中的个体进行交叉操作,形成新种群 6.以小概率在种群中选择个体进行变异操作形成新种群 7.计算每个个体的适值 8.根据适值概率选择新个体形成新种群 9.检查结束条件,若满足则算法结束,当前种群中适值最高的个体即所求 解;否则转3

遗传算法解决TSP问题的matlab程序

1.遗传算法解决TSP 问题(附matlab源程序) 2.知n个城市之间的相互距离,现有一个推销员必须遍访这n个城市,并且每个城市 3.只能访问一次,最后又必须返回出发城市。如何安排他对这些城市的访问次序,可使其 4.旅行路线的总长度最短? 5.用图论的术语来说,假设有一个图g=(v,e),其中v是顶点集,e是边集,设d=(dij) 6.是由顶点i和顶点j之间的距离所组成的距离矩阵,旅行商问题就是求出一条通过所有顶 7.点且每个顶点只通过一次的具有最短距离的回路。 8.这个问题可分为对称旅行商问题(dij=dji,,任意i,j=1,2,3,…,n)和非对称旅行商 9.问题(dij≠dji,,任意i,j=1,2,3,…,n)。 10.若对于城市v={v1,v2,v3,…,vn}的一个访问顺序为t=(t1,t2,t3,…,ti,…,tn),其中 11.ti∈v(i=1,2,3,…,n),且记tn+1= t1,则旅行商问题的数学模型为: 12.min l=σd(t(i),t(i+1)) (i=1,…,n) 13.旅行商问题是一个典型的组合优化问题,并且是一个np难问题,其可能的路径数目 14.与城市数目n是成指数型增长的,所以一般很难精确地求出其最优解,本文采用遗传算法 15.求其近似解。 16.遗传算法: 17.初始化过程:用v1,v2,v3,…,vn代表所选n个城市。定义整数pop-size作为染色体的个数 18.,并且随机产生pop-size个初始染色体,每个染色体为1到18的整数组成的随机序列。 19.适应度f的计算:对种群中的每个染色体vi,计算其适应度,f=σd(t(i),t(i+1)). 20.评价函数eval(vi):用来对种群中的每个染色体vi设定一个概率,以使该染色体被选中 21.的可能性与其种群中其它染色体的适应性成比例,既通过轮盘赌,适应性强的染色体被 22.选择产生后台的机会要大,设alpha∈(0,1),本文定义基于序的评价函数为eval(vi)=al 23.pha*(1-alpha).^(i-1) 。[随机规划与模糊规划] 24.选择过程:选择过程是以旋转赌轮pop-size次为基础,每次旋转都为新的种群选择一个 25.染色体。赌轮是按每个染色体的适应度进行选择染色体的。 26.step1 、对每个染色体vi,计算累计概率qi,q0=0;qi=σeval(vj) j=1,…,i;i=1, 27.…pop-size. 28.step2、从区间(0,pop-size)中产生一个随机数r; 29.step3、若qi-1 step4、重复step2和step3共pop-size次,这样可以得到pop-size个复制的染色体。 30.grefenstette编码:由于常规的交叉运算和变异运算会使种群中产生一些无实际意义的 31.染色体,本文采用grefenstette编码《遗传算法原理及应用》可以避免这种情况的出现 32.。所谓的grefenstette编码就是用所选队员在未选(不含淘汰)队员中的位置,如: 33.8 15 2 16 10 7 4 3 11 14 6 12 9 5 18 13 17 1 34.对应: 35.8 14 2 13 8 6 3 2 5 7 3 4 3 2 4 2 2 1。 36.交叉过程:本文采用常规单点交叉。为确定交叉操作的父代,从到pop-size重复以下过 37.程:从[0,1]中产生一个随机数r,如果r 将所选的父代两两组队,随机产生一个位置进行交叉,如: 38.8 14 2 13 8 6 3 2 5 7 3 4 3 2 4 2 2 1 39. 6 12 3 5 6 8 5 6 3 1 8 5 6 3 3 2 1 1 40.交叉后为: 41.8 14 2 13 8 6 3 2 5 1 8 5 6 3 3 2 1 1 42. 6 12 3 5 6 8 5 6 3 7 3 4 3 2 4 2 2 1 43.变异过程:本文采用均匀多点变异。类似交叉操作中选择父代的过程,在r 选择多个染色体vi作为父代。对每一个 选择的父代,随机选择多个位置,使其在每位置

人工智能实验报告大全

人工智能课内实验报告 (8次) 学院:自动化学院 班级:智能1501 姓名:刘少鹏(34) 学号: 06153034

目录 课内实验1:猴子摘香蕉问题的VC编程实现 (1) 课内实验2:编程实现简单动物识别系统的知识表示 (5) 课内实验3:盲目搜索求解8数码问题 (18) 课内实验4:回溯算法求解四皇后问题 (33) 课内实验5:编程实现一字棋游戏 (37) 课内实验6:字句集消解实验 (46) 课内实验7:简单动物识别系统的产生式推理 (66) 课内实验8:编程实现D-S证据推理算法 (78)

人工智能课内实验报告实验1:猴子摘香蕉问题的VC编程实现 学院:自动化学院 班级:智能1501 姓名:刘少鹏(33) 学号: 06153034 日期: 2017-3-8 10:15-12:00

实验1:猴子摘香蕉问题的VC编程实现 一、实验目的 (1)熟悉谓词逻辑表示法; (2)掌握人工智能谓词逻辑中的经典例子——猴子摘香蕉问题的编程实现。 二、编程环境 VC语言 三、问题描述 房子里有一只猴子(即机器人),位于a处。在c处上方的天花板上有一串香蕉,猴子想吃,但摘不到。房间的b处还有一个箱子,如果猴子站到箱子上,就可以摸着天花板。如图1所示,对于上述问题,可以通过谓词逻辑表示法来描述知识。要求通过VC语言编程实现猴子摘香蕉问题的求解过程。 图1 猴子摘香蕉问题 四、源代码 #include unsigned int i; void Monkey_Go_Box(unsigned char x, unsigned char y) {

遗传算法参数调整实验报告(精)

遗传算法参数调整实验报告 算法设计: 编码方案:遍历序列 适应度函数:遍历路程 遗传算子设计: 选择算子:精英保留+轮盘赌 交叉算子:Pxover ,顺序交叉、双亲双子, 变异算子:Pmutation ,随机选择序列中一个染色体(城市)与其相邻染色体交换 首先,我们改编了我们的程序,将主函数嵌套在多层迭代之内,从外到内依此为: 过程中,我们的程序将记录每一次运行时种群逐代进化(收敛)的情况,并另外记录总体测试结果。 测试环境: AMD Athlon64 3000+ (Overclock to 2.4GHz)

目标:寻求最优Px 、Pm 组合 方式:popsize = 50 maxgen = 500 \ 10000 \ 15000 Px = 0.1~0.9(0.05) Pm = 0.01~0.1(0.01) count = 50 测试情况:运行近2万次,时间约30小时,产生数据文件总共5.8GB 测试结果:Px, Pm 对收敛结果的影响,用灰度表示结果适应度,黑色为适应度最低 结论:Px = 0.1 ,Pm = 0.01为最优,并刷新最优结果19912(之前以为是20310),但20000次测试中最优解只出现4次,程序需要改进。 Maxgen = 5000 Pm=0.01 Px = 0.1 Maxgen = 10000 0.1 0.9 Px = 0.1 0.9 0.1

目标:改进程序,再寻求最优参数 方式:1、改进变异函数,只保留积极变异; 2、扩大测试范围,增大参数步进 popsize = 100 \ 200 \ 400 \ 800 maxgen = 10000 Px = 0.1 \ 0.5 \ 0.9 Pm = 0.01 \ 0.04 \ 0.07 \ 0.1 count = 30 测试情况:运行1200次,时间8小时,产生数据文件600MB 测试结果: 结论:Px = 0.1,Pm = 0.01仍为最优,收敛情况大有改善,10000代基本收敛到22000附近,并多次达到最优解19912。变异函数的修改加快了整体收敛速度。 但是收敛情况对Pm并不敏感。另外,单个种群在遗传过程中收敛速度的统计,将是下一步的目标。

TSP问题的遗传算法求解

TSP问题的遗传算法求解 一、问题描述 假设有一个旅行商人要拜访N个城市,要求他从一个城市出发,每个城市最多拜访一次,最后要回到出发的城市,保证所选择的路径长度最短。 二、算法描述 (一)算法简介 遗传算法(GeneticAlgorithm)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,通过模拟自然进化过程搜索最优解。遗传算法是从代表问题可能潜在的解集的一个种群(population)开始的,初代种群产生之后,按照适者生存和优胜劣汰的原理,逐代(generation)演化产生出越来越好的近似解,在每一代,根据问题域中个体的适应度(fitness)大小选择个体,并借助于自然遗传学的遗传算子(geneticoperators)进行组合交叉(crossover)和变异(mutation),产生出代表新的解集的种群。这个过程将导致种群像自然进化一样的后生代种群比前代更加适应于环境,末代种群中的最优个体经过解码(decoding),可以作为问题近似最优解。(摘自百度百科)。 (二)遗传算子 遗传算法中有选择算子、交叉算子和变异算子。 选择算子用于在父代种群中选择进入下一代的个体。 交叉算子用于对种群中的个体两两进行交叉,有Partial-MappedCrossover、OrderCrossover、Position-basedCrossover等交叉算子。 变异算子用于对种群中的个体进行突变。 (三)算法步骤描述 遗传算法的基本运算过程如下: 1.初始化:设置进化代数计数器t=0、设置最大进化代数T、交叉概率、变异概率、随机生成M个个体作为初始种群P 2.个体评价:计算种群P中各个个体的适应度 3.选择运算:将选择算子作用于群体。以个体适应度为基础,选择最优个体直接遗传到下一代或通过配对交叉产生新的个体再遗传到下一代 4.交叉运算:在交叉概率的控制下,对群体中的个体两两进行交叉 5.变异运算:在变异概率的控制下,对群体中的个体两两进行变异,即对某一个体的基因进行随机调整 6.经过选择、交叉、变异运算之后得到下一代群体P1。 重复以上1-6,直到遗传代数为T,以进化过程中所得到的具有最大适应度个体作为最优解输出,终止计算。 三、求解说明 (一)优化目标 给定二维数据int[][]pos用于存储各个城市的坐标,采用欧式距离代表城市之间的距离。利用遗传算法,找到不重复遍历所有城市的路径中,所走距离最短的路径。 (二)选择算子 选择算子采用轮盘赌选择,以每个个体的适应度为基础,为每个个体计算累积概率。

用遗传算法求解Rosenbrock函数最优解实验报告

姓名学号 实验 成绩 华中师范大学计算机科学系 实验报告书 实验题目:用遗传算法求解Rosenbrock函数的最大值问题课程名称:智能计算 主讲教师:沈显君 辅导教师: 课程编号: 班级:2011级 实验时间:2011.11

用遗传算法求解Rosenbrock函数最大值问题 摘要: 本文利用遗传算法研究了求解Rosenbrock函数的最大值问题.在较多的计算机模拟实验结果中表明,用遗传算法可以有效地解决这一问题.文中分析了一种基于遗传算法对Rosenbrock函数最大值问题的求解,得到了适于解决此问题的合理的遗传操作,从而为有效地解决最速下降法所不能实现的某一类函数代化问题提供了一种新的途径.通过对基于遗传算法对Rosenbrock函数最大值问题的求解,进一步理解遗传算法对解决此类问题的思想。 关键词:遗传算法,Rosenbrock函数,函数优化,最速下降法。 Abstract: This paper deals with the maximum of Rosenbrock s function based ongenetic algorithms. The simulated results show that the problem can be solved effectivelyusing genetic algorithms. The influence of some rnodified genetic algorithms on searchspeed is also examined. Some genetic operations suitable to the optimization technique areobtained, therefore, a novel way of solving a class of optimizations of functions that cannot be realized using the method of steepest descent is proposed.Through dealing with the maximum of Rosenbrock s function based ongenetic algorithms,a better understanding of the genetic algorithm to solve such problems thinking. Keyword:ongenetic algorithms,Rosenbrock function,function optimization,Steepest descent method

人工智能实验报告

实验报告 1.对CLIPS和其运行及推理机制进行介绍 CLIPS是一个基于前向推理语言,用标准C语言编写。它具有高移植性、高扩展性、 强大的知识表达能力和编程方式以及低成本等特点。 CLIPS由两部分组成:知识库、推理机。它的基本语法是: (defmodule< module-n ame >[< comme nt >]) CLIPS的基本结构: (1).知识库由事实库(初始事实+初始对象实例)和规则库组成。 事实库: 表示已知的数据或信息,用deftemplat,deffact定义初始事实表FACTLIS,由关系名、后跟 零个或多个槽以及它们的相关值组成,其格式如下: 模板: (deftemplate [] *) :: = | 事实: (deffacts [] *) 当CLIPS系统启动推理时,会把所有用deffact定义的事实自动添加到工作存储器中。常用命令如下:asser:把事实添加到事实库(工作存储器)中retract:删除指定事实 modify :修改自定义模板事实的槽值duplicate :复制事实 clear:删除所有事实 规则库 表示系统推理的有关知识,用defrule命令来定义,由规则头、后跟零个或多个条件元素以 及行为列表组成,其格式如下: (defrule [] * ; =>

遗传算法实验报告

遗传算法实验报告 专业:自动化姓名:张俊峰学号:13351067 摘要:遗传算法,是基于达尔文进化理论发展起来的一种应用广泛、高效的随机搜索与优化方法。本实验利用遗传算法来实现求函数最大值的优化问题,其中的步骤包括初始化群体、个体评价、选择运算、交叉运算、变异运算、终止条件判断。该算法具有覆盖面大、减少进入局部最优解的风险、自主性等特点。此外,遗传算法不是采用确定性原则而是采用概率的变迁规则来指导搜索方向,具有动态自适应的优点。 关键词:串集最优化评估迭代变异 一:实验目的 熟悉和掌握遗传算法的运行机制和求解的基本方法。 遗传算法是一种基于空间搜索的算法,它通过自然选择、遗传、变异等操作以及达尔文的适者生存的理论,模拟自然进化过程来寻找所求问题的答案。其求解过程是个最优化的过程。一般遗传算法的主要步骤如下: (1)随机产生一个确定长度的特征字符串组成的初始种群。。 (2)对该字符春种群迭代地执行下面的步骤a和步骤b,直到满足停止准则为止: a计算种群中每个个体字符串的适应值; b应用复制、交叉和变异等遗传算子产生下一代种群。 (3)把在后代中表现的最好的个体字符串指定为遗传算法的执行结果,即为问题的一 个解。 二:实验要求 已知函数y=f(x 1,x 2 ,x 3 ,x 4 )=1/(x 1 2+x 2 2+x 3 2+x 4 2+1),其中-5≤x 1 ,x 2 ,x 3 ,x 4 ≤5, 用遗传算法求y的最大值。三:实验环境

操作系统:Microsoft Windows 7 软件:Microsoft Visual studio 2010 四:实验原理与步骤 1、遗传算法的思想 生物的进化是以集团为主体的。与此相对应,遗传算法的运算对象是由M个个体所组成的集合,称为群体。与生物一代一代的自然进化过程相类似,遗传算法的运算过程也是一个反复迭代过程,第t代群体极为P(t),进过一代遗传和进化后,得到第t+1代群体,他们也是由多个个体组成的集合,记做P(t+1)。这个群体不断地经过遗传和进化操作,并且每次都按照有优胜劣汰的规则将适应度较高的个体更多地遗传到下一代,这样最终在群体中将会得到一个优良的个体X,它所对应的表现性X将达到或接近于问题的最优解。 2、算法实现步骤 ①、产生初始种群:产生初始种群的方法通常有两种:一种是完全随机的方法产生的,适合于对问题的解无任何先验知识的情况;另一种是将某些先验知识转变为必须满足的一组要求,然后在满足这些要求的解中再随机地选择样本,t=0,随机产生n个个体形成一个初始群体P(t),该群体代表优化问题的一些可能解的集合; ②适应度评价函数:按编码规则,将群体P(t)中的每一个个体的基因码所对应的自变量取值代入目标函数,算出其函数值f,i=1,2,…,n,f越大,表示该个体有较高的适应度,更适合于f所定义的生存环境,适应度f为群体进化提供了依据; ③选择:按一定概率从群体P(t)中选出m个个体,作为双亲用于繁殖后代,产生新的个体加入下一个群体P(t+1)中。此处选用轮盘算法,也就是比例选择算法,个体被选择的概率与其适应度成正比。 ④交叉(重组):对于选中的用于繁殖的每一个个体,选择一种交叉方法,产生新的个体;此处采取生成随机数决定交叉的个体与交叉的位置。 ⑤变异:以一定的概率Pm从群体P(t+1)中随机选择若干个个体,对于选中的个体随机选择某个位置,进行变异; ⑥对产生新一代的群体返回步骤③再进行评价,交叉、变异如此循环往复,使群体中个体的适应度和平均适应度不断提高,直至最优个体的适应度达到某一限值或最优个体的适应度和群体的平均适应度不再提高,则迭代过程收敛,算法结束。 五:实验结果 实验结果的显示取决于判断算法终止的条件,这里可以有两种选择:1、在程序中设定迭代的次数;2在程序中设定适应值。本实验是在程序中实验者输入需要迭代的次数来判断程序终结的。

相关文档
最新文档