动态规划最小路径求解matlab实现

题目:
在这里插入图片描述两点之间最短路径问题采用动态规划算法
单向算法实现:

clear
clc
% user input data
% 'a':每个阶段的站点数目
% 'b':所有站点的距离
% num:所有站点的个数总和
a=[1 2 4 3 3 2 1];
b=[5 3 -1 -1;
1 3 6 -1;-1 8 7 6;
6 8 -1 -1;3 5 -1 -1;-1 3 3 -1;-1 8 4 -1;
2 2 -1 -1;-1 1 2 -1;-1 3 3 -1;
3 5 -1 -1;5 2 -1 -1;6 6 -1 -1;
4 -1 -1 -1;3 -1 -1 -1];
num=16;
max_col=4;

% c:最小路径
% c1:第一个决策点所产生的四个距离
% c2:其他决策点所产生的四个距离,并将较小值放入c1中
a_length=size(a);
route=zeros(a_length(2),max_col);
row=2;
c=b(1,:);
c1=zeros(1,max_col);c2=zeros(1,max_col);
for i=2:a_length(2)-1
   n=a(i);
   for k=1:max_col
       if b(row,k)>0
           c1(k)=b(row,k)+c(1);
           route(i,k)=1;
       end
   end
   if n>1
      for j=1:n-1
          for k=1:max_col
            if b(row+j,k)>0
                c2(k)=b(row+j,k)+c(j+1);
                if c2(k)<c1(k)||c1(k)==0
                    c1(k)=c2(k);
                    route(i,k)=j+1;
                end
            end
          end
      end
   end
   row=row+n;
   c=c1;
   c1=zeros(1,max_col);c2=zeros(1,max_col);
end
correct_col=route(end-1,1);
l_route=route(:,correct_col);
l_route(1)=1;
l_route(end-1)=correct_col;
l_route(end)=1;
disp('最小路径为');disp(c(1));disp('路径规划为');disp(l_route');

该代码仅能实现单起始点到单个终点的规划,算法小白不太会表述,仅试过求解这道题目。
若有错误或者改进方法,请各位大佬提出,谢谢

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值