QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3263|回复: 15
打印 上一主题 下一主题

动态规划是可以用MATLAB实现吗?

[复制链接]
字体大小: 正常 放大

19

主题

16

听众

220

积分

升级  60%

  • TA的每日心情
    无聊
    2014-2-13 12:10
  • 签到天数: 34 天

    [LV.5]常住居民I

    新人进步奖

    群组Matlab讨论组

    跳转到指定楼层
    1#
    发表于 2013-1-25 18:49 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    动态规划是可以用MATLAB实现吗?
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    irrisa        

    10

    主题

    7

    听众

    122

    积分

    升级  11%

  • TA的每日心情
    无聊
    2013-2-1 13:16
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    自我介绍
    cser
    必须可以。。。。。

    点评

    薄菏沙冰  有具体的算法吗?我想在MATLAB中实现一下!谢谢  详情 回复 发表于 2013-1-25 20:06
    回复

    使用道具 举报

    10

    主题

    18

    听众

    212

    积分

    升级  56%

  • TA的每日心情
    难过
    2013-9-6 19:36
  • 签到天数: 23 天

    [LV.4]偶尔看看III

    群组学术交流A

    恩恩。。。。。。。。。。。。。。

    点评

    薄菏沙冰  可是不会用啊!!  详情 回复 发表于 2013-1-25 20:04
    回复

    使用道具 举报

    19

    主题

    16

    听众

    220

    积分

    升级  60%

  • TA的每日心情
    无聊
    2014-2-13 12:10
  • 签到天数: 34 天

    [LV.5]常住居民I

    新人进步奖

    群组Matlab讨论组

    小小媛媛92 发表于 2013-1-25 19:45
    恩恩。。。。。。。。。。。。。。

    可是不会用啊!!
    回复

    使用道具 举报

    19

    主题

    16

    听众

    220

    积分

    升级  60%

  • TA的每日心情
    无聊
    2014-2-13 12:10
  • 签到天数: 34 天

    [LV.5]常住居民I

    新人进步奖

    群组Matlab讨论组

    irrisa 发表于 2013-1-25 19:37
    必须可以。。。。。

    有具体的算法吗?我想在MATLAB中实现一下!谢谢
    回复

    使用道具 举报

    madio        

    3万

    主题

    1307

    听众

    5万

    积分

  • TA的每日心情
    奋斗
    2021-5-1 20:26
  • 签到天数: 2013 天

    [LV.Master]伴坛终老

    自我介绍
    数学中国站长

    社区QQ达人 邮箱绑定达人 优秀斑竹奖 发帖功臣 风雨历程奖 新人进步奖 最具活力勋章

    群组数学建模培训课堂1

    群组数学中国美赛辅助报名

    群组Matlab讨论组

    群组2013认证赛A题讨论群组

    群组2013认证赛C题讨论群组

    给你一段matlab的程序
    1. function [p_opt,fval]=dynprog(x,DecisFun,ObjFun,TransFun)      
    2. % [p_opt,fval]=dynprog(x,DecisFun,ObjFun,TransFun)
    3. % 自由始端和终端的动态规划,求指标函数最小值的逆序算法递归
    4. % 计算程序。x是状态变量,一列代表一个阶段状态;M-函数
    5. % DecisFun(k,x)由阶段k的状态变量x求出相应的允许决策变量;
    6. % M-函数ObjFun(k,x,u)是阶段指标函数,M-函数TransFun(k,x,u)
    7. % 是状态转移函数,其中x是阶段k的某状态变量,u是相应的决策变量;
    8. % 输出p_opt由4列构成,p_opt=[序号组;最优策略组;最优轨线组;
    9. % 指标函数值组];fval是一个列向量,各元素分别表示p_opt各
    10. % 最优策略组对应始端状态x的最优函数值;
    11. %
    12. %例(参看胡良剑等编《数学实验--使用MATLAB》P180
    13. %先写3个函数
    14. %                 eg13f1_2.m
    15. %    function u=DecisF_1(k,x)
    16. %    在阶段k由状态变量x的值求出其相应的决策变量所有的取值
    17. %    c=[70,72,80,76];q=10*[6,7,12,6];
    18. %    if q(k)-x<0,u=0:100;       %决策变量不能取为负值
    19. %    else,u=q(k)-x:100;end;     %产量满足需求且不超过100
    20. %    u=u(:);
    21. %                 eg13f2_2.m
    22. %    function v=ObjF_1(k,x,u)
    23. %    阶段k的指标函数
    24. %    c=[70,72,80,76];v=c(k)*u+2*x;
    25. %                 eg13f3_2.m
    26. %    function y=TransF_1(k,x,u)
    27. %     状态转移方程
    28. %     q=10*[6,7,12,6];y=x+u-q(k);
    29. %调用DynProg.m计算如下:
    30. %    clear;x=nan*ones(14,4);% x是10的倍数,最大范围0≤x≤130,
    31. %       %因此x=0,1,...13,所以x初始化取14行,nan表示无意义元素
    32. %    x(1:7,1)=10*(0:6)';     % 按月定义x的可能取值
    33. %    x(1:11,2)=10*(0:10)';x(1:12,3)=10*(2:13)';
    34. %    x(1:7,4)=10*(0:6)';
    35. %    [p,f]=dynprog(x,'eg13f1_2','eg13f2_2','eg13f3_2')

    36. % By X.D. Ding June 2000

    37. k=length(x(1,:));f_opt=nan*ones(size(x));d_opt=f_opt;
    38. t_vubm=inf*ones(size(x));x_isnan=~isnan(x);t_vub=inf;
    39. % 计算终端相关值
    40. tmp1=find(x_isnan(:,k));tmp2=length(tmp1);
    41. for i=1:tmp2
    42.    u=feval(DecisFun,k,x(i,k));tmp3=length(u);
    43.    for j=1:tmp3
    44.          tmp=feval(ObjFun,k,x(tmp1(i),k),u(j));
    45.          if tmp<=t_vub,
    46.             f_opt(i,k)=tmp;d_opt(i,k)=u(j);t_vub=tmp;
    47. end;end;end
    48. % 逆推计算各阶段的递归调用程序
    49. for ii=k-1:-1:1
    50.    tmp10=find(x_isnan(:,ii));tmp20=length(tmp10);
    51.    for i=1:tmp20
    52.       u=feval(DecisFun,ii,x(i,ii));tmp30=length(u);
    53.       for j=1:tmp30
    54.          tmp00=feval(ObjFun,ii,x(tmp10(i),ii),u(j));
    55.          tmp40=feval(TransFun,ii,x(tmp10(i),ii),u(j));
    56.          tmp50=x(:,ii+1)-tmp40;
    57.          tmp60=find(tmp50==0);
    58.          if ~isempty(tmp60),
    59.             tmp00=tmp00+f_opt(tmp60(1),ii+1);   
    60.             if tmp00<=t_vubm(i,ii)
    61.                f_opt(i,ii)=tmp00;d_opt(i,ii)=u(j);
    62.                t_vubm(i,ii)=tmp00;
    63. end;end;end;end;end;
    64. fval=f_opt(tmp1,1);
    65. % 记录最优决策、最优轨线和相应指标函数值
    66. p_opt=[];tmpx=[];tmpd=[];tmpf=[];
    67. tmp0=find(x_isnan(:,1));tmp01=length(tmp0);
    68. for i=1:tmp01,
    69.   tmpd(i)=d_opt(tmp0(i),1);
    70.   tmpx(i)=x(tmp0(i),1);
    71.   tmpf(i)=feval(ObjFun,1,tmpx(i),tmpd(i));
    72.   p_opt(k*(i-1)+1,[1,2,3,4])=[1,tmpx(i),...
    73. tmpd(i),tmpf(i)];
    74.   for ii=2:k
    75.      tmpx(i)=feval(TransFun,ii-1,tmpx(i),tmpd(i));
    76.      tmp1=x(:,ii)-tmpx(i);tmp2=find(tmp1==0);
    77.      if ~isempty(tmp2)
    78.         tmpd(i)=d_opt(tmp2(1),ii);
    79.      end;
    80.      tmpf(i)=feval(ObjFun,ii,tmpx(i),tmpd(i));
    81.      p_opt(k*(i-1)+ii,[1,2,3,4])=[ii,tmpx(i),...
    82. tmpd(i),tmpf(i)];
    83. end;end;
    复制代码
    数学建模社会化
    回复

    使用道具 举报

    0

    主题

    13

    听众

    40

    积分

    升级  36.84%

  • TA的每日心情
    开心
    2018-9-15 16:39
  • 签到天数: 25 天

    [LV.4]偶尔看看III

    自我介绍
    我是中国计量学院的一名大学生,热爱数模。

    社区QQ达人

    回复

    使用道具 举报

    15

    主题

    11

    听众

    659

    积分

    升级  14.75%

  • TA的每日心情
    无聊
    2016-1-29 08:36
  • 签到天数: 93 天

    [LV.6]常住居民II

    自我介绍
    学习数学建模

    社区QQ达人

    回复

    使用道具 举报

    15

    主题

    11

    听众

    659

    积分

    升级  14.75%

  • TA的每日心情
    无聊
    2016-1-29 08:36
  • 签到天数: 93 天

    [LV.6]常住居民II

    自我介绍
    学习数学建模

    社区QQ达人

    回复

    使用道具 举报

    10#
    无效楼层,该帖已经被删除
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2024-5-31 14:52 , Processed in 0.989737 second(s), 110 queries .

    回顶部