马尔科夫型决策以及使用python计算方法

一、马尔可夫性

考察某工厂一台自动加工机的工作状态。该机器有两种工作状态:正常状态和故障状态。在每个整数钟点的起始时刻检查机器的工作情况,若机器处于正常状态,则让它继续工作;若机器处于故障状态,则对他进行检修。假设处于正常状态的机器,在1小时后发生故障的概率为0.05;处于故障状态的机器,在1小时内排除故障的概率0.6

显然任何时刻,机器只能处于正常状态或故障状态,我们分别用1和2表示这两种状态。

那么,这台机器在第n小时的状态Xn或者等于1,或者等于2,即Xn是仅取两个值的

离散型随机变量。我们关心的是Xn的随机变化规律。

由于处于正常状态的机器1小时后发生故障的概率为0.05,即

马尔科夫型决策以及使用python计算方法

所以机器1小时后任处于正常状态的概率为

马尔科夫型决策以及使用python计算方法

此时,X1的分布列由条件概率构成,这个分布列实际是已知X0=1的情况下X1的条件分布列

,用表格表示如下:

X1

1

2

P(.|X0=1)

0.95

0.05

已知机器在第n小时处于故障状态,等价于事件{Xn=2}已经发生.此时在第n+1小时机器

处于第j(j=1,2)状态的概率是条件概率P(Xn+1=j|Xn=2).类似于前面的讨论,由故障机器

在1小时内被修复的概率为0.6,得

马尔科夫型决策以及使用python计算方法

因此,若机器在第n小时处于故障状态,则Xn+1的条件分别列为

Xn+1

1

2

P(.|Xn=2)

0.6

0.4

类似地,若已知机器在第n小时处于正常状态,则机器在第n+1小时处于第j(j=1,j=2)

状态的概率为

马尔科夫型决策以及使用python计算方法

因此,若机器在第n小时处于正常状态,则Xn+1的条件分别列为

Xn+1

1

2

P(.|Xn=1)

0.95

0.05

事实上,在已知机器在第n小时所处状态Xn的情况下,Xn+1的随机变化规律与X0,X1,…,

Xn的取值都没关系。随机变量序列{Xn}所具有的这类性质称为马尔可夫性,也可以解析为

:在已知现在情况下,将来的随机变化规律与过去发生的事件无关。

二、转移概率矩阵

利用矩阵可以直观地表达马尔可夫链的各个状态间的转移概率,并且这种表达方式还

为研究马尔可夫链的随机变化规律提供了方便.例如,在表示机器运行状态的马尔可夫链

{Xn)中, Xn的分布列可以表示为

马尔科夫型决策以及使用python计算方法

Xn+1的分布列可以表示为

马尔科夫型决策以及使用python计算方法

Xn的两个状态间的转移概率可以表示为

马尔科夫型决策以及使用python计算方法

于是,利用向量与矩阵的乘法运算

马尔科夫型决策以及使用python计算方法

一般地, 对于一个马尔可夫链,像P这样的矩阵称为该马尔可夫链的转移概率矩阵,

马尔科夫型决策以及使用python计算方法

转移概率矩阵由所有的转移概率构成,它刻画了马尔可夫链各个状态经单位时间相互

转化的概率规律,而时刻n的分布则刻画了马尔可夫链{Xn}中随机变量X的概率分布规

律,该分布与Xn的分布列相互唯一确定.

特别地,马尔可夫链在0时刻的分布称为初始分布,初始分布刻画了马尔可夫链最初

时刻(n=0)的概率分布规律,例如,在表示机器运行状态的马尔可夫过程中,初始分布

(1 0)表示机器最初处于正常状态, 初始分布(0 1)表示 机器最初处于故障状态,初始分

布(0.5 0. 5)表示机器最初处于正常状态的概率为0.5,处于故障状态的概率也为0.5.

三、马尔可夫决策

再看一个例子:

某工厂一台 自动加工机有两种工作状态:正常状态和故障状态,在每个整数

钟点的起始时刻检查机器的工作情况,若机器处于正常状态,则让它继续工作;若机器处

于故障状态,则对它进行检修,假设处于正常状态的机器,在1小时后发生故障的概率为

0.05.对于故障机器有两种检修方案可供选择,一种是加急检修,在1小时内排除故障的

概率为0.9;一种是常规检修,在1小时内排除故障的概率为0. 6.

已知这台机器正常工作1小时可收益10元,加急检修1小时费用为9元,常规检修

1小时费用为6元。那么,当机器出现故障时,应选择哪种检修方案排除故障?

这是一个决策问题,决策目标是使机器的生产获得最大的收益可供选择的行动方案包括:

d:加急检修,d2: 常规检修.

在前两讲中,决策问题中所出现的状态都与时间无关,而这里机器在第n小时的工作

状态Xn与时间有关,且{Xn)是-一个马尔可夫链.因此各个行动方案的收益也会随着时间

的改变而改变.为了获得最优决策,我们需要确定在各个整数钟点时机器的状态情况,进

而确定相应的收益情况.

上述马尔可夫链{Xn)的转移概率矩阵与所采用的行动方案有关吗?

为了回答这个问题,只需考察马尔可夫链{Xn )在行动方案d1和d2下的转移概率矩阵.

行动方案d1的转移概率矩阵为

马尔科夫型决策以及使用python计算方法

行动方案d2的转移概率矩阵为

马尔科夫型决策以及使用python计算方法

由此可见,马尔可夫链{Xn)的转移概率矩阵与所采用的行动方案有关.

下面,我们考虑机器在时间段[n, n+1) (n≥0)内的收益情况,当机器在n时刻处

于正常状态时,行动方案d和行动方案dr在该时间段内的收益都是10元;当机器在n时

刻处于故障工作状态时,行动方案d在该时间段内的收益是-9元,行动方案dh在该时

间段内的收益是-6元,因此,机器在时间段[n, n+1)内的收益矩阵为

马尔科夫型决策以及使用python计算方法

在行动方案山之下,利用公式(1), 可以计算机器各个时刻的概率分布,例如,当机

器最初为正常工作状态时,初始分布为

马尔科夫型决策以及使用python计算方法

时刻1的分布为

马尔科夫型决策以及使用python计算方法

时刻2的分布为

马尔科夫型决策以及使用python计算方法

连续使用矩阵乘法公式可得n时刻的分布

马尔科夫型决策以及使用python计算方法

即马尔可夫链在时刻n的分布完全由初始分布和转移概率矩阵所决定.

因此,行动方案d1在时间段[n, n十1)内的平均收益为

马尔科夫型决策以及使用python计算方法

行动方案d2在时间段[n, n十1)内的平均收益为

马尔科夫型决策以及使用python计算方法

我们按照平均收益最大准则选择最优决策。如果我们只关心机器在时间

段[n, n+ 1)内的收益,就可以通过比较Q(d1, n) 和Q(d2, n)来做出决策,这可以使机器

在该单位时间段内获得最大平均收益、但是,这样获得的决策不一-定能够保证在[0, n+1)

时间段内获得最大平均收益.例如,当机器最初为正常工作状态时,初始分布为(1 0),

表列出了Q(d1,n)和Q(d2. n)的取值情况:

n

Q(d1

马尔科夫型决策以及使用python计算方法 n马尔科夫型决策以及使用python计算方法)

Q(d2

马尔科夫型决策以及使用python计算方法 n马尔科夫型决策以及使用python计算方法)

1

9.05

9.2

2

9.0025

8.92

3

9.000125

8.822

4

9.00000625

8.7877

5

9.00000031

8.775695

6

9.00000002

8.77149325

7

9.

8.77002264

计算的python代码如下:


def MarkovChain():
    P = array([[0.95, 0.05], [0.9, 0.1]])    #转移矩阵
    P1 = array([[10], [-9]])

    n = 7    #预测n天的事件发生概率
    for j in range(n):
        j=j+1
        Init_State = array([1, 0])   #初始状态分布
        for i in range(j):
            S = matmul( Init_State, P)
            Init_State = S
        S = matmul( Init_State,P1)
        print(f'第{j}天收益分布:{S.T}')

由表可以看出,仅在时间段[1,2)内,行动方案d2的平均收益大于行动方案d1

的平均收益.按照机器在时间段[1, 2)内的平均收益最大准则选择行动方案,应该选择

行动方案d2.但是如果机器运行的时间超过4小时,行动方案d2就不是平均收益最大的

方案了!(此时行动方案d2在各个时间段内的平均收益之和小于行动方案d1的平均收益

之和).

Original: https://blog.csdn.net/thehunters/article/details/125059976
Author: thehunters
Title: 马尔科夫型决策以及使用python计算方法

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/623229/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球