matlab实验报告.docx

上传人:p** 文档编号:880485 上传时间:2024-03-26 格式:DOCX 页数:10 大小:87.96KB
下载 相关 举报
matlab实验报告.docx_第1页
第1页 / 共10页
matlab实验报告.docx_第2页
第2页 / 共10页
matlab实验报告.docx_第3页
第3页 / 共10页
matlab实验报告.docx_第4页
第4页 / 共10页
matlab实验报告.docx_第5页
第5页 / 共10页
matlab实验报告.docx_第6页
第6页 / 共10页
matlab实验报告.docx_第7页
第7页 / 共10页
matlab实验报告.docx_第8页
第8页 / 共10页
matlab实验报告.docx_第9页
第9页 / 共10页
matlab实验报告.docx_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
资源描述

《matlab实验报告.docx》由会员分享,可在线阅读,更多相关《matlab实验报告.docx(10页珍藏版)》请在第壹文秘上搜索。

1、实验报告课程运输与配送实验序号05实验项目班级姓名学号实验小组及成员实验成绩实验日期及时间实验地点实验目的1、学会最邻近法的内容;2、学会在MATLAB使用简单语言;3、学会MATLAB函数使用;4、学会使用MATLAB解决最邻近法问题。实验内容1、小组成员线上讨论构思解题思路;2、通过MATLAB软件制作一个最邻近法的函数,为某距离矩阵寻找一个初始的单回路配送路程。实验设备计算机、MATLAB软件实验步骤、结果、分析及总结一、实验分析及实验步骤1、学会最邻近法的内容最邻近法可以通过如下5步完成。(1)将起始点定位整个回路的起点;(2)找到刚加入到回路上离一个点最近的一个点,并将其加入到线路中

2、;(3)重复步骤(2),直到集合了所有节点都加入到线路中;(4)将最后加入的节点和起始点连接起来,形成回路;2、线上讨论,小组成员学会解决最邻近法问题案例有一食品公司,位置在VI处,每天用一辆车给固定区域内的5家超市送货,要求货车只能去每一个超市一次,送完货后返回公司,各点之间的距离如表所示其中距离具有对称性,设计一条最短路径。距离VlV2V3V4V5V6Vl986712V296151816实验步骤、结果、分析及总结V3861487V461514410V5718846V612167106解:(I)根据以上距离表格,将Vl做成起点,选择Vl到各点距离中的最短距离,即V4为第二个点,此时路径为【V

3、IV41O距离VlV2V3V4V5V6Vl986712V296151816V3861487V461514410V5718846V612167106(2)观察V4到各点的距离,找到最短距离V5点,此时路径为VIV4V5o距离VlV2V3V4V5V6Vl986712V296151816V3861487V461514410V5718846V612167106(3)因为V4点已经在路径上了,所以删除V4点,如下表。观察V5到各点的距离,找到最短距离V6点,此时路径为【V1V4V5V6L距离VlV2V3V5V6Vl98712V2961816V38687V571886V6121676(4)因为V5点已经在

4、路径上了,所以删除V5点,如下表。观察V6到各点的距离,找到最短距离V3点,此时路径为【VIV4V5V6V3o距离VlV2V3V6Vl9812V29616V3867V612167(5)因为V6点已经在路径上了,所以删除V6点,如下表,观察V3到各点的距离,找到最短距离V2点,此时路径为【VIV4V5V6V3V2o实验距离VlV2V3Vl98V296V386步骤、结果、分析及总(6)所以最后最短路径为【V1V4V5V6V3V2V1,总距离为6+4+6+7+6+9=38。2、线上讨论,通过MATLAB软件制作一个最邻近法的函数,为上述案例寻找一个初始的单回路配送路程小组成员讨论整理好思路,首先建立

5、一个矩阵。为防止原表格空格初始值影响实验最短路比较,将对角线上的数值设为MATLAB语言中表示无穷大的数值,即:Info方案一(纸上思路用MATLAB语言表达):(1)程序如下页图所示:实验步骤、 结果、 分析 及总结.IIIX.J.IIIZ-t.lllZ.IJIITe-inf 9867 12;9 inf 6 15 18 16:8 6 inf 14 8 7;6 15 14 inf 4 10;7 18 8 4al-A(l.:)%V】到各点的即岗(选收第mini, jll!5in(al)%Y1到哪点的跑离最小(第一行的最小值和所什列卜.林)A(:. jl) = %排除此点OM除最小值所在列)a2-

6、A(jl. :)%新加入路/的点(V4)到剩余各点的距离(选取新的-行)min2, j2-min(a2)%V4到哪点的距离鼓小(第四打的最小僮和所住列卜标A(L :)A( = ,j2。推除此点(跚除垃小值所住列)a3-A(j2,:)min3. J3nin(a3)A(j2, :)A(:, j3)a4-A(j3,:)min4. j4?mi(a4)A(j3, :)A(:, J4)=A(j4, :);inf 6:12 16 7 10 6 inf(2)存在的问题和解决办法问题:关于如何把已经加入到路线中的点排除,尝试把此点的行和列删除,运行过程虽然没有问题,但是运行结果与实际不符,如下图。这样后面在利用

7、下标“跳”到相应行去不仅最小值会出现错误,而且这样不知道实际上是把哪个点加到路线里了。mini=min2=min3=646al=A(l,:)mini, jl=min(al) 值和所在列下标)A(:, jl)=inf解决办法:为避免删除行列的数值对后续实验有影响,将矩阵中已经加入路线的点的所有数值都设为Inf(无穷大),因为是求最小值所以不会对后续运行有影响。(3)修改后的程序如下:A=Einf 9 8 6 7 12;9inf6151816;86inf1487;61514inf410;71884inf6;12167106inf%V1到各点的距离(选取第一行)%V1到哪一点的距离最小(第一行的最小

8、%排除此点(假设所有点到此点距离无穷远)实验a2=A(jl,:)取新的一行)min2,j2=min(a2)在列下标)A(:,j2)=inf%新加入路径的点到剩余各点的距离(选%此点到哪一点的距离最小(最小值和所%排除此点步骤、a3=A(j2,:)结果、min3,j3=min(a3)A(:,j3)=inf分析及总a4=A(j3,:)min4,j4=min(a4)结A(:,j4)=infa5=A(j4,:)min5,j5=min(a5)A(:,j5)=infa6=A(j5,:)min6,j6=min(a6)1.=minl+min2+min3+min4+min5+min6方案二(运用循环语句改进MA

9、TLAB程序,简洁语言)(1)循环次数已知,尝试利用for循环语句,程序如下所示:.e“ix-114.=inf986712;9inf6151816;86inf1487;61514inf410:718Ja=A(l,:)%V1到各点的距离(选取第行)min(min(a)%V1到哪一点的距掰技小值i,j=find(a=min(min(a)%最小值所在行、列卜林A(:,j)=inf财*除此点(假设所行点到此点即肉无穷远)forj=2:6a三A(j,:)min(min(a)ij三find(a=min(min(a)A(:,j)三inf;end存在问题:虽然for循环适用于已知循环次数,但是此次问题是不规律

10、的循环,不是按照特定步长来循环的,所以不能用for循环,换while循环语句。(2)尝试利用While循环语句Ajinf986712:9Inf6151816:86inf1487:61514inf4:lntlnflnflnflnflnfW)可”点弊七警.行);:;:;:;Inin(Bin)叫到哪XM却禽小值InfInfInfInfInfInf(i,jfind(a-min(三in(a)%以小值所住行、列卜标InfInfInfInfInfInfA(:,j)inf贴,除此点(会设所仃点到此点距国无,InfInfInfInfInfInfInfInfInfInfInfInf干”女、I;:;:;:;_a”(

11、I)InfInfInfInfInfInfQnin(三in(a)InfInfInfInfInfInfi.jJ三find(a=in(nin(a)InfInfInfInfInfInfA(:.j)三inf;InfInfInfInfInfInfendlntInfInfInfInfInfInfInfInfInfInfInf出现问题:程序进入死循环,因为循环条件错误,需要加入循环结实验束条件。(3)修改程序,运用WhiIe和if嵌套循环语句。步骤、根据上面的死循环可以看出最终循环结束时矩阵将会变成一个6*6结果、的无穷大矩阵,所以加入一个跳出循环的条件if(A=l./zeros(6),当矩阵为此时,循环结束

12、,程序如下:分析A=inf986712;9inf6151816;86inf1487;61514inf410;71884inf6;12167106inf及总a=A(l,:)%V1到各点的距离(选取第一行)结min(min(a)%V1到哪一点的距离最小值i,j=find(a=min(min(a)%最小值所在行、列下标A(:,j)=inf%排除此点(假设所有点到此点距离无穷远)sum=min(a)%距离和B=l,j%最短路while(j=6)%循环a=A(j,:)min(min(a)i,j=find(a=min(min(a)A(:,j)=inf;if(A=l./zeros(6)%1./zeros(6)是6*6无穷大矩阵sum-sum+min(a)B=B,jbreak;endsum=summin(a)B=B,jEnd输出结果。二、实验结果1、修改后的方案一运行结果因为默认Vl是起点,所以在六个点中,VI也是终点。命令行向口实验步骤、结果、分析及总结叵IHA=Inf98InfInf12Inf9867129Inf6InfInf169Inf615181686InfInfInf186Inf148761514InfInf1

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 数据结构与算法

copyright@ 2008-2023 1wenmi网站版权所有

经营许可证编号:宁ICP备2022001189号-1

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第壹文秘网,我们立即给予删除!