大家好呀,认证杯小美赛数学建模开始了,来说一下初步的选题建议吧:
首先定下主基调,
本次小美赛难度:D<A≈C<B。推荐选择D题。预计12.2中午更新D完整论文。预定论文请往后滑看完本文档链接。
A题需要搜集太阳黑子历史数据,这个网站上倒是有,但是数据整合还是稍微有点麻烦的,后面的周期预测方面,仅仅用时间序列是不够的,需要加入机器学习甚至机理分析,难度较高。B题目就是深度学习做图像处理,跟我刚做完的妈妈杯大数据赛的A题差不多,难度较高,只推荐有深度学习相关知识的队伍选择,这次我就不做了,太难教会给小白队伍了。C题需要通过题目给出的网站中的数据以及相关研究文章给出雪崩风险的相关参数,之后的爆炸参数确定则需要实际的实验数据和参考文献进行模拟仿真,难度也较大。
D题目则是根据题目给的三个资料,分别在人眼和CMOS视频这两种情形下,给出黄昏因子公式的修正方法,重点是分别研究修正过程中修正因子的相关参数,然后给出一些组合分别和修正之前做一下可视化对比就行,不难,我目前也编写了初步的代码和可视化结果。推荐小白队伍选择。
实在精力有限,因此本文只是简略的图文版初步思路,更详细的免费视频版讲解请移步:
【小美赛思路】2023"认证杯"数学中国数学建模国际赛选题建议及初步思路_哔哩哔哩_bilibili
OK,接下来讲一下ABCD题的思路。
A太阳黑子预测
太阳黑子是太阳光球上的暂时现象,表现为比周围区域暗的斑点。它们是由磁通量浓缩导致的表面温度降低的区域。太阳黑子通常成对出现在活跃区域,具有相反的磁极性。它们的数量随着大约11年的太阳周期而变化。单个太阳黑子或太阳黑子群可能持续从几天到几个月,但最终会衰减。太阳黑子在太阳表面移动时会扩张和收缩,直径范围从16公里(10英里)到160,000公里(100,000英里)。一些较大的太阳黑子甚至可以在没有望远镜的情况下从地球上看到。它们首次出现时的相对速度或适当运动速度可能是每秒几百米。
太阳周期通常持续大约十一年,从不到10年到超过12年不等。周期中太阳黑子活动最高点称为太阳极大期,活动最低点称为太阳极小期。这一周期也在大多数其他太阳活动中观察到,并与太阳磁场的变化相关,该磁场在此周期内改变极性。太阳黑子数量也在长时间内变化。例如,在1900年到1958年被称为现代极大期的时期内,太阳极大期的太阳黑子计数趋势是上升的;在接下来的60年中,趋势主要是下降的。总的来说,太阳在8000多年前最后一次像现代极大期那样活跃。
由于太阳黑子与其他类型的太阳活动相关,可以利用太阳黑子来帮助预测太空天气、电离层的状态以及对短波无线电传播或卫星通信相关的条件。已经使用了基于时间序列分析、光谱分析和神经网络的许多模型来预测太阳黑子活动,但通常结果不佳。这可能与大多数预测模型是在数据层面的现象学有关。尽管我们通常知道太阳活动周期的长度,但这个周期并不完全稳定,活动的最大强度随时间变化,而且峰值的时间和持续时间都难以准确预测。
我们需要预测太阳黑子,并且通常需要将结果按月平均。您和您的团队被要求开发合理的数学模型,尽可能可靠地预测太阳黑子。相关的观测数据在许多天文台以及空间科学研究组织公开可获得,包括太阳黑子的历史数量、太阳黑子的面积以及可能相关的其他指标的观测。例如,请参考(但不限于) https://www.sidc.be/SILSO/datafiles/ 和 http://solarcyclescience.com/activeregions.html。
思路:
任务1:预测当前和下一个太阳周期的开始和结束
- 数据收集:首先,需要收集关于太阳黑子历史数据的时间序列,特别是太阳周期的开始和结束时间。
- 周期分析:使用时间序列分析方法(如自回归积分滑动平均模型,ARIMA)来识别和预测太阳周期的特征。
- 模型验证:使用历史数据来验证模型的准确性,并调整模型参数以提高预测准确性。
任务2:预测下一个太阳周期的太阳极大期的开始时间和持续时间
- 极大期数据分析:分析历史上太阳极大期的开始时间和持续时间的模式。
- 回归分析:使用回归模型来预测下一个太阳极大期的开始时间和可能的持续时间。
- 模型优化:根据历史数据的拟合度调整和优化模型。
任务3:预测当前和下一个太阳周期中太阳黑子的数量和面积
- 数据建模:利用太阳黑子的历史数量和面积数据,建立预测模型。
- 复杂模型探索:考虑使用更复杂的模型,如机器学习或神经网络,来处理可能的非线性关系和未知因素。
- 结果分析:对预测结果进行详细分析,解释模型的可靠性和可能的不确定性。
通用步骤
- 数据质量检查:确保使用的数据准确无误。
- 文献研究:研究相关文献以了解已有的预测方法和模型。
- 结果验证:通过与现有研究和观测数据对比,验证预测结果的可靠性。
示例python代码:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from statsmodels.tsa.arima_model import ARIMA
from sklearn.metrics import mean_squared_error
# 假设我们有关于太阳黑子数量的历史数据
# 这里使用虚拟数据来模拟
years = np.arange(1900, 2023)
sunspots = np.random.normal(50, 10, len(years)) # 假设的太阳黑子数量,以正态分布随机生成
# 创建时间序列数据
data = pd.Series(sunspots, index=pd.to_datetime(years, format='%Y'))
# 绘制时间序列数据
plt.figure(figsize=(10, 6))
data.plot()
plt.xlabel('Year')
plt.ylabel('Number of Sunspots')
plt.title('Sunspots Time Series')
plt.grid(True)
plt.show()
# 使用ARIMA模型进行时间序列预测
# 参数(p,d,q)需要根据实际数据调整,这里仅为示例
p, d, q = 5, 1, 0
model = ARIMA(data, order=(p, d, q))
# 拟合模型
model_fit = model.fit(disp=0)
# 进行预测
forecast_years = 10
forecast = model_fit.forecast(steps=forecast_years)[0]
# 创建预测年份的时间序列
forecast_years_series = pd.date_range(start=years[-1] + 1, periods=forecast_years, freq='Y')
# 绘制预测结果
plt.figure(figsize=(10, 6))
data.plot(label='Actual')
plt.plot(forecast_years_series, forecast, label='Forecast', color='red')
plt.xlabel('Year')
plt.ylabel('Number of Sunspots')
plt.title('Sunspots Forecast')
plt.legend()
plt.grid(True)
plt.show()
实际数据需要从题目给的网站获取:
B工业表面缺陷检测
金属或塑料制品的表面缺陷不仅影响产品的外观,还可能对产品的性能或耐用性造成严重损害。自动表面异常检测已成为一个有趣且前景广阔的研究领域,对视觉检测的应用领域有着非常高和直接的影响。Kolektor集团提供了一组有缺陷生产项目的图像数据集,我们希望使用这个数据集作为一个例子,来研究自动检测产品表面缺陷的数学模型。
Domen Tabernik、Matic Šuc和Danijel Skočaj建立了一个基于深度学习的表面缺陷检测模型,据称即使在少量训练的情况下也能提供良好的区分能力。然而,我们目前的问题略有不同;首先,我们希望我们的模型能够部署在廉价的手持设备上。这样的设备只有非常有限的存储空间和计算能力,因此模型对计算量和所需存储空间的要求非常高。其次,由于这个数据集并不包含所有的缺陷模式,我们希望模型在遇到其他类型的缺陷时也有相对较好的泛化能力。你和你的团队被要求建立易于使用的数学模型,完成以下任务:
任务:
1. 确定照片中是否出现表面缺陷,并衡量您的模型进行此操作所需的计算量和存储空间;
2. 自动标记出表面缺陷出现的位置或区域,并衡量您的模型所需的计算存储空间和标记准确性;
3. 请阐明您的模型的泛化能力,即为什么在遇到与数据集中不完全相同的缺陷类型时,您的模型仍然可行。
思路:
任务1:确定照片中是否出现表面缺陷
- 模型选择:考虑到设备的存储和计算限制,选择轻量级的深度学习模型,如MobileNet或SqueezeNet。
- 特征工程:实施有效的图像预处理技术来减少模型的计算负担。
- 性能评估:评估模型对计算资源的要求,包括模型大小、运算速度和能耗。
- 准确度与资源需求平衡:在模型的准确度和资源需求之间寻找最佳平衡点。
任务2:自动标记表面缺陷
- 图像分割技术:应用轻量级的图像分割算法,如U-Net或改进的轻量级分割网络,以准确标记缺陷区域。
- 计算和存储优化:对模型进行优化,以减少其在设备上的计算和存储需求。
- 标记准确性测试:通过与专家标记的样本对比,测试模型的标记准确性。
任务3:模型的泛化能力
- 数据增强:使用数据增强技术来模拟新的缺陷类型,提高模型的泛化能力。
- 迁移学习:利用已经在类似任务上训练的模型进行微调,以提高对新缺陷类型的识别能力。
- 泛化能力测试:对模型进行交叉验证,使用与训练集不同的数据测试其泛化能力。
通用步骤
- 资源评估:评估模型在目标设备上的运行情况,确保它满足存储和计算能力的限制。
- 用户友好性:确保模型易于集成和使用,尤其是在非专业用户的设备上。
- 持续学习:考虑模型能否通过在线学习或定期更新来适应新的缺陷类型。
注意点
- 在满足存储和计算限制的同时,保持模型的高准确度是一个挑战。
- 模型的泛化能力对于长期有效性至关重要,但可能需要定期的数据更新和模型重新训练。
- 用户体验,特别是在手持设备上的响应时间和易用性,对于系统的成功实施至关重要。
这道题跟我之前做的妈妈杯大数据很像,都是图像处理和分类,其实无非就是深度学习提取特征然后分类罢了。
当时我的预测精度是97.8。
来看看本问的示例代码:
import numpy as np
import matplotlib.pyplot as plt
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense
from tensorflow.keras.preprocessing.image import ImageDataGenerator
train_data_dir = 'path/to/train/data'
validation_data_dir = 'path/to/validation/data'
# 使用ImageDataGenerator来增强图像数据
train_datagen = ImageDataGenerator(rescale=1./255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True)
test_datagen = ImageDataGenerator(rescale=1./255)
# 使用flow_from_directory来从文件夹加载图像
train_generator = train_datagen.flow_from_directory(
train_data_dir,
target_size=(150, 150),
batch_size=32,
class_mode='binary')
validation_generator = test_datagen.flow_from_directory(
validation_data_dir,
target_size=(150, 150),
batch_size=32,
class_mode='binary')
# 建立一个简单的卷积神经网络
model = Sequential()
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(150, 150, 3)))
model.add(MaxPooling2D(2, 2))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(2, 2))
model.add(Flatten())
model.add(Dense(64, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
# 编译模型
model.compile(loss='binary_crossentropy',
optimizer='adam',
metrics=['accuracy'])
# 训练模型
model.fit(
train_generator,
steps_per_epoch=100, # 根据您的数据量和批量大小调整
epochs=15,
validation_data=validation_generator,
validation_steps=50) # 同样根据您的数据量调整
# 保存模型
model.save('surface_defect_detection_model.h5')
C防止雪崩
雪崩是一种极为危险的现象。如今,我们对雪崩形成的过程有了较好的理解。然而,我们还无法详细预测雪崩何时何地会被触发。村庄和道路可以通过多种方式免受雪崩的影响。例如,避免在易受雪崩影响的区域建造建筑、通过种植林木或建造屏障来防止雪崩的形成、通过雪棚等防护结构减少雪崩的影响,以及在积雪过多之前使用爆破引发人工小规模雪崩。我们现在聚焦于使用爆炸物触发人工小规模雪崩。需要确定的是触发爆炸的适当时机和相关参数。虽然使用更多的爆炸物可以提供更好的个人安全,但它会干扰这些地区居住动物的正常生活。当涉及到人类安全时,通过人工触发雪崩来使滑坡更安全,在这方面意义重大。但自然保护协会并不认为在大范围内,特别是在滑雪区人工触发雪崩,对动物产生的负面影响日益增加。此外,当雪落在温暖的地面上,被强风压缩,变得更加坚硬。由于广泛的大雪和强风,雪变得越来越坚实,成功率也越来越低。因此,我们需要你和你的团队建立合理的模型来研究这个问题。
任务:
1. 找到用于衡量发生雪崩风险的有用且易于测量的参数;
2. 对于有雪崩风险的斜坡,我们需要一次简单的现场调查,以确定使用爆破引发小型雪崩的适当时机、爆炸物的放置位置和适当的爆炸力度。
注意:在研究上述问题时,如果涉及到雪环境的参数,请自行寻找所需数据。或者,您可以在论文中计算一些虚拟示例,但您应给出所需参数的合理定义和可实现的低成本测量方法。以便我们根据您的测量方案进行测量并给出最终结果。
任务1:衡量雪崩风险的参数
- 积雪深度和密度:这是评估雪崩风险的最基本参数之一。可以通过简单的工具如雪尺或更高级的传感器进行测量。
- 斜坡角度:更陡的斜坡更有可能发生雪崩。角度测量可以通过智能手机应用或便携式倾角仪实现。
- 温度和天气变化:温度的波动会影响雪层的稳定性。使用便携式气象站可以追踪这些变化。
- 风速和风向:强风可以改变雪层的分布和稳定性。风速计可用于监测这些条件。
- 历史数据和模式:参考过去该地区的雪崩历史和天气模式,可通过地方气象局或在线数据库获取。
任务2:现场调查确定爆破参数
- 现场雪层分析:对雪层的结构和稳定性进行现场分析,包括识别潜在的弱层。
- 爆破地点选择:基于斜坡的形态和雪层结构确定最佳的爆破点。
- 爆破力度决策:依据积雪深度和密度,以及斜坡的大小和形态,决定所需的爆破力度。
- 环境影响评估:考虑爆破对当地野生动物和环境的影响,并寻找减少这种影响的方法。
- 安全预案制定:确保爆破活动的安全,包括撤离路线和紧急响应计划。
模型建立
- 数据收集与分析:收集相关参数的数据,并使用统计方法分析雪崩发生的概率。
- 模型验证:对模型进行测试,确保其能准确预测雪崩风险和爆破需求。
注意点
- 雪崩预测是一个复杂的自然现象,需要综合考虑多种环境因素。
- 在进行爆破时,人类安全是最重要的考虑因素,同时也要尽量减少对环境的影响。
- 现场调查和数据收集必须由经验丰富的专业人士进行。
题目是给了我们很多研究和相关数据的网站的:
我们的重点就是要去搜集相关数据并研究雪崩的特点等,例如:
D望远镜的黄昏因子
当我们使用普通光学望远镜在昏暗的光线中观察远处的目标时,进入双筒望远镜的光线越多,入口孔径越大。望远镜的放大倍数越大,视野就越狭窄,图像看起来就越暗。但放大倍数越高,目标看起来就越大,可以观察到更多的细节。我们需要一个比较值来衡量在光线较暗时双筒望远镜的适用性。蔡司公司使用一种名为黄昏因子的经验公式,定义如下:
其中,m 是放大倍数, d 是镜头直径(以毫米为单位)。
黄昏因子是一个用于比较在低光条件下使用的双筒望远镜或观测镜的有效性的数字。黄昏因子越大,在低光条件下你能看到的细节就越多。然而,黄昏因子也可能具有误导性,例如,两个双筒望远镜8 x 56和56 x 8(虽然这种型号不存在,但理论上是可行的)有相同的黄昏因子21.2。虽然8 x 56型号在黄昏时是理想的,但56 x 8型号即使在白天也完全无法使用。
我们希望有一个更有用的指标,能够表达望远镜在低光条件下的性能,并且只使用基本参数。这将为选择望远镜提供一个规格参考。更详细的反映图像质量的指标,如对比度、透光率、颜色还原等,不在我们的讨论范围内。
任务:
1. 请考虑在昏暗光线下人眼的视觉特性,并建立一个合理的模型,提出适用于人眼直接观察的双筒望远镜的黄昏系数算法。
2. 如果视觉接收器不是人眼,而是CMOS视频记录设备,请考虑在昏暗光线下CMOS的感测特性,并建立一个合理的数学模型,提出适用于CMOS视频记录的镜头的黄昏系数算法。
注意:在研究上述问题时,如果涉及到光电受体的性能参数,请自行寻找所需数据。或者,您可以在论文中计算一些虚拟示例,但您应给出所需参数的合理定义和可实现的低成本测量方法。以便我们根据您的测量方案进行测量并给出最终结果。
这也就是本次我会首先完成完整论文的题目,题目本身难度不算高,并且也可以做相应的可视化和对比,内容也会比较丰富。
任务1
- 人眼视觉特性:在昏暗条件下,人眼主要依赖视网膜上的杆状细胞来感知光线,这些细胞对光非常敏感,但不是很擅长区分颜色或细节。因此,望远镜的黄昏系数算法应该考虑这种感光能力。
- 黄昏因子的调整:传统的黄昏因子 TF=根号下m×d (其中 m 为放大倍数,d 为镜头直径)是一个基本起点。但是,为了更好地适应人眼在低光照条件下的性能,可以考虑调整这个公式,以包括人眼对光线的敏感度。
- 新的黄昏系数算法:可以引入一个新的系数 C,它代表人眼在昏暗条件下的感光能力。然后,我们可以修改黄昏因子的公式为TF′=C×根号下m×d。系数 C 可以根据人眼在不同光照条件下的适应能力进行调整,例如,当光线较暗时,C 的值可以增加,以反映人眼更高的感光能力。
- 出瞳直径的考虑:出瞳直径(镜头直径除以放大倍数)也是一个重要因素。理想情况下,出瞳直径应该至少与观察者的瞳孔大小相当。在昏暗条件下,人类的瞳孔可以扩张到约5至7毫米。因此,望远镜的出瞳直径应该接近这个范围,以最大化光线的传输。
- 实际应用:在选择望远镜时,可以使用上述修改后的黄昏因子来评估其在低光照条件下的表现。这将有助于选择在黄昏或其他低光照环境中表现良好的望远镜。
代码示例:
任务2
- CMOS传感器特性:CMOS传感器的主要特性包括ISO感光度、曝光时间、信噪比和动态范围。在昏暗条件下,提高ISO感光度可以增加传感器对光的敏感度,但同时也会增加噪声。较长的曝光时间可以捕获更多的光,但可能会导致运动模糊。
- 新的黄昏系数算法:考虑到CMOS传感器的特性,我们可以引入一个新的系数 H 来反映传感器在低光照条件下的性能。新的黄昏系数算法可以表示TF′=H×根号下m×d,其中 m 是放大倍数,d 是镜头直径。系数 H 可以根据传感器的ISO感光度和信噪比进行调整。
- 考虑ISO感光度和曝光时间:为了使算法更加准确,可以将ISO感光度和曝光时间纳入考虑。例如,可以使用一个公式如 H=f(ISO,Exposure Time,SNR) 来计算 H 的值,其中 ISO 是传感器的ISO感光度,Exposure TimeExposure Time 是曝光时间,SNRSNR 是信噪比。
- 实际应用:使用此算法可以评估在低光照条件下,特定的CMOS视频记录设备使用特定镜头的有效性。这可以帮助选择在昏暗环境中表现最佳的视频记录设备和镜头组合。
代码示例:
运行结果:
OK,视频讲解以及后续的完整成品论文预定请点击我的下方个人卡片查看↓: