QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 14153|回复: 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 $ D6 h. s) ^6 g0 x! ?7 d
    有是有                              ' W# R. y% k) v5 X* c
    不过不能白给!

    - R  h2 C8 a) Y% d3 F' K同求动态规划的源程序,现在其他的算法基本上都可以集成,就是动态规划没有了。希望大神赐教,我的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)      
      4 C( R) q* G: ^3 Y3 Z  R
    2. % [p_opt,fval]=dynprog(x,DecisFun,ObjFun,TransFun)0 p4 a' [5 n# p% ~2 c
    3. % 自由始端和终端的动态规划,求指标函数最小值的逆序算法递归6 U( z. Z$ ^% d5 t; W
    4. % 计算程序。x是状态变量,一列代表一个阶段状态;M-函数- N3 E) z# D5 A
    5. % DecisFun(k,x)由阶段k的状态变量x求出相应的允许决策变量;9 ^- ~% }( n7 {' z1 Z
    6. % M-函数ObjFun(k,x,u)是阶段指标函数,M-函数TransFun(k,x,u)
      $ a- D$ B1 F9 J, I
    7. % 是状态转移函数,其中x是阶段k的某状态变量,u是相应的决策变量;
      ( Q' j5 X+ J1 D' t/ ~+ n' Q' X
    8. % 输出p_opt由4列构成,p_opt=[序号组;最优策略组;最优轨线组;
      8 I& l* F; z\" g+ O
    9. % 指标函数值组];fval是一个列向量,各元素分别表示p_opt各: G0 `+ {1 P1 z; x1 a- ~5 g/ t
    10. % 最优策略组对应始端状态x的最优函数值;
      5 i# H  ]' A- }* P9 q
    11. %
      - p* _( m  N, c2 m# E' i
    12. %例(参看胡良剑等编《数学实验--使用MATLAB》P180, P; T! i+ d. \
    13. %先写3个函数
      3 m3 T' }2 W8 h\" }: H4 ^
    14. %                 eg13f1_2.m, P% z: Q9 Q2 m( Q\" L5 I\" C7 m
    15. %    function u=DecisF_1(k,x)! L6 c, }5 l* C8 y. M! Y6 I
    16. %    在阶段k由状态变量x的值求出其相应的决策变量所有的取值
      & j9 I. m# G+ E7 o+ m: l
    17. %    c=[70,72,80,76];q=10*[6,7,12,6];
      - }& {  `4 P, n' Y, E- B
    18. %    if q(k)-x<0,u=0:100;       %决策变量不能取为负值) X8 o, `3 M& T\" u* M; T
    19. %    else,u=q(k)-x:100;end;     %产量满足需求且不超过100
      0 r0 U( W& |8 L# t8 }3 e
    20. %    u=u(:);; z, `3 C! z8 h2 U2 O9 d
    21. %                 eg13f2_2.m. ]- a% W3 o0 E- L: n* E/ V) \
    22. %    function v=ObjF_1(k,x,u); B' N2 n1 d; }' `  P\" x: p3 c# }
    23. %    阶段k的指标函数
      : w3 m! B2 o8 z% C$ e
    24. %    c=[70,72,80,76];v=c(k)*u+2*x;
        B8 v3 k! K: }
    25. %                 eg13f3_2.m
      \" c8 [$ L5 q7 W7 f
    26. %    function y=TransF_1(k,x,u)4 K9 H/ \' t$ }\" K* V
    27. %     状态转移方程$ X; j5 s) P0 \7 d# m3 [
    28. %     q=10*[6,7,12,6];y=x+u-q(k);5 @, X6 \& [1 W  _$ X
    29. %调用DynProg.m计算如下:
      7 y3 s$ d. N% H3 s3 c  p
    30. %    clear;x=nan*ones(14,4);% x是10的倍数,最大范围0≤x≤130,# F5 X1 a5 j\" n9 m6 s9 M% F
    31. %       %因此x=0,1,...13,所以x初始化取14行,nan表示无意义元素; X5 B  O; z1 G3 x3 ~
    32. %    x(1:7,1)=10*(0:6)';     % 按月定义x的可能取值. V% A# A% c* t% H# p
    33. %    x(1:11,2)=10*(0:10)';x(1:12,3)=10*(2:13)';
      # z9 g4 U, {; \; e0 K( {
    34. %    x(1:7,4)=10*(0:6)';
      & ~6 [& V3 o# l' S1 I
    35. %    [p,f]=dynprog(x,'eg13f1_2','eg13f2_2','eg13f3_2'); X7 ^1 x5 o  L3 a
    36. * `+ B. Z0 m8 Q4 b
    37. % By X.D. Ding June 2000
      ; I) @8 j* P' M3 C: ^3 g& h0 X( F

    38. 7 h* R9 ^- e/ ]  @9 y; `
    39. k=length(x(1,:));f_opt=nan*ones(size(x));d_opt=f_opt;% [8 L) B$ ^2 d) O/ p
    40. t_vubm=inf*ones(size(x));x_isnan=~isnan(x);t_vub=inf;
      2 @% T; r, G. h4 m; E; a) N7 z) C
    41. % 计算终端相关值6 J  z/ ~' O; b2 \
    42. tmp1=find(x_isnan(:,k));tmp2=length(tmp1);0 ~% L3 _\" c4 F% p0 s6 P
    43. for i=1:tmp2- z' c9 w6 I0 W* ]* d
    44.    u=feval(DecisFun,k,x(i,k));tmp3=length(u);9 A& _5 ?7 e# R- V) E$ ?( p4 h6 m
    45.    for j=1:tmp38 G( _$ M5 j4 l; j# S\" g1 F\" H
    46.          tmp=feval(ObjFun,k,x(tmp1(i),k),u(j));9 d% R) Z9 t$ ^; {
    47.          if tmp<=t_vub,
      # s2 c5 \% R( `9 j* w
    48.             f_opt(i,k)=tmp;d_opt(i,k)=u(j);t_vub=tmp;
      + m) y2 V% O  d( t3 H0 ~
    49. end;end;end
      & S& L\" t\" j. L\" ^
    50. % 逆推计算各阶段的递归调用程序6 H9 Z) W; D9 Z! i/ L
    51. for ii=k-1:-1:1
      3 z, J0 d# ?/ v- P% G
    52.    tmp10=find(x_isnan(:,ii));tmp20=length(tmp10);' I! H% R* W( P
    53.    for i=1:tmp20
      \" ]: `. }- c( j\" S6 x) K
    54.       u=feval(DecisFun,ii,x(i,ii));tmp30=length(u);\" m9 F  s\" F, C% g+ O\" X1 m
    55.       for j=1:tmp30
      7 H\" d3 J& E# a+ _, |( B& n
    56.          tmp00=feval(ObjFun,ii,x(tmp10(i),ii),u(j));
      . _! p% s& \( I' x: r# t: f0 I7 |
    57.          tmp40=feval(TransFun,ii,x(tmp10(i),ii),u(j));
      2 p8 a3 u2 o% j) U; v
    58.          tmp50=x(:,ii+1)-tmp40;& g* L% Y0 c$ G* o1 j& ^6 t
    59.          tmp60=find(tmp50==0);! ]( ?; a8 k& j$ F0 P: r# A
    60.          if ~isempty(tmp60),
      / n) o1 h6 R3 L& R5 D# O\" X
    61.             tmp00=tmp00+f_opt(tmp60(1),ii+1);   
      3 a: k! `0 I( v7 u
    62.             if tmp00<=t_vubm(i,ii)5 T8 B2 z5 e' o6 g/ _( I
    63.                f_opt(i,ii)=tmp00;d_opt(i,ii)=u(j);1 _) m1 T, w: m2 v( j8 @
    64.                t_vubm(i,ii)=tmp00;6 x+ t7 C5 N/ w1 N1 f8 t
    65. end;end;end;end;end;
      8 G9 T9 H$ J- R9 @
    66. fval=f_opt(tmp1,1);
      ! N4 ]( ~. y; |/ j; x% @& J, h) r
    67. % 记录最优决策、最优轨线和相应指标函数值
      * h/ K2 L2 J% m\" D0 N+ V; e
    68. p_opt=[];tmpx=[];tmpd=[];tmpf=[];
      ; f3 a9 M5 Y# k1 C
    69. tmp0=find(x_isnan(:,1));tmp01=length(tmp0);
        }' B/ J3 r7 V, K- f
    70. for i=1:tmp01,
      2 O0 Y; L4 O\" |
    71.   tmpd(i)=d_opt(tmp0(i),1);
      ' E! [/ @3 W- D  W3 m, R; d+ G
    72.   tmpx(i)=x(tmp0(i),1);
      ) D4 }  T7 `8 N# K  ~- H5 p7 [
    73.   tmpf(i)=feval(ObjFun,1,tmpx(i),tmpd(i));
      5 x, |/ w8 c1 P# r0 B
    74.   p_opt(k*(i-1)+1,[1,2,3,4])=[1,tmpx(i),...# [+ S$ H7 z/ E) m2 l4 i1 h\" N2 q
    75. tmpd(i),tmpf(i)];
      3 e; f# |' R/ b2 [: f7 P& r* A* Z# Y
    76.   for ii=2:k* g, Z% W, q, S  c\" S\" E- g
    77.      tmpx(i)=feval(TransFun,ii-1,tmpx(i),tmpd(i));1 B  Y* o( J+ Y8 Y; G7 w- s% \# i) d
    78.      tmp1=x(:,ii)-tmpx(i);tmp2=find(tmp1==0);
      ; C$ Y5 c, _5 a# s+ h
    79.      if ~isempty(tmp2)& L4 r7 G& G+ G+ O$ I: v
    80.         tmpd(i)=d_opt(tmp2(1),ii);, c7 J! T, U8 k1 s' [
    81.      end;) G; h0 V$ [# m! k+ X. z
    82.      tmpf(i)=feval(ObjFun,ii,tmpx(i),tmpd(i));2 H. h( [; Y# z+ P+ i1 K$ c
    83.      p_opt(k*(i-1)+ii,[1,2,3,4])=[ii,tmpx(i),...
      9 B& B4 t! }6 S& {* o; ]
    84. tmpd(i),tmpf(i)];
      2 p/ H  B5 z' W: Z. a
    85. end;end;
      ! o5 T1 W4 W; Q+ V6 U, X* ]6 V
    复制代码
    数学建模社会化
    回复

    使用道具 举报

    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-6-5 00:12 , Processed in 0.446102 second(s), 104 queries .

    回顶部