强化学习(二)马尔科夫决策过程 MDP

文章目录

  • 1. 什么是马尔科夫过程
  • 2. 强化学习与MDP的关系
  • 3. 价值函数的贝尔曼方程
    • 3.1 状态价值函数的贝尔曼方程
    • 3.2 动作价值函数的贝尔曼方程
    • 3.3 价值函数递推关系的转换
  • 4. 最优价值函数
  • 5. MDP计算最优值函数实例


1. 什么是马尔科夫过程

马尔科夫过程(Markov Decision Process, MDP),也称为马尔科夫链(Markov Chain),是指具有马尔科夫性质的过程,而马尔科夫性质指的是该过程中的未来状态仅依赖于当前的状态和行动,与过去的状态序列无关。具体来说,马尔科夫过程满足以下两个性质:

  • 无记忆性(Markov Property):给定当前时刻的状态,未来时刻的状态只依赖于当前时刻的状态,而与过去的状态序列无关。这意味着过程中的状态转移概率只与当前状态有关,与之前的历史状态无关。
  • 状态空间可数:马尔科夫过程的状态空间是可数的,即状态集合中的状态数量是有限或可列无穷的。

马尔科夫过程在许多领域都有应用,例如在统计学、信号处理、自然语言处理、金融等领域中都有广泛的应用。

2. 强化学习与MDP的关系

在强化学习中,马尔科夫决策过程是用于建立智能体与环境之间交互过程的重要数学框架,具体而言,强化学习解决的问题就是在一个MDP中找到一个最优的策略,使得智能体在这个策略下获得的累积奖励最大化。

可以将强化学习过程定义为马尔科夫过程的标准数学形式,用一个五元组 ( S , A , R , P , π ) (S,A,R,P,\pi) (S,A,R,P,π) 表示,其中:

  1. S S S 是状态空间集合,包含了所有可能的有效状态;
  2. A A A 是动作空间集合;
  3. R R R 是奖励函数,阶段 t t t 采取动作的奖励 r t = R ( s t , a t , s t + 1 ) r_t = R(s_t, a_t, s_{t+1}) rt=R(st,at,st+1)
  4. P P P 状态转移概率矩阵,其中 P ( s ′ ∣ s , a ) P(s'|s,a) P(ss,a) 是在状态 s s s 下 采取动作 a a a 转移到状态 s ′ s' s 的概率;
  5. π \pi π 是智能体在每个状态下采取动作的策略。

其中,对应用强化学习的系统的如下元素做马尔科夫假设:

  • 环境的状态转移:即未来的环境状态只与当前的环境状态和当前智能体所采取的动作有关,与过去的状态序列无关;
  • 智能体的策略:即智能体在状态 s s s 处所采取的动作 a a a 的概率仅与当前状态有关,与其他要素无关,即如下的策略函数:
    π ( a ∣ s ) = P ( A t = a ∣ S t = s ) \pi(a|s)=P(A_t=a|S_t=s) π(as)=P(At=aSt=s)
  • 状态价值函数:即对一个状态的价值估计只基于当前的状态,而不考虑过去的状态情况,仅评估当前状态下,基于已有策略 π \pi π 还能获得的累积奖励,具体公式如下:
    v π ( s ) = E π ( G t ∣ S t = s ) = E π ( R t + γ R t + 1 + γ 2 R t + 2 + … ∣ S t = s ) v_\pi(s)=\mathrm{E}_\pi\left(G_t \mid S_t=s\right)=\mathrm{E}_\pi\left(R_{t}+\gamma R_{t+1}+\gamma^2 R_{t+2}+\ldots \mid S_t=s\right) vπ(s)=Eπ(GtSt=s)=Eπ(Rt+γRt+1+γ2Rt+2+St=s)
  • 动作价值函数:同理,评估一个状态 s s s 下采取动作 a a a 的价值,只依赖于当前的状态和动作,与过去的状态和动作无关。

以上部分概念可以通过前文《强化学习基础概念入门》了解。

3. 价值函数的贝尔曼方程

在提到马尔科夫决策过程时,经常也会提到贝尔曼方程(Bellman Equation)1,这是描述马尔科夫决策过程中最优值函数的重要方程。前面提到,不论是状态价值函数还是动作价值函数都是只与当前状态有关,估计的累积价值包括当前阶段的价值和未来阶段的价值,而贝尔曼方程的核心思想就是,将基于当前状态的价值估计和基于下一个状态的价值估计联系起来,形成一个递归方程,作为求解最优价值函数或者动作价值函数的基础。

3.1 状态价值函数的贝尔曼方程

根据上面提到的状态价值函数的表达式,进行如下推导:

v π ( s ) = E π ( R t + γ R t + 1 + γ 2 R t + 2 + … ∣ S t = s ) = E π ( R t + γ ( R t + 1 + γ R t + 2 + … ) ∣ S t = s ) = E π ( R t + γ G t + 1 ∣ S t = s ) = E π ( R t + γ v π ( S t + 1 ) ∣ S t = s ) \begin{aligned} v_\pi(s) & =\mathrm{E}_\pi\left(R_{t}+\gamma R_{t+1}+\gamma^2 R_{t+2}+\ldots \mid S_t=s\right) \\ & =\mathrm{E}_\pi\left(R_{t}+\gamma\left(R_{t+1}+\gamma R_{t+2}+\ldots\right) \mid S_t=s\right) \\ & =\mathrm{E}_\pi\left(R_{t}+\gamma G_{t+1} \mid S_t=s\right) \\ & =\mathrm{E}_\pi\left(R_{t}+\gamma v_\pi\left(S_{t+1}\right) \mid S_t=s\right)\end{aligned} vπ(s)=Eπ(Rt+γRt+1+γ2Rt+2+St=s)=Eπ(Rt+γ(Rt+1+γRt+2+)St=s)=Eπ(Rt+γGt+1St=s)=Eπ(Rt+γvπ(St+1)St=s)

即在 t t t 时刻的状态估计价值和在 t + 1 t+1 t+1 时刻的状态估计价值满足如下的递推关系(贝尔曼方程):

v π ( s ) = E π ( R t + γ v π ( S t + 1 ) ∣ S t = s ) v_{\pi}(s)=\mathrm{E}_{\pi}(R_{t}+\gamma v_{\pi}(S_{t+1})|S_t=s) vπ(s)=Eπ(Rt+γvπ(St+1)St=s)

其中, R t R_t Rt 是在状态 s s s 下采取动作后的即时奖励, γ \gamma γ 是奖励衰减因子。

3.2 动作价值函数的贝尔曼方程

除了状态价值估计函数 v π ( s ) v_{\pi}(s) vπ(s),还有一个动作价值函数 q π ( s , a ) q_{\pi}(s,a) qπ(s,a),该估计函数考虑了所采取的动作 a a a 对回报的影响,公式与状态价值函数相似,如下:

q π ( s , a ) = E π ( G t ∣ S t = s , A t = a ) = E π ( R t + γ R t + 1 + γ 2 R t + 2 + … ∣ S t = s , A t = a ) q_\pi(s,a)=\mathrm{E}_\pi\left(G_t \mid S_t=s, A_t=a \right)=\mathrm{E}_\pi\left(R_{t}+\gamma R_{t+1}+\gamma^2 R_{t+2}+\ldots \mid S_t=s,A_t=a \right) qπ(s,a)=Eπ(GtSt=s,At=a)=Eπ(Rt+γRt+1+γ2Rt+2+St=s,At=a)

同理,可得 q π ( s , a ) q_{\pi}(s,a) qπ(s,a) 的贝尔曼方程如下:

q π ( s , a ) = E π ( R t + γ q π ( S t + 1 , A t + 1 ) ∣ S t = s ) q_{\pi}(s,a)=\mathrm{E}_{\pi}(R_{t}+\gamma q_{\pi}(S_{t+1},A_{t+1})|S_t=s) qπ(s,a)=Eπ(Rt+γqπ(St+1,At+1)St=s)

3.3 价值函数递推关系的转换

前面的两种价值函数的贝尔曼方程,尽管呈现了前后阶段的估计价值的递推关系,但是仍是期望表达式,为了最优化动作策略,需要将动作策略 π ( a ∣ s ) \pi(a|s) π(as) 纳入到递推关系当中。

根据动作价值函数 q π ( s , a ) q_{\pi}(s,a) qπ(s,a) 和状态价值函数 v π ( s ) v_{\pi}(s) vπ(s) 的定义,可以得到如下的关系:

v π ( s ) = ∑ a ∈ A π ( a ∣ s ) q π ( s , a ) v_{\pi}(s)=\sum_{a\in A} \pi(a|s)q_{\pi}(s,a) vπ(s)=aAπ(as)qπ(s,a)

即当前状态的估计价值,是所有动作的估计价值基于策略(概率分布函数) π ( a ∣ s ) \pi(a|s) π(as) 的期望值,即在当前状态和当前策略下,所有动作的估计价值乘以动作的选择概率,求和后得到当前状态的估计价值。

同理,在一个状态 s s s 下,估计动作 a a a 的价值即采取了该动作之后,状态转移到下一阶段状态的期望价值,关系如下:

q π ( s , a ) = R t + γ ∑ s ′ ∈ S ( P s s ′ a v π ( s ′ ) ) q_{\pi}(s,a)=R_t+\gamma \sum_{s'\in S}(P^a_{ss'}v_{\pi}(s')) qπ(s,a)=Rt+γsS(Pssavπ(s))

即在状态 s s s 下采取动作 a a a,由于环境的随机因素,状态可能转移到其他的多种状态 s ′ s' s,因此评估状态 s s s 下动作 a a a 的价值,计算的是下一阶段的状态估计价值的期望,再乘以下一阶段价值(奖励)的衰减因子 γ \gamma γ

将上述两个式子彼此代入,得到新的贝尔曼递推关系式,如下:

v π ( s ) = ∑ a ∈ A π ( a ∣ s ) ( R t a + γ ∑ s ′ ∈ S ( P s s ′ a v π ( s ′ ) ) ) v_{\pi}(s)=\sum_{a\in A} \pi(a|s)(R_t^a+\gamma \sum_{s'\in S}(P^a_{ss'}v_{\pi}(s'))) vπ(s)=aAπ(as)(Rta+γsS(Pssavπ(s)))

q π ( s , a ) = R t a + γ ∑ s ′ ∈ S ( P s s ′ a ∑ a ′ ∈ A π ( a ′ ∣ s ′ ) q π ( s ′ , a ′ ) ) q_{\pi}(s,a)=R_t^a+\gamma \sum_{s'\in S}(P^a_{ss'} \sum_{a'\in A} \pi(a'|s')q_{\pi}(s',a')) qπ(s,a)=Rta+γsS(PssaaAπ(as)qπ(s,a))

4. 最优价值函数

当我们对价值函数的估计越准确,即策略越有效,则我们决策过程的累积奖励值越大。前面提到,贝尔曼方程是作为求解最优价值函数的基础,通过贝尔曼方程的递推关系,我们可以迭代地求解出最优价值函数,直到算法收敛。

假设在马尔可夫决策过程当中,我们所采取的策略是最优的,表示为 π ∗ \pi^* π,它能使得我们在每个阶段的回报都比其他的策略所获回报要高,得到这么一个策略就是强化学习问题所要求的解。但我们很难直接地找到这样地策略,只能在不断的训练中,去比较和学习更优的策略,且对于复杂问题,几乎不可能穷举所有的策略,因此比较得到的最优策略是局部最优的。

比较策略的优劣最直接的方式就是通过比较策略在不同状态下的期望累积奖励大小,其中使得期望累积奖励值达到最大的策略即为最优策略,如下:

v ∗ ( s ) = max ⁡ π v π ( s ) v_*(s)=\max_{\pi}v_{\pi}(s) v(s)=πmaxvπ(s)

同理,最优动作价值函数的最优策略,如下:

q ∗ ( s , a ) = max ⁡ π q π ( s , a ) q_*(s,a)=\max_{\pi}q_{\pi}(s,a) q(s,a)=πmaxqπ(s,a)

假设动作 a a a 是最优策略所选出的最优动作(这里暂不考虑策略的随机性),则最优状态价值函数和最优动作价值函数之间的关系为:

v ∗ ( s ) = max ⁡ a q ∗ ( s , a ) v_{*}(s)=\max_{a}q_{*}(s,a) v(s)=amaxq(s,a)

q ∗ ( s , a ) = R t a + γ ∑ s ′ ∈ S ( P s s ′ a v ∗ ( s ′ ) ) q_{*}(s,a)=R_t^a+\gamma \sum_{s'\in S}(P^a_{ss'}v_{*}(s')) q(s,a)=Rta+γsS(Pssav(s))

同理,将上述两个式子代入彼此,可以得到最优价值函数,如下:

v ∗ ( s ) = max ⁡ a ( R t a + γ ∑ s ′ ∈ S ( P s s ′ a v ∗ ( s ′ ) ) ) v_{*}(s)=\max_{a} (R_t^a+\gamma \sum_{s'\in S}(P^a_{ss'}v_{*}(s'))) v(s)=amax(Rta+γsS(Pssav(s)))

q ∗ ( s , a ) = R t a + γ ∑ s ′ ∈ S ( P s s ′ a max ⁡ a ‘ q ∗ ( s ′ , a ′ ) ) q_{*}(s,a)=R_t^a+\gamma \sum_{s'\in S}(P^a_{ss'} \max_{a‘}q_{*}(s',a')) q(s,a)=Rta+γsS(Pssaamaxq(s,a))

上述的最优价值函数是在强化学习的迭代训练中不断更新得到的,随着训练场景增多,价值函数不断逼近最优价值函数。

5. MDP计算最优值函数实例

现有一个关于学生开始的马尔科夫决策过程2,左上角的圆圈是当前的起始位置(状态),右上角的方框是终点位置(状态)。学生可以采取的动作为下图弧线上的红色字符串,有 S t u d y , F a c e b o o k , Q u i t , S l e e p , P u b Study,Facebook,Quit,Sleep,Pub Study,Facebook,Quit,Sleep,Pub,各个状态下采取动作对应的即时奖励 R R R 的值在相关弧线上。现需要找到最优的状态价值或动作价值函数,以期能够达成最优策略。

在这里插入图片描述
每个非结束状态,都有两种可选择的动作,因此为了方便,我们令初始策略选择每个动作的概率 π ( a ∣ s ) \pi(a|s) π(as) 均为 0.5 0.5 0.5,同时假设奖励衰减因子为 1 1 1,即初始策略下会考虑当前及未来全量的累积奖励。

这里我们将终点状态的价值设为 0 0 0,即不论由什么状态通过什么动作直接到达终点,都不增加奖励。接着,定义左上 s 1 s_1 s1、左下 s 2 s_2 s2、中下 s 3 s_3 s3、右下 s 4 s_4 s4 四个圆圈的状态价值为 v 1 , v 2 , v 3 , v 4 v_1,v_2,v_3,v_4 v1,v2,v3,v4,通过以下公式计算各个状态的估计价值(状态价值函数):

v π ( s ) = ∑ a ∈ A π ( a ∣ s ) ( R t a + γ ∑ s ′ ∈ S ( P s s ′ a v π ( s ′ ) ) ) v_{\pi}(s)=\sum_{a\in A} \pi(a|s)(R_t^a+\gamma \sum_{s'\in S}(P^a_{ss'}v_{\pi}(s'))) vπ(s)=aAπ(as)(Rta+γsS(Pssavπ(s)))

先从起始状态出发,可得如下的方程组:

v 1 = 0.5 × ( 0 + v 2 ) + 0.5 × ( − 1 + v 1 ) v 2 = 0.5 × ( − 1 + v 1 ) + 0.5 × ( − 2 + v 3 ) v 3 = 0.5 × ( − 2 + v 4 ) + 0.5 × ( 0 + 0 ) v 4 = 0.5 × ( 10 + 0 ) + 0.5 × ( 1 + 0.2 × v 2 + 0.4 × v 3 + 0.4 × v 4 ) v_1=0.5\times (0+v_2) + 0.5\times (-1+v_1)\\ v_2=0.5\times (-1+v_1) + 0.5\times (-2+v_3)\\ v_3=0.5\times (-2+v_4) + 0.5\times (0+0)\\ v_4=0.5\times (10+0) + 0.5\times (1+0.2\times v_2 + 0.4\times v_3 + 0.4\times v_4) v1=0.5×(0+v2)+0.5×(1+v1)v2=0.5×(1+v1)+0.5×(2+v3)v3=0.5×(2+v4)+0.5×(0+0)v4=0.5×(10+0)+0.5×(1+0.2×v2+0.4×v3+0.4×v4)

通过解方程得到 v 1 = − 2.3 , v 2 = − 1.3 , v 3 = 2.7 , v 4 = 7.4 v_1=-2.3,v_2=-1.3,v_3=2.7,v_4=7.4 v1=2.3,v2=1.3,v3=2.7,v4=7.4,这是在我们规定好价值函数之后求得的状态估计价值,但这不一定是最优价值函数。求最优价值函数的关键在于,求出各个状态的价值,以及每个状态可以采取的动作的估计价值,

假设终点的状态价值仍为 0 0 0,系统的奖励衰减因子 γ = 1 \gamma=1 γ=1,可得,在(未知)最优策略 π ( a ∣ s ) \pi(a|s) π(as) 下, q ∗ ( s 3 , s l e e p ) = 0 , q ∗ ( s 4 , s t u d y ) = 10 q_*(s_3, sleep)=0, q_*(s_4,study)=10 q(s3,sleep)=0,q(s4,study)=10。接着利用如下公式:

q ∗ ( s , a ) = R t a + γ ∑ s ′ ∈ S ( P s s ′ a max ⁡ a ’ q ∗ ( s ′ , a ′ ) ) q_{*}(s,a)=R_t^a+\gamma \sum_{s'\in S}(P^a_{ss'} \max_{a’}q_{*}(s',a')) q(s,a)=Rta+γsS(Pssaamaxq(s,a))

得到:

q ∗ ( s 3 , s t u d y ) = − 2 + max ⁡ ( q ∗ ( s 4 , s t u d y ) , q ∗ ( s 4 , p u b ) ) q ∗ ( s 4 , p u b ) = 1 + 0.2 × max ⁡ ( q ∗ ( s 2 , f a c e b o o k ) , q ∗ ( s 2 , s t u d y ) ) + 0.4 × max ⁡ ( q ∗ ( s 3 , s t u d y ) , q ∗ ( s 3 , s l e e p ) ) + 0.4 × max ⁡ ( q ∗ ( s 4 , s t u d y ) , q ∗ ( s 4 , p u b ) ) q ∗ ( s 2 , s t u d y ) = − 2 + max ⁡ ( q ∗ ( s 3 , s t u d y ) , q ∗ ( s 3 , s l l e p ) ) q ∗ ( s 2 , f a c e b o o k ) = − 1 + max ⁡ ( q ∗ ( s 1 , f a c e b o o k ) , q ∗ ( s 1 , q u i t ) ) q ∗ ( s 1 , f a c e b o o k ) = − 1 + max ⁡ ( q ∗ ( s 1 , f a c e b o o k ) , q ∗ ( s 1 , q u i t ) ) q ∗ ( s 1 , q u i t ) = − 1 + max ⁡ ( q ∗ ( s 2 , s t u d y ) , q ∗ ( s 2 , f a c e b o o k ) ) q_*(s_3,study)=-2+\max(q_*(s_4,study), q_*(s_4,pub))\\ q_*(s_4,pub)=1+0.2\times \max(q_*(s_2,facebook), q_*(s_2,study)) + 0.4\times \max(q_*(s_3,study), q_*(s_3,sleep)) + 0.4\times\max(q_*(s_4,study), q_*(s_4,pub))\\ q_*(s_2,study)=-2+\max(q_*(s_3,study), q_*(s_3,sllep))\\ q_*(s_2,facebook)=-1+\max(q_*(s_1,facebook), q_*(s_1,quit))\\ q_*(s_1,facebook)=-1+\max(q_*(s_1,facebook), q_*(s_1,quit))\\ q_*(s_1,quit)=-1+\max(q_*(s_2,study), q_*(s_2,facebook)) q(s3,study)=2+max(q(s4,study),q(s4,pub))q(s4,pub)=1+0.2×max(q(s2,facebook),q(s2,study))+0.4×max(q(s3,study),q(s3,sleep))+0.4×max(q(s4,study),q(s4,pub))q(s2,study)=2+max(q(s3,study),q(s3,sllep))q(s2,facebook)=1+max(q(s1,facebook),q(s1,quit))q(s1,facebook)=1+max(q(s1,facebook),q(s1,quit))q(s1,quit)=1+max(q(s2,study),q(s2,facebook))

根据上述方程组求解得到各个状态下的动作价值:

q ∗ ( s 3 , s t u d y ) = 8 q ∗ ( s 4 , p u b ) = 8.4 q ∗ ( s 2 , s t u d y ) = 6 q ∗ ( s 2 , f a c e b o o k ) = 5 q ∗ ( s 1 , f a c e b o o k ) = 5 q ∗ ( s 1 , q u i t ) = 6 q_*(s_3,study) = 8\\ q_*(s_4,pub)=8.4\\ q_*(s_2,study)=6\\ q_*(s_2,facebook)=5\\ q_*(s_1,facebook)=5\\ q_*(s_1,quit)=6 q(s3,study)=8q(s4,pub)=8.4q(s2,study)=6q(s2,facebook)=5q(s1,facebook)=5q(s1,quit)=6

接着根据如下公式计算各个状态的估计价值:

v ∗ ( s ) = max ⁡ a q ∗ ( s , a ) v_{*}(s)=\max_{a}q_{*}(s,a) v(s)=amaxq(s,a)

可得: v 1 = 6 , v 2 = 6 , v 3 = 8 , v 4 = 10 v_1=6,v_2=6,v_3=8,v_4=10 v1=6,v2=6,v3=8,v4=10,即为最终的最优价值估计,基于这些价值估计的策略可得,最优的学习路线为: s 1 → s 2 → s 3 → s 4 → s_1\rightarrow s_2\rightarrow s_3\rightarrow s_4\rightarrow s1s2s3s4 终点。


  1. 马尔科夫决策过程(MDP) :https://www.cnblogs.com/pinard/p/9426283.html ↩︎

  2. UCL 强化学习第二章节讲义 https://www.davidsilver.uk/wp-content/uploads/2020/03/MDP.pdf ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/821557.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【网络编程】UDP实现回显服务器

一.网络编程的基本术语. 客户端 客户端是为用户提供本地服务的程序,通常位于用户设备上。也称为用户端,是相对于服务器而言的。它主要指安装在用户设备上的程序,这些程序能够与服务器进行通信,从而获取服务或者执行特定功能。在…

Spark安装教程

Spark安装教程 文章目录 Spark安装教程1. 检查jdk版本2. 获取Spark版本安装资源3.环境变量4.配置文件5. 重启Hadoop集群(使配置生效)6. 启动Spark集群6.1 查看Spark服务6.2 访问Spark WEB UI 7. 启动 Spark-Shell 测试 Scala 交互式环境8. 测试Spark On Yarn9.关闭Spark集群 1.…

OpenHarmony实战开发-Grid和List内拖拽交换子组件位置。

介绍 本示例分别通过onItemDrop()和onDrop()回调,实现子组件在Grid和List中的子组件位置交换。 效果图预览 使用说明: 拖拽Grid中子组件,到目标Grid子组件位置,进行两者位置互换。拖拽List中子组件,到目标List子组件…

STM32-ADC(独立模式、双重模式)

ADC简介 18个通道:外部信号源就是16个GPIO回。在引脚上直接接模拟信号就行了,不需要侄何额外的电路。引脚就直接能测电压。2个内部信号源是内部温度传感器和内部参考电压。 逐次逼近型ADC: 它是一个独立的8位逐次逼近型ADC芯片,这个ADC0809是…

性能测试 Jmeter 非 GUI 模式 -CLI 命令详解

我们在使用Jmeter做性能测试的时候,大部分同学用的是图形化界面进行脚本编写和执行性能测试的。但是其实真正在公司执行性能测试的时候,我们基本上不会用图形化界面去执行测试,这是因为工具渲染这些图形本身会让Jmeter结果存在很多不稳定的因…

FMEA赋能可穿戴设备:打造安全可靠的未来科技新宠!

在科技日新月异的今天,可穿戴设备已成为我们生活中不可或缺的一部分。它们以其便携性、智能化和个性化的特点,深受消费者喜爱。然而,随着可穿戴设备市场的快速扩张,其安全性和可靠性问题也日益凸显。为了确保产品质量,…

微信小程序全局配置

全局配置文件及常用的配置项 小程序根目录下的 app.json 文件是小程序的全局配置文件。常用的配置项如下: ① pages 记录当前小程序所有页面的存放路径 ② window 全局设置小程序窗口的外观 ③ tabBar 设置小程序底部的 tabBar 效果 ④ style 是否启用新版的组件样…

图灵奖2023:Avi Wigderson的开创性贡献揭示计算中的随机性和伪随机性

文章目录 每日一句正能量前言背景什么是理论计算机科学?为什么随机性很重要?三篇影响深远的论文Avi Wigderson在计算复杂性理论方面的贡献及其对现代计算的影响Avi Wigderson对随机性和伪随机性在计算中作用的理解及其实际应用Avi Wigderson的学术生涯和…

Spring、SpringMVC、SpringBoot核心知识点(持续更新中)

Spring、SpringMVC、SpringBoot核心知识点(持续更新中) Spring Bean 的生命周期Spring 的 IOC 与 AOPSpring Bean 循环依赖Spring MVC 处理请求的过程Spring Boot 自动装配原理Spring Boot 启动流程 Spring Bean 的生命周期 参考文章:一文读…

HBase的数据模型与架构

官方文档:Apache HBase – Apache HBase™ Homehttps://hbase.apache.org/ 一、HBase概述 1.概述 HBase的技术源自Google的BigTable论文,HBase建立在Hadoop之上,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,用于…

mac上 Sublime Text 无法使用 Package Control

我也不知道什么时候用不了的,平时就是用来看看文本文件,因为觉得这个玩意真的很快 今天想安装一个包,发现 cmd shift P 是出来那个窗口了,但是输入什么都没反应,于是在 github 上找到了解决方案 打开终端执行以下命…

vivado 在硬件管理器中调试 AXI 接口

在硬件管理器中调试 AXI 接口 IP integrator 中的 System ILA IP 支持您在 FPGA 上对设计执行系统内调试。在 Versal 器件上 , System ILA 核已被废 弃。现在 , 在含 AXIS 接口的标准 ILA 中支持接口调试。如需监控 IP integrator 块设计中的…

安达发|体育产业体育装备生产车间APS排产软件

在体育产业中,体育装备的生产是保障运动员成绩和安全的关键一环。随着市场需求的多样化和个性化,传统的生产排程方法已经难以满足现代体育装备生产的复杂性和灵活性。因此,应用高级排产软件(APS)进行生产计划和控制成为…

RD77MS2 三菱iQ-R系列2轴简单运动模块(SSCNETⅢ/H型)

RD77MS2 三菱iQ-R系列2轴简单运动模块(SSCNETⅢ/H型) RD77MS2用户手册,RD77MS2外部连接,RD77MS2规格。RD77MS2参数说明:2轴;SSCNETⅢ/H连接,位置控制、同步控制、速度.转矩控制、轨迹控制;控制单位mm、inch、degree、pulse;定位数据600数据轴。 RD77MS2图…

APIGateway的认证

APIGateway的支持的认证如下: 我们从表格中可以看到,HTTP API 不支持资源策略的功能,另外是通过JWT的方式集成Cognito的。 对于REST API则是没有显示说明支持JWT认证,这个我们可以通过Lambda 自定义的方式来实现。 所以按照这个…

AR、VR、MR 和 XR——它们的含义以及它们将如何改变生活

我们的工作、娱乐和社交方式正在发生巨大变化。远程工作的人比以往任何时候都多,屏幕已成为学习和游戏的领先平台。这种演变为元宇宙铺平了道路——如今,像 Meta Quest 2 这样的流行设备将您无缝地带入一个身临其境的世界,您可以在其中购物、创作和玩游戏、与同事协作、探索…

Ubuntu 部署ChatGLM3大语言模型

Ubuntu 部署ChatGLM3大语言模型 ChatGLM3 是智谱AI和清华大学 KEG 实验室联合发布的对话预训练模型。 源码:https://github.com/THUDM/ChatGLM3 部署步骤 1.服务器配置 Ubuntu 20.04 8核(vCPU) 32GiB 5Mbps GPU NVIDIA T4 16GB 硬盘 100GiB CUDA 版本 12.2.2/…

适用于 Windows 的 10 个顶级 PDF 编辑器 [免费和付费]

曾经打开PDF文件,感觉自己被困在数字迷宫中吗?无法编辑的文本、无法调整大小的图像以及签署感觉像是一件苦差事的文档?好吧,不用再担心了!本指南解开了在 Windows 上掌握 PDF 的秘密,其中包含 10 款适用于 …

04 MySQL --DQL 专题--Union、exists

1. UNION、UNION ALL UNION 关键字的作用? 合并两个或多个 SELECT 语句的结果。发挥的作用与 or 非常相似 UNION关键字生效的前提? 每个 SELECT 语句必须拥有相同数量的列。每个 SELECT 语句中的列的顺序必须相同。列必须拥有相似的数据类型。 SELEC…

Hyperledger Fabric

一.Hyperledger Fabric介绍 Hyperledger区块链全家桶 Hyperledger Fabric技术特性 资产 — 资产定义使得几乎任何具有货币价值的东西都可以在网络上交 换,包括从食品到古董汽车再到货币期货。链码 — 链码执行与交易排序的分离,限制了跨节点类型所需的…