MATLAB实验报告,遗传算法解最短路径以及函数最小值问题
硕士生考查课程考试试卷
考试科目: MATLAB教程
考生姓名: 考生学号:
学 院: 专 业:
考 生 成 绩:
任课老师 (签名)
考试日期:20 年 月 日 午 时至 时
《MATLAB教程》试题:
A、利用MATLAB设计遗传算法程序,寻找下图11个端点的最短路径,其中没有连接的端点表示没有路径。要求设计遗传算法对该问题求解。
B、设计遗传算法求解f(x)极小值,具体表达式如下:
要求必须使用m函数方式设计程序。
C、利用MATLAB编程实现:三名商人各带一个随从乘船渡河,一只小船只能容纳二人,由他们自己划行,随从们密约,在河的任一岸,一旦随从的人数比商人多,就杀人越货,但是如何乘船渡河的大权掌握在商人手中,商人们怎样才能安全渡河?选择题目: A
一、问题分析(10分)
如图如示,将节点编号,图论知,可写出权邻接矩阵为: 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
注:计算时穷大数吃掉小,处为。要求求出两点间的最短,Floyd的是两点尝试顶点,比较距离长短的方法。思考后认为,遗传找到一个可以统一表示最短的函数是可以对分别计算然后入,可将相互之间的所有情况解出。本题可发现,所有节点都是可双向行走,则只计算路径与,然后将矩阵按主线翻即可得到数据。
实现原理为遗传算法原理:
数学模型如下:图 非空点集合 边集合 , 又设 值为 故 可表示为一个三组
最短路径数学模型可以描述为:
:一:与初始化
自然,产生的编码不能重复,于是采用了randperm产生不重复的随机因题方法是使用是计算一对点,则我们编码将一个节点单独放入,成完整编码。
为节点有,可采用一个的储存数据,由于为数字,可直接用数字编码表示路径的染色体。如下:
等长可变体的方式,由2路径体编码能为(超,来进行算的运算不实际意义。二:适应度,因取最路径值最小值,用方法为一常数),处采用前一种方式是,可进一计算相对适应度。
三:选择与复制
用轮盘赌,生个随机值,比较与适应度,从而选择出优良个进入下一代。
四:交叉。
编码是不重复的数字,以采用传统的交叉方法,即上一行与一行对交叉,会产生无效路径,于,用了不同的方法,如下:
表示径的染色Tx 和Ty中,随机选取两个基因座(不能为基因座)将基因座和第基因座之间的各个座定义为交叉域,并将交叉的内容分别记忆为
(2)根据交叉区域的映射关系,在个体找出有与的元素,在个体y中找出有与的元素,全部置
(3)将个体Txy进行循环左移删除,直到编码串中交叉区域的左端再有:然后将所空位集中到交叉区域,而将交叉区域内原有基依次向后移动。0元素可能较多在程序实现,我