基于霍克斯过程的限价订单簿模型下的深度强化学习做市策略

 

数量技术宅团队在CSDN学院推出了量化投资系列课程

欢迎有兴趣系统学习量化投资的同学,点击下方链接报名:

量化投资速成营(入门课程)

Python股票量化投资

Python期货量化投资

Python数字货币量化投资

C++语言CTP期货交易系统开发

数字货币JavaScript语言量化交易系统开发


相关研究总述

最优做市 (MM) 是在限价订单簿 (LOB) 的两侧同时下达买订单和卖订单的问题,目的是最大化交易者的最终收益率,同时最小化相关风险。 可以说,其中最突出的是库存风险,它源于交易者(做市商)在其库存中持有的标的资产的价格变动。 规避风险的做市商通常更愿意将其库存始终保持在接近于零的水平。 为了实现这一点,需要根据当前库存和其他相关变量不断调整下单(控制)价格。 这产生了 MM 作为随机最优控制问题的自然公式。 在最常用的框架内,首先在开创性的 Avellaneda-Stoikov (AS) 论文 [1] 中使用,后来被大量研究人员 [2]-[4] 研究和推广,问题归结为减少相关的 Hamilton- Jacobi-Bellman 方程转化为常微分方程 (ODE) 系统,并最终推导出最优 MM 控制的封闭形式近似。 或者,可以通过(深度)强化学习等技术获得接近最优的控制。

强化学习 (RL) 是一类用于在不确定条件下进行顺序决策的基于试错法的方法,用于解决构造为马尔可夫决策过程 (MDP) 的随机最优控制问题。 RL 方法在与深度神经网络(用作函数逼近器)结合时特别强大,合并到深度强化学习 (DRL) 的新领域。 近年来,从围棋游戏 [5] 到文本生成 [6] 和网络控制系统 [7] 等不同领域,DRL 取得了许多惊人的成就。 不出所料,如今人们对 (D)RL 在 MM 问题上的应用产生了浓厚的兴趣,MM 问题自然被定义为离散时间 MDP。

在 [8] 中,作者介绍了他们宣称是 RL 在高频交易中优化 MM 的第一个实际应用,使用 [9] 中提出的 LOB 模型通过简单的离散 Q-Learning 训练 RL 代理。 然后作者证明他们的框架优于 AS 和固定偏移量基准。 有点类似,Spooner 等人。 [10] 使用带有瓦片编码线性组合的 SARSA 算法作为价值函数逼近器来生成 RL 代理,该代理在多种证券中表现出卓越的样本外性能。 Sadighian [11] 开发了一个加密货币 MM 框架,该框架采用两种先进的基于策略梯度的 RL 算法(A2C 和 PPO)和一个由 LOB 数据和订单流到达统计信息组成的状态空间。 Gaˇsperov 和 Kostanjˇcar [12] 提出了一个以对抗性强化学习和神经进化的思想为基础的框架,实验结果证明了其优越的风险回报性能。 其他值得注意的方法引入了额外的功能,如暗池的存在 [13]、公司债券中的多资产 MM [14] 和交易商市场 [15]。

无论使用何种方法,原始的 LOB 建模,理想地考虑市场微观结构的经验属性和程式化事实以及 LOB 本身的离散性质,对于获得高性能 MM 控制器至关重要。 然而,由于它们所基于的天真假设,大多数当代 MM 方法的 LOB 模型在方向、时间和数量方面仍然不一致,导致回测和荒谬事件下的虚假收益 [16],比如价格在之后下跌 一个大的买入市场订单。 举个例子,在最初的 AS 模型 [1] 中,假设价格变动完全独立于市场订单的到达和 LOB 动态,而随后的方法仅部分解决了这种不一致。 为了改善这一点,[16] 中提出了一种新颖的弱一致性纯跳跃市场模型,该模型可确保价格动态与 LOB 动态在方向和时间方面保持一致。 尽管如此,它仍然假设订单到达强度恒定,这意味着各种类型的 LOB 订单到达之间的任何(经验发现的)自我或相互激励和抑制的影响仍然无法解释。

在本文中,我们考虑了做市商在弱一致性、基于多变量霍克斯过程的 LOB 模型中进行交易的随机最优控制问题。 据作者所知,我们的方法是第一个在这种模型下将 DRL 与 MM 结合起来的方法。 一方面,我们的目标是增加现有 MM 模型的真实性,例如 [16] 中提出的模型。 鉴于霍克斯过程通常用于市场微观结构的现实建模 [17]-[19],我们选择这样的模型,然后将其用作我们模拟器的支柱。 另一方面,我们还需要确保不危及易处理性。 为此,我们避免使用完整的 LOB 模型(因为相关的复杂性和问题 [16]),而是选择简化形式的 LOB 模型。 此外,还做出了一些关于微观结构动力学的额外简化假设。 因此,我们工作的基础是仔细考虑复杂性和易处理性之间的平衡。从做市商的控制(选择限价和市价订单)影响订单到达强度,即市场响应的意义上讲,该模型也是交互式的 动态地对做市商的控制策略。 所提出的方法有助于(在我们看来)弱一致 LOB 模型下 MM 研究的代表性不足 [16]。 它还可以利用蒙特卡罗回测的优势,特别是它执行受控随机实验的能力 [20]。

准备工作

多元霍克斯过程

p 维线性霍克斯过程 [21] 是一个 p 维点过程 N(t) = (Nk(t) : k = 1,...,p),Nk(第 k 维)的强度由下式给出 :

其中 µk ≥ 0 是基线强度,Nl(t) 对应于第 l 个维度的 [0,t] 内的到达数,fk,l(t) 内核(触发函数)。 对于 t > s,维度 l 的到达扰动维度 k 在时间 t 到达的强度 fk,l(t−s)。 多元线性霍克斯过程相对容易处理,并且由于其分支结构表示 [22],因此很适合模拟和解释。 在使用指数内核的情况下,强度由下式给出:

其中 βk,l ≥ 0 和 αk,l ≥ 0 是衰减和激发参数。

模型

事件类型

我们采用 Biais [23] 提出的 LOB 事件分类,包括 12 种不同类型的 LOB 事件,如下图所示。为简单起见,不考虑非典型订单,例如冰山订单或(部分)隐藏订单 . 激进的市价单、限价单和取消(类型 1-6 的事件)会影响买入价或卖出价,因此也会影响中间价。 非激进市价订单(类型 7-8)不影响任何价格; 但是,它们会产生交易并影响 LOB 顶部的交易量,因此与 MM 相关。 非激进限价订单和取消(类型 9-12)既不影响 LOB 顶部的价格也不影响交易量,因此被忽略。 因此,我们总共考虑了 8 种事件类型:

其中上标表示(非)攻击性,下标表示一侧(买/卖)。 生成的 LOB 模型在 [16] 之后是弱一致的。 允许可变跳跃大小,LOB 动态由 8 变量标记点过程建模,其中标记表示跳跃大小。 对应的计数过程为:

以及相关的强度向量:

在用 Je 表示与单个事件 e 关联的跳跃大小(以滴答为单位)后,中间价格 Pt 由下式给出:

其中 P0 是初始价格,δ 是报单量大小,T(e) 是事件 e 的类型,Einc = {Ma b ,La b,Ca s},Edec = {Ma s ,La s,Ca b}。 为了简单起见,假设跳跃大小与跳跃时间独立同分布且无关。 (与 [16] 中的类似)。

仿真过程

具有指数内核的多元线性霍克斯过程用于对不同 LOB 顺序到达(即事件类型)之间的依赖性(即交叉激励和自激励效应)进行建模。 选择指数内核的动机是它们易于模拟,并且适用于对描述市场微观结构的短期记忆过程进行建模,因此它们传统上用于金融应用程序 [24] [25]。 此外,它们的使用方便地导致过程的马尔可夫特性 [17] [26]。 为了模拟多元霍克斯过程,我们依赖 Ogata 的改进细化算法 [27]。

做市程序

MM 过程大致遵循 [1] 中描述的过程。 在每个时间步的开始,在时间 t,代理(控制器)取消其未完成的限价订单(如果有的话),并观察包含市场和基于代理的特征的环境状态 St。 代理使用此信息来选择操作 At - 它决定是发布限价订单(以及以什么价格)或市场订单。 如果代理人库存的绝对值等于库存约束c,c∈N,则忽略对应方的订单。 所有相关的市场(中间价、买价和卖价、价差)和基于代理的(库存、现金)变量都会相应更新。 接下来,依次处理模拟程序生成的 LOB 事件,然后对相关变量进行相应的更新。 在下一个时间步长开始之前,已执行的限价单不能被新的替代。 最后,智能体到达时间步的末尾并收到奖励 Rt+Δt。 当到达时间 t + Δt 时,上一时间步未执行的限价订单被取消,智能体观察环境的新状态 St + Δt,选择动作 At + Δt 并迭代该过程直到终止时间 T . agent's inventory 由以下关系描述:

其中 Nb t 、 Na t 、 Nmb t 和 Nms t 分别表示到时间 t 为止执行的代理的限价买单、限价卖单、市价买单和市价卖单的数量。 Nb t 过程描述为:

其中 1fill, Ma s (1fill, Mn s ) 是传入(非)激进市价订单是否满足做市商限价订单的指标函数。 过程 Na t 类似地描述。 最后,代理程序的现金处理 Xt 由下式给出:

其中 Qa t (Qb t) 表示发布做市商的要价(出价)报价,Pa t (Pb t ) 为最佳要价(出价),t 表示所有在时间 t由于费用和市场影响而产生的额外成本。 此外,还做出了一些简化假设:

做市商提交的市价订单激进的概率为 Z1,其限价订单取消的激进概率为 Z2。

密度由 f(x) = 1 /β * exp (−(x−µ)/β) 给出的指数分布用于模拟与激进事件相关的价格跳跃 Je 的大小,其中 µ 是位置,β 是尺度参数。 在需要的情况下(即具有激进的限价订单和取消),使用具有相应参数的截断指数分布。

在非激进市价单到达后,以最佳买入/卖出价执行做市商限价单的概率由 Z3 确定并给出。 限价订单要么全部执行,要么根本不执行。

强化学习控制器

状态空间

状态空间由当前库存It、当前买卖差价Δt、趋势变量αt组成:

由于库存限制,有 2c + 1 种可能的库存状态,即 It ∈ {−c,...,c}。 当前的 bidask 价差 Δt 以刻度为单位测量并且严格为正。 变量 αt 说明了趋势并计算为 αt = λMa b (t) + λMn b (t)−λMa s (t)−λMn s (t)。 库存特征通过最小-最大归一化来归一化。 由于特征 Δt 和 αt 具有未知的均值和方差,我们通过控制器生成一个具有 100,000 步的长轨迹,该控制器输出完全随机的动作,并将获得的均值和方差用于 z-score 归一化。

动作空间

在时间 t 的操作(即控制)对应于最佳买入(卖出)价格的一对偏移量。 因此:

允许代理人以所有可能的价格发布限价订单,从而确定 LOB 每一侧的激进/保守水平。 如果代理发布一个带有负报价差价的限价订单对,则该操作将被忽略。 在最佳卖价(买价)或以上(以下)发布的买(卖)单被视为买(卖)市价单并立即执行。 假设做市商发送的所有限价单和市价单都具有单位大小(即针对资产的一个单位),并且控件四舍五入为报价大小的倍数。

奖励函数

MM代理的目标是最大化终端财富的期望,同时最小化库存风险。 我们从 [4] 中描述的常用 MM 公式中汲取灵感,并假设做市商最大化以下表达式:

在 RL 策略集上。 每个策略 π : S → P(A) 将状态映射到动作空间上的概率分布。Wt = It*Pt + Xt 是时间 t 的总财富,T 是终端时间,φ ≥ 0 是运行库存惩罚参数,用于阻止做市商持有非零头寸,从而使自己面临库存风险。 请注意,与 [4] 不同,我们使用库存的绝对值而不是二次库存惩罚来获得方便的风险价值 (VaR) 解释。 因此,时间 t + Δt 的奖励由下式给出:

被积函数是分段常数,因此是可以忽略的。

控制器设计

具有 64 个神经元的 2 个完全连接的隐藏层和 ReLU 激活的神经网络用于表示控制器。 这种相对较浅的架构在某种程度上是 DRL 中的标准,而且,之前已经证明简单的 NN 架构在 LOB 建模方面的性能与(或优于)复杂的 CNN-LSTM 架构相当[28]。

训练

SAC(Soft Actor-Critic)用于在我们的实验中训练 RL 控制器。 SAC 是一种最先进的 RL 算法,能够处理连续的动作空间,其特点是鲁棒性更高,并且能够学习多种接近最优行为的模式。 它是一种最大熵算法,这意味着它不仅使回报最大化,而且使策略熵最大化,从而改进探索。 或者,可以使用 DQN; 然而,我们的实验表明它存在严重的不稳定问题,尤其是在其原版版本中。 TD3(Twin Delayed DDPG)也曾被考虑过,但最终由于性能较差而被排除在外。 训练时间步数设置为 10的6次方。

实验

为了将我们的 DRL 方法的性能与 MM 基准进行对比,我们使用模拟器生成的合成数据执行蒙特卡罗模拟(回测)。 模拟次数设置为 10的3次方。像 AS [1] 近似这样的标准 MM 基准不适合我们的框架,因为它们既没有考虑 bid ask 传播的存在,也没有考虑基础 LOB [29] 的离散性质。 因此,我们需要转向替代基准。 我们考虑一类库存线性的 MM 策略,包括库存限制。 在这个类别的成员中,我们将表现最好的一个称为 LIN 策略。 请注意,此类策略还包括最先进的 Gueant-Lehalle-Fernandez-Tapia (GLFT) [3] 近似。 此外,我们考虑一个简单的策略(SYM 策略),它始终准确地以最佳出价和最佳要价放置限价单。

风险和绩效指标

每个策略都通过许多风险/绩效指标进行评估,尤其包括以下内容:

损益 (PnL) 分布统计、平均单次回报、平均绝对仓位 (MAP)、夏普比率、(MeanPnL)/MAP- 平均终末财富 (PnL) 与 MAP 的比值

实验结果

详细结果(PnL 和终端库存分布的分布统计以及所有策略的附加风险指标)在上表中提供。策略的终端 PnL 和库存分布以及高斯核密度如下图所示估计。

结果清楚地表明,就绝大多数考虑的指标而言,DRL 策略优于两个基准。 当与 SYM 和 LIN 策略并列时,DRL 策略性能结果显示出相当高的平均 PnL 值以及更有利的夏普比率。 PnL 分布(也解释为 VaR)的百分位数也表明其主要表现。 正如预期的那样,由于库存惩罚的影响,它的 MAP 相当低,这意味着该策略在 MM 上取得成功,而不会使交易者面临高库存风险。 另请注意其 PnL 分布的峰度值显着降低,表明尾部较细,这是风险管理目的的理想属性,以及略小的 PnL 分布偏度。 我们还观察到,Jarque-Bera 检验结果表明所有策略与零假设(PnL 分布的正态性)不一致。 有趣的是,比较 SYM 和 LIN 策略,后者以较低的预期 PnL 为代价表现出较低的风险,类似于 AS 研究 [1] 的结果。 所有策略的终端库存分布都以零为中心,展示了 MM 行为的明显迹象(头寸围绕零库存波动)。 我们观察到 DRL 和 LIN 策略对应的终端库存分布看起来非常相似,表明具有可比性的风险偏好。 相反,注意SYM策略对应的绝对平均终端库存分布的大小,清楚地表明其无视库存风险。 下图描绘了 DRL 策略在时间上的平均性能以及相关的置信区间,平均 PnL 随时间(看似)线性增长。

敏感性分析

理想情况下,我们希望获得对潜在订单到达强度率的变化具有鲁棒性的 MM 控制。 相关地,我们通过改变所有订单类型的背景强度率来对 DRL 控制器进行灵敏度分析——特别是通过添加正常(高斯)噪声。更准确地说,考虑了三种不同的噪声大小——基于均值 0 和方差 0.1 (DRLN-0.1)、方差 0.2 (DRL-N-0.2) 和方差 0.3 (DRLN-0.3) 的高斯噪声。 结果示下表。

显然,较大的扰动会增加终端 PnL 分布的标准偏差,而对均值的影响则更为复杂,最大的噪声大小会导致最大的均值 PnL(以及 MAP)。 不出所料,随着扰动大小的增加,夏普比率明显下降(而 MAP 增加)。此外,我们调查了我们的策略和基准策略在不同交易成本下的表现。 下图显示了三种策略的夏普比率和可变限价单交易费率。

从图中可以清楚地看出,DRL 策略能够容忍包含限价订单交易的费用,最高可达 0.6% 左右的费用。 相反,LIN 策略已经产生负利润,费用设置为 0.4%,而 SYM 策略对此类交易费用的容忍度极低,即使是相对较低的 0.2%。 所考虑的比率处于现实范围内,因此这验证了我们的 DRL 方法在实盘条件下的性能。 最后,我们在不同的限价订单交易费用下重新训练 DRL 控制器,并调查相应的平均交易数量。 在限价订单交易成本分别为 0%、0.2%、0.4% 和 0.6% 的情况下,平均交易笔数分别为 24.54、15.0、11.28 和 7.85。 结果清楚地表明,较高的限价订单交易成本,正如预期的那样,会导致较少的已实现交易(交易),因为 DRL 控制器在存在高交易成本的情况下越来越区分何时以及是否发布限价订单。

结论与代码

与启发式基准相比,基于 DRL 的方法可用于获得具有卓越性能的做市策略。 当采用基于多变量霍克斯过程的现实 LOB 模拟器时,该方法会产生可喜的结果。 特别关注由此产生的 PnL 和终端库存分布的统计分析,以及对基础订单强度率和限价订单费用变化的敏感性分析。 我们得出结论,DRL 提供了一种获得有竞争力的 MM 控制器的可行方法。 进一步的研究可能会考虑更高级的 MM 模型,这些模型考虑了完整的限价订单簿,或者基于具有替代(幂律或多项式)内核的霍克斯过程。 最后,鲁棒的对抗性 RL [31] 可用于进一步提高模型不确定性下的泛化和鲁棒性。

本文配套代码(Python),关注wx工中浩 数量技术宅 ,回复关键词:强化学习做市,即可获取。

参考文献

[1] Avellaneda, M. and Stoikov, S., 2008. High-frequency trading in a limit order book. Quantitative Finance, 8(3), pp.217-224.

[2] Fodra, P. and Pham, H., 2015. High frequency trading and asymptotics for small risk aversion in a Markov renewal model. SIAM Journal on Financial Mathematics, 6(1), pp.656-684.

[3] Gu´eant, O., Lehalle, C.A. and Fernandez-Tapia, J., 2013. Dealing with the inventory risk: a solution to the market making problem. Mathematics and financial economics, 7(4), pp.477-507.

[4] Cartea, A., Jaimungal, S. and Ricci, J., 2018. Algorithmic trading, stochastic control, and mutually exciting processes. SIAM Review, 60(3), pp.673-703.

[5] Silver, D., Huang, A., Maddison, C.J., Guez, A., Sifre, L., Van Den Driessche, G., Schrittwieser, J., Antonoglou, I., Panneershelvam, V., Lanctot, M. and Dieleman, S., 2016. Mastering the game of Go with deep neural networks and tree search. Nature, 529(7587), pp.484-489.

[6] Ranzato, M.A., Chopra, S., Auli, M. and Zaremba, W., 2015. Sequence level training with recurrent neural networks. arXiv preprint arXiv:1511.06732.

[7] Demirel, B., Ramaswamy, A., Quevedo, D.E. and Karl, H., 2018. Deepcas: A deep reinforcement learning algorithm for control-aware scheduling. IEEE Control Systems Letters, 2(4), pp.737-742.

[8] Lim, Y.S. and Gorse, D., 2018, April. Reinforcement learning for high-frequency market making. In ESANN 2018-Proceedings, European Symposium on Artificial Neural Networks, Computational Intelligence and Machine Learning (pp. 521-526). ESANN.

[9] Cont, R., Stoikov, S. and Talreja, R., 2010. A stochastic model for order book dynamics. Operations research, 58(3), pp.549-563.

[10] Spooner, T., Fearnley, J., Savani, R. and Koukorinis, A., 2018. Market making via reinforcement learning. arXiv preprint arXiv:1804.04216.

[11] Sadighian, J., 2019. Deep reinforcement learning in cryptocurrency market making. arXiv preprint arXiv:1911.08647.

[12] Gaˇsperov, B. and Kostanjˇcar, Z., 2021. Market Making With Signals Through Deep Reinforcement Learning. IEEE Access, 9, pp.6161161622.

[13] Baldacci, B., Manziuk, I., Mastrolia, T. and Rosenbaum, M., 2019. Market making and incentives design in the presence of a dark pool: a deep reinforcement learning approach. arXiv preprint arXiv:1912.01129.

[14] Gu´eant, O. and Manziuk, I., 2019. Deep reinforcement learning for market making in corporate bonds: beating the curse of dimensionality. Applied Mathematical Finance, 26(5), pp.387-452.

[15] Ganesh, S., Vadori, N., Xu, M., Zheng, H., Reddy, P. and Veloso, M., 2019. Reinforcement learning for market making in a multi-agent dealer market. arXiv preprint arXiv:1911.05892.

[16] Law, B. and Viens, F., 2019. Market making under a weakly consistent limit order book model. High Frequency, 2(3-4), pp.215-238.

[17] Bacry, E., Mastromatteo, I. and Muzy, J.F., 2015. Hawkes processes in finance. Market Microstructure and Liquidity, 1(01), p.1550005.

[18] Lu, X. and Abergel, F., 2018. High-dimensional Hawkes processes for limit order books: modelling, empirical analysis and numerical calibration. Quantitative Finance, 18(2), pp.249-264.

[19] Da Fonseca, J. and Zaatour, R., 2014. Hawkes process: Fast calibration, application to trade clustering, and diffusive limit. Journal of Futures Markets, 34(6), pp.548-579.

[20] Lopez de Prado, M., 2019. Tactical investment algorithms. Available at SSRN 3459866.

[21] Embrechts, P., Liniger, T. and Lin, L., 2011. Multivariate Hawkes processes: an application to financial data. Journal of Applied Probability, 48(A), pp.367-378.

[22] Law, B. and Viens, F., 2016. Hawkes processes and their applications to high-frequency data modeling. Handbook of High-Frequency Trading and Modeling in Finance, 9, p.183.

[23] Biais, B., Hillion, P. and Spatt, C., 1995. An empirical analysis of the limit order book and the order flow in the Paris Bourse. the Journal of Finance, 50(5), pp.1655-1689.

[24] Filimonov, V. and Sornette, D., 2015. Apparent criticality and calibration issues in the Hawkes self-excited point process model: application to high-frequency financial data. Quantitative Finance, 15(8), pp.12931314.

[25] Simon, G., 2016. Hawkes Processes in Finance: A Review with Simulations (Doctoral dissertation, University of Oregon).

[26] Oakes, D., 1975. The Markovian self-exciting process. Journal of Applied Probability, 12(1), pp.69-77.

[27] Ogata, Y., 1981. On Lewis’ simulation method for point processes. IEEE Transactions on Information Theory, 27(1), pp.23-31.

[28] Briola, A., Turiel, J. and Aste, T., 2020. Deep Learning modeling of Limit Order Book: a comparative perspective. arXiv preprint arXiv:2007.07319.

[29] Gu´eant, O., 2016. The Financial Mathematics of Market Liquidity: From optimal execution to market making (Vol. 33). CRC Press.

[30] Coates, J.M. and Page, L., 2009. A note on trader Sharpe Ratios. PloS one, 4(11), p.e8036.

[31] Pinto, L., Davidson, J., Sukthankar, R. and Gupta, A., 2017, July. Robust adversarial reinforcement learning. In International Conference on Machine Learning (pp. 2817-2826). PMLR.

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

import.meta.glob() 如何导入多个目录下的资源

import.meta.glob() 如何导入多个目录下的资源 刚开始用 vite,在做动态路由的时候遇到了这个问题,看到其它教程上都是只引用了一个目录层级的内容,比如这样: let RouterModules import.meta.glob("/src/view/*/*.vue"…

网络运维与网络安全 学习笔记2023.11.21

网络运维与网络安全 学习笔记 第二十二天 今日目标 端口隔离原理与配置、路由原理和配置、配置多路由器静态路由 配置默认路由、VLAN间通信之路由器 端口隔离原理与配置 端口隔离概述 实现报文之间的2层隔离,除了使用VLAN技术以后,还可以使用端口隔…

蓝桥杯每日一题2023.11.21

题目描述 “蓝桥杯”练习系统 (lanqiao.cn) 题目分析 思路&#xff1a; 1.去重排序将其进行预处理 2.用gcd得到最简比值 3.用gcd_sub分别计算分子、分母的指数最大公约数 #include<bits/stdc.h> using namespace std; const int N 110; typedef long long ll; ll…

图Graph的存储、图的广度优先搜索和深度优先搜索(待更新)

目录 一、图的两种存储方式 1.邻接矩阵 2.邻接表 生活中处处有图Graph的影子&#xff0c;例如交通图&#xff0c;地图&#xff0c;电路图等&#xff0c;形象的表示点与点之间的联系。 首先简单介绍一下图的概念和类型&#xff1a; 图的的定义&#xff1a;图是由一组顶点和一…

11.21序列检测,状态机比较与代码,按键消抖原理

序列检测 用一个atemp存储之前的所有状态&#xff0c;即之前出现的七位 含无关项检测 要检测011XXX110 对于暂时变量的高位&#xff0c;位数越高就是越早出现的数字&#xff0c;因为新的数字存储在TEMP的最低位 不重叠序列检测 &#xff0c;一组一组 011100 timescale 1ns…

合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(三)

基于ARM语音识别的智能家居系统 我们上一篇&#xff0c;我们实现在Linux系统下编译程序&#xff0c;我们首先通过两个小练习来熟悉一下如何去编译。今天&#xff0c;我们来介绍一下LCD屏幕基本使用。 一、LCD屏幕基本使用 如何使用LCD屏幕&#xff1f; 1、打开开发板LCD设…

JSP编写自己的第一个WebServlet实现客户端与服务端交互

我们在项目中找到java目录 下面有一个包路径 然后 我们在下面创建一个类 我这里叫 TransmissionTest 当然 名字是顺便取的 参考代码如下 package com.example.dom;import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet…

【精选】OpenCV多视角摄像头融合的目标检测系统:全面部署指南&源代码

1.研究背景与意义 随着计算机视觉和图像处理技术的快速发展&#xff0c;人们对于多摄像头拼接行人检测系统的需求日益增加。这种系统可以利用多个摄像头的视角&#xff0c;实时监测和跟踪行人的活动&#xff0c;为公共安全、交通管理、视频监控等领域提供重要的支持和帮助。 …

宏集新闻 | 虹科传感器事业部正式更名为宏集科技

致一直支持“虹科传感器”的朋友们&#xff1a; 为进一步整合资源&#xff0c;给您带来更全面、更优质的服务&#xff0c;我们非常荣幸地宣布&#xff0c;虹科传感器事业部已正式更名为宏集科技。这一重要的改变代表了虹科持续发展进程中的新里程碑&#xff0c;也体现了我们在传…

【brpc学习实践四】异步请求案例详解

注意 使用的还是源码的案例&#xff0c;添加个人注解。在前面的篇章我们讲解了客户端、服务端rpc构造的基本流程及同步、异步的案例基础之后&#xff0c;再理解此案例就容易了。 想直接看案例实现请看&#xff1a; server端实现 client端实现 服务端要点概览 controller ser…

同为科技(TOWE)智能机柜PDU助力上海华为数据中心完善机房末端配电

智能时代加速而来&#xff0c;最大的需求是算力&#xff0c;最关键的基础设施是数据中心。作为一家在信息通信领域拥有多年经验和技术积累的公司&#xff0c;华为在全国多个地区都设有数据中心&#xff0c;如知名的贵州贵安华为云全球总部、内蒙古乌兰察布华为数据中心等&#…

git -1

1.创建第一个仓库并配置local用户信息 git config git config --global 对当前用户所有仓库有效 git config --system 对系统所有登录的用户有效 git config --local 只对某个仓库有效 git config --list 显示配置 git config --list --global 所有仓库 git config --list…

机器视觉兄弟们,新工作之前,不要过度准备

大家对工作的渴望我感同身受&#xff0c;有人去机器视觉培训机构培训&#xff0c;有人默默无闻地努力学习&#xff0c;不都是为了一份高新好工作吗&#xff1f; 实际上是&#xff1a; 技术高的人&#xff0c;劳动力贬值。 技术低的人&#xff0c;没有生存空间。 你有野心&…

HarmonyOS从基础到实战-高性能华为在线答题元服务

最近看到美团、新浪、去哪儿多家互联网企业启动鸿蒙原生应用开发&#xff0c;这个HarmonyOS NEXT越来越引人关注。奈何当前不面向个人开发者开放&#xff0c;但是我们可以尝试下鸿蒙新的应用形态——元服务的开发。 元服务是基于HarmonyOS提供的一种面向未来的服务提供方式&…

『亚马逊云科技产品测评』活动征文|搭建Squoosh图片在线压缩工具

搭建Squoosh图片在线压缩工具 前言一、Squoosh是什么&#xff1f;二、准备一台Lightsail实例1.进入控制台2.创建实例3.开放端口4.部署Squoosh5.预览 三、搭建反向代理1. 安装宝塔2. 配置反向代理3. 预览代理效果 提示&#xff1a;授权声明&#xff1a;本篇文章授权活动官方亚马…

Spark---核心介绍

一、Spark核心 1、RDD 1&#xff09;、概念&#xff1a; RDD&#xff08;Resilient Distributed Datest&#xff09;&#xff0c;弹性分布式数据集。 2&#xff09;、RDD的五大特性&#xff1a; 1、RDD是由一系列的partition组成的 2、函数是作用在每一个partition(split…

JVM的垃圾收集算法

1.算法的分类 1.1标记清除算法 第一步&#xff1a;标记&#xff08;找出内存中需要回收的对象&#xff0c;并且把它们标记出来&#xff09; 根据可达性算法&#xff0c;标记的是存活的对象&#xff0c;然后将其他的空间进行回收 第二步&#xff1a;清除&#xff08;清除掉被…

气相色谱质谱仪样品传输装置中电动针阀和微泄漏阀的解决方案

标题 摘要&#xff1a;针对目前国内外各种质谱仪压差法进样装置无法准确控制进气流量&#xff0c;且无相应配套产品的问题&#xff0c;本文提出了相应的解决方案和配套部件。解决方案主要解决了制作更小流量毛细管和毛细管进气端真空压力精密控制问题&#xff0c;微流量毛细管的…

Qt TCP相关的一些整理:服务端常见操作 socket 通信 network

目录 前言&#xff1a; 1、相关的库和类 2、服务端常用API 核心代码呈上&#xff1a; 前言&#xff1a; 在Qt的服务端上&#xff0c;不单单会用到服务端本身的API&#xff0c;对连接上来的客户端&#xff0c;也需要进行数据交互&#xff0c;也要用到一些收发包相关的…

Linux(5):Linux 磁盘与文件管理系统

认识 Linux 文件系统 磁盘的物理组成&#xff1a; 1.圆形的磁盘盘(主要记录数据的部分); 2.机械手臂&#xff0c;与在机械手臂上的磁盘读取头(可擦写磁盘盘上的数据)&#xff1b; 3.主轴马达&#xff0c;可以转动磁盘盘&#xff0c;让机械手臂的读取头在磁盘盘上读写数据。 4…