马尔科夫预测详解(凡是过往,皆为序章)+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}}

clc, clear

% 题目给我们的是把数据写成了多行,需要把数据改成一行,才方便后面的运算
a0=[4  3  2  1  4  3  1  1  2  3 
   2  1  2  3  4  4  3  3  1  1
   1  3  3  2  1  2  2  2  4  4
   2  3  2  3  1  1  2  4  3  1];
a1=a0';   % 转置
a2=a1(:);    % a1(:)为每列合并成一个长的列向量
a=a2';       % 转置后为一个行向量

%遍历整个字符串,统计每种子字符串的个数
%也就是求任意两种状态相邻的总次数
for i=1:4
   for j=1:4
      f(i,j)=length(strfind(a,[i j])); %统计每种子串的个数
   end
end

ni=sym(sum(f,2));  %sum中的2表示对矩阵f按行求和。若调用sym可转换为符号数也就是分数
P=f./ni    %状态转移矩阵的估计值,也就是i到j的概率

p0=[0.2 0.3 0.3 0.2];
p5=p0*(P^5)

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值