(A题|支路车流量推测问题)2025年第二十二届五一数学建模竞赛(五一杯/五一赛)解题思路|完整代码论文集合
我是Tina表姐,毕业于中国人民大学,对数学建模的热爱让我在这一领域深耕多年。我的建模思路已经帮助了百余位学习者和参赛者在数学建模的道路上取得了显著的进步和成就。现在,我将这份宝贵的经验和知识凝练成一份全面的解题思路与代码论文集合,专为本次赛题设计,旨在帮助您深入理解数学建模的每一个环节。
本次五一数学建模竞赛A题可以做如下考虑 (部分公式和代码因为排版问题显示不完整,文中代码仅有部分,完整论文格式标准,包含全部代码)
(部分代码在本帖子里格式混乱,下载后格式正常)
本次赛题的第一个问题是:
问题1. 考虑图1所示的Y型道路,支路1和支路2的车流同时汇入主路3。假设仅在主路3上安装了车流量监测设备A1,每2分钟记录一次主路的车流量信息,车辆从支路汇入主路后行驶到A1处的时间忽略不计。附件表1中提供了某天早上[6:58,8:58]主路3上的车流量数据(7:00为第一个数据记录时刻,8:58是最后一个数据记录时刻,下同)。
由历史车流量观测记录可知,在[6:58,8:58]时间段内,支路1的车流量呈现线性增长趋势,支路2的车流量呈现先线性增长后线性减少的趋势。
请建立数学模型,根据附件表1的数据推测在[6:58,8:58]时间段内支路1和支路2上的车流量,并使用合适的函数关系来描述支路1、支路2的车流量随时间的变化(为方便起见,函数关系中令7:00为 , ,下同),在表1.1中填入具体的函数表达式。
问题1的数学建模
1. 问题分析
问题1涉及一个Y型道路,支路1和支路2的车流汇入主路3。主路3上安装了车流量监测设备A1,每2分钟记录一次车流量数据。已知支路1的车流量呈现线性增长趋势,支路2的车流量呈现先线性增长后线性减少的趋势。需要根据主路3的车流量数据,推测支路1和支路2的车流量随时间的变化,并用函数表达式描述。
2. 模型假设
-
主路3的车流量是支路1和支路2车流量的总和。
-
支路1的车流量随时间线性增长,即 $ Q_1(t) = a_1 t + b_1 $。
-
支路2的车流量在某个时间点 $ t_0 $ 之前线性增长,之后线性减少,即:
Q 2 ( t ) = { a 2 t + b 2 当 t ≤ t 0 c 2 t + d 2 当 t > t 0 Q_2(t) = \begin{cases} a_2 t + b_2 & \text{当 } t \leq t_0 \\ c_2 t + d_2 & \text{当 } t > t_0 \end{cases} Q2(t)={a2t+b2c2t+d2当 t≤t0当 t>t0 -
车辆从支路汇入主路后行驶到A1处的时间忽略不计。
3. 模型建立
主路3的车流量 $ Q_3(t) $ 可以表示为:
Q 3 ( t ) = Q 1 ( t ) + Q 2 ( t ) Q_3(t) = Q_1(t) + Q_2(t) Q3(t)=Q1(t)+Q2(t)
根据已知条件,支路1和支路2的车流量函数分别为:
Q 1 ( t ) = a 1 t + b 1 Q_1(t) = a_1 t + b_1 Q1(t)=a1t+b1
Q 2 ( t ) = { a 2 t + b 2 当 t ≤ t 0 c 2 t + d 2 当 t > t 0 Q_2(t) = \begin{cases} a_2 t + b_2 & \text{当 } t \leq t_0 \\ c_2 t + d_2 & \text{当 } t > t_0 \end{cases} Q2(t)={a2t+b2c2t+d2当 t≤t0当 t>t0
因此,主路3的车流量可以表示为:
Q 3 ( t ) = { ( a 1 + a 2 ) t + ( b 1 + b 2 ) 当 t ≤ t 0 ( a 1 + c 2 ) t + ( b 1 + d 2 ) 当 t > t 0 Q_3(t) = \begin{cases} (a_1 + a_2) t + (b_1 + b_2) & \text{当 } t \leq t_0 \\ (a_1 + c_2) t + (b_1 + d_2) & \text{当 } t > t_0 \end{cases} Q3(t)={(a1+a2)t+(b1+b2)(a1+c2)t+(b1+d2)当 t≤t0当 t>t0
4. 参数估计
利用附件表1中主路3的车流量数据,可以通过最小二乘法拟合 $ Q_3(t) $ 的表达式,从而估计出 $ a_1, b_1, a_2, b_2, c_2, d_2 $ 和 $ t_0 $。
5. 结果表达
根据拟合结果,填写表1.1中的函数表达式:
支路1 | 支路2 |
---|---|
$ Q_1(t) = a_1 t + b_1 $ | $ Q_2(t) = \begin{cases} a_2 t + b_2 & \text{当 } t \leq t_0 \ c_2 t + d_2 & \text{当 } t > t_0 \end{cases} $ |
6. 模型验证
通过比较模型预测的主路3车流量与实际观测数据,验证模型的准确性。如果误差较大,可以调整模型假设或参数估计方法。
总结
通过建立数学模型,利用主路3的车流量数据和已知的支路车流量变化趋势,可以推测出支路1和支路2的车流量随时间的变化,并用函数表达式描述。
对于问题1,我们需要根据主路3的车流量数据推测支路1和支路2的车流量,并使用函数关系来描述它们的车流量随时间的变化。假设主路3的车流量为 $ Q_3(t) $,支路1的车流量为 $ Q_1(t) $,支路2的车流量为 $ Q_2(t) $。根据题意,主路3的车流量是支路1和支路2的车流量之和,即:
Q 3 ( t ) = Q 1 ( t ) + Q 2 ( t ) Q_3(t) = Q_1(t) + Q_2(t) Q3(t)=Q1(t)+Q2(t)
支路1的车流量
根据题意,支路1的车流量呈现线性增长趋势,因此可以表示为:
Q 1 ( t ) = a 1 t + b 1 Q_1(t) = a_1 t + b_1 Q1(t)=a1t+b1
其中,$ a_1 $ 是线性增长的斜率,$ b_1 $ 是截距。
支路2的车流量
支路2的车流量呈现先线性增长后线性减少的趋势。假设在时间 $ t = t_0 $ 时,支路2的车流量达到最大值,那么在 $ t \leq t_0 $ 时,支路2的车流量为线性增长;在 $ t > t_0 $ 时,支路2的车流量为线性减少。因此,支路2的车流量可以分段表示为:
Q 2 ( t ) = { a 2 t + b 2 当 t ≤ t 0 − c 2 t + d 2 当 t > t 0 Q_2(t) = \begin{cases} a_2 t + b_2 & \text{当 } t \leq t_0 \\ -c_2 t + d_2 & \text{当 } t > t_0 \end{cases} Q2(t)={a2t+b2−c2t+d2当 t≤t0当 t>t0
其中,$ a_2 $ 和 $ c_2 $ 分别是增长和减少的斜率,$ b_2 $ 和 $ d_2 $ 是截距。
求解参数
根据主路3的车流量数据 $ Q_3(t) $,我们可以通过最小二乘法或其他拟合方法求解 $ a_1, b_1, a_2, b_2, c_2, d_2 $ 和 $ t_0 $ 的值。
函数表达式
最终,支路1和支路2的车流量函数表达式可以表示为:
Q 1 ( t ) = a 1 t + b 1 Q_1(t) = a_1 t + b_1 Q1(t)=a1t+b1
Q 2 ( t ) = { a 2 t + b 2 当 t ≤ t 0 − c 2 t + d 2 当 t > t 0 Q_2(t) = \begin{cases} a_2 t + b_2 & \text{当 } t \leq t_0 \\ -c_2 t + d_2 & \text{当 } t > t_0 \end{cases} Q2(t)={a2t+b2−c2t+d2当 t≤t0当 t>t0
将具体的参数值填入表1.1中即可。
要解决第一个问题,我们需要根据主路3的车流量数据,结合支路1和支路2的车流量变化趋势,推测出支路1和支路2的车流量函数表达式。以下是解决问题的步骤和相应的Python代码。
步骤1:导入数据
首先,我们需要从附件表1中导入主路3的车流量数据。假设数据已经存储在一个CSV文件中,包含两列:时间戳和车流量。
步骤2:定义时间变量
为了方便计算,我们将时间从7:00开始,以分钟为单位进行标准化。例如,7:00对应时间变量t=0,7:02对应t=2,依此类推。
步骤3:定义支路1和支路2的车流量函数
根据问题描述,支路1的车流量呈现线性增长趋势,支路2的车流量呈现先线性增长后线性减少的趋势。我们可以用分段线性函数来描述支路2的车流量。
步骤4:建立数学模型
主路3的车流量是支路1和支路2车流量的总和。我们可以通过最小化主路3的车流量数据与支路1和支路2车流量之和的误差来求解支路1和支路2的车流量函数。
步骤5:求解并输出结果
使用Python的scipy.optimize
库中的curve_fit
函数来拟合支路1和支路2的车流量函数。
Python代码实现
import numpy as np
import pandas as pd
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt# 步骤1:导入数据
data = pd.read_csv('table1.csv') # 假设数据存储在table1.csv文件中
times = pd.to_datetime(data['时间戳']).apply(lambda x: (x - pd.Timestamp('2023-07-01 07:00:00')).total_seconds() / 60)
flow_main = data['车流量'].values# 步骤2:定义时间变量
t = times.values# 步骤3:定义支路1和支路2的车流量函数
def flow_branch1(t, a, b):return a * t + bdef flow_branch2(t, a1, b1, a2, b2, t_break):return np.piecewise(t, [t < t_break, t >= t_break], [lambda t: a1 * t + b1, lambda t: a2 * t + b2])# 步骤4:建立数学模型
def total_flow(t, a1, b1, a2, b2, a3, b3, t_break):return flow_branch1(t, a1, b1) + flow_branch2(t, a2, b2, a3, b3, t_break)# 步骤5:求解并输出结果
popt, pcov = curve_fit(total_flow, t, flow_main, p0=[1, 1, 1, 1, 1, 1, 60])# 输出支路1和支路2的函数表达式
a1, b1, a2, b2, a3, b3, t_break = popt
print("支路1的车流量函数表达式: f(t) =", a1, "* t +", b1)
print("支路2的车流量函数表达式: f(t) =", a2, "* t +", b2, "for t <", t_break, "and", a3, "* t +", b3, "for t >=", t_break)# 可视化结果
plt.scatter(t, flow_main, label='主路3车流量数据')
plt.plot(t, total_flow(t, *popt), label='拟合的总车流量', color='red')
plt.xlabel('时间 (分钟)')
plt.ylabel('车流量')
plt.legend()
plt.show()
结果解释
支路1的车流量函数表达式
:线性函数,形式为f(t) = a1 * t + b1
。支路2的车流量函数表达式
:分段线性函数,形式为f(t) = a2 * t + b2
当t < t_break
,f(t) = a3 * t + b3
当t >= t_break
。
表1.1 问题1支路车流量函数表达式
支路1 | 支路2 |
---|---|
f(t) = a1 * t + b1 | f(t) = a2 * t + b2 for t < t_break and f(t) = a3 * t + b3 for t >= |
问题2. 考虑图2所示的道路,支路1和支路2的车流同时汇入主路5,支路3和支路4的车流同时汇入主路5,仅在主路5上安装了车流量监测设备A2,每2分钟记录一次主路的车流量信息,附件表2中提供了某天早上[6:58,8:58]时间段内主路5上的车流量数据。假设车辆从支路1和支路2的路口行驶到设备A2处的时间为2分钟,车辆从支路3和支路4的路口到达设备A2处的行驶时间忽略不计。
由历史车流量观测记录可知,在[6:58,8:58]时间段内,支路1的车流量稳定;支路2的车流量在[6:58,7:48]和[8:14,8:58]时间段内线性增长,在(7:48,8:14)时间段内稳定;支路3的车流量呈现先线性增长后稳定的趋势;支路4的车流量呈现周期性规律。
请建立数学模型,根据附件表2的数据推测支路1、支路2、支路3、支路4上的车流量,使用合适的函数关系来描述各支路上的车流量随时间 的变化,并分析结果的误差。在表2.1中填入具体的函数表达式,在表2.2中分别填入7:30和8:30这两个时刻各支路上的车流量数值。
问题2的数学建模
1. 问题分析
在问题2中,我们需要根据主路5的车流量数据,推测支路1、支路2、支路3和支路4的车流量。已知各支路的车流量变化趋势如下:
- 支路1:车流量稳定(常数)。
- 支路2:在[6:58,7:48]和[8:14,8:58]时间段内线性增长,在(7:48,8:14)时间段内稳定。
- 支路3:车流量先线性增长后稳定。
- 支路4:车流量呈现周期性规律。
此外,车辆从支路1和支路2的路口行驶到设备A2处的时间为2分钟,车辆从支路3和支路4的路口到达设备A2处的行驶时间忽略不计。
2. 模型假设
- 主路5的车流量是支路1、支路2、支路3和支路4车流量的总和。
- 支路1的车流量为常数,记为 $ q_1(t) = c_1 $。
- 支路2的车流量在[6:58,7:48]和[8:14,8:58]时间段内线性增长,在(7:48,8:14)时间段内稳定。设其车流量为 $ q_2(t) $。
- 支路3的车流量先线性增长后稳定,设其车流量为 $ q_3(t) $。
- 支路4的车流量呈现周期性规律,设其车流量为 $ q_4(t) $。
- 车辆从支路1和支路2的路口行驶到设备A2处的时间为2分钟,因此支路1和支路2的车流量在时间 $ t $ 时对主路5的车流量贡献为 $ q_1(t-2) $ 和 $ q_2(t-2) $。
- 支路3和支路4的车流量在时间 $ t $ 时对主路5的车流量贡献为 $ q_3(t) $ 和 $ q_4(t) $。
3. 模型建立
主路5的车流量 $ Q(t) $ 可以表示为:
Q ( t ) = q 1 ( t − 2 ) + q 2 ( t − 2 ) + q 3 ( t ) + q 4 ( t ) Q(t) = q_1(t-2) + q_2(t-2) + q_3(t) + q_4(t) Q(t)=q1(t−2)+q2(t−2)+q3(t)+q4(t)
根据已知条件,我们可以分别对 $ q_1(t) 、 、 、 q_2(t) 、 、 、 q_3(t) $ 和 $ q_4(t) $ 进行建模。
3.1 支路1的车流量 $ q_1(t) $
支路1的车流量稳定,因此:
q 1 ( t ) = c 1 q_1(t) = c_1 q1(t)=c1
3.2 支路2的车流量 $ q_2(t) $
支路2的车流量在[6:58,7:48]和[8:14,8:58]时间段内线性增长,在(7:48,8:14)时间段内稳定。设:
- 在[6:58,7:48]时间段内,$ q_2(t) = a_2 t + b_2 $。
- 在(7:48,8:14)时间段内,$ q_2(t) = c_2 $。
- 在[8:14,8:58]时间段内,$ q_2(t) = d_2 t + e_2 $。
3.3 支路3的车流量 $ q_3(t) $
支路3的车流量先线性增长后稳定。设:
- 在[6:58,t_1]时间段内,$ q_3(t) = a_3 t + b_3 $。
- 在(t_1,8:58]时间段内,$ q_3(t) = c_3 $。
3.4 支路4的车流量 $ q_4(t) $
支路4的车流量呈现周期性规律。设:
q 4 ( t ) = A sin ( ω t + ϕ ) + B q_4(t) = A \sin(\omega t + \phi) + B q4(t)=Asin(ωt+ϕ)+B
其中,$ A 、 、 、 \omega 、 、 、 \phi $ 和 $ B $ 为待定参数。
4. 模型求解
根据附件表2中的数据,我们可以通过最小二乘法或其他优化方法拟合出 $ q_1(t) 、 、 、 q_2(t) 、 、 、 q_3(t) $ 和 $ q_4(t) $ 的具体表达式。
5. 结果分析
通过求解模型,我们可以得到各支路的车流量函数表达式,
问题2的数学模型与求解
1. 模型假设与定义
-
支路1:车流量稳定,设为常数 $ q_1(t) = C_1 $。
-
支路2:车流量在 [ 6 : 58 , 7 : 48 ] [6:58,7:48] [6:58,7:48] 和 [ 8 : 14 , 8 : 58 ] [8:14,8:58] [8:14,8:58] 时间段内线性增长,在 ( 7 : 48 , 8 : 14 ) (7:48,8:14) (7:48,8:14) 时间段内稳定。设其车流量为分段函数:
q 2 ( t ) = { k 21 t + b 21 , t ∈ [ 6 : 58 , 7 : 48 ] C 2 , t ∈ ( 7 : 48 , 8 : 14 ) k 22 t + b 22 , t ∈ [ 8 : 14 , 8 : 58 ] q_2(t) = \begin{cases} k_{21} t + b_{21}, & t \in [6:58,7:48] \\ C_2, & t \in (7:48,8:14) \\ k_{22} t + b_{22}, & t \in [8:14,8:58] \end{cases} q2(t)=⎩ ⎨ ⎧k21t+b21,C2,k22t+b22,t∈[6:58,7:48]t∈(7:48,8:14)t∈[8:14,8:58] -
支路3:车流量先线性增长后稳定。设其车流量为分段函数:
q 3 ( t ) = { k 3 t + b 3 , t ∈ [ 6 : 58 , t 0 ] C 3 , t ∈ ( t 0 , 8 : 58 ] q_3(t) = \begin{cases} k_3 t + b_3, & t \in [6:58,t_0] \\ C_3, & t \in (t_0,8:58] \end{cases} q3(t)={k3t+b3,C3,t∈[6:58,t0]t∈(t0,8:58] -
支路4:车流量呈现周期性规律。设其车流量为周期函数:
q 4 ( t ) = A sin ( ω t + ϕ ) + B q_4(t) = A \sin(\omega t + \phi) + B q4(t)=Asin(ωt+ϕ)+B
其中 $ \omega = \frac{2\pi}{T} , , , T $ 为周期。
2. 模型建立
主路5的车流量 $ Q(t) $ 为各支路车流量的总和:
Q ( t ) = q 1 ( t ) + q 2 ( t ) + q 3 ( t ) + q 4 ( t ) Q(t) = q_1(t) + q_2(t) + q_3(t) + q_4(t) Q(t)=q1(t)+q2(t)+q3(t)+q4(t)
由于支路1和支路2的车流到达A2的时间为2分钟,因此主路5的车流量 $ Q(t) $ 与支路1和支路2的车流量 $ q_1(t-2) $ 和 $ q_2(t-2) $ 相关:
Q ( t ) = q 1 ( t − 2 ) + q 2 ( t − 2 ) + q 3 ( t ) + q 4 ( t ) Q(t) = q_1(t-2) + q_2(t-2) + q_3(t) + q_4(t) Q(t)=q1(t−2)+q2(t−2)+q3(t)+q4(t)
3. 参数求解
利用附件表2中的数据,通过最小二乘法或分段拟合方法求解各支路车流量的参数。
4. 误差分析
通过比较模型预测值与实际观测值的差异,计算均方误差(MSE)或平均绝对误差(MAE)来评估模型的准确性。
5. 结果表达
根据上述模型,填写表2.1和表2.2。
表2.1 问题2支路车流量函数表达式
支路1 | 支路2 |
---|---|
$ q_1(t) = C_1 $ | $ q_2(t) = \begin{cases} k_{21} t + b_{21}, & t \in [6:58,7:48] \ C_2, & t \in (7:48,8:14) \ k_{22} t + b_{22}, & t \in [8:14,8:58] \end{cases} $ |
支路3 | 支路4 |
$ q_3(t) = \begin{cases} k_3 t + b_3, & t \in [6:58,t_0] \ C_3, & t \in (t_0,8:58] \end{cases} $ | $ q_4(t) = A \sin(\omega t + \phi) + B $ |
表2.2 问题2支路车流量数值
时刻 | 支路1 | 支路2 | 支路3 | 支路4 |
---|---|---|---|---|
7:30 | $ C_1 $ | $ k_{21} \cdot 7:30 + b_{21} $ | $ k_3 \cdot 7:30 + b_3 $ | $ A \sin(\omega \cdot 7:30 + \phi) + B $ |
8:30 | $ C_1 $ | $ k_{22} \cdot 8:30 + b_{22} $ | $ C_3 $ | $ A \sin(\omega \cdot 8:30 + \phi) + B $ |
6. 关键观测时刻
为了得到各支路的函数表达式,主路上的监测设备至少需要在以下时刻记录车流量数据:
-
支路1:任意时刻(因车流量稳定)。
要解决第二个问题,我们需要根据附件表2中的数据,推测支路1、支路2、支路3、支路4上的车流量,并使用合适的函数关系来描述各支路上的车流量随时间的变化。以下是Python代码的实现步骤:
1. 导入必要的库
import pandas as pd
import numpy as np
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt
2. 定义函数模型
根据题目描述,我们可以定义以下函数模型:
- 支路1:稳定,即常数函数。
- 支路2:分段线性函数,包含线性增长和稳定阶段。
- 支路3:先线性增长后稳定。
- 支路4:周期性函数。
# 支路1:常数函数
def func1(t, a):return a# 支路2:分段线性函数
def func2(t, a1, b1, a2, b2, a3, b3):if t < 7.8: # 6:58 - 7:48return a1 * t + b1elif t < 8.233: # 7:48 - 8:14return a2 * t + b2else: # 8:14 - 8:58return a3 * t + b3# 支路3:先线性增长后稳定
def func3(t, a, b, c):if t < 7.8: # 6:58 - 7:48return a * t + belse: # 7:48 - 8:58return c# 支路4:周期性函数
def func4(t, a, b, c):return a * np.sin(b * t + c)
3. 读取数据
假设附件表2的数据已经保存为CSV文件table2.csv
,我们可以使用Pandas读取数据。
data = pd.read_csv('table2.csv')
times = data['Time'].values
main_flow = data['Flow'].values
4. 拟合函数
使用curve_fit
函数拟合各支路的函数模型。
# 支路1
popt1, _ = curve_fit(func1, times, main_flow)# 支路2
popt2, _ = curve_fit(func2, times, main_flow)# 支路3
popt3, _ = curve_fit(func3, times, main_flow)# 支路4
popt4, _ = curve_fit(func4, times, main_flow)
5. 计算各支路的车流量
根据拟合的函数模型,计算各支路的车流量。
# 支路1
flow1 = func1(times, *popt1)# 支路2
flow2 = func2(times, *popt2)# 支路3
flow3 = func3(times, *popt3)# 支路4
flow4 = func4(times, *popt4)
6. 分析误差
计算各支路车流量与主路车流量的误差。
error1 = np.abs(main_flow - flow1)
error2 = np.abs(main_flow - flow2)
error3 = np.abs(main_flow - flow3)
error4 = np.abs(main_flow - flow4)
7. 输出结果
将结果填入表2.1和表2.2。
# 表2.1 问题2支路车流量函数表达式
print("表2.1 问题2支路车流量函数表达式")
print(f"支路1: {popt1[0]}")
print(f"支路2: a1={popt2[0]}, b1={popt2[1]}, a2={popt2[2]}, b2={popt2[3]}, a3={popt2[4]}, b3={popt2[5]}")
print(f"支路3: a={popt3[0]}, b={popt3[1]}, c={popt3[2]}")
print(f"支路4: a={popt4[0]}, b={popt4[1]}, c={popt4[2]}")# 表2.2 问题2支路车流量数值
t1 = 7.5 # 7:30
t2 = 8.5 # 8:30
问题3的详细描述如下:
考虑图3所示的道路,支路1、支路2的车流同时汇入主路4,支路3为特殊交通管制路段,支路3上的车辆通过路口时受到交通信号灯C的控制。C的红灯时间设置为8分钟,绿灯时间设置为10分钟,黄灯时间忽略不计。仅在主路4上安装了车流量监测设备A3,每2分钟记录一次主路的车流量信息,附件表3中提供了某天早上[6:58,8:58]主路4上的车流量数据。假设车辆从支路1和支路2的路口处到达A3处的行驶时间为2分钟,车辆从支路3汇入主路后到达设备A3处的行驶时间忽略不计。
由历史车流量观测记录可知,在[6:58,8:58]时间段内,支路1的车流量呈现“无车流量→增长→减少→稳定→减少至无车流量”的趋势;支路2的车流量分别在[6:58,8:10]和[8:34,8:58]时间段内线性增长和线性减少,在(8:10,8:34)时间段内稳定。当C显示绿灯时,支路3的车流量或稳定或呈现线性变化趋势,且第一个绿灯于7:06时开始亮起;当C显示红灯时,支路3的车流量视为0。
请建立数学模型,根据附件表3的数据推测支路1、支路2、支路3上的车流量,使用合适的函数关系来描述各支路上的车流量随时间 的变化,并分析结果的误差。在表3.1中填入具体的函数表达式,在表3.2中分别填入7:30和8:30这两个时刻各支路上的车流量数值。
图3 问题3道路示意图
表3.1 问题3支路车流量函数表达式
支路1 | 支路2 |
---|---|
支路3 | |
表3.2 问题3支路车流量数值
时刻 | 支路1 | 支路2 | 支路3 |
---|---|---|---|
7:30 | |||
8:30 |
问题3的数学建模与求解
1. 问题描述与假设
在问题3中,我们需要根据主路4上的车流量数据推测支路1、支路2和支路3的车流量。已知以下信息:
- 支路1:车流量呈现“无车流量→增长→减少→稳定→减少至无车流量”的趋势。
- 支路2:车流量分别在[6:58,8:10]和[8:34,8:58]时间段内线性增长和线性减少,在(8:10,8:34)时间段内稳定。
- 支路3:受交通信号灯C控制,红灯时间为8分钟,绿灯时间为10分钟。当C显示绿灯时,支路3的车流量或稳定或呈现线性变化趋势;当C显示红灯时,支路3的车流量为0。第一个绿灯于7:06开始。
2. 模型建立
2.1 支路1的车流量模型
支路1的车流量趋势可以分为以下几个阶段:
- 无车流量阶段:假设在6:58之前,支路1的车流量为0。
- 增长阶段:从某一时刻开始,车流量线性增长。
- 减少阶段:车流量达到峰值后,开始线性减少。
- 稳定阶段:车流量保持稳定。
- 减少至无车流量阶段:车流量最终减少至0。
设支路1的车流量函数为 $ f_1(t) $,可以分段表示为:
f 1 ( t ) = { 0 t < t 1 k 1 ( t − t 1 ) t 1 ≤ t < t 2 k 1 ( t 2 − t 1 ) − k 2 ( t − t 2 ) t 2 ≤ t < t 3 c t 3 ≤ t < t 4 c − k 3 ( t − t 4 ) t 4 ≤ t < t 5 0 t ≥ t 5 f_1(t) = \begin{cases} 0 & t < t_1 \\ k_1(t - t_1) & t_1 \leq t < t_2 \\ k_1(t_2 - t_1) - k_2(t - t_2) & t_2 \leq t < t_3 \\ c & t_3 \leq t < t_4 \\ c - k_3(t - t_4) & t_4 \leq t < t_5 \\ 0 & t \geq t_5 \end{cases} f1(t)=⎩ ⎨ ⎧0k1(t−t1)k1(t2−t1)−k2(t−t2)cc−k3(t−t4)0t<t1t1≤t<t2t2≤t<t3t3≤t<t4t4≤t<t5t≥t5
其中,$ t_1, t_2, t_3, t_4, t_5 $ 分别为各阶段的起始时刻,$ k_1, k_2, k_3 $ 为各阶段的斜率,$ c $ 为稳定阶段的车流量。
2.2 支路2的车流量模型
支路2的车流量趋势可以分为以下几个阶段:
- 线性增长阶段:从6:58到8:10,车流量线性增长。
- 稳定阶段:从8:10到8:34,车流量保持稳定。
- 线性减少阶段:从8:34到8:58,车流量线性减少。
设支路2的车流量函数为 $ f_2(t) $,可以分段表示为:
f 2 ( t ) = { k 4 ( t − t 6 ) t 6 ≤ t < t 7 c 2 t 7 ≤ t < t 8 c 2 − k 5 ( t − t 8 ) t 8 ≤ t < t 9 f_2(t) = \begin{cases} k_4(t - t_6) & t_6 \leq t < t_7 \\ c_2 & t_7 \leq t < t_8 \\ c_2 - k_5(t - t_8) & t_8 \leq t < t_9 \end{cases} f2(t)=⎩ ⎨ ⎧k4(t−t6)c2c2−k5(t−t8)t6≤t<t7t7≤t<t8t8≤t<t9
其中,$ t_6, t_7, t_8, t_9 $ 分别为各阶段的起始时刻,$ k_4, k_5 $ 为各阶段的斜率,$ c_2 $ 为稳定阶段的车流量。
2.3 支路3的车流量模型
支路3的车流量受交通信号灯C控制,绿灯时间为10分钟,红灯时间为8分钟。假设绿灯开始于7:06,此后每隔18分钟(10分钟绿灯 + 8分钟红灯)循环一次。
设支路3的车流量函数为 $ f_3(t) $,可以表示为:
f 3 ( t ) = { f green ( t ) 绿灯期间 0 红灯期间 f_3(t) = \begin{cases} f_{\text{green}}(t) & \text{绿灯期间} \\ 0 & \text{红灯期间} \end{cases} f3(t)={fgreen(t)0绿灯期间红灯期间
其中,$ f_{\text{green}}(t) $ 为绿灯期间的车流量函数,可以是线性增长、线性减少或稳定。
3. 参数估计与求解
3.1 支路1的参数估计
根据主路4的车流量数据和支路1的趋势,可以通过拟合方法估计各阶段的起始时刻和斜率。
3.2 支路2的参数估计
同样,根据主路4的车流量数据和支路2的趋势,可以通过拟合方法估计各阶段的起始时刻和斜率。
3.3 支路3的参数估计
根据交通信号灯C的周期和绿灯期间的车流量趋势,可以估计绿灯期间的车流量函数。
4
问题3的数学模型与公式推导
1. 支路1的车流量函数
支路1的车流量呈现“无车流量→增长→减少→稳定→减少至无车流量”的趋势。假设支路1的车流量函数为分段函数:
Q 1 ( t ) = { 0 , t ∈ [ 6 : 58 , t 1 ) k 1 ( t − t 1 ) , t ∈ [ t 1 , t 2 ) k 1 ( t 2 − t 1 ) − k 2 ( t − t 2 ) , t ∈ [ t 2 , t 3 ) Q stable , t ∈ [ t 3 , t 4 ) Q stable − k 3 ( t − t 4 ) , t ∈ [ t 4 , 8 : 58 ] Q_1(t) = \begin{cases} 0, & t \in [6:58, t_1) \\ k_1 (t - t_1), & t \in [t_1, t_2) \\ k_1 (t_2 - t_1) - k_2 (t - t_2), & t \in [t_2, t_3) \\ Q_{\text{stable}}, & t \in [t_3, t_4) \\ Q_{\text{stable}} - k_3 (t - t_4), & t \in [t_4, 8:58] \end{cases} Q1(t)=⎩ ⎨ ⎧0,k1(t−t1),k1(t2−t1)−k2(t−t2),Qstable,Qstable−k3(t−t4),t∈[6:58,t1)t∈[t1,t2)t∈[t2,t3)t∈[t3,t4)t∈[t4,8:58]
其中:
- $ t_1 $ 是车流量开始增长的时刻;
- $ t_2 $ 是车流量开始减少的时刻;
- $ t_3 $ 是车流量开始稳定的时刻;
- $ t_4 $ 是车流量开始减少至无车流量的时刻;
- $ k_1, k_2, k_3 $ 分别为各阶段的斜率;
- $ Q_{\text{stable}} $ 是稳定阶段的车流量。
2. 支路2的车流量函数
支路2的车流量分别在 [ 6 : 58 , 8 : 10 ] [6:58,8:10] [6:58,8:10] 和 [ 8 : 34 , 8 : 58 ] [8:34,8:58] [8:34,8:58] 时间段内线性增长和线性减少,在 ( 8 : 10 , 8 : 34 ) (8:10,8:34) (8:10,8:34) 时间段内稳定。假设支路2的车流量函数为分段函数:
Q 2 ( t ) = { k 4 ( t − 6 : 58 ) , t ∈ [ 6 : 58 , 8 : 10 ) Q stable2 , t ∈ [ 8 : 10 , 8 : 34 ) Q stable2 − k 5 ( t − 8 : 34 ) , t ∈ [ 8 : 34 , 8 : 58 ] Q_2(t) = \begin{cases} k_4 (t - 6:58), & t \in [6:58, 8:10) \\ Q_{\text{stable2}}, & t \in [8:10, 8:34) \\ Q_{\text{stable2}} - k_5 (t - 8:34), & t \in [8:34, 8:58] \end{cases} Q2(t)=⎩ ⎨ ⎧k4(t−6:58),Qstable2,Qstable2−k5(t−8:34),t∈[6:58,8:10)t∈[8:10,8:34)t∈[8:34,8:58]
其中:
- $ k_4, k_5 $ 分别为增长和减少阶段的斜率;
- $ Q_{\text{stable2}} $ 是稳定阶段的车流量。
3. 支路3的车流量函数
支路3的车流量受信号灯C的控制,红灯时车流量为0,绿灯时车流量或稳定或呈现线性变化趋势。假设支路3的车流量函数为分段函数:
Q 3 ( t ) = { 0 , C为红灯 k 6 ( t − t green ) , C为绿灯且车流量线性增长 Q stable3 , C为绿灯且车流量稳定 Q_3(t) = \begin{cases} 0, & \text{C为红灯} \\ k_6 (t - t_{\text{green}}), & \text{C为绿灯且车流量线性增长} \\ Q_{\text{stable3}}, & \text{C为绿灯且车流量稳定} \end{cases} Q3(t)=⎩ ⎨ ⎧0,k6(t−tgreen),Qstable3,C为红灯C为绿灯且车流量线性增长C为绿灯且车流量稳定
其中:
- $ t_{\text{green}} $ 是绿灯开始的时刻;
- $ k_6 $ 是车流量线性增长阶段的斜率;
- $ Q_{\text{stable3}} $ 是稳定阶段的车流量。
4. 主路4的车流量
主路4的车流量是支路1、支路2和支路3的车流量之和,且需要考虑支路1和支路2的车流量到达A3的延迟时间(2分钟)。因此,主路4的车流量函数为:
Q main ( t ) = Q 1 ( t − 2 ) + Q 2 ( t − 2 ) + Q 3 ( t ) Q_{\text{main}}(t) = Q_1(t - 2) + Q_2(t - 2) + Q_3(t) Qmain(t)=Q1(t−2)+Q2(t−2)+Q3(t)
5. 误差分析
通过对比主路4的观测数据与模型计算的车流量,可以计算误差。误差可以通过均方误差(MSE)来衡量:
MSE = 1 N ∑ i = 1 N ( Q main,obs ( t i ) − Q main,model ( t i ) ) 2 \text{MSE} = \frac{1}{N} \sum_{i=1}^{N} \left( Q_{\text{main,obs}}(t_i) - Q_{\text{main,model}}(t_i) \right)^2 MSE=N1i=1∑N(Qmain,obs(ti)−Qmain,model(ti))2
其中:
- $ Q_{\text{main,obs}}(t_i) $ 是主路4在时刻 $ t_i $ 的观测车流量;
- $ Q_{\text{main,model}}(t_i) $ 是主路4在时刻 $ t_i $ 的模型计算车流量;
- $ N $ 是观测数据的总数。
6. 结果填入表格
根据上述模型,填写表3.1和表3.2。
表3.1 问题3支路车流量函数表达式
支路1 | 支路2 |
---|---|
$ Q_1(t) $ | $ Q_2(t) $ |
支路3 | |
$ Q | |
为了处理问题3,我们需要建立一个数学模型来推测支路1、支路2和支路3的车流量。以下是Python代码的实现步骤: |
1. 导入必要的库
import numpy as np
import pandas as pd
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt
2. 定义车流量函数模型
根据问题描述,我们需要定义以下函数模型:
- 支路1:呈现“无车流量→增长→减少→稳定→减少至无车流量”的趋势,可以使用分段函数来描述。
- 支路2:分别在[6:58,8:10]和[8:34,8:58]时间段内线性增长和线性减少,在(8:10,8:34)时间段内稳定。
- 支路3:受信号灯C控制,绿灯时车流量或稳定或线性变化,红灯时车流量为0。
def branch1_flow(t):# 分段函数,根据时间t返回支路1的车流量if t < t1:return 0elif t1 <= t < t2:return a1 * (t - t1)elif t2 <= t < t3:return a1 * (t2 - t1) - a2 * (t - t2)elif t3 <= t < t4:return a3else:return max(0, a3 - a4 * (t - t4))def branch2_flow(t):# 分段函数,根据时间t返回支路2的车流量if t < t5:return b1 * (t - t5)elif t5 <= t < t6:return b2else:return max(0, b2 - b3 * (t - t6))def branch3_flow(t):# 根据信号灯C的状态返回支路3的车流量if is_green(t):return c1 * t + c2else:return 0def is_green(t):# 判断信号灯C在时间t是否为绿灯cycle = 18 # 红灯8分钟,绿灯10分钟green_start = 7.1 # 第一个绿灯于7:06开始t_cycle = (t - green_start) % cyclereturn t_cycle < 10
3. 读取附件表3的数据
# 假设附件表3的数据存储在CSV文件中
data = pd.read_csv('table3.csv')
times = data['Time'].values
main_flow = data['Flow'].values
4. 拟合参数
使用curve_fit
函数拟合支路1、支路2和支路3的函数参数。
def total_flow(t, *params):# 主路车流量是各支路车流量的总和t1, t2, t3, t4, a1, a2, a3, a4, t5, t6, b1, b2, b3, c1, c2 = paramsreturn branch1_flow(t) + branch2_flow(t) + branch3_flow(t)
初始参数猜测
initial_guess = [7.0, 7.5, 8.0, 8.5, 10, 5, 20, 5, 7.0, 8.0, 10, 20, 5, 1, 0]
拟合参数
params, _ = curve_fit(total_flow, times, main_flow, p0=initial_guess)
5. 输出结果
# 输出支路1、支路2、支路3的函数表达式
print("支路1的函数表达式:")
print(f"支路1车流量 = {params[4]}*(t-{params[0]}) if {params[0]} <= t < {params[1]}")
print(f"支路1车流量 = {params[4]}*({params[1]}-{params[0]}) - {params[5]}*(t-{params[1]}) if {params[1]} <= t < {params[2]}")
print(f"支路1车流量 = {params[6]} if {params[2]} <= t < {params[3]}")
print(f"支路1车流量 = max(0, {params[6]} - {params[7]}*(t-{params[3]})) if t >= {params[3]}")print("\n支路2的函数表达式:")
问题4. 在网络信号弱、能见度低、车流量较大或车速过快等情况下,车流量监测设备可能会产生数据误差。考虑图3所示的道路,假设某天设备A3记录的数据产生了误差,在[6:58,8:58]时间段内观测数据见附件表4。
支路1的车流量呈现“无车流量→线性增长→稳定→线性减少至无车流量”的趋势;支路2的车流量分别在[6:58,7:34]和[8:10,8:58]时间段内线性增长和线性减少,在(7:34,8:10)时间段内稳定。信号灯C的红灯时间设置为8分钟,绿灯时间设置为10分钟,黄灯时间忽略不计。当C显示绿灯时,支路3的车流量或稳定或呈现线性变化趋势;当C显示红灯时,支路3的车流量视为0。C显示绿灯的时刻未知。
请建立数学模型,根据附件表4的数据推测支路1、支路2、支路3上实际的车流量,使用合适的函数关系来描述各支路上的车流量随时间的变化,并分析结果的误差。在表4.1中填入具体的函数表达式,在表4.2中分别填入7:30和8:30这两个时刻各支路上的车流量数值。
问题4的建模与求解
1. 问题分析
问题4中,设备A3记录的数据存在误差,需要根据附件表4的数据推测支路1、支路2、支路3的实际车流量。已知:
- 支路1的车流量呈现“无车流量→线性增长→稳定→线性减少至无车流量”的趋势。
- 支路2的车流量分别在[6:58,7:34]和[8:10,8:58]时间段内线性增长和线性减少,在(7:34,8:10)时间段内稳定。
- 信号灯C的红灯时间为8分钟,绿灯时间为10分钟,黄灯时间忽略不计。
- 当C显示绿灯时,支路3的车流量或稳定或呈现线性变化趋势;当C显示红灯时,支路3的车流量视为0。
- C显示绿灯的时刻未知。
目标是根据这些信息,建立数学模型,推测各支路的车流量函数表达式,并分析误差。
2. 模型建立
2.1 支路1的车流量函数
支路1的车流量变化趋势可以分为四个阶段:
- 无车流量阶段:$ t \in [6:58, t_1) $,车流量为0。
- 线性增长阶段:$ t \in [t_1, t_2) $,车流量线性增长,函数为 $ f_1(t) = k_1(t - t_1) $。
- 稳定阶段:$ t \in [t_2, t_3) $,车流量稳定为 $ f_1(t) = C_1 $。
- 线性减少阶段:$ t \in [t_3, 8:58] $,车流量线性减少至0,函数为 $ f_1(t) = C_1 - k_2(t - t_3) $。
其中,$ t_1, t_2, t_3 $ 是未知的时间点,$ k_1, k_2, C_1 $ 是未知的参数。
2.2 支路2的车流量函数
支路2的车流量变化趋势可以分为三个阶段:
- 线性增长阶段:$ t \in [6:58, 7:34) $,车流量线性增长,函数为 $ f_2(t) = k_3(t - 6:58) $。
- 稳定阶段:$ t \in [7:34, 8:10) $,车流量稳定为 $ f_2(t) = C_2 $。
- 线性减少阶段:$ t \in [8:10, 8:58] $,车流量线性减少,函数为 $ f_2(t) = C_2 - k_4(t - 8:10) $。
其中,$ k_3, k_4, C_2 $ 是未知的参数。
2.3 支路3的车流量函数
支路3的车流量受信号灯C的控制,且C的绿灯时刻未知。假设C的绿灯周期为18分钟(8分钟红灯 + 10分钟绿灯),且第一个绿灯开始于 $ t_4 $ 时刻。
支路3的车流量函数可以表示为:
- 当C为绿灯时,车流量为 $ f_3(t) = k_5(t - t_4) + C_3 $(线性变化)或 $ f_3(t) = C_3 $(稳定)。
- 当C为红灯时,车流量为0。
其中,$ k_5, C_3, t_4 $ 是未知的参数。
2.4 主路4的车流量函数!
主路4的车流量是支路1、支路2、支路3的车流量之和:
f 主路4 ( t ) = f 1 ( t ) + f 2 ( t ) + f 3 ( t ) f_{\text{主路4}}(t) = f_1(t) + f_2(t) + f_3(t) f主路4(t)=f1(t)+f2(t)+f3(t)
3. 模型求解
3.1 参数估计
根据附件表4的数据,利用最小二乘法或其他优化方法,拟合主路4的车流量数据,得到支路1、支路2、支路3的函数参数。
3.2 误差分析
通过比较模型预测值与实际观测值,计算误差(如均方误差、平均绝对误差等),评估模型的准确性。
4. 结果表达
在表4.1中填入支路1、支路2、支路3的车流量函数表达式,在表4.2中填入7:30和8:30时刻各支路的车流量数值。
5. 示例结果
假设通过模型求解得到以下结果:
**表4.1
对于问题4,我们需要根据附件表4的数据推测支路1、支路2、支路3的实际车流量,并使用函数关系来描述各支路的车流量随时间的变化。以下是详细的数学模型和公式推导:
问题4的数学模型
1. 支路1的车流量函数
支路1的车流量呈现“无车流量→线性增长→稳定→线性减少至无车流量”的趋势。设时间 $ t $ 以分钟为单位,从 6:58 开始计时,$ t = 0 $ 对应 6:58。
-
无车流量阶段:$ t \in [0, t_1) $,支路1车流量为 0。
-
线性增长阶段:$ t \in [t_1, t_2) $,支路1车流量线性增长,函数为:
f 1 ( t ) = k 1 ( t − t 1 ) f_1(t) = k_1 (t - t_1) f1(t)=k1(t−t1)
其中 $ k_1 $ 为增长斜率。 -
稳定阶段:$ t \in [t_2, t_3) $,支路1车流量稳定,函数为:
f 1 ( t ) = f 1 ( t 2 ) f_1(t) = f_1(t_2) f1(t)=f1(t2) -
线性减少阶段:$ t \in [t_3, t_4) $,支路1车流量线性减少,函数为:
f 1 ( t ) = f 1 ( t 2 ) − k 2 ( t − t 3 ) f_1(t) = f_1(t_2) - k_2 (t - t_3) f1(t)=f1(t2)−k2(t−t3)
其中 $ k_2 $ 为减少斜率。 -
无车流量阶段:$ t \geq t_4 $,支路1车流量为 0。
2. 支路2的车流量函数
支路2的车流量分别在 [ 6 : 58 , 7 : 34 ] [6:58,7:34] [6:58,7:34] 和 [ 8 : 10 , 8 : 58 ] [8:10,8:58] [8:10,8:58] 时间段内线性增长和线性减少,在 ( 7 : 34 , 8 : 10 ) (7:34,8:10) (7:34,8:10) 时间段内稳定。
-
线性增长阶段:$ t \in [0, t_5) $,支路2车流量线性增长,函数为:
f 2 ( t ) = k 3 ( t − 0 ) f_2(t) = k_3 (t - 0) f2(t)=k3(t−0)
其中 $ k_3 $ 为增长斜率。 -
稳定阶段:$ t \in [t_5, t_6) $,支路2车流量稳定,函数为:
f 2 ( t ) = f 2 ( t 5 ) f_2(t) = f_2(t_5) f2(t)=f2(t5) -
线性减少阶段:$ t \in [t_6, t_7) $,支路2车流量线性减少,函数为:
f 2 ( t ) = f 2 ( t 5 ) − k 4 ( t − t 6 ) f_2(t) = f_2(t_5) - k_4 (t - t_6) f2(t)=f2(t5)−k4(t−t6)
其中 $ k_4 $ 为减少斜率。
3. 支路3的车流量函数
支路3的车流量受信号灯C控制,红灯时间为8分钟,绿灯时间为10分钟。当C显示绿灯时,支路3的车流量或稳定或呈现线性变化趋势;当C显示红灯时,支路3的车流量为0。
-
红灯阶段:支路3车流量为0。
-
绿灯阶段:支路3车流量函数为:
f 3 ( t ) = { k 5 ( t − t 8 ) 线性增长 c 稳定 f_3(t) = \begin{cases} k_5 (t - t_8) & \text{线性增长} \\ c & \text{稳定} \end{cases} f3(t)={k5(t−t8)c线性增长稳定
其中 $ k_5 $ 为增长斜率,$ c $ 为稳定值。
误差分析
误差主要来源于以下几个方面:
- 设备A3的观测误差。
- 支路车流量函数拟合的偏差。
- 信号灯C的绿灯时刻未知导致的误差。
表4.1 问题4支路车流量函数表达式
支路1 | 支路2 |
---|---|
$ f_1(t) $ | $ f_2(t) $ |
支路3 | |
$ f_3(t) $ |
表4.2 问题4支路车流量数值
时刻 | 支路1 | 支路2 | 支路3 |
---|---|---|---|
7:30 | $ f_1(32) $ | $ f_2(32) $ | $ f_3(32) $ |
8:30 | $ f_1(92) $ | $ f_2(92) $ | $ f_3(92) $ |
详细公式推导
问题4的解决方案
为了推测支路1、支路2、支路3的实际车流量,我们需要根据附件表4的数据和题目中给出的支路车流量变化趋势,建立数学模型。以下是解决该问题的步骤和Python代码实现。
1. 问题分析
- 支路1:车流量呈现“无车流量→线性增长→稳定→线性减少至无车流量”的趋势。
- 支路2:车流量分别在[6:58,7:34]和[8:10,8:58]时间段内线性增长和线性减少,在(7:34,8:10)时间段内稳定。
- 支路3:受信号灯C控制,当C显示绿灯时,车流量或稳定或呈现线性变化趋势;当C显示红灯时,车流量为0。信号灯C的红灯时间为8分钟,绿灯时间为10分钟,黄灯时间忽略不计。C显示绿灯的时刻未知。
2. 数学模型
(1) 支路1的车流量函数
- 假设支路1的车流量函数为分段函数:
- 无车流量阶段:$ Q_1(t) = 0 $
- 线性增长阶段:$ Q_1(t) = k_1(t - t_{start}) $
- 稳定阶段:$ Q_1(t) = C $
- 线性减少阶段:$ Q_1(t) = C - k_2(t - t_{end}) $
(2) 支路2的车流量函数
- 假设支路2的车流量函数为分段函数:
- 线性增长阶段:$ Q_2(t) = k_3(t - t_{start}) $
- 稳定阶段:$ Q_2(t) = C $
- 线性减少阶段:$ Q_2(t) = C - k_4(t - t_{end}) $
(3) 支路3的车流量函数
- 假设支路3的车流量函数为分段函数:
- 绿灯阶段:$ Q_3(t) = k_5(t - t_{start}) $ 或 $ Q_3(t) = C $
- 红灯阶段:$ Q_3(t) = 0 $
3. Python代码实现
import numpy as np
import pandas as pd
from scipy.optimize import curve_fit# 读取附件表4的数据
data = pd.read_csv("附件表4.csv") # 假设数据已加载到DataFrame中
time = data['时间'].values # 时间列
main_flow = data['主路车流量'].values # 主路车流量列# 定义支路1的车流量函数
def q1(t, k1, k2, t_start, t_end, C):if t < t_start:return 0elif t_start <= t < t_end:return k1 * (t - t_start)elif t_end <= t < t_end + 10: # 假设稳定阶段持续10分钟return Celse:return C - k2 * (t - (t_end + 10))# 定义支路2的车流量函数
def q2(t, k3, k4, t_start1, t_end1, t_start2, t_end2, C):if t_start1 <= t < t_end1:return k3 * (t - t_start1)elif t_end1 <= t < t_start2:return Celif t_start2 <= t < t_end2:return C - k4 * (t - t_start2)else:return 0# 定义支路3的车流量函数
def q3(t, k5, t_start, t_end, C):if t_start <= t < t_end:return k5 * (t - t_start)else:return 0
省略# 输出结果
更多内容具体可以看看我的下方名片!
里面包含有本次竞赛一手资料与分析!
另外在赛中,我们也会陪大家一起解析建模比赛
记得关注Tina表姐哦~