当前位置:   article > 正文

马尔科夫预测详解(凡是过往,皆为序章)+MATLAB求解典型例题

马尔科夫预测

本文为北海的数模课程学习笔记,课程出自微信公众号:数学建模BOOM。

求赞!求收藏!求关注!

目录

模型简介

适用赛题

原理讲解

 典型例题

 代码求解

模型简介

  • 状态有限:如果无限,可以通过设置不同阈值变成有限。
  • 未来的状态只与现在有关: 但是求概率时也要考虑过去的概率。
  • 概率随机:只能求明天处于某一种状态的概率。

一个n+1只会被n影响的典型例子:基因只用看父母,不用看祖父母

与其他模型对比:

其他预测模型:计算的是 数值 ,理论上是 无数种可能 (常见实数集合,比如噪声值)
马尔科夫预测:计算的是 概率 ,需要 有限种已知的可能结果(比如几种方案)
模拟退火 就是一个马尔科夫过程

适用赛题

基本的特点:状态 随机 ,下一阶段的状态 只与当前有关
  • 预测人下一年的健康状态。
  • 商家根据本周销售量预计下周进货量。
  • 预测明年是否升职。

原理讲解

时齐性:两种状态转换的概率,只与时间间隔有关。一般带有周期性的问题才满足时齐性。

在面对销售类问题时,可以在论文的模型假设中写“假设销售规律满足时齐性”。

 典型例题

 

 注意是把矩阵乘n次。 

 代码求解

求一步转移矩阵
一般需要根据已知数据,求出一步转移矩阵的估计值
需要 遍历 已知数据,统计每一组相邻两个状态的数量(找出有多少个 “1 1” , “1 2” ,……
如果题目所定的系统状态是文字(例如张三的四种状态),那么在写代码时,可以自行定义
不同状态对应的数字,写出矩阵

一步转移概率:\hat{p}_{i j}=\frac{n_{i j}}{\sum_{j=1}^4 n_{i j}}

  1. clc, clear
  2. % 题目给我们的是把数据写成了多行,需要把数据改成一行,才方便后面的运算
  3. a0=[4 3 2 1 4 3 1 1 2 3
  4. 2 1 2 3 4 4 3 3 1 1
  5. 1 3 3 2 1 2 2 2 4 4
  6. 2 3 2 3 1 1 2 4 3 1];
  7. a1=a0'; % 转置
  8. a2=a1(:); % a1(:)为每列合并成一个长的列向量
  9. a=a2'; % 转置后为一个行向量
  10. %遍历整个字符串,统计每种子字符串的个数
  11. %也就是求任意两种状态相邻的总次数
  12. for i=1:4
  13. for j=1:4
  14. f(i,j)=length(strfind(a,[i j])); %统计每种子串的个数
  15. end
  16. end
  17. ni=sym(sum(f,2)); %sum中的2表示对矩阵f按行求和。若调用sym可转换为符号数也就是分数
  18. P=f./ni %状态转移矩阵的估计值,也就是i到j的概率
  19. p0=[0.2 0.3 0.3 0.2];
  20. p5=p0*(P^5)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/380346
推荐阅读
相关标签
  

闽ICP备14008679号