动态规划及其在路径规划中的应用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Dijkstra算法:
Visited表示各个节点是否更新,初始值为0;
Dist存储起始点到本节点的最短距离,初始值为inf;dist(s)=0; Parent向量存储到本节点的上一个节点,默认值为0。
调用格式:
[d,p]=dijkstra(W,s,t) %W为关联矩阵,s为起点,t为终点, d为最短路径长度,p为最短路径 例6-47 ab=[1 1 2 2 3 3 4 4 4 4 5 6 6 7 8]; bb=[2 3 5 4 4 6 5 7 8 6 7 8 9 9 9]; w=[1 2 12 6 3 4 4 15 7 2 7 7 15 3 10]; R=sparse(ab,bb,w);R(9,9)=0; W=ones(9);[d,p]=dijkstra(R.*W,1,9)
无向图的关联矩阵R1可以直接由R1=R+R’计算出来
如果无向图中某些边是单向的,可以手工修改矩阵
例6-47 x=[4 9 21 26 47 57 62 70 76 76 96]; y=[49 30 56 26 19 38 11 30 59 4 32]; for i=1:11 for j=1:11 D(i,j)=sqrt((x(i)-x(j))^2+(y(i)-y(j))^2); end end n1=[1 1 2 2 3 4 4 5 5 6 6 6 7 8 7 10 8 9]; n2=[2 3 3 4 4 5 6 6 7 7 8 9 8 9 10 11 11 11]; R=sparse(n1,n2,1);R(11,11)=0;R=R+R'; [d,p]=dijkstra(R.*D,1,11)
特点:为各目标加权重 目标规划的标准型问题P204 调用函数: x=fgoalattain(F,x0,g,w,A,B,Aeq,Beq,xm,xM,CF,OPT,· · · )
例6-44
f1=[4,2.8,2.4];f2=[-1,-1,-1]; xm=[0;0;0];x0=xm;w=[0.8,0.2]; f=@(x)[f1*x;f2*x];goal=[20;-6]; A=[-1,-1,0];B=[-3]; x=fgoalattain(f,x0,goal,w,A,B,[],[],xm),f(x)
biograph() %建立有向图对象 graphshortestpath( ) %求解最短路径 调用格式: view( ) %显示有向图
P=biograph(R) %建立有向图对象P
[d,p]=graphshortestpath( P,n1,n2) %求解最短路径,n1起点,n2终点
例6-46 ab=[1 1 2 2 3 3 4 4 4 4 5 6 6 7 8]; bb=[2 3 5 4 4 6 5 7 8 6 7 8 9 9 9]; w=[1 2 12 6 3 4 4 15 7 2 7 7 15 3 10]; R=sparse(ab,bb,w);R(9,9)=0; h=view(biograph(R,[],'ShowWeights','on'))%显示各个路径权值,并赋给句柄h [d,p]=graphshortestpath(R,1,9)%求最短路径 set(h.Node(p),'color',[1 0.4 0.4]); edges=getedgesbynodeid(h.Node(p),'ID'); set(edges,'LineColor',[1 0 0])%用红色修饰最短路径
点为止的边权值为wi,i=1,2,· · · ,m. 可建立3个向量,构造稀疏矩阵。 a=[a1,a2,```am,n];%起始节点向量 b=[b1,b2,```bm,n];%终止节点向量 w=[w1,w2,```wm,0];%边权值向量 R=sparse(a,b,w);%稀疏矩阵表示
Biபைடு நூலகம்informatics工具箱中提供了有向图及最短路径搜索的现成函数:
图是由节点和边构成
如果边是有向的,则图称为有向图;反之,称为无向图 图的矩阵表示方法最适合计算机表示和处理 关联矩阵:
假设一个图有n个节点,则用n*n矩阵R表示它。若节点i和节点j间不存在
边,则R(i,j)=0;若节点i和节点j的边权值为k,则R(i,j)=k。
稀疏矩阵:假设已知某图由n个节点,m条边构成,由ai节点出发到bi节
相关文档
最新文档