QQ登录

只需要一步,快速开始

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

[问题求助] 求动态规划的MATLAB程序,要通用性强的

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

28

主题

5

听众

1865

积分

  • TA的每日心情
    开心
    2014-9-21 08:29
  • 签到天数: 19 天

    [LV.4]偶尔看看III

    自我介绍
    我思我在

    新人进步奖 元老勋章 最具活力勋章

    群组数学建模

    群组中国矿业大学数学建模协会

    群组数学趣味、游戏、IQ等

    群组南京邮电大学数模协会

    群组LINGO

    跳转到指定楼层
    1#
    发表于 2009-12-21 21:27 |只看该作者 |正序浏览
    |招呼Ta 关注Ta
    求动态规划的MATLAB程序,要通用性强的如dynprog
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持2 反对反对0 微信微信

    0

    主题

    12

    听众

    112

    积分

    升级  6%

  • TA的每日心情

    2015-5-29 09:03
  • 签到天数: 8 天

    [LV.3]偶尔看看II

    邮箱绑定达人 社区QQ达人

    群组2015美赛备战交流群组

    回复

    使用道具 举报

    张坤14        

    0

    主题

    3

    听众

    316

    积分

    升级  5.33%

  • TA的每日心情
    慵懒
    2015-12-7 09:47
  • 签到天数: 47 天

    [LV.5]常住居民I

    2013挑战赛参赛者

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

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

    hugoczx 发表于 2009-12-21 23:20
    $ |" w5 |+ c5 J# I( X: ?" d有是有                              / V  y/ J: ?- z* Z& q4 t
    不过不能白给!
    4 K4 V9 P2 ^0 ?' Z3 G
    同求动态规划的源程序,现在其他的算法基本上都可以集成,就是动态规划没有了。希望大神赐教,我的qq邮箱1240258213@qq.com,谢谢。关于其他算法的集成, 可以与大神共享。
    回复

    使用道具 举报

    m存在        

    0

    主题

    8

    听众

    1130

    积分

    升级  13%

  • TA的每日心情
    奋斗
    2015-3-15 18:40
  • 签到天数: 360 天

    [LV.8]以坛为家I

    自我介绍
    学生,正在学习数学建模...

    群组2013年数学建模国赛备

    群组第一期sas基础实训课堂

    群组2014美赛ICMC题备战群

    群组2014美赛MCMB题备战群

    群组2014美赛MCMA题备战群

    回复

    使用道具 举报

    madio        

    3万

    主题

    1312

    听众

    5万

    积分

  • TA的每日心情
    奋斗
    2024-7-1 22:21
  • 签到天数: 2014 天

    [LV.Master]伴坛终老

    自我介绍
    数学中国站长

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

    群组数学建模培训课堂1

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

    群组Matlab讨论组

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

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

    1. function [p_opt,fval]=dynprog(x,DecisFun,ObjFun,TransFun)      
      ' N3 k- _! g' a( W
    2. % [p_opt,fval]=dynprog(x,DecisFun,ObjFun,TransFun)
      & V) p6 j( h+ V5 \\" h
    3. % 自由始端和终端的动态规划,求指标函数最小值的逆序算法递归$ n& k9 ]- K( V9 u& l! [4 E) d
    4. % 计算程序。x是状态变量,一列代表一个阶段状态;M-函数
      # r4 U5 c) l; @) n% H8 ~9 P  C
    5. % DecisFun(k,x)由阶段k的状态变量x求出相应的允许决策变量;
      ( Q* o4 s6 n0 u# e/ s
    6. % M-函数ObjFun(k,x,u)是阶段指标函数,M-函数TransFun(k,x,u)% y' p\" R, V9 I7 E, K
    7. % 是状态转移函数,其中x是阶段k的某状态变量,u是相应的决策变量;* ?3 a& D1 l  R' j. l: p- f; }
    8. % 输出p_opt由4列构成,p_opt=[序号组;最优策略组;最优轨线组;
      / K& t3 n0 e$ y7 B5 K
    9. % 指标函数值组];fval是一个列向量,各元素分别表示p_opt各% w, P. C/ b# P. ~6 s7 n6 F
    10. % 最优策略组对应始端状态x的最优函数值;
      2 O0 F. T* {' s. B
    11. %
      5 s; e3 A, d9 @2 [9 x: W
    12. %例(参看胡良剑等编《数学实验--使用MATLAB》P180  i3 l. l1 {& k' \9 H- l1 R
    13. %先写3个函数
      * I: b% j' ]% R\" D0 m* c2 c
    14. %                 eg13f1_2.m
      6 |% z% P7 @- o+ K7 F; v  G: h
    15. %    function u=DecisF_1(k,x)0 l! J0 o: m0 G; D4 S5 ]' ~
    16. %    在阶段k由状态变量x的值求出其相应的决策变量所有的取值
      % L+ |8 r, E. G+ `7 Q! o: N% `
    17. %    c=[70,72,80,76];q=10*[6,7,12,6];0 u! \0 i! X0 M/ I. [; ^1 {
    18. %    if q(k)-x<0,u=0:100;       %决策变量不能取为负值$ }; {& P; s* p& O& c$ V
    19. %    else,u=q(k)-x:100;end;     %产量满足需求且不超过100: D) d/ D9 J+ ?
    20. %    u=u(:);
      - S- W+ {0 y9 n% P+ B# B$ {) U- L: w
    21. %                 eg13f2_2.m
      9 t& E  m. @9 ^! i4 b! X
    22. %    function v=ObjF_1(k,x,u)3 H* J! n0 f0 C7 ]% e
    23. %    阶段k的指标函数
      7 d- s: W2 V# F( B; T
    24. %    c=[70,72,80,76];v=c(k)*u+2*x;
      2 c) H' R  }/ u6 Q% x/ `
    25. %                 eg13f3_2.m) k% y) }0 m7 M' F, H8 J/ k
    26. %    function y=TransF_1(k,x,u)
      * `0 P# G* O/ F/ f' U: p; H4 K
    27. %     状态转移方程  u' ?0 ?. F8 ^\" Z
    28. %     q=10*[6,7,12,6];y=x+u-q(k);3 M! o+ R  O- I\" B1 x\" o4 x
    29. %调用DynProg.m计算如下:
      6 p) ~- F8 Y( p\" L+ M5 ~
    30. %    clear;x=nan*ones(14,4);% x是10的倍数,最大范围0≤x≤130,
      * S; s, w& \: F7 L' w\" \2 q  m, I
    31. %       %因此x=0,1,...13,所以x初始化取14行,nan表示无意义元素8 g3 {1 `. s\" y
    32. %    x(1:7,1)=10*(0:6)';     % 按月定义x的可能取值- f6 z# J* h2 B\" J7 _- w
    33. %    x(1:11,2)=10*(0:10)';x(1:12,3)=10*(2:13)';
      \" ~* E3 X9 E2 \1 d4 d5 H& I
    34. %    x(1:7,4)=10*(0:6)';
      5 s# C, E* d# p# t3 b, O\" u
    35. %    [p,f]=dynprog(x,'eg13f1_2','eg13f2_2','eg13f3_2')
      6 C3 T3 {0 ~+ k, d
    36. 6 J. K8 C/ r8 J
    37. % By X.D. Ding June 2000% B9 z4 }+ ^# o' f
    38. ' t4 v% x, D# @6 D# e8 _: \, h
    39. k=length(x(1,:));f_opt=nan*ones(size(x));d_opt=f_opt;
      / j' ^\" d! u& F8 o2 G$ E3 `/ g
    40. t_vubm=inf*ones(size(x));x_isnan=~isnan(x);t_vub=inf;. ^( A- Z+ U+ ^; ~* ]
    41. % 计算终端相关值
      . h/ F/ N0 Q+ B* v) }  a: Z. R
    42. tmp1=find(x_isnan(:,k));tmp2=length(tmp1);& G) }4 |5 A3 d- |
    43. for i=1:tmp23 P; v5 W1 t; Z9 Z) s2 l8 A  _
    44.    u=feval(DecisFun,k,x(i,k));tmp3=length(u);
      * ?, c( j# F$ S1 t' p& ]
    45.    for j=1:tmp3
      4 R% `: O/ U4 Q\" r: P
    46.          tmp=feval(ObjFun,k,x(tmp1(i),k),u(j));
      7 y* K8 z' t  C2 H: ~' }
    47.          if tmp<=t_vub, \" D, c* _; @' n& p& _$ i
    48.             f_opt(i,k)=tmp;d_opt(i,k)=u(j);t_vub=tmp; / ^. I% X/ F% X5 [# f) H
    49. end;end;end
      3 {1 g+ U5 H, u' S2 w\" g7 h& r7 S
    50. % 逆推计算各阶段的递归调用程序9 Y' C0 s( M7 x% j. o  N, H5 I- S, a
    51. for ii=k-1:-1:1: n8 a! N' o$ w4 C9 G2 G
    52.    tmp10=find(x_isnan(:,ii));tmp20=length(tmp10);
      + _% `; t9 v+ p, O( a& C' R
    53.    for i=1:tmp20; j0 E; t6 V9 d9 Z; V% G
    54.       u=feval(DecisFun,ii,x(i,ii));tmp30=length(u);
      5 c8 I# k& F/ j: x
    55.       for j=1:tmp30
      1 w3 w2 D4 d% r* `3 R* W$ ?# f+ d
    56.          tmp00=feval(ObjFun,ii,x(tmp10(i),ii),u(j));
      . p+ P5 G) w% I0 l1 c: a
    57.          tmp40=feval(TransFun,ii,x(tmp10(i),ii),u(j));
      / g, U4 o/ B! y5 I7 N/ e/ C
    58.          tmp50=x(:,ii+1)-tmp40;' ]4 S. q. G6 h0 j  \: J
    59.          tmp60=find(tmp50==0);6 l, Y$ N1 T# Q7 l# w; v% c
    60.          if ~isempty(tmp60),6 F$ u+ [) \( A# C' e1 e
    61.             tmp00=tmp00+f_opt(tmp60(1),ii+1);   
      6 B: A5 w2 ~2 {2 g/ n
    62.             if tmp00<=t_vubm(i,ii)
      ! E( j& |0 L; d  ?6 ^
    63.                f_opt(i,ii)=tmp00;d_opt(i,ii)=u(j);
      8 G$ S  {9 x$ l' i: l
    64.                t_vubm(i,ii)=tmp00;
      % g0 T. b, `2 g- @6 x* ]( S; g
    65. end;end;end;end;end;
      ! H\" Q# R1 S6 W) x& w7 W5 u* g! l
    66. fval=f_opt(tmp1,1);
      2 L- \+ l' \- g9 J: f1 i8 v4 J) E' ?
    67. % 记录最优决策、最优轨线和相应指标函数值! v/ x6 O' Y  g
    68. p_opt=[];tmpx=[];tmpd=[];tmpf=[];4 p  i, J. S3 x  e\" _) Y& R3 x! i
    69. tmp0=find(x_isnan(:,1));tmp01=length(tmp0);
      - K! p4 T2 v1 V2 A
    70. for i=1:tmp01,
      . f  e, v+ a5 Z4 z6 N- m
    71.   tmpd(i)=d_opt(tmp0(i),1); : C5 a5 L; F# n+ ]
    72.   tmpx(i)=x(tmp0(i),1);
        k  c\" `, j' b* {# ~
    73.   tmpf(i)=feval(ObjFun,1,tmpx(i),tmpd(i));
      / s. v; [) ]5 e# W5 T
    74.   p_opt(k*(i-1)+1,[1,2,3,4])=[1,tmpx(i),...1 _% ], t4 ^7 C1 O
    75. tmpd(i),tmpf(i)];9 j6 ^  R1 }) l  ~; _5 g' J
    76.   for ii=2:k
      / f6 V9 J* p( q' ^
    77.      tmpx(i)=feval(TransFun,ii-1,tmpx(i),tmpd(i));
      ' I0 A- O: u# X  p9 b/ l( n
    78.      tmp1=x(:,ii)-tmpx(i);tmp2=find(tmp1==0);% Y2 \5 u5 T6 O2 `
    79.      if ~isempty(tmp2)\" V- B( ]( w\" }1 X: @+ g; H% \
    80.         tmpd(i)=d_opt(tmp2(1),ii);
      , ?& B) b7 x; ?\" f' a
    81.      end;% i0 r$ _* h, H$ e3 g; \8 x
    82.      tmpf(i)=feval(ObjFun,ii,tmpx(i),tmpd(i));
      , _% z  U1 e$ b' V' O5 T$ |6 k
    83.      p_opt(k*(i-1)+ii,[1,2,3,4])=[ii,tmpx(i),...$ [7 q  K  w& a- z4 E
    84. tmpd(i),tmpf(i)];3 d& o' X, p' C
    85. end;end;) z; ]2 e- \  L( F, J; u
    复制代码
    数学建模社会化
    回复

    使用道具 举报

    danieldu        

    0

    主题

    5

    听众

    24

    积分

    升级  20%

  • TA的每日心情

    2013-2-4 04:15
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    自我介绍
    新人求罩
    回复

    使用道具 举报

    sam_yat        

    0

    主题

    6

    听众

    11

    积分

    升级  6.32%

    该用户从未签到

    自我介绍
    大家好
    回复

    使用道具 举报

    0

    主题

    4

    听众

    41

    积分

    升级  37.89%

  • TA的每日心情
    无聊
    2012-1-31 14:33
  • 签到天数: 18 天

    [LV.4]偶尔看看III

    回复

    使用道具 举报

    harry0326        

    9

    主题

    5

    听众

    111

    积分

    升级  5.5%

  • TA的每日心情
    开心
    2011-9-20 22:32
  • 签到天数: 26 天

    [LV.4]偶尔看看III

    自我介绍
    ww
    呵呵,动态规划是一门艺术不是技术,不可能有通解的,这句话是数学大师说的。具体哪个忘了,你们有?可能吗
    回复

    使用道具 举报

    1

    主题

    2

    听众

    1025

    积分

    升级  2.5%

  • TA的每日心情
    奋斗
    2013-12-27 22:30
  • 签到天数: 218 天

    [LV.7]常住居民III

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-4-13 10:40 , Processed in 0.565649 second(s), 105 queries .

    回顶部