2023年天府杯全国大学生数学建模竞赛A题震源属性识别模型构建与震级预测解题全过程文档及程序

2023年天府杯全国大学生数学建模竞赛

A题 震源属性识别模型构建与震级预测

原题再现:

  地震是一种较为复杂的地壳运动现象,全世界每年发生的地震灾害事故不计其数。旨在减少地震灾害的地震预警预报技术需要在日常地震监测中有效识别出天然地震事件,剔除掉人工地震记录或异常干扰信号,然后进行后需操作。地震信号精准辨识是地震学研究和地震观测技术的重要内容,但随着城市工程建设项目的急剧增多和地震台网监测范围的扩大,爆破、矿震、武器试验、塌陷等非天然地震事件时有发生,干预了近震事件的记录、大震应急处置与地震目录的日常管理,有必要增强识别模型的可靠性与精度大小。
  震级预测是地震预测的重要目标(震中、发震时间、震级等)之一,震级大小的精准判定依赖于大量历史事件的特征挖掘和地震波能量估计,且有助于开展针对性的地震应急方案制定,减少损失。
在这里插入图片描述
  随着计算机技术和人工智能学科的发展,人工智能地震学应用而生,利用机器学习和神经网络模型解决常规地震学问题的手段亦逐渐取代传统方法,深入到震源属性识别模型构建与震级预测中。

  请解决:
  问题 1:针对附件 1~8 中的地震波数据,找出一系列合适的指标与判据,构建震源属性识别模型,进行天然地震事件(附件 1~7)与非天然地震事件(附件 8)的准确区分;
  问题 2:地震波的振幅大小、波形特性与震级有着显著关联。根据已知震级大小的附件 1~7 中数据(震级大小分别为:4.2、5.0、6.0、6.4、7.0、7.4、8.0),恰当地挑选事件与样本,建立震级预测模型,尝试给出附件 9 中地震事件的准确震级(精确到小数点后一位)。
  问题 3:库深、库容、断层类型、构造活动/基本烈度、岩性等是影响水库诱发地震震级大小的重要因素。请根据附件 10 中 102 个水库地震样本,尝试建立水库基本属性资料与震级的关系模型,并给出合理的依据。
  注意:信号采样率统一为 200 Hz;附件 1~9 中每个附件皆代表一个独立地震事件,附件中的各个样本来自于同一地震事件中的不同台站观测数据,且数据物理含义相同(加速度或速度);库深单位为 m,库容单位为100000000m^3。

整体求解过程概述(摘要)

  地震是一种复杂的地球现象,每年全球都会发生许多地震,因此寻找可靠的地震预警预报技术非常重要。为了能有效地识别出天然地震事件,并排除人为地震或其他信号的干扰,需要进行精确的地震信号辨识。同时,随着城市工程建设的增加和地震台网监测范围的扩大,非天然地震事件的发生也越来越多,因此增强模型的识别可靠性和精度也变得十分重要。在地震预测的众多目标之一,震级预测的精准判定有助于开展针对性的地震应急方案制定,减少灾害损失。
  针对问题一,为了解决自然地震和非自然地震事件识别的问题,首先需要对所有站点收集到的数据进行合并处理。其次,利用MFCC方法对数据集进行特征提取。然后采用了多种分类器,包括概率神经网络、BP神经网络、支持向量机和logistic回归等,对数据进行二分类识别。最后,通过比较和分析结果,得出了附件9的具体类别为自然地震事件。
  针对问题二,为了解决附件9的震级预测问题,首先利用问题一提取的特征数据,并通过主成分分析法进行数据降维,以减少数据维度,提高预测效果。利用灰色关联系数大致猜测附件9的震级值与附件4最为接近,即震级值为6左右。其次,建立了6种不同的预测模型,包括支持向量机回归、BP神经网络、模糊神经网络、多元线性回归模型,此外,还利用鮣鱼优化算法和增强版鮣鱼优化算法调整正则化系数,构建两种不同的岭回归模型对附件9的震级进行回归预测。最后,通过分析3种误差指标(平均绝对误差、均方根误差和平均百分比误差)以及拟合度R²,确定了较好的模型,并预测了附件9的震级值为6.1。
  针对问题三,为了研究水库基本属性资料与震级之间的关系模型,首先,利用对“附件10”中的类别变量进行编码,便于后续建模分析。其次,运用建立岭回归模型,发现库容和库深与震级关系不显著,而岩性与震级的关系存在一定的争议,进一步通过逐步回归模型,选出影响因素的关键变量为断层类型和构造活动/基本烈度。然后,鉴于水库属性与震级之间可能存在非线性关系,应用增强版鮣鱼优化算法,建立了非线性回归模型,以更加准确地描述两者之间的关系。最后,进行模型误差对比和对自变量进行敏感性分析,确定最终的关系模型,即震级值关于断层类型和构造活动/基本烈度的非线性回归模型,其拟合度R²为0.981。

模型假设:

  为了便于考虑问题,不影响模型准确性的前提下,作出以下假设:
  (1)假设站台的测试数据能够反应震动类别。
  (2)假设测试数据无误。
  (3)对于震值的预测,假设站台测试数据能够反应震值。
  (4)对于关系模型的建立,假设无其他强相关的变量影响震值。

问题分析:

  针对问题一
  为了解决识别自然地震和非自然地震事件的问题,首先,将所有站点收集的数据进行合并处理。其次,利用 MFCC 方法对数据集进行特征提取。然后,采用了多种分类器,包括概率神经网络、BP神经网络、支持向量机和logistic回归等,对数据进行了二分类识别。最后,通过比较和分析,确定了附件9的具体类别。
  针对问题二
  为了解决附件9的震级预测问题,首先,利用问题一提取的特征数据,并通过主成分分析法进行数据降维,以减少数据维度,提高预测效果。同时,利用灰色关联系数大致猜测附件9的震级值。然后,建立了6种不同的预测模型,包括支持向量机回归、BP神经网络、模糊神经网络、岭回归、线性回归模型等,对附件9的震级进行回归预测。最后,通过分析3种误差(平均绝对误差、均方根误差和平均百分比误差)和拟合度,得到较好的模型,并确定附件9的震级。
  针对问题三
  为了研究水库基本属性资料与震级之间的关系模型,首先,我们利用SPSSPRO对“附件10”中的类别变量进行编码,便于后续建模分析。其次,我们运用岭回归和逐步回归等统计方法,建立线性回归模型,并选出了影响因素的关键变量。鉴于水库属性与震级之间可能存在非线性关系,应用EROA,建立了非线性回归模型,以更加准确地描述两者之间的关系。最后,我们进行了误差比较和敏感性分析,以确定最终的关系模型。

模型的建立与求解整体论文缩略图

在这里插入图片描述

全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

部分程序代码:(代码和文档not free)

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import animation
#定义计算区域
x0 = 0.0
x1 = 1.0
y0 = 0.0
y1 = 1.0
N = 100
ds = (x1 - x0)/N

t0 = 0.0
t1 = 1.4
M = 1400
dt = (t1 - t0)/M
x = np.linspace(x0, x1, N+1)
y = np.linspace(y0, y1, N+1)
t = np.linspace(t0, t1, M+1)

r = dt/ds;
#初始化计算区域
(X, Y, T) = np.meshgrid(x,y,t)
#解析解
uu = np.multiply(np.multiply(np.cos(np.sqrt(2) * np.pi * T),np.sin(np.pi * X)),np.sin(np.pi * Y))
#有限差分求解
#创建差分数组
u = np.zeros((N+1,N+1,M+1))
#加入初始条件1
for i in range(0,N+1):
    for j in range(0,N+1):
        u[i,j,0] = np.sin(np.pi*i*ds) * np.sin(np.pi*j*ds)
#加入初始条件2
for i in range(1,N):
    for j in range(1,N):
        u[i,j,1] = r**2 / 2 * (u[i+1,j,0] + u[i-1,j,0] + u[i,j+1,0] + u[i,j-1,0]) + (1 - 2*r**2) * u[i,j,0] 
#加入边界条件
for k in range(0,M+1):
    u[0,0,k] = u[0,N,k] = u[N,0,k] = u[N,N,k] = 0
#递推求[1,N-1]时刻波场
for k in range(1,M):
    for i in range(1,N):
        for j in range(1,N):
            u[i,j,k+1] = r**2*(u[i+1,j,k]+u[i-1,j,k]+u[i,j+1,k]+u[i,j-1,k]) + (2-4*r**2)*u[i,j,k] -u[i,j,k-1]
(X, Y) = np.meshgrid(x,y)
t = 100

fig = plt.figure(figsize=(20,16))
ax1 = fig.add_subplot(131,projection='3d')
surf1 = ax1.plot_surface(X, Y, uu[:,:,t], cmap='viridis')
fig.colorbar(surf1)
ax1.set_xlabel('X Label')
ax1.set_ylabel('Y Label')
ax1.set_zlabel('Z Label')
ax1.set_title(f"analysis solution at time {t*dt}")

ax2 = fig.add_subplot(132,projection='3d')
surf2 = ax2.plot_surface(X, Y, u[:,:,t], cmap='viridis')
fig.colorbar(surf2)
ax2.set_xlabel('X Label')
ax2.set_ylabel('Y Label')
ax2.set_zlabel('Z Label')
ax2.set_title(f"FD solution at time {t*dt}")

ax3 = fig.add_subplot(133,projection='3d')
surf3 = ax3.plot_surface(X, Y, uu[:,:,t]-u[:,:,t], cmap='viridis')
fig.colorbar(surf3)
ax3.set_xlabel('X Label')
ax3.set_ylabel('Y Label')
ax3.set_zlabel('Z Label')
ax3.set_title(f"error at time {t*dt}")

plt.show()
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

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

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

相关文章

go面向对象

继承 封装 多态 定义结构体 //定义老师的结构体 type Teacher struct {Name stringAge intSchool string }func main() {var t1 Teacherfmt.Println(t1)t1.Name "tom"t1.Age 20t1.School "school"fmt.Println(t1) } 结构体实例的创建 package ma…

springboot项目中,子模块中无法引入父模块中类

问题: 当前模块kangning_admin中想引入 com.google.code.kaptcha.Producer类,但是当前模块中没有该类 解决办法 1、在pom.xml文件上右键---Maven---Reload project 重新加载pom文件中的依赖 2、 在Idea的右边Maven窗口,在根目录上执行cle…

基于SpringBoot的会员制医疗预约服务管理信息系统

开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea 系统展示 系统功能模块 会员制医疗预约服务管…

02课程发布模块之部署Nginx

部署Nginx 部署网关 通过Nginx访问后台网关,然后由网关再将请求转发到具体的微服务,网关会把请求转发到具体的服务 upstream gatewayserver{server 127.0.0.1:63010 weight10; } # 网站首页对应的虚拟机 server {listen 80;server_name www.51xuecheng.cn…

Java 沉淀-2

一维数组 初始化: 动态初始化:数组声明且为数组元素分配空间与赋值操作分开进行 静态初始化:在定义数组的同时就为数组元素分配空间并赋值 数组元素类型 二维数组 数组中的数组 初始化 注意特殊学法情况:int[]x,y[]: x是一维数…

数据库范式拆分实战

函数依赖 如果给定一个X,能唯一确定一个Y,就称X确定Y,或者说Y依赖于X,例如Y X*X函数。 X -> Y(X确定Y,Y依赖于X) 部分函数依赖 A可确定C,(A,B&#xff09…

[金三银四] 操作系统上下文切换系列

图源: https://zhuanlan.zhihu.com/p/540717796 文章目录 2.11 cpu 的上下文切换2.12 协程的上下文切换2.13 线程的上下文切换2.14 进程的上下文切换2.15 中断上下文切换2.16 什么时候会发生进程的上下文切换2.17 什么时候会发生线程的上下文切换2.18 什么时候会发生…

程序汪保姆教程在linux上部署运行一套SpringBoot内容管理系统

❝ 程序汪已经分享了很多开源项目了,发现一个痛点很多人拿到开源项目了不会部署运行,光看代码很多人看不下去的(程序汪也是这样),程序汪建议拿到开源项目了,一定要想办法把项目运行起来跑跑,然后…

树的遍历方式DFS和BFS

DFS(depth first search) 深度优先遍历 从图中一个未访问的顶点V开始,沿着一条路一直走到底,然后从这条路尽头的节点回退到上一个节点,再从另一条路走到底…不断递归重复这个过程,直到所有的顶点都遍历完成。前序遍历&#xff0c…

【Postman】工具使用介绍

一、postman工具介绍 1.什么是postman postman是谷歌开发的一款网页调试和接口测试工具,能够发送任何请求类型的http请求,支持GET/POST/PUT/DELETE等方法。postman简单易用,可以直接填写URL,header,body就可以发送一…

OpenHarmony开发自测试执行框架

OpenHarmony为开发者提供了一套全面的开发自测试框架OHA-developer_test,开发者可根据测试需求开发相关测试用例,开发阶段提前发现缺陷,大幅提高代码质量。 本文从基础环境构建,用例开发,编译以及执行等方面介绍OpenH…

双向链表

目录 单向链表 双向链表 特点 缺点 双向链表的封装 单向链表 只能从头遍历到尾或者从尾遍历到头(一般从头到尾)。也就是链表相连的过程是单向的. 实现的原理是上一个链表中有一个指向下一个的引用 单向链表有一个比较明显的缺点: 我们可以轻松的到达下一个节点,但是回到…

Docker 入门使用说明

Docker 入门使用说明 Docker 安装 Docker 官网:Docker Docker 安装说明:Docker 安装说明 这里由于 Docker 在实时更新,所以每次安装 Docker 用来导入 key 的链接可能会有变化,这里就参考官方的安装方法即可 Docker 常用命令说…

OSCP靶场--Clue

OSCP靶场–Clue 考点(文件读取读取配置中的密码rce认证后利用sudo 提权) 1.nmap扫描 ┌──(root㉿kali)-[~/Desktop] └─# nmap -sV -sC -p- 192.168.163.240 --min-rate 2500 Starting Nmap 7.92 ( https://nmap.org ) at 2024-03-14 08:44 EDT Nmap scan report for 192…

网络通信VLAN学习篇

拓扑图 如上图,pc3,pc5同一网络,pc4,pc6同一网络,vlan的划分就是虚拟局域网,局域网的理解就是同一vlan下的设备可以相互通信,不同vlan不可以通信(通过三层交换机可以实现通信的&…

缓存穿透、缓存击穿、缓存雪崩及其解决方法

缓存穿透、缓存击穿、缓存雪崩是redis的三大问题。 在介绍这三大问题之前,我们需要先了解Redis作为一个缓存中间件,在项目中是如何工作的。首先看一下在没有缓存中间件的时候的系统数据访问的架构图: 客户端发起一个查询请求的时候&#xff…

面试算法-98-随机链表的复制

题目 给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节…

深入理解 Docker 镜像

1. Docker 镜像的底层原理 1.1 分层的镜像 以我们的pull 命令为例,在下载的过程中我们可以看到docker的镜像好像是一层一层的在下载。 1.2 UnionFS(联合文件系统) 联合文件系统是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次…

马斯克AI大模型Grok开源了!

2024年3月18日,马斯克的AI创企xAI兑现承诺,正式发布了此前备受期待大模型Grok-1。 代码和模型权重已上线GitHub: https://github.com/xai-org/grok-1 截止目前,Grok已经在GitHub上获得了35.2k颗Star,还在不断上升中。 Grok官方博…

202446读书笔记|《夜风颂》——生命的内核是过往和希望 有情在朝暮 长聚长相思

202446读书笔记|《夜风颂》——生命的内核是过往和希望 有情在朝暮 长聚长相思 序现代诗古体诗 《夜风颂》作者王锴,前段时间加入书架的书,前边有几首现代诗挺惊艳,蛮喜欢的,后边古体诗稍逊色些。值得一读的一本小诗集。 序 海鸥之…