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

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元素可能较多在程序实现,我

使用MATLAB遗传算法工具箱,可以很方便地实现遗传算法的编程和优化。以下是一个使用MATLAB遗传算法工具箱的例子: 假设我们要通过遗传算法来寻找函数 y = f(x) 的最小值,其中 x 是一个二进制字符串,f(x) 的表达式如下: f(x) = x1^2 + x2^2 + x3^2 + x4^2 其中,x1, x2, x3, x4 分别代表二进制字符串 x 的第1,2,3,4位。 我们的目标是找到一个长度为 4 的二进制字符串 x,使得 f(x) 的值最小。 下面是使用MATLAB遗传算法工具箱实现这个问题代码: ```matlab % 定义目标函数 function y = fitnessfun(x) x1 = x(1); x2 = x(2); x3 = x(3); x4 = x(4); y = x1^2 + x2^2 + x3^2 + x4^2; end % 初始化种群 nvars = 4; % 变量个数 lb = zeros(1, nvars); % 变量下界 ub = ones(1, nvars); % 变量上界 popsize = 20; % 种群大小 options = gaoptimset('PopulationSize', popsize); % 优化选项 [x, fval] = ga(@fitnessfun, nvars, [], [], [], [], lb, ub, [], options); % 输出结果 disp(['最小值为:' num2str(fval)]); disp(['最优为:' num2str(x)]); ``` 在这个代码中,首先定义了目标函数 `fitnessfun`,它输入一个长度为 4 的二进制字符串 x,输出相应的 f(x) 值。 然后,通过 `gaoptimset` 函数设置优化选项,其中 `PopulationSize` 参数指定了种群大小为 20。 最后,调用 `ga` 函数进行优化,得到最小化的目标函数值 `fval` 和相应的最优 `x`。 这就是一个简单的使用MATLAB遗传算法工具箱的例子。你可以根据自己的需要,修改目标函数和优化选项,来实现不同的遗传算法问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值