【RL】Bellman Optimality Equation(贝尔曼最优等式)

Lecture3: Optimal Policy and Bellman Optimality Equation

Definition of optimal policy

state value可以被用来去评估policy的好坏,如果:
v π 1 ( s ) ≥ v π 2 ( s ) for all  s ∈ S v_{\pi_1}(s) \ge v_{\pi_2}(s) \;\;\;\;\; \text{for all } s \in S vπ1(s)vπ2(s)for all sS
那么, π 1 \pi_1 π1 π 2 \pi_2 π2更优。

定义

如果 v π ∗ ( s ) > v π v_{\pi^*}(s) > v_{\pi} vπ(s)>vπ对所有的 s s s都成立,那么policy π \pi π就是最优的,标记为 π ∗ \pi^* π

BOE: Introduction

回顾元素形式的Bellman等式:
v ( s ) = ∑ a π ( a ∣ s ) ( ∑ r p ( r ∣ s , a ) + γ ∑ s ′ p ( s ′ ∣ s , a ) v ( s ′ ) ) ∀ s ∈ S v(s)=\sum_a \pi(a | s) \left( \sum_rp(r | s, a) + \gamma \sum_{s'}p(s' | s, a)v(s') \right)\;\;\;\;\; \forall s \in S v(s)=aπ(as)(rp(rs,a)+γsp(ss,a)v(s))sS
则,元素形式的Bellman最优等式(Bellman Optimiality Equation)为:
v ( s ) = m a x π ∑ a π ( a ∣ s ) ( ∑ r p ( r ∣ s , a ) + γ ∑ s ′ p ( s ′ ∣ s , a ) v ( s ′ ) ) ∀ s ∈ S = m a x π ∑ a π ( a ∣ s ) q ( s ∣ a ) s ∈ S \begin{align*} v(s)&=max_{\pi} \sum_a \pi(a | s) \left( \sum_rp(r | s, a) + \gamma \sum_{s'}p(s' | s,a) v(s') \right)\;\;\;\;\; \forall s \in S \\ &=max_{\pi}\sum_a \pi(a | s)q(s | a) \;\;\;\;\; s \in S \end{align*} v(s)=maxπaπ(as)(rp(rs,a)+γsp(ss,a)v(s))sS=maxπaπ(as)q(sa)sS
其中:

  • p ( r ∣ s , a ) p(r | s, a) p(rs,a) p ( s ′ ∣ s , a ) p(s'| s, a) p(ss,a)是已知的
  • v ( s ) v(s) v(s) v ( s ′ ) v(s') v(s)是未知需要计算的

矩阵形式的Bellman最优等式:
v = m a x π ( r π + γ P π v ) \mathbf{v} = max_{\pi}(\mathbf{r}_{\pi} + \gamma \mathbf{P}_{\pi} \mathbf{v}) v=maxπ(rπ+γPπv)
其中:
[ r π ] s : = ∑ a π ( a ∣ s ) ∑ r p ( r ∣ s , a ) r [ P π ] s , s ′ = p ( s ′ ∣ s ) : = ∑ a π ( a ∣ s ) ∑ s ′ p ( s ′ ∣ s , a ) [\mathbf{r}_{\pi}]_s := \sum_a \pi(a | s)\sum_rp(r | s, a)r \\ [\mathbf{P}_{\pi}]_{s, s'} = p(s' | s) := \sum_a \pi(a | s) \sum_{s'} p(s' | s, a) [rπ]s:=aπ(as)rp(rs,a)r[Pπ]s,s=p(ss):=aπ(as)sp(ss,a)

BOE: Maximization on the right-hand side

考虑元素形式Bellman最优等式:
v ( s ) = m a x π ∑ a π ( a ∣ s ) ( ∑ r p ( r ∣ s , a ) + γ ∑ s ′ p ( s ′ ∣ s , a ) v ( s ′ ) ) ∀ s ∈ S = m a x π ∑ a π ( a ∣ s ) q ( s ∣ a ) s ∈ S \begin{align*} v(s)&=max_{\pi} \sum_a \pi(a | s) \left( \sum_rp(r | s, a) + \gamma \sum_{s'}p(s' | s,a) v(s') \right)\;\;\;\;\; \forall s \in S \\ &=max_{\pi}\sum_a \pi(a | s)q(s | a) \;\;\;\;\; s \in S \end{align*} v(s)=maxπaπ(as)(rp(rs,a)+γsp(ss,a)v(s))sS=maxπaπ(as)q(sa)sS
因为 ∑ a π ( a ∣ s ) = 1 \sum_a \pi(a | s) = 1 aπ(as)=1,可得:
m a x π ∑ a π ( a ∣ s ) q ( s ∣ a ) = m a x a ∈ A ( s ) q ( s , a ) max_{\pi} \sum_a \pi(a | s)q(s | a) =max_{a \in \mathcal{A}(s)} q(s, a) maxπaπ(as)q(sa)=maxaA(s)q(s,a)
当策略最优时:
π ( a ∣ s ) = { 1 a = a ∗ 0 a ≠ a ∗ \pi(a | s) = \left\{\begin{matrix} 1 & a = a^*\\ 0 & a \ne a^* \end{matrix}\right. π(as)={10a=aa=a
其中: a ∗ = argmax a q ( s , a ) a^* = \text{argmax}_a q(s, a) a=argmaxaq(s,a)

BOE: Rewtite as v = f ( v ) v=f(v) v=f(v)

考虑矩阵形式Bellman最优等式:
v = m a x π ( r π + γ P π v ) \mathbf{v} = max_{\pi}(\mathbf{r}_{\pi} + \gamma \mathbf{P}_{\pi} \mathbf{v}) v=maxπ(rπ+γPπv)
使:
f ( v ) : = m a x π ( r π + γ P π v ) f(\mathbf{v}) := max_{\pi}(\mathbf{r}_{\pi} + \gamma \mathbf{P}_{\pi} \mathbf{v}) f(v):=maxπ(rπ+γPπv)
那么,Bellman最优等式就变为:
v = f ( v ) \mathbf{v} = f(\mathbf{v}) v=f(v)
其中:
[ f ( v ) ] s = m a x π ∑ a π ( a ∣ s ) q ( s , a ) s ∈ S [f(v)]_s = max_{\pi} \sum_a \pi(a | s)q(s, a) \;\;\;\;\; s\in S [f(v)]s=maxπaπ(as)q(s,a)sS

Contraction mapping theorem

Fixed Point:对于 x ∈ X x \in X xX,如果其为 f : X → X f: X \rightarrow X f:XX的fixed point(不动点),那么其满足:
f ( x ) = x f(x)=x f(x)=x
Contraction Mapping(or Contraction Function) f f f是contraction mapping,如果:
∥ f ( x 1 ) − f ( x 2 ) ∥ ≤ γ ∥ x 1 − x 2 ∥ \| f(x_1) - f(x_2) \| \le \gamma \| x_1 - x_2 \| f(x1)f(x2)γx1x2
其中, γ ∈ ( 0 , 1 ) \gamma \in (0, 1) γ(0,1)

  • γ \gamma γ必须严格小于1
  • ∥ ⋅ ∥ \| \cdot\| 可以是任何向量形式

对于任何满足 x = f ( x ) x = f(x) x=f(x)的等式形式,如果 f f f是contractnon mapping,那么:

  • Existence:存在一个fixed point,满足 f ( x ∗ ) = x ∗ f(x^*) = x^* f(x)=x
  • Uniquencess:fixed point x ∗ x^* x是唯一的
  • Algorithm:考虑序列 { x k } \{ x_k \} {xk},其中 x k + 1 = f ( x k ) x_{k+1}=f(x_k) xk+1=f(xk),那么当 k → ∞ k \rightarrow \infty k x k → x ∗ x_k \rightarrow x^* xkx。而且,收敛速度时指数级。

例:

  • x = 0.5 x x=0.5x x=0.5x,其中 f ( x ) = 0.5 x f(x)=0.5x f(x)=0.5x而且 x ∈ R x \in \mathbb{R} xR

    x ∗ = 0 x^*=0 x=0是唯一的fixed point。其可以被迭代求解为:
    x k + 1 = 0.5 x k x_{k+1}=0.5x_k xk+1=0.5xk

  • x = A x x=Ax x=Ax,其中 f ( x ) = A x f(x)=Ax f(x)=Ax并且 x ∈ R n x \in \mathbb{R}^n xRn ∥ A ∥ < 1 \|A\| <1 A<1

    x ∗ = 0 x^*=0 x=0是唯一的fixed point。其可以被迭代求解为:
    x k + 1 = A x k x_{k+1} = Ax_k xk+1=Axk

BOE: Solution

考虑Bellman最优等式:
v = f ( v ) = m a x π ( r + γ P π v ) \mathbf{v} = f(\mathbf{v}) = max_{\pi}(r + \gamma \mathbf{P}_{\pi}\mathbf{v}) v=f(v)=maxπ(r+γPπv)
Contraction Property f ( v ) f(v) f(v)是contraction mapping 满足:
∥ f ( v 1 ) − f ( v 2 ) ∥ ≤ γ ∥ v 1 − v 2 ∥ \|f(v_1) - f(v_2)\| \le \gamma \|v_1 - v_2\| f(v1)f(v2)γv1v2
其中, γ \gamma γ是discount rate。

对于BOE v = f ( v ) = m a x π ( r π + γ P π v ) \mathbf{v} = f(\mathbf{v}) = max_{\pi}(\mathbf{r}_{\pi} + \gamma \mathbf{P}_{\pi} \mathbf{v}) v=f(v)=maxπ(rπ+γPπv),其总存在一个最优解 v ∗ \mathbf{v}^* v,而且 v ∗ \mathbf{v}^* v是唯一的。最优解可以被迭代求解为:
v k + 1 = f ( v k ) = m a x π ( r π + γ P π v k ) \mathbf{v}_{k+1}=f(\mathbf{v}_k) = max_{\pi}(\mathbf{r}_{\pi} + \gamma \mathbf{P}_{\pi}\mathbf{v}_k) vk+1=f(vk)=maxπ(rπ+γPπvk)
给定任何初始猜测 v 0 v^0 v0,该序列 v k {v_k} vk都会以指数速度快速收敛到 v ∗ v^* v。 收敛速度由 γ \gamma γ决定。

迭代算法:

对于矩阵形式的Bellman最优等式:
v k + 1 = f ( v k ) = m a x π ( r π + γ P π v k ) \mathbf{v}_{k+1}=f(\mathbf{v}_k) = max_{\pi}(\mathbf{r}_{\pi} + \gamma \mathbf{P}_{\pi}\mathbf{v}_k) vk+1=f(vk)=maxπ(rπ+γPπvk)
其元素形式为:
v k + 1 ( s ) = m a x π π ( a ∣ s ) ( ∑ r p ( r ∣ s , a ) + γ ∑ s ′ p ( s ′ ∣ s , a ) v k ( s ′ ) ) = m a x π ∑ a π ( a ∣ s ) q k ( s , a ) = m a x a q k ( s , a ) \begin{align*} v_{k+1}(s)&=max_{\pi} \pi(a|s) \left( \sum_r p(r | s, a) + \gamma \sum_{s'} p(s' | s, a)v_k(s') \right)\\ &=max_{\pi} \sum_a \pi(a|s)q_k(s, a)\\ &=max_a q_k(s, a) \end{align*} vk+1(s)=maxππ(as)(rp(rs,a)+γsp(ss,a)vk(s))=maxπaπ(as)qk(s,a)=maxaqk(s,a)
Procedure Summary

  • 对于任何 s s s,其最近估计值为 v k ( s ) v_k(s) vk(s)

  • 对于任何 a ∈ A ( s ) a \in \mathcal{A}(s) aA(s),计算 q k ( s , a ) = ∑ r p ( r ∣ s , a ) + γ ∑ s ′ p ( s ′ ∣ s , a ) v k ( s ′ ) q_k(s, a) = \sum_r p(r | s, a) + \gamma \sum_{s'} p(s' | s, a)v_k(s') qk(s,a)=rp(rs,a)+γsp(ss,a)vk(s)

  • s s s计算policy π k + 1 \pi_{k+1} πk+1
    π k + 1 ( a ∣ s ) = { 1 a = a k ∗ ( s ) 0 a ≠ a k ∗ ( s ) \pi_{k+1}(a|s)=\left\{\begin{matrix} 1 & a = a^*_k(s)\\ 0 & a \ne a^*_k(s) \end{matrix}\right. πk+1(as)={10a=ak(s)a=ak(s)
    其中, a k ∗ ( s ) = argmax a q k ( s , a ) a^*_k(s) = \text{argmax}_a q_k(s, a) ak(s)=argmaxaqk(s,a)

  • 计算 v k + 1 ( s ) = max a q k ( s , a ) v_{k+1}(s) = \text{max}_a q_k(s, a) vk+1(s)=maxaqk(s,a)

例:

对于下图:

在这里插入图片描述

action: a ℓ , a 0 , a r a_{\ell},a_0,a_r a,a0,ar分别代表向左、保持不变,向右。

reward:进入target area:+1,试图突破边界:-1。

q ( s , a ) q(s, a) q(s,a)值表:

在这里插入图片描述

考虑 γ = 0.9 \gamma=0.9 γ=0.9

算法目标是发现 v ∗ ( s i ) v^*(s_i) v(si) π ∗ \pi^* π

k=0:

v-value: v 0 ( s 1 ) = v 0 ( s 2 ) = v 0 ( s 3 ) = 0 v_0(s_1)=v_0(s_2)=v_0(s_3)=0 v0(s1)=v0(s2)=v0(s3)=0

q-value:

在这里插入图片描述

greedy policy:
π ( a r ∣ s 1 ) = 1 π ( a 0 ∣ s 2 ) = 1 π ( a ℓ ∣ s 3 ) = 1 \pi(a_r | s_1) = 1\\ \pi(a_0 | s_2) = 1\\ \pi(a_{\ell} | s_3) = 1 π(ars1)=1π(a0s2)=1π(as3)=1

BOE: Optimality

假设 v ∗ v^* v是Bellman最优等式的解,其满足:
v ∗ = m a x π ( r π + γ P π v ∗ ) \mathbf{v}^* = max_{\pi}(\mathbf{r}_{\pi} + \gamma \mathbf{P}_{\pi} \mathbf{v}^*) v=maxπ(rπ+γPπv)
假设:
π ∗ = argmax π ( r π + γ P π v ∗ ) \mathbf{\pi}^* = \text{argmax}_{\pi} (\mathbf{r}_{\pi} + \gamma \mathbf{P}_{\pi}\mathbf{v}^*) π=argmaxπ(rπ+γPπv)
那么:
v ∗ = r π − γ P π ∗ v ∗ \mathbf{v}^* = \mathbf{r}_{\pi} - \gamma \mathbf{P}_{\pi^*}\mathbf{v}^* v=rπγPπv
因此, π ∗ \pi^* π是策略, v ∗ = v π ∗ v^*=v_{\pi}^* v=vπ是对应的state value。

Theorem (Policy Optimality)

假设 $v^* $是 v = m a x π ( r π + γ P π v ) v = max\pi(r_\pi + \gamma P_\pi v) v=maxπ(rπ+γPπv)的唯一解, v π v_\pi vπ 是对于任何给定policy π \pi π 满足 v π = r π + γ P π v π v_\pi = r_\pi + \gamma P_\pi v_\pi vπ=rπ+γPπvπ 的state value函数,则:
v ∗ ≥ v π ∀ π v^* \ge v_{\pi} \;\;\;\;\; \forall \pi vvππ
Theorem (Greedy Optimal Policy)

对于任何 s ∈ S s \in S sS,确定的greedy policy是:
π ∗ ( a ∣ s ) = { 1 a = a ∗ ( s ) 0 a ≠ a ∗ ( s ) ( 1 ) \pi^*(a| s)= \left\{\begin{matrix} 1 & a = a^*(s) \\ 0 & a \ne a^*(s) \end{matrix}\right. \;\;\;\;\; (1) π(as)={10a=a(s)a=a(s)(1)
是BOE求得的最优policy。其中:
a ∗ ( s ) = argmax a q ∗ ( a , s ) a^*(s) = \text{argmax}_a q^*(a, s) a(s)=argmaxaq(a,s)
其中 q ∗ ( s , a ) : = ∑ r p ( r ∣ s , a ) + γ ∑ s ′ p ( s ′ ∣ s , a ) v ∗ ( s ′ ) q^*(s,a) := \sum_r p(r | s, a) + \gamma \sum_{s'} p(s' | s, a) v^*(s') q(s,a):=rp(rs,a)+γsp(ss,a)v(s)

Analyzing optimal policies

考虑BOE等式:
v ( s ) = m a x π π ( a ∣ s ) ( ∑ r p ( r ∣ s , a ) + γ ∑ s ′ p ( s ′ ∣ s , a ) v k ( s ′ ) ) v(s)=max_{\pi} \pi(a|s) \left( \sum_r p(r | s, a) + \gamma \sum_{s'} p(s' | s, a)v_k(s') \right) v(s)=maxππ(as)(rp(rs,a)+γsp(ss,a)vk(s))
有三个要素:

  • Reward: r r r
  • System model: p ( s ′ ∣ s , a ) p(s' | s, a) p(ss,a) p ( r ∣ s , a ) p(r | s, a) p(rs,a)
  • Discount rate: γ \gamma γ
  • v ( s ) , v ( s ′ ) , π ( a ∣ s ) v(s),v(s'),\pi(a|s) v(s),v(s),π(as)是未知需要计算的。

接下来,通过改变 r r r γ \gamma γ来讨论optimal policy的变化。

通过求解BOE得到最优policy和对应的最优state value。

在这里插入图片描述

敢于冒险的最优策略:进入forbidden area!

改变 γ = 0.9 \gamma = 0.9 γ=0.9 γ = 0.5 \gamma = 0.5 γ=0.5

在这里插入图片描述

最优policy变得短视! 避开所有forbidden area!

改变 γ = 0 \gamma=0 γ=0

在这里插入图片描述

最优policy变得极其短视! 另外,选择立即reward最大的行动! 达不到目标!

如果加大进入forbidden area的处罚力度(改变 r f o r b i d d e n = − 1 r_{forbidden=-1} rforbidden=1 r f o r b i d d e n = − 10 r_{forbidden}=-10 rforbidden=10

在这里插入图片描述

最优的政策也会避开forbidden area。

Theorem (Optimal Policy Invariance)

考虑一个马尔可夫决策过程,其中 v ∗ ∈ R ∣ S ∣ v^* \in \mathbb{R}^{|S|} vRS作为满足 v ∗ = m a x π ( r π + γ P π v ∗ ) v* = max_\pi(r_\pi + γP_\pi v^*) v=maxπ(rπ+γPπv)的最优状态值。如果每个奖励 r r r通过仿射变换变为 a r + b ar + b ar+b,其中 a , b ∈ R a,b \in \mathbb{R} a,bR a ≠ 0 a \ne 0 a=0,则对应的最优状态值 v ′ v' v也是 v ∗ v^* v的仿射变换。
v ′ = a v ∗ + b 1 − γ 1 v' = a v^* + \frac{b}{1 - \gamma} \mathbf{1} v=av+1γb1
其中, γ ∈ ( 0 , 1 ) \gamma \in (0, 1) γ(0,1)是discount rate, 1 = [ 1 , . . . , 1 ] T \mathbb{1} = [1, ..., 1]^T 1=[1,...,1]T。因此,最优policy对于reward信号的仿射变换是不变的。

关于无意义绕路:

在这里插入图片描述

在这里插入图片描述

走弯路不施加惩罚也可以避免优化过程中走弯路。

discount rate!

Policy ( a ) : return = 1 + γ 1 + γ 2 1 + ⋯ = 1 / ( 1 − γ ) = 10 \text{Policy}(a): \text{return}=1 + \gamma 1 + \gamma^21 + \cdots = 1 / (1 - \gamma ) = 10 Policy(a):return=1+γ1+γ21+=1/(1γ)=10

Policy(b) : return = 0 + γ 0 + γ 2 0 + ⋯ = γ 2 / ( 1 − γ ) = 8.1 \text{Policy(b)}: \text{return} = 0 + \gamma0 + \gamma^2 0 + \cdots = \gamma^2 / (1 - \gamma) = 8.1 Policy(b):return=0+γ0+γ20+=γ2/(1γ)=8.1




以上内容为B站西湖大学智能无人系统 强化学习的数学原理 公开课笔记。

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

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

相关文章

Python数据科学:Scikit-Learn机器学习

4.1Scikit-Learn机器学习 Scikit-Learn使用的数据表示&#xff1a;二维网格数据表 实例1&#xff1a;通过Seaborn导入数据 def skLearn():scikit Learn基本介绍:return:import seaborn as sns#导入Iris数据集#注&#xff1a;一般网络访问不了iris sns.load_dataset(iris)ir…

助眠神器小程序源码|白噪音|小睡眠|微信小程序前后端开源

安装要求和说明后端程序运行环境&#xff1a;NginxPHP7.4MySQL5.6 PHP程序扩展安装&#xff1a;sg11 网站运行目录设置为&#xff1a;public 伪静态规则选择&#xff1a;thinkphp 数据库修改文件路径&#xff1a;/config/database.php需要配置后端的小程序配置文件&#xff0c;…

[word] word分割线在哪里设置 #其他#经验分享

word分割线在哪里设置 在工作中有些技巧&#xff0c;可以快速提高工作效率&#xff0c;解决大部分工作&#xff0c;今天给大家分享word分割线在哪里设置的小技能&#xff0c;希望可以帮助到你。 1、快速输入分割线 输入三个【_】按下回车就是一条长直线&#xff0c;同样分别…

webgis后端安卓系统部署攻略,超详细Termux攻略

目录 前言 一、将后端项目编译ARM64 二、安卓手机安装termux 1.更换为国内源 2.安装ssh远程访问 3.安装文件远程访问 三、安装postgis数据库 1.安装数据库 2.数据库配置 3.数据导入 四、后端项目部署 五、自启动设置 总结 前言 因为之前一直做的H5APP开发&#xf…

webpack面试解析

参考&#xff1a; 上一篇webpack相关的系列&#xff1a;webpack深入学习&#xff0c;搭建和优化react项目 爪哇教育字节面试官解析webpack-路白 1、Webpack中的module是什么&#xff1f; 通常来讲&#xff0c;一个 module 模块就是指一个文件中导出的内容&#xff0c;webpack…

Amber-Leedcode-Java - 代码随想录打卡第38 - 39天-动态规划汇总

本质上感觉是一个相加的问题&#xff0c;状态的转换&#xff0c;由前一种状态推至下一种状态509. 斐波那契数 较为简单 746. 使用最小花费爬楼梯 62. 不同路径 一开始写的时候被吓到了&#xff0c;但是发现听完一半之后再写还是比较容易的 对于我而言主要是找到逻辑&#xf…

Vue3+Ant-Design-Vue:报错Cannot read properties of null (reading ‘isCE‘)

问题描述 在使用Ant-Design-Vue内置的Table表格组件&#xff0c;实现expand展开行功能时&#xff0c;报错&#xff1a;Uncaught TypeError: Cannot read properties of null (reading ‘isCE‘) 。 报错信息图示&#xff1a; 在GitHub上找到如下描述&#xff0c; 解决方案 网上…

【漏洞复现】和为顺IP-COM WiFi未授权下载漏洞

Nx01 产品简介 深圳市和为顺网络技术有限公司是一家聚焦于商用级网络通信设备的研发与应用&#xff0c;为全球中小型企业提供高速、安全、易维护的网络设备产品和解决方案的公司。 Nx02 漏洞描述 深圳市和为顺网络技术有限公司IP-COM WiFi方案解决专家存在任意文件下载漏洞&am…

springsecurity6使用

spring security 中的类 &#xff1a; AuthenticationManager : 实现类&#xff1a;ProviderManager 管理很多的 provider &#xff0c;&#xff0c;&#xff0c; 经常使用的&#xff0c;DaoAuthenticationProvider , 这个要设置一个 UserDetailService , 查找数据库&#xff…

分享88个CSS3特效,总有一款适合您

分享88个CSS3特效&#xff0c;总有一款适合您 88个CSS3特效下载链接&#xff1a;https://pan.baidu.com/s/1pDAyFESnO8HSnCZj4-DOzQ?pwd8888 提取码&#xff1a;8888 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;收集整理更不…

第13章 网络 Page724 asio定时器

程序代码&#xff1a; 11行&#xff0c;声明一个ios对象 13行&#xff0c;使用ios对象作为参数声明一个定时器&#xff0c;此时&#xff0c;定时器和ios完成了关联&#xff0c;后面定时器如果有任务的话&#xff0c;就可以将任务交给ios 16行&#xff0c;为定时器设置一个定…

【日常聊聊】新年新征程:迎接学习的挑战

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;日常聊聊 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 结语 我的其他博客 前言 随着新的一年的到来&#xff0c;程序员们站在了全新的起点。这是一个充满机遇和挑战的时刻&#xff0…

【JavaEE】_HTTP请求与响应

目录 1. HTTP协议 1.1 HTTP简介 1.2 Fiddler 2. HTTP请求 2.1 首行 2.2 请求头&#xff08;header&#xff09; 2.3 空行 2.4 正文&#xff08;body&#xff09; 3. HTTP响应 3.1 首行 3.2 响应头&#xff08;header&#xff09; 3.3 空行 3.4 正文&#xff08;bo…

51单片机编程基础(C语言):LED点阵屏

点阵屏介绍 类似于数码管&#xff0c;要用到肉眼视觉效应。扫描&#xff0c;才能把每一个LED都能选中&#xff0c;从而显示我们想要的图形&#xff0c;否则&#xff0c; 只能一次点亮一个LED&#xff0c; LED使用 51单片机点阵屏电路图&#xff1a; 实际连接顺序如下图&#…

爱快使用VPN

文章目录 一、VPN服务器1. 各种VPN比较2. PPTP服务端配置3. 创建登录账号4. 创建端口映射5. 设置动态域名 二、Windows客户端1. 连接配置2. 不能连接 Internet 配置 一、VPN服务器 1. 各种VPN比较 PPTPIPSECOpenVPN简介微软推出的VPN协议&#xff0c;占用资源少更高级的VPN协…

php基础学习之分支结构和循环结构(不细讲,来对比一下和两大常用高级编程语言(C++/Java)的细微区别以便记忆)

分支结构 常见分支结构 编程语言常见分支结构有&#xff1a; if语句if-else语句if-elseif-else语句switch语句 其中&#xff0c;除了if-elseif-else语句外&#xff0c;另外3中分支语句在php中和C/Java是一模一样的&#xff01; 而if-elseif-else的唯一不同点就在&#xff0c;【…

Linux查看日志的几种方法总结

摘要 Linux系统中查看日志的命令确实多种多样&#xff0c;每个命令都有其特定的用途和优势。常用的命令有&#xff1a;tail、cat、tac、head、echo&#xff0c;grep、less、awk、sed。 下面我会详细解释这些命令在查看日志时的用法和特点&#xff1a; tail命令&#xff1a; ta…

机器学习:ROC曲线笔记

ROC曲线&#xff08;Receiver Operating Characteristic Curve&#xff09;是一种用于评估二分类模型性能的图形化工具&#xff0c;主要用于展示在不同阈值&#xff08;Threshold&#xff09;下模型的真阳性率&#xff08;True Positive Rate&#xff0c;TPR&#xff09;和假阳…

寒假作业:2024/2/14

作业1&#xff1a;编程实现二维数组的杨辉三角 代码&#xff1a; #include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc, const char *argv[]) {int n;printf("please enter n:");scanf("%d",&n);int a…

Redis核心技术与实战【学习笔记】 - 31.番外篇:Redis客户端如何与服务器端交换命令和数据

简述 Redis 使用 RESP 协议&#xff08;Redis Serialzation Protocol&#xff09;协议定义了客户端和服务器端交互的命令、数据的编码格式。在 Redis 2.0 版本中&#xff0c;RESP 协议正式称为客户端和服务器端的标准通信协议。从 Redis 2.0 到 Redis 5.0 &#xff0c;RESP 协…