【2025年五一数学建模竞赛】A题 解题思路与模型代码

2025年五一数学建模竞赛 A题

问题一:推测支路 1 和支路 2 的车流量

1.1 问题描述

根据提供的主路历史数据以及已知的支路车流量变化趋势(支路1呈线性增长,支路2先线性增长后线性减少),推测这两个支路在特定时间段(6:58 到 8:58)内的车流量函数。

1.2 思路分析

(1) 数据预处理:将时间点(如 6:58, 8:58)转换为数值格式,便于计算。例如,可以转换为从 6:58 开始的分钟数。假设 6:58 为 t = 0 \ t = 0  t=0,则 8:58 为 t = 120分钟。

(2) 支路 1 模型选择: 由于其车流量呈线性增长趋势,选用线性函数(一次多项式)进行拟合最为合适。模型形式为 Q 1 ( t ) = a 1 t + b 1 \ Q_1(t) = a_1t + b_1  Q1(t)=a1t+b1

(3) 支路 2 模型选择:}该支路车流量先增后减,呈现分段线性特征。需要确定一个转折点(峰值时间点) t peak \ t_{\text{peak}}  tpeak。模型形式为分段线性函数:
Q 2 ( t ) = { a 21 t + b 21 0 ≤ t < t peak a 22 t + b 22 t peak ≤ t ≤ 120 Q_2(t) = \begin{cases} a_{21}t + b_{21} & 0 \leq t < t_{\text{peak}} \\ a_{22}t + b_{22} & t_{\text{peak}} \leq t \leq 120 \end{cases} Q2(t)={a21t+b21a22t+b220t<tpeaktpeakt120
其中, a 21 > 0 a_{21} > 0 a21>0(增长段斜率), a 22 < 0 a_{22} < 0 a22<0(减少段斜率)。 t peak t_{\text{peak}} tpeak 的值需要根据数据或问题描述中的隐含信息来确定(例如,可能是时间段的中点,或者数据呈现峰值的时刻)。
(4) 参数估计:利用提供的主路数据(假设可以分离或推断出各支路的贡献,或者有直接的支路历史数据),使用最小二乘法拟合上述模型,确定参数 a 1 , b 1 , a 21 , b 21 , a 22 , b 22 a_1, b_1, a_{21}, b_{21}, a_{22}, b_{22} a1,b1,a21,b21,a22,b22 以及 t peak t_{\text{peak}} tpeak

1.3 数学模型

(1) 支路 1 车流量函数:
Q 1 ( t ) = a 1 t + b 1 Q_1(t) = a_1t + b_1 Q1(t)=a1t+b1
其中 t t t 是从起始时刻(6:58)开始计算的时间(例如,以分钟为单位), a 1 a_1 a1 是增长率, b 1 b_1 b1 是初始时刻的车流量。

(2) 支路 2 车流量函数(分段线性):
Q 2 ( t ) = { a 21 t + b 21 0 ≤ t < t peak a 22 t + b 22 t peak ≤ t ≤ T end Q_2(t) = \begin{cases} a_{21}t + b_{21} & 0 \leq t < t_{\text{peak}} \\ a_{22}t + b_{22} & t_{\text{peak}} \leq t \leq T_{\text{end}} \end{cases} Q2(t)={a21t+b21a22t+b220t<tpeaktpeaktTend
其中 t peak t_{\text{peak}} tpeak 是流量达到峰值的时刻, T end T_{\text{end}} Tend 是观测结束时刻对应的时间值(例如 120 分钟)。 a 21 , b 21 a_{21}, b_{21} a21,b21 是增长段的参数, a 22 , b 22 a_{22}, b_{22} a22,b22 是减少段的参数。通常需要保证函数在 t peak t_{\text{peak}} tpeak 处连续,即 a 21 t peak + b 21 = a 22 t peak + b 22 a_{21}t_{\text{peak}} + b_{21} = a_{22}t_{\text{peak}} + b_{22} a21tpeak+b21=a22tpeak+b22

1.4 MATLAB 代码

% 假设 time_minutes 是时间点向量 (单位: 分钟, 0120)
% 假设 flow_branch1 是支路1的历史车流量数据向量
% 假设 flow_branch2 是支路2的历史车流量数据向量
% 假设 t_peak_index 是数据中峰值点对应的索引% 支路1: 线性拟合
params_branch1 = polyfit(time_minutes, flow_branch1, 1); % 1表示线性 (一次多项式)
a1 = params_branch1(1);
b1 = params_branch1(2);
Q1_fit = polyval(params_branch1, time_minutes); % 计算拟合值fprintf('支路1模型: Q1(t) = %.4f * t + %.4f\n', a1, b1);% 支路2: 分段线性拟合
% 确定转折点 t_peak (假设已知或通过数据找到)
% 例如,假设 t_peak 是第 k 个时间点 time_minutes(k)
t_peak_val = time_minutes(t_peak_index);% 第一段 (增长段) 拟合
time1 = time_minutes(1:t_peak_index);
flow1 = flow_branch2(1:t_peak_index);
params1_branch2 = polyfit(time1, flow1, 1);
a21 = params1_branch2(1);
b21 = params1_branch2(2);% 第二段 (减少段) 拟合
time2 = time_minutes(t_peak_index:end); % 注意包含转折点
flow2 = flow_branch2(t_peak_index:end);
params2_branch2 = polyfit(time2, flow2, 1);
a22 = params2_branch2(1);
b22 = params2_branch2(2);fprintf('支路2模型 (增长段): Q2(t) = %.4f * t + %.4f (t < %.1f)\n', a21, b21, t_peak_val);
fprintf('支路2模型 (减少段): Q2(t) = %.4f * t + %.4f (t >= %.1f)\n', a22, b22, t_peak_val);% 计算支路2拟合值
Q2_fit = zeros(size(time_minutes));
Q2_fit(1:t_peak_index-1) = polyval(params1_branch2, time_minutes(1:t_peak_index-1));
Q2_fit(t_peak_index:end) = polyval(params2_branch2, time_minutes(t_peak_index:end));% 可选:绘制拟合结果
figure;
subplot(2,1,1); plot(time_minutes, flow_branch1, 'o', time_minutes, Q1_fit, '-'); title('支路1 车流量'); xlabel('时间 (分钟)'); ylabel('车流量'); legend('数据', '拟合');
subplot(2,1,2); plot(time_minutes, flow_branch2, 'o', time_minutes, Q2_fit, '-'); title('支路2 车流量'); xlabel('时间 (分钟)'); ylabel('车流量'); legend('数据', '拟合');

1.5 Python 示例代码

import numpy as np
import matplotlib.pyplot as plt# 假设 time_minutes 是时间点数组 (单位: 分钟, 0120)
# 假设 flow_branch1 是支路1的历史车流量数据数组
# 假设 flow_branch2 是支路2的历史车流量数据数组
# 假设 t_peak_index 是数据中峰值点对应的索引# 支路1: 线性拟合
params_branch1 = np.polyfit(time_minutes, flow_branch1, 1) # 1表示线性
a1, b1 = params_branch1
Q1_fit = np.polyval(params_branch1, time_minutes) # 计算拟合值print(f'支路1模型: Q1(t) = {a1:.4f} * t + {b1:.4f}')# 支路2: 分段线性拟合
# 确定转折点 t_peak
t_peak_val = time_minutes[t_peak_index]# 第一段 (增长段) 拟合
time1 = time_minutes[:t_peak_index]
flow1 = flow_branch2[:t_peak_index]
params1_branch2 = np.polyfit(time1, flow1, 1)
a21, b21 = params1_branch2# 第二段 (减少段) 拟合
time2 = time_minutes[t_peak_index:] # 注意包含转折点
flow2 = flow_branch2[t_peak_index:]
params2_branch2 = np.polyfit(time2, flow2, 1)
a22, b22 = params2_branch2print(f'支路2模型 (增长段): Q2(t) = {a21:.4f} * t + {b21:.4f} (t < {t_peak_val:.1f})')
print(f'支路2模型 (减少段): Q2(t) = {a22:.4f} * t + {b22:.4f} (t >= {t_peak_val:.1f})')# 计算支路2拟合值
Q2_fit = np.zeros_like(time_minutes, dtype=float)
Q2_fit[:t_peak_index] = np.polyval(params1_branch2, time_minutes[:t_peak_index])
Q2_fit[t_peak_index:] = np.polyval(params2_branch2, time_minutes[t_peak_index:])# 可选:绘制拟合结果
plt.figure(figsize=(8, 6))
plt.subplot(2, 1, 1)
plt.plot(time_minutes, flow_branch1, 'o', label='数据')
plt.plot(time_minutes, Q1_fit, '-', label='拟合')
plt.title('支路1 车流量')
plt.xlabel('时间 (分钟)')
plt.ylabel('车流量')
plt.legend()
plt.grid(True)plt.subplot(2, 1, 2)
plt.plot(time_minutes, flow_branch2, 'o', label='数据')
plt.plot(time_minutes, Q2_fit, '-', label='拟合')
plt.title('支路2 车流量')
plt.xlabel('时间 (分钟)')
plt.ylabel('车流量')
plt.legend()
plt.grid(True)plt.tight_layout()
plt.show()

2 问题二:推测多支路 (支路 1, 2, 3, 4) 的车流量

2.1 问题描述

需要推测四个支路的车流量函数,这些支路具有不同的变化规律(如:稳定、线性增长、线性减少、周期性)。数据提供了主路车流量记录(可能需要分解或假设已知各支路数据)。
知各支路数据)。

2.2 思路分析

(1) 确定各支路趋势: 根据问题描述,为每个支路确定其变化模式。

  • 支路 1 (稳定): 车流量近似为常数。
  • 支路 2 (线性): 同问题 1 的支路 2,使用线性函数。
  • 支路 3 (线性): 使用分段线性函数。
  • 支路 4 (周期性): 车流量随时间呈周期性波动,可能需要使用三角函数(如正弦、余弦)或傅里叶级数来建模。
    (2) 选择合适的模型:
  • 支路 1: Q 1 ( t ) = C 1 Q_1(t) = C_1 Q1(t)=C1 (常数模型)
  • 支路 2: Q 2 ( t ) = a 2 t + b 2 ( a 2 > 0 ) Q_2(t) = a_2t + b_2 \quad (a_2 > 0) Q2(t)=a2t+b2(a2>0)
  • 支路 3: Q 3 ( t ) = a 3 t + b 3 ( a 3 < 0 ) Q_3(t) = a_3t + b_3 \quad (a_3 < 0) Q3(t)=a3t+b3(a3<0)
  • 支路 4: Q 4 ( t ) = A sin ⁡ ( ω t + ϕ ) + C 4 Q_4(t) = A \sin(\omega t + \phi) + C_4 Q4(t)=Asin(ωt+ϕ)+C4 Q 4 ( t ) = A cos ⁡ ( ω t + ϕ ) + C 4 Q_4(t) = A \cos(\omega t + \phi) + C_4 Q4(t)=Acos(ωt+ϕ)+C4其中 A A A 是振幅, ω = 2 π T \omega = \frac{2\pi}{T} ω=T2π 是角频率( T T T 是周期), ϕ \phi ϕ 是相位, C 4 C_4 C4 是平均流量(垂直偏移)。如果周期性模式复杂,可能需要更高阶的傅里叶项。

(3) 参数估计:对每个支路,使用对应的历史数据和选定的模型,通过最小二乘法或其他拟合技术(如非线性最小二乘法对周期模型)估计模型参数。

2.3 数学模型

(1) 支路 1: Q 1 ( t ) = C 1 Q_1(t) = C_1 Q1(t)=C1
(2) 支路 2: Q 2 ( t ) = a 2 t + b 2 Q_2(t) = a_2t + b_2 Q2(t)=a2t+b2
(3) 支路 3: Q 3 ( t ) = a 3 t + b 3 Q_3(t) = a_3t + b_3 Q3(t)=a3t+b3
(4) 支路 4 (正弦模型): Q 4 ( t ) = A sin ⁡ ( 2 π T t + ϕ ) + C 4 Q_4(t) = A \sin\left(\frac{2\pi}{T}t + \phi\right) + C_4 Q4(t)=Asin(T2πt+ϕ)+C4

3 问题三:考虑交通信号灯影响下的车流量推测

3.1 问题描述

在一个特殊路段,支路 3 的车流量受到周期为 18 个时间单位(假设是分钟)的交通信号灯控制。需要推测支路 1、2、3 在此情况下的车流量。支路 1 和 2 的趋势与之前类似(可能是线性或其他简单模式)。

3.2 思路分析

(1) 支路 1 和 2:沿用之前的建模方法(例如线性模型 a t + b at + b at+b)。

(2) 支路 3(信号灯控制):车流量会呈现周期性,周期 T = 18 T = 18 T=18。在一个周期内,流量可能在绿灯时段为一个较高值(可能非恒定,有启动和饱和过程),在红灯时段为零或接近零。

(3) 建模支路 3:

  • 方法一(简化模型):将周期内的行为理想化。例如,假设绿灯持续 T green T_{\text{green}} Tgreen 分钟,红灯 T red T_{\text{red}} Tred 分钟( T green + T red = 18 T_{\text{green}} + T_{\text{red}} = 18 Tgreen+Tred=18)。模型可以是一个周期性方波函数,或者更平滑的周期函数。例如,可以拟合一个傅里叶级数,其基频对应周期 18。
  • 方法二(数据驱动):计算每个数据点时间 t t t 对应的周期内时间 t cycle = t ( mod  18 ) t_{\text{cycle}} = t \ (\text{mod}\ 18) tcycle=t (mod 18)。然后绘制 Q 3 Q_3 Q3 vs t cycle t_{\text{cycle}} tcycle 的散点图,观察一个周期内的流量模式。根据这个模式选择合适的函数(可能是分段函数、平滑脉冲函数等)来拟合。
    (4) 参数估计:对支路 1 和 2 使用线性拟合。对支路 3,根据所选模型进行拟合。如果是傅里叶级数,确定需要的谐波次数;如果是自定义周期函数,拟合其参数。

3.3 数学模型

(1) 支路 1: Q 1 ( t ) = a 1 t + b 1 Q_1(t) = a_1t + b_1 Q1(t)=a1t+b1 (或其他简单模型)
(2) 支路 2: Q 2 ( t ) = a 2 t + b 2 Q_2(t) = a_2t + b_2 Q2(t)=a2t+b2 (或其他简单模型)
(3) 支路 3 (周期模型):

  • 傅里叶级数形式: Q 3 ( t ) ≈ C 0 + ∑ k = 1 N [ A k cos ⁡ ( 2 π k T t ) + B k sin ⁡ ( 2 π k T t ) ] Q_3(t) \approx C_0 + \sum_{k=1}^{N} \left[ A_k \cos\left(\frac{2\pi k}{T} t\right) + B_k \sin\left(\frac{2\pi k}{T} t\right) \right] Q3(t)C0+k=1N[Akcos(T2πkt)+Bksin(T2πkt)],其中 T = 18 T = 18 T=18
  • 基于周期内时间 t cycle = t ( mod  18 ) t_{\text{cycle}} = t \ (\text{mod}\ 18) tcycle=t (mod 18) 的函数: Q 3 ( t ) = f ( t ( mod  18 ) ) Q_3(t) = f(t \ (\text{mod}\ 18)) Q3(t)=f(t (mod 18)),函数 f ( x ) f(x) f(x) 描述了在一个周期 x ∈ [ 0 , 18 ) x \in [0,18) x[0,18) 内的流量变化模式,需要根据数据拟合。

4 问题四:推测数据误差

4.1 问题描述

考虑到监测设备可能存在误差,要求在有误差的数据基础上,推测“实际”的车流量。可能需要描述误差的特性或修正数据。

4.2 思路分析

(1) 理解误差:误差可能是随机的(噪声),也可能是系统性的(偏差)。问题可能给出误差范围(如 ±5%)或类型(如高斯噪声)。

(2) 误差建模/处理:

  • 随机噪声:如果假设误差是零均值的随机噪声,那么之前通过拟合得到的平滑曲线(如 Q fit ( t ) Q_{\text{fit}}(t) Qfit(t))可以被视为对“实际”车流量 Q true ( t ) Q_{\text{true}}(t) Qtrue(t) 的估计。拟合过程本身就有平滑噪声的作用。可以使用数据平滑技术(如移动平均、Savitzky-Golay 滤波器)预处理数据,然后再进行拟合。
  • 系统偏差:如果存在已知的系统偏差(例如,设备总是多报 5%),则可以在得到拟合函数 Q fit ( t ) Q_{\text{fit}}(t) Qfit(t) 后进行修正,例如 Q corrected ( t ) = Q fit ( t ) / 1.05 Q_{\text{corrected}}(t) = Q_{\text{fit}}(t)/1.05 Qcorrected(t)=Qfit(t)/1.05
  • 误差范围:如果只知道误差范围,可以给出实际流量的置信区间。例如,如果误差是 ±δ,则实际流量可能在 [ Q fit ( t ) − δ , Q fit ( t ) + δ ] [Q_{\text{fit}}(t) - \delta, Q_{\text{fit}}(t) + \delta] [Qfit(t)δ,Qfit(t)+δ] 范围内。
  • 推测误差特性:可以分析残差 e ( t ) = Q measured ( t ) − Q fit ( t ) e(t) = Q_{\text{measured}}(t) - Q_{\text{fit}}(t) e(t)=Qmeasured(t)Qfit(t),检查其分布、自相关性等,以推断误差的性质(是否随机、是否有特定模式)。
    (3) 鲁棒拟合:如果数据中存在少量异常值(可能是大的测量错误),可以使用鲁棒拟合方法(Robust Fitting),这种方法对异常值的敏感度较低。

4.3 数学模型

(1) 观测模型: Q measured ( t ) = Q true ( t ) + ϵ ( t ) Q_{\text{measured}}(t) = Q_{\text{true}}(t) + \epsilon(t) Qmeasured(t)=Qtrue(t)+ϵ(t),其中 ϵ ( t ) \epsilon(t) ϵ(t) 是误差项。
(2) 目标:估计 Q true ( t ) Q_{\text{true}}(t) Qtrue(t)
(3) 方法:通过拟合得到 Q ^ true ( t ) = Q fit ( t ) \hat{Q}_{\text{true}}(t) = Q_{\text{fit}}(t) Q^true(t)=Qfit(t)
(4) 误差分析:研究残差 e ( t ) = Q measured ( t ) − Q fit ( t ) e(t) = Q_{\text{measured}}(t) - Q_{\text{fit}}(t) e(t)=Qmeasured(t)Qfit(t)。例如,计算残差的标准差 σ e \sigma_e σe 作为误差大小的度量。
(5) 置信区间(假设误差 ϵ ∼ N ( 0 , σ 2 ) \epsilon \sim N(0, \sigma^2) ϵN(0,σ2) σ \sigma σ 已知或估计): Q true ( t ) Q_{\text{true}}(t) Qtrue(t) ( 1 − α ) (1-\alpha) (1α) 置信区间近似为 Q fit ( t ) ± z α / 2 × S E ( Q fit ( t ) ) Q_{\text{fit}}(t) \pm z_{\alpha/2} \times SE(Q_{\text{fit}}(t)) Qfit(t)±zα/2×SE(Qfit(t)),其中 S E SE SE 是拟合值的标准误。

5 问题五:确定最少需要记录的数据时刻

5.1 问题描述
为了能够推测出完整的车流量函数(例如问题 1-3 中描述的那些),最少需要记录哪些时刻的数据?

5.2 思路分析

(1) 模型复杂度决定:所需最少数据点数取决于要拟合的模型的自由度(参数个数)。一个有 k k k 个参数的模型至少需要 k k k 个独立的数据点才能唯一确定参数(理论上)。为了获得可靠的拟合和评估拟合优度,通常需要 n > k n > k n>k 个点。
(2) 识别关键特征点:数据记录的时刻应该能够捕捉到函数的主要特征。

  • 对于线性模型( a t + b , k = 2 at + b, k = 2 at+b,k=2):至少需要 2 个不同时刻的点。为了更好地确定直线,通常选择时间段的开始和结束点,或者分布均匀的几个点。

  • 对于分段线性模型(如问题 1 支路 2,假设 2 段,每段 2 个参数,加转折点位置,共 5 个参数;或转折点已知,则 4 个参数):需要覆盖每一段,并能确定转折点的位置。至少需要在转折点附近以及每段的内部取点。例如,开始点、结束点、转折点、每段中间点。

  • 对于周期模型(如正弦 A sin ⁡ ( ω t + ϕ ) + C , k = 4 A \sin(\omega t + \phi) + C, k = 4 Asin(ωt+ϕ)+C,k=4):需要覆盖至少一个完整周期,并能捕捉到峰值、谷值和过零点(或均值点)等特征。理论上 4 个点可能够,但为了确定周期 T T T(或频率 ω \omega ω)和相位 ϕ \phi ϕ,通常需要更多点,特别是在一个周期内分布均匀的点,以及跨越多个周期的点来确认周期性。奈奎斯特采样定理指出,要无失真地恢复周期信号,采样频率至少是信号最高频率的两倍。

  • 对于常数模型( C , k = 1 C, k = 1 C,k=1):理论上 1 个点就够,但为了确认稳定性,需要多个点。
    (3) 策略:

  • 根据每个支路预期的函数形式,确定其模型参数个数 k k k

  • 选择 n ≥ k n \geq k nk 个能反映函数形态的关键时刻点。这些点应包括:时间段的起点和终点、预期的极值点(峰值、谷值)、趋势改变点(如分段模型的转折点)、周期性特征点(如正弦波的特定相位点)。

  • 如果模型复杂或数据有噪声,需要更多的点来保证拟合的稳定性和准确性。

5.3 数学模型(概念)

(1) 模型参数数量 k k k
(2) 所需最少数据点数 n min = k n_{\text{min}} = k nmin=k(理论下限)。
(3) 实际推荐点数 n rec > k n_{\text{rec}} > k nrec>k
(4) 关键点选择: t start , t end , t peak , t valley , t inflection t_{\text{start}}, t_{\text{end}}, t_{\text{peak}}, t_{\text{valley}}, t_{\text{inflection}} tstart,tend,tpeak,tvalley,tinflection 等。
(5) 对于周期 T T T 的信号,采样时间间隔 Δ t < T / 2 \Delta t < T/2 Δt<T/2(根据奈奎斯特频率)。

国奖学姐后续会更新完整论文与求解代码,完整版请看文章下方~

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

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

相关文章

d202551

目录 一、175. 组合两个表 - 力扣&#xff08;LeetCode&#xff09; 二、511. 游戏玩法分析 I - 力扣&#xff08;LeetCode&#xff09; 三、1204. 最后一个能进入巴士的人 - 力扣&#xff08;LeetCode&#xff09; 一、175. 组合两个表 - 力扣&#xff08;LeetCode&#xf…

RISC-V AIA SPEC学习(四)

第五章 Interrupts for Machine andSupervisor Levels 核心内容​​ 1.主要中断类型与默认优先级:​​ 定义了机器级别(M-level)和监管者级别(S-level)的标准中断类型(如MEI、SEI、MTI等)。默认优先级规则:本地中断(如软件/定时器)优先级高于外部中断,RAS事件(如低/高…

WSGI(Web Server Gateway Interface)服务器

0、什么是 WSGI WSGI &#xff08;Web Server Gateway Interface&#xff09; 是一种Python规范&#xff0c;它定义了 Web 服务器 和 Python Web 应用程序之间的通信接口。 即&#xff0c;能够让各种 Web 服务器&#xff08;如 Nginx、Apache 等&#xff09;和 Python Web 框架…

博客打卡-人类基因序列功能问题动态规划

题目如下&#xff1a; 众所周知&#xff0c;人类基因可以被认为是由4个核苷酸组成的序列&#xff0c;它们简单的由四个字母A、C、G和T表示。生物学家一直对识别人类基因和确定其功能感兴趣&#xff0c;因为这些可以用于诊断人类疾病和设计新药物。 生物学家确定新基因序列功能…

基本功能学习

一.enum枚举使用 E_SENSOR_REQ_NONE 的定义及用途 在传感器驱动开发或者电源管理模块中&#xff0c;E_SENSOR_REQ_NONE通常被用来表示一种特殊的状态或请求模式。这种状态可能用于指示当前没有活动的传感器请求&#xff0c;或者是默认初始化状态下的一种占位符。 可能的定义…

vitest | 测试框架vitest | 总结笔记

目录 测试框架 vitest 介绍 测试文件的写法 文件取名&#xff1a;文件名中要有 test&#xff0c;即 xxx.test.ts 引入库&#xff1a; test 测试&#xff1a; 测试运行&#xff1a; npx test 文件名 &#xff0c;每次保存后会重新运行。 ★ expect 方法&#xff1a; v…

ESP32开发-作为TCP客户端发送数据到网络调试助手

​​代码&#xff08;作为TCP客户端&#xff09;​​ #include <SPI.h> #include <EthernetENC.h> // 使用EthernetENC库// 网络配置 byte mac[] {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // MAC地址 IPAddress ip(192, 168, 1, 100); // ESP32的IP IPAddr…

HTML5 WebSocket:实现高效实时通讯

一、引言 在当今的 Web 开发领域,实时通讯功能变得越来越重要。例如在线聊天、实时数据更新等场景都需要客户端与服务器之间能够进行高效的双向数据传输。HTML5 引入的 WebSocket 协议为我们提供了一种强大的解决方案,它在单个 TCP 连接上实现了全双工通讯,极大地改善了传统…

速通Ollama本地部署DeepSeek-r1

下载 Ollama 前往 Ollama官网 下载客户端&#xff0c;下载完成后点击Install安装即可。 完成后会自动安装在C:盘的AppData文件夹下&#xff0c;命令行输入ollama后&#xff0c;显示下图中的信息表明安装成功。 下载模型 在官网界面点击 DeepSeek-R1 超链接 跳转到DeepSeek安装…

总结C++中的STL

1.STL 概述 STL 即标准模板库&#xff0c;是 C 标准程序库的重要组成部分&#xff0c;包含常用数据结构和算法&#xff0c;体现了泛型化程序设计思想&#xff0c;基于模板实现&#xff0c;提高了代码的可复用性 2.容器 2.1 序列容器&#xff1a; 1. vector 特性&#xff…

自动驾驶-一位从业两年的独特视角

时间简介 2023.03 作为一名大三学生&#xff0c;加入到某量产车企&#xff0c;从事地图匹配研发 2023.07 地图匹配项目交付&#xff0c;参与离线云端建图研发 2023.10 拿到24届校招offer 2024.07 正式入职 2025.01 离线云端建图稳定&#xff0c;开始接触在线车端融图研发 自动…

《软件设计师》复习笔记(11.1)——生命周期、CMM、开发模型

目录 一、信息系统生命周期 系统规划阶段 系统分析阶段&#xff08;逻辑设计&#xff09; 系统设计阶段&#xff08;物理设计&#xff09; 系统实施阶段 系统运行与维护阶段 二、能力成熟度模型&#xff08;CMM/CMMI&#xff09; CMM 五级模型 CMMI 两种表示方法 真题…

1.67g 雨晨 22635.5305 Windows 11 企业版 23H2 极速增强版

五一特别制作 &#xff08;主要更新简述&#xff09; 全程由最新YCDISM2025装载制作 1、可选功能&#xff1a; 添加&#xff1a; Microsoft-Windows-LanguageFeatures-Basic-en-us-Package Microsoft-Windows-LanguageFeatures-OCR-en-us-Package 2、功能增强&a…

爬虫逆向思维

爬虫逆向思维是指从目标网站的反爬机制入手&#xff0c;通过分析其防护逻辑来突破限制&#xff0c;获取数据的思路。以下是核心要点&#xff1a; 核心方向 - 分析反爬手段&#xff1a;如请求头校验、IP封禁、验证码、动态数据加密等。 - 模拟真实行为&#xff1a;伪造浏览器指…

手撕哈希表

引入&#xff1a;unordered_set /map是什么&#xff1f; 库里面除开set和map&#xff0c;还有unordered_set 和 unordered_map&#xff0c;区别在于&#xff1a; ①&#xff1a;set和map的底层结构是红黑树&#xff0c;而unordered_set和unordered_map的底层是哈希表 ②&…

基于Docker的内网穿透实战:frp 0.68 + Nginx最佳实践

在实际应用中&#xff0c;我们常常遇到这样的需求&#xff1a; 家里的NAS服务器、开发环境、测试服务&#xff0c;需要暴露到公网访问 企业内部系统&#xff0c;仅允许在特定域名或端口暴露&#xff0c;但没有公网IP 多个内网应用&#xff0c;希望通过一个统一的外网入口访问…

完美中国制度流程体系建设(70页PPT)(文末有下载方式)

资料解读&#xff1a;《完美中国制度流程体系建设》 详细资料请看本解读文章的最后内容。 该文档围绕完美中国制度流程体系建设展开&#xff0c;从风险管理流程等前期工作切入&#xff0c;全面剖析企业制度流程体系框架&#xff0c;结合案例指出常见问题&#xff0c;评估完美公…

计算机组成原理实验(5) 堆栈寄存器实验

实验五 堆栈寄存器实验 一、实验目的 1、熟悉堆栈概念 2、熟悉堆栈寄存器的组成和硬件电路 二、实验要求 按照实验步骤完成实验项目&#xff0c;对4个堆栈寄存器进行读出、写入数据操作。 三、实验说明 3.1 堆栈寄存器组实验构成&#xff08;图3-1&#xff09; 本系统…

RAGFlow报错:ESConnection.sql got exception

环境&#xff1a; Ragflowv0.17.2 问题描述&#xff1a; RAGFlow报错&#xff1a;ESConnection.sql got exception _ming_cheng_tks, 浙江, operatorOR;minimum_should_match30%) 2025-04-25 15:55:06,862 INFO 244867 POST http://localhost:1200/_sql?formatjson […

鼠标滚动字体缩放

在VsCode中编辑文件时&#xff0c;有时候发现Ctrl鼠标滚轮并不能缩放字体&#xff0c;下面是启用这个功能的方法。 第一步&#xff1a; 进入设置&#xff0c;可以从左下角按钮菜单进入&#xff0c;也可以使用【Ctrl,】。 第二步&#xff1a; 启用鼠标滚轮缩放功能 第三步&…