matlab动态规划求函数最大值,利用MATLAB实现动态规划中最短距离的计算

不同城市之间确定最短路线是动态规划中最典型的一种案例,对于这一问题的MATLAB实现一般有以下几个难点,本文将就这几个问题分别进行阐述,并写出了相应的计算程序。

一、网络图数据的存储方式

BH=[1,3,2,2,1];

s(1,1:BH(2),1:BH(1))=[6;3;3];

s(2,1:BH(3),1:BH(2))=[6,8,7;5,6,4];

s(3,1:BH(4),1:BH(3))=[6,8;7,9];

s(4,1:BH(5),1:BH(4))=[5,6];

二、最短距离的计算

for L=2:n

for

H2=1:BH(L)

for H1=1:BH(L-1)

mnp(H1)=s(L-1,H2,H1)+mn(L-1,H1);

end

[mn(L,H2),nummin(L-1,H2)]=min(mnp);

mnp=ones(1,max(BH)).*inf;

end

end

[dmin,nummin(L,1)]=min(mn(n,1:BH(n)));

三,求最佳路线

NO(1)=nummin(n,1);

for L=2:n

NO(L)=nummin(n+1-L,NO(L-1));

end

四、求最佳路线每一个阶段的距离

NUM=fliplr(NO);

for L=1:n-1

D(L)=s(L,NUM(L+1),NUM(L));

end

函数计算文件

function dynp1

clear; clc;

BH=[1,3,2,2,1];

s(1,1:BH(2),1:BH(1))=[6;3;3];

s(2,1:BH(3),1:BH(2))=[6,8,7;5,6,4];

s(3,1:BH(4),1:BH(3))=[6,8;7,9];

s(4,1:BH(5),1:BH(4))=[5,6];

[dmin,NUM,D]=smin(BH,s)

function [dmin,NUM,D]=smin(BH,s) n=length(BH); %状态个数

s;

mnp=ones(1,max(BH)).*inf; mn(1:BH(1))=0; %初始状态指标函数值

for L=2:n

for

H2=1:BH(L)

for H1=1:BH(L-1)

mnp(H1)=s(L-1,H2,H1)+mn(L-1,H1); %计算某一阶段状态决策点到出发点的距离

end

[mn(L,H2),nummin(L-1,H2)]=min(mnp); %计算某一阶段决策点到出发点的最短距离

mnp=ones(1,max(BH)).*inf;

end

end

[dmin,nummin(L,1)]=min(mn(n,1:BH(n)));

NUM(n)=nummin(n,1);

for L=n:-1:2

NUM(L-1)=nummin(L-1,NUM(L)); %计算最佳路线点

end

for L=1:n-1

D(L)=s(L,NUM(L+1),NUM(L)); %计算最佳路线点相邻俩点之间的距离

end

D;

NUM;

dmin;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值