matlab实现动态规划算法

  • 论文例子
  • 实现算法
  • 代码

最近看缓存相关论文,里面提到动态规划算法来解决小规模组合优化最优解,便尝试复DP算法,论文给出了一个简单例子,先从实现该例子开始,话说动态规划算法可以写好多东西,作为一个外行,第一次接触动态规划,断断续续花了一周多时间实现该算法,不知道这个效率去公司是不是已经被炒鱿鱼了。动态规划入门简单例子肯定从背包问题说起。
背包问题,讲解的通俗易懂,看懂后可以大致了解动态规划步骤,看懂后这种思想便可以移植到其他问题上。

论文例子

论文title《Mobility-Aware Caching in D2D Networks》,发表在IEEE TRANSACTIONS ON WIRELESS COMMUNICATIONS。
两个用户需要缓存文件,文件总数3,用户缓存容量为2,怎样缓存取得最优值。

文章给出的DP算法。只要看懂上图的例子,并实现,下面的算法就很好实现了。

不同文章DP算法几乎类似。就是一个多阶段决策优化问题。

实现算法

从例子图可知:

stage1阶段,只能缓存文件1,到stage2阶段,就可以缓存文件2,在缓存文件1得到的最优值基础上,加上缓存文件2,可以从Uf表中得到,便可得到新的缓存后的最优值,对每一个state,有不同的组合,这个状态就是可以缓存的最大容量,必须要在容量内进行组合,并比较取得最优值,从stage3,多个stage2的状态到stage3状态(2 2),最后比较得到整个决策过程的最优值。
matlab实现需要准备初始的stage1,和Uf,不断递归,得到最后一个stage,找到最优值及缓存方案。
从图中看,state状态需要矩阵保存,缓存分配需要矩阵保存,那么采用元胞数组来保存每一个stage。Uf也采用元胞保存。

递归关系就是前一阶段某一状态的最优值加上Uf里的各种组合的值,最后取最优值并保存最优分配方案。

代码

核心部分

for f = 2:Ffor i = 1:size(state,1) for j = 1:size(Uf,1)  a = findAB(state,[sum(cell2mat(stage{1,f-1}(i,2)),1)+cell2mat(Uf(j,1))]);if a == 0continueendb = cell2mat(stage{1,f-1}(i,3))+cell2mat(Uf(j,f+1));if cell2mat(stage{1,f}(a,3))<=bstage{1,f}(a,3)={b};stage{1,f}(a,2)= {[cell2mat(stage{1,f-1}(i,2));cell2mat(Uf(j,1))]};    endendend
end

运行后stage3的结果,最优值0.82,对应缓存矩阵[1 1;1 0;0 1]。

matlab实现动态规划算法相关推荐

  1. MATLAB实现动态规划算法,基于Matlab的动态规划算法的实现及应用

    陈甜甜 [摘要]介绍了动态规划的基本理论,包括动态规划的基本概念和基本原理,并针对生产与存储问题进行了分析,然后结合Matlab做了编程处理,使复杂问题简单化,从而使问题能更方便地得到解决. [关键词 ...

  2. matlab实现k-l算法,Matlab实现动态规划算法 (dynamic programming algorithm)

    function [p_opt,fval]=dynprog(x,DecisFun,ObjFun,TransFun) % [p_opt,fval]=dynprog(x,DecisFun,ObjFun,T ...

  3. matlab dynprog,动态规划算法

    ========================================================================= 动态规划的matlab实现代码 ========== ...

  4. 时间窗口算法用matlab,一种基于动态规划算法的时间窗口相关的参与者选择方法与流程...

    本发明涉及一种移动群智感知中时间窗口相关的参与者选择方法,特别地,涉及一种基于动态规划算法的时间窗口相关的参与者选择方法. 背景技术: 在移动群智感知网络中,智能设备中嵌入了麦克风.相机.温度传感器. ...

  5. matlab深度遍历算法,数据结构算法之动态规划(深度优先遍历)

    最近在看关于数据结构系列知识点,然后遇到一个动态规划相关的题目--邮票规划. 首先先介绍下关于DPS,也就是深度优先遍历算法吧. 深度优先遍历 深度优先遍历,从初始访问结点出发,我们知道初始访问结点可 ...

  6. Matlab人脸检测算法详解

    这是一个Matlab人脸检测算法详解 前言 人脸检测结果 算法详解 源代码解析 所调用函数解析 bwlabel(BW,n) regionprops rectangle 总结 前言 目前主流的人脸检测与 ...

  7. 矩阵连乘算法代码JAVA_矩阵连乘问题的动态规划算法(java)

    /** * 下面是矩阵连乘问题的动态规划算法 * 假设有6个矩阵: * A1 A2A3 A4 A5A6 * 30*35 35*15 15*5 5*10 10*20 20*25 则matrixChain ...

  8. 五大常用算法之二:动态规划算法

    基本概念 动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移.一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划. 基本思想与策略 基本思想与分 ...

  9. 矩阵连乘问题(动态规划算法)

    动态规划算法思想简介: 将一个问题分解为多个子问题,这点和分治法类似,但是每个子问题不是独立的而是相互联系的,所以我们在求解每个子问题的时候可能需要重复计算到其他的子问题,所以我们将计算过的子问题的解 ...

最新文章

  1. 图像显著区域检测代码及其效果图 saliency region detection
  2. 一套实用的数据中心设计方案
  3. 4、CSS 外边距margin
  4. windows下利用sox批量将PCM转为WAV
  5. IndexedDB基本概念
  6. PAT:1001. 害死人不偿命的(3n+1)猜想 (15) AC
  7. ise生成msk文件的用处_ISE中上载程序出错,msk文件缺失有关问题
  8. 历届电大计算机网考试题及答案,电大2012年计算机应用基础网考统考试题及答案...
  9. 【经典算法实现 15】阿克曼函数(非递归实现)
  10. 关于使用tess4j-OCR识别图片中文教程,亲测可用,不报错
  11. css实现两列容器等高布局,CSS等高布局的实现方法
  12. 转-注册表对应项详解
  13. 从0开始构建蓝牙耳机研发环境
  14. CMake生成多个.so文件
  15. 《冲锋飞车》游戏技术反馈栏
  16. android 解锁mac,论一台笔记本三个不同系统的玩法,解锁正确姿势
  17. FlashFXP,flashfxp怎么上传文件
  18. python调试 设置断点
  19. 安川机器人梯形图指令(二)
  20. 光标 换为 自定义图片

热门文章

  1. 为使用 GRUB2 的机器配置网络引导(PXE启动服务器)
  2. IAR for ARM 无法烧写
  3. ureport 显示html,Ureport2报表使用问题及注意事项汇总
  4. 烤仔的朋友们 | 房地产通证化是区块链发展的新方向?
  5. 编辑grub.cfg修复linux,Ubuntu如何修改grub.cfg
  6. license生成方案
  7. 电脑系统重装时海康威视IVMS-4200客户端注意事项
  8. 喜报 | 荣获中国产学研合作促进奖
  9. LINGO的入门介绍
  10. houdini视图切换快捷键