前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >马尔科夫链的应用问题

马尔科夫链的应用问题

作者头像
流川疯
发布2024-09-05 13:38:52
940
发布2024-09-05 13:38:52
举报
文章被收录于专栏:流川疯编写程序的艺术

一、问题:

请根据以下描述,计算缝纫机操作员工作中的可休息时间占比

  1. 一个缝纫机操作员每30分钟缝制完成一件衣服;
  2. 每30分钟,将有一个传货员到来;
  3. 传货员会带走缝纫机操作员完成的衣服;并且会带来新需要缝制的衣服;
  4. 其中30%的概率传货员没有带来需要缝制的衣服;50%的概率带来1件;20的概率带来2件。
  5. 如果缝纫机员超过3件以上未完成衣服,传货员必须等待。

补充:

  • 最后剩余未完成衣服(低于3件),将被留给下一个操作员

将上述缝纫机操作过程转换为马尔可夫链模型,需要定义系统的状态和可能的状态转换。

二、状态定义

定义状态S 为缝纫机操作员每30分钟结束时手上未完成的衣服件数。

状态的可能取值可以是0、1、2、3、4件(不会再多)。

三、转移概率

当 S<=3时:

  1. 有30%的概率传货员不带来衣服,同时需要取走一件已完成的衣服,

所以状态转移到 S -1。

2.  有50%的概率传货员带来1件衣服,同时需要取走一件已完成的衣服,所以状态转移到 S(不变)。

3.  有20%的概率传货员带来2件衣服,同时需要取走一件已完成的衣服,所以状态转移到 S+1。

当 S>3 时:

  1. 传货员必须等待,这意味着不会有新的需要缝制的衣服,同时肯定会拿走一件已完成的衣服。所以有100%的概率转移到3

2. 这也意味着最大状态4(最多4件未完成衣服)

四、状态和转换矩阵

假设状态集合为S {0, 1, 2, 3, 4},状态转移矩阵如下图:

五、计算马尔可夫稳态分布

P 为状态转移矩阵

代码语言:javascript
复制
import numpy as np


# 定义状态转移矩阵 P
P = np.array([
    [0.3, 0.5, 0.2, 0.0, 0.0],
    [0.3, 0.5, 0.2, 0.0, 0.0],
    [0.0, 0.3, 0.5, 0.2, 0.0],
    [0.0, 0.0, 0.3, 0.5, 0.2],
    [0.0, 0.0, 0.0, 1.0, 0.0]
])


# 计算稳态分布
n = P.shape[0]
I = np.eye(n)
A = (P.T - I)[:-1]
b = np.zeros(n - 1)
A = np.vstack([A, np.ones(n)])  
b = np.append(b, 1) 


# 解线性方程以求稳态分布
stationary_distribution = np.linalg.solve(A, b)
print(stationary_distribution)

六、结果

· 状态0(无未完成衣服)的概率为约 13.64%

· 状态1(1件未完成衣服)的概率为约 31.82%

· 状态2(2件未完成衣服)的概率为约 30.30%

· 状态3(3件未完成衣服)的概率为约 20.20%

· 状态4+(4件或更多未完成衣服)的概率为约 4.04%

所以,操作员有13.64%的时间可以休息

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-09-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档