2022年长三角高校数学建模竞赛C题隧道的升级改造与设计解题全过程文档及程序

news2024/10/7 10:15:39

2022年长三角高校数学建模竞赛

C题 隧道的升级改造与设计

原题再现:

  某地现存一旧式双洞隧道,现计划将该隧道在旧貌基础上升级改造。在升级改造前,需进行定标与设计。考虑到该隧道洞壁附着特殊涂料,无人机在洞内通信信号较差,实地测量存在人身安全风险,建设指挥部已经通过某种技术手段得到该隧道从正上方俯拍的 CAD 航拍图(图 1,更清晰图像见附件 1)。现计划通过数学建模方法进行每个洞的中轴线的百米定标、安全评估与设计改造。
在这里插入图片描述
  图1为隧道正上方俯拍图,即二维X-Z平面图。左洞起点坐标为A(91, 7, 349), 左洞终点坐标为 B(-617, 48, -1672),单位为米(下同);右洞起点坐标为 C(134, 7, 357),右洞终点坐标为 D(-580, 48, -1685)。左洞行车方向为 AB,右洞行车方向为 DC。起点和终点均落在隧道单洞中轴线上。附件 2 是测得的隧道中轴线的 Z-Y高程数据。为安全起见,在修建过程中,该隧道的坡度一般不大于 3%;同时为利于排水,坡度一般不小于 0.3%。其中,坡度 a%指的是沿着 Z 方向每前进 1 米,Y 方向上升或下降 a%米。此外,为防止降雨天气对安全造成影响,隧道应尽量避免有积水区域。X、Y、Z 坐标轴方向参照图 1 中标示。请建立数学模型,解决以下问题:
  1、建立隧道左右两洞的中轴线空间定标模型,计算左右两个隧道的长度,并给出左右两个隧道的百米定标。
  2、根据隧道的空间定标和隧道建设安全要求,量化评价隧道的安全性。
  3、隧道改造设计过程中,在尽可能满足隧道安全要求的前提下,还应考虑节省人力、物力资源的消耗。请从安全、经济等方面出发,研究如何对该隧道进行优化改造设计。改造后的结果请填入附件 3,并将其作为附件材料提交至参赛系统中。
  相关说明
  定标:即坐标的标定,其中空间定标是指准确标定出被描述物体的三维空间坐标。百米定标:沿行车方向标定隧道通行长度整百米处(如 100 米,200 米,300 米,……)的三维空间坐标。隧道长度:隧道的通行长度。

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

  对于问题一,要建立隧道左右两洞的中轴线定标模型,以左侧隧道洞为例,首先我们根据附件 2 所给出的Y ~ Z 数据,利用非线性变换的傅里叶函数模型得到 y 与 z 之间的函数关系;另外从题目所给出的隧道正上方俯拍图,假设 x 与 z 满足分段函数的关系,从而确立隧道中轴线的空间模型。为了能够同时求出隧道总长度以及百米定标的三维坐标,我们采用了对 z 轴方向上进行线性插值,得到 10000 个 z 轴方向的数据,再根据 x,y,z之间的数量关系,得到相应的 x, y 的对应坐标。此时,隧道总长度就可以利用这 10000个插值得到的三维坐标通过两点间距离公式求出。而对于百米定标的这些三维坐标,只需要利用 matlab 软件编程,将 10000 个数据从初始值开始,当两点距离每相隔 100 米,就定一个百米坐标,依次类推,最后得到隧道的所有百米定标的具体数值坐标。
  针对问题二,要求量化隧道的安全性,在问题一的基础上,我们直接利用附件 2 所给出的数据,根据题意坡度a%是指沿着 z 方向每前进 1 米,Y 方向上升或下降a%。求出两点间的坡度a% 的绝对值是否落在0.3% ~3% 这个范围内,并且为了安全防止隧道积水,隧道应避免起伏,呈单调型或开口下的抛物型。通过分析,最终得出结论:隧道无积水区域,但在坡度的建设要求上存在一定问题。
  针对问题三,前面得的数据显示隧道安全性需要改进,即一部分点的坡度不在合理范围内。因此问题三可以看作是一个有约束条件的最优化问题。目标函数是最小化隧道长度,约束条件为(1)隧道单调上升或单调下降,建立不等式约束;(2)隧道坡度绝对值应在0.3% ~ 3% 之间,建立不等式约束;(3)起止点坐标,建立等式约束。通过求解带线性约束的二次优化问题,得到了对应 Y 的最优值,既保证了坡度在合理范围内,又使得隧道长度最小,达到节省材料的目的。
  本文主要运用 MATLAB 软件对相关数学模型进行编程求解,计算快捷、准确,整篇文章采取图文并茂的方式去呈现。文章最后对模型做了评价与推广,结果正确合理,具有一定的价值。

模型假设:

  1、假设在俯视平面ZOX 上,左洞隧道在原点处两侧为直线;
  2、假设在俯视平面ZOX 上,右洞隧道与左洞隧道平行;
  3、假设记录的数据除缺失外准确无误;
  4、假设隧道所在的山体密度均等;

问题分析:

   对于问题一的分析
  为得到隧道总长度及百米定标坐标,我们需要建立隧道左右两洞的中轴线定标模型。以左洞为例,首先根据附件 2 所给出的Y、Z 坐标数据,利用 matlab 软件拟合工具箱中的非线性变换傅里叶函数得到坐标 y 与坐标 z 之间的函数关系 y = f (z)。
  另外,观察附件 1 中的隧道图,发现隧道存在弯折现象,现假设 x 与 z 之间满足分段函数 x = g(z) 的关系式,且两段函数均为直线方程,弯折的地方设为分段函数原点。这样我们就能够获得左洞中轴线空间位置模型。右洞同理。
  对于隧道长度及百米定标,我们利用类极限的方式,将出入口的坐标在 z 轴方向上进行 10000 等分,根据 y = f (z) 及 x = g(z) 关系式求得对应的 x 值及 y 值,从而得到这10000 个点的坐标。对相邻坐标之间的距离求和得到近似于隧道的总长度。同时我们也可得出隧道每百米的位置坐标。
  对于问题二的分析
  为量化隧道安全性,首先考虑隧道坡度,再考虑隧道是否会积水,根据附件 2 的数据,可以很容易的求出相邻两点之间的坡度,对比隧道安全指标(即范围在 0.3%~3%之间),筛选出异常的坐标点。
  另外为验证隧道是否会积水,画出Y 与Z 的关系图,分析隧道高度是否存在起伏或先下后上的情况。结果发现左洞隧道和右洞隧道从起点到终点高度都是先上升后下降不会积水。
  对于问题三的分析
  对隧道的优化有两方面,一是安全性问题,即隧道坡度满足要求且无积水。二是经济问题,即隧道总长度应该最小。在确保安全性的同时我们需要减少工程量,确保用最少的改动解决问题。
  本问题为一个带线性约束的二次优化问题,根据附件 3 中的 z 坐标值计算出优化后的 y 坐标。利用 matlab 的优化函数可以方便的解决此类问题。

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

在这里插入图片描述

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

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

filename = './附件 2.xlsx';
leftsheet = '左洞高程';
rightsheet = '右洞高程';
leftxlRange = 'A2:B99';
rightxlRange = 'A2:B98';
left = xlsread(filename,leftsheet,leftxlRange);
right = xlsread(filename,rightsheet,rightxlRange);
% 问题一(左洞) 先处理左洞的
% 起止位置分别是:(91, 349);(-617,-1672)
leftZ = left(:, 1); % 98 行
leftZ = [349; leftZ; -1672];
plot(linspace(-617, 91, 100), -flipud(leftZ))
% 建立方程,先建立左洞的。假设左洞与右洞平行,则将左洞平移即可得到右洞方程
% 左洞方程为分段函数
A = [91, 7, 349];
B = [-617, 48, -1672];
C = [134, 7, 357];
D = [-580, 48, -1685];
F_leftZlillte0 = @(x)x * B(3) - B(1);
F_leftZgrater0 = @(x)x * A(3) - A(1);
X_leftlinear = -20;
X_leftlog = 100;
% options = optimoptions('fsolve','Display','iter');
coeff_leftlillte0 = fsolve(F_leftZlillte0, X_leftlinear); % coeff_leftlinear = 0.369
coeff_leftgreater0 = fsolve(F_leftZgrater0, X_leftlog); % coeff_leftlog = 0.26
% coeff_leftlog = 92 / log(349);
left_all = [left, ones(98, 1)];
left_all = [flip(A); left_all; flip(B)]; % 100for i = 1:size(left_all, 1)
Z = left_all(i, 1);
if Z <= 0
left_all(i, 3) = coeff_leftlillte0 * Z;
else
left_all(i, 3) = coeff_leftgreater0 * Z;
end
end
left_all;
Z_true = left_all(:, 1);
Y_true = left_all(:, 2);
a0 = 33.43 ;
a1 = -18.3 ;
b1 = -9.837 ;
a2 = 2.14 ;
b2 = -3.245 ;
a3 = 2.985 ;
b3 = -0.8842 ;
w = 0.002124 ;
Z_hat = flip(linspace(B(3), A(3), 10000))';
X_hat = ones(size(Z_hat, 1), 1);
Y_hat = ones(size(Z_hat, 1), 1);
for i = 1: size(Z_hat, 1)
if Z_hat(i) >= 0
X_hat(i) = coeff_leftgreater0 * Z_hat(i);
else
X_hat(i) = coeff_leftlillte0 * Z_hat(i);
end
Y_hat(i) = a0 + a1*cos(Z_hat(i)*w) + b1*sin(Z_hat(i)*w) + a2*cos(2*Z_hat(i)*w) +
b2*sin(2*Z_hat(i)*w) + a3*cos(3*Z_hat(i)*w) + b3*sin(3*Z_hat(i)*w);
end
meter = [Z_hat, Y_hat, X_hat];
meter(:, 4) = 0;
meter(:, 5) = 0;
for i = 1: size(meter, 1)
if i > 1
meter(i, 4) = sqrt((meter(i, 1) - meter(i-1, 1))^ 2 + (meter(i, 2) - meter(i-1,
2))^ 2 + (meter(i, 3) - meter(i-1, 3))^ 2);
meter(i, 5) = sum(meter(1:i, 4));
end
end
meter_100_num = floor(max(meter(:, 5)) / 100);
meter_100_location = zeros(meter_100_num, 4);
for i = 1: meter_100_num
[~, I] = min(abs(meter(:, 5) - i * 100));
meter_100_loaction(i, 1) = meter(I, 1);
meter_100_loaction(i, 2) = meter(I, 2);
meter_100_loaction(i, 3) = meter(I, 3);
meter_100_loaction(i, 4) = meter(I, 5);
end
隧道总长度
max(meter(:, 5))

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

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

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

相关文章

网络面试题:什么是 TCP/IP?

目录标题 什么是 TCP/IP?1) 网络接口层:2) 网络层:3) 传输层:4) 应用层: 2.数据包3.网络接口层4.网络层1) IP:2)地址解析协议 ARP3)子网 5 传输层1&#xff09;UDP&#xff1a;2&#xff09;TCP&#xff1a; 6 应用层运行在TCP协议上的协议&#xff1a;运行在UDP协议上的协议&…

Netty 实现百万级连接服务的难点和优点分析总结

推送服务 还记得一年半前&#xff0c;做的一个项目需要用到 Android 推送服务。和 iOS 不同&#xff0c;Android 生态中没有统一的推送服务。Google 虽然有 Google Cloud Messaging &#xff0c;但是连国外都没统一&#xff0c;更别说国内了&#xff0c;直接被墙。 所以之前在…

Lua学习笔记:C/C++和Lua的相互调用

前言 本篇在讲什么 C/C和Lua的相互调用 本篇适合什么 适合初学Lua的小白 适合需要C/C和lua结合开发的人 本篇需要什么 对Lua语法有简单认知 对C/C语法有简单认知 依赖Lua5.1的环境 依赖VS 2017编辑器 本篇的特色 具有全流程的图文教学 重实践&#xff0c;轻理论&…

云南智慧档案库综合管理系统建设解决方案

一、智慧档案管理系统建设背景 档案作为一种特殊的文献&#xff0c;是人类社会活动的产物&#xff0c;具有特殊的价值&#xff0c;其价值可以概括为现实价值和历史价值。档案是人类留给国家和社会的宝贵财富&#xff0c;它在经济与社会建设中起着重要的作用。档案是反映一个单…

多重共线性的处理方法

回归分析需要考虑多重共线性问题。多重共线性是指自变量之间存在高度相关性&#xff0c;导致回归模型的系数估计不稳定和假设检验不可靠。在实际应用中&#xff0c;许多自变量之间都可能存在一定程度的相关性&#xff0c;如果没有进行控制&#xff0c;就会导致多重共线性问题的…

设计模式之美-实战二:如何对接口鉴权这样一个功能开发做面向对象分析?

面向对象的三个环节&#xff1a;面向对象分析&#xff08;OOA&#xff09;、面向对象设计&#xff08;OOD&#xff09;、面向对象编程&#xff08;OOP&#xff09;。只知道OOA、OOD、OOP只能说有一个宏观了解&#xff0c;我们更重要的还是要知道“如何做”&#xff0c;也就是&a…

【快应用】多语言适配案例

【关键词】 多语言&#xff0c;$t 【问题背景】 快应用平台的能力会覆盖多个国家地区&#xff0c;平台支持多语言的能力后&#xff0c;可以让一个快应同时支持多个语言版本的切换&#xff0c;开发者无需开发多个不同语言的源码项目&#xff0c;避免给项目维护带来困难。使用系…

子串分值--子串分值和 模拟,找规律

子串分值和 n有十万&#xff0c;需要找规律&#xff0c;O(n^2)不满足要求 分析样例&#xff1a; Ababc 01234 长度是n5 索引下标-对应字符 0A贡献 112 a;ab;---22*1 next a 2&#xff1b; pre a -1 1b贡献 112 b;ba;---42*2 next b 3&#xff1b; pre b -1 2a贡献 1113…

2023年测试前景?测试开发工程师养成记,开发企业级测试平台...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 测试开发&#xff…

IDS 和 IPS 日志监控

什么是IDS/IPS 入侵检测系统 &#xff08;IDS&#xff09; 和入侵防御系统 &#xff08;IPS&#xff09; 是监视组织网络中的流量以检测和防止恶意活动和策略违规的网络组件。 入侵检测系统&#xff08;IDS&#xff09;和入侵防御系统&#xff08;IPS&#xff09;可以说是企业…

C语言学习分享(第八次)------数据的存储

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:C语言学习分享⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多C语言知识   &#x1f51d;&#x1f51d; 数据的存储 1. 前言&#x1f6a9;2…

现代化智慧档案室建设图文推介

1、防火。建立档案库房防火制度&#xff0c;档案库房附近严禁存放易燃、易爆物品&#xff0c;库房内严禁吸烟&#xff0c;并备有灭火器&#xff0c;经常进行检查更换。 主要设备为&#xff1a;烟雾探测器和感温探测器和七氟丙烷灭火系统。 2、防潮。库房内备有温湿度计&#x…

GB28181 对接海康平台,解决音视频卡顿问题

GB28181 对接海康平台,解决音视频卡顿问题 一、概述二、问题分析1、设备对比分析2、抓包对比分析3、验证分析结果三、总结四、讨论一、概述 设备使用GB28181协议对接海康平台时,发现音频和视频存在卡顿现象,不是一直卡顿,有时候卡有时候不卡,但是卡顿的时候音视频一起卡顿…

炫技操作--递归实现翻转链表(java)

递归实现链表的逆序 leetcode 206题。 翻转链表递归解法普通方式实现链表翻转链表专题 leetcode 206题。 翻转链表 leetcode链接用于测试 题目&#xff1a;描述 将一个链表翻转&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1] 递归解法 解题思路…

chatgpt赋能python:Python中删除的SEO

Python中删除的SEO Python是一个强大的编程语言&#xff0c;它广泛应用于各种领域&#xff0c;包括SEO。在SEO领域中&#xff0c;Python可以用来处理各种数据&#xff0c;包括删除不必要的数据。本文将介绍如何在Python中删除SEO数据。 什么是SEO数据&#xff1f; SEO是搜索…

代码创造的欢乐世界-通用人工智能让儿童熟练应用编程

想要复杂的参考这一篇&#xff0c;使用云平台即可完成&#xff1a; 美美的圣诞树画出来-CoCube- 把圣诞树换成六一儿童节主题的就可以啦。 这一篇是使用chatgpt类应用&#xff0c;给出关键提示词&#xff0c;代码自动生成哦。 神十六发射成功&#xff0c;科技工作者博士学位…

python接口自动化使用requests库发送http请求

目录 前言一、requests库二、HTTP 请求方法三、发送GET请求四、发送POST请求五、获取响应数据六、高级操作 6.1文件下载6.2文件上传6.3SSL证书验证6.4保持会话6.5requests封装总结 前言 今天笔者想和大家来聊聊python接口自动化如何使用requests库发送http请求&#xff0c;废…

【JavaSE】Java基础语法(三十七):Java 中的 String 类(源码级别)

文章目录 1. 构造方法1.1 String()1.2 String(String original)1.3 String(char[] chars)1.4 String(char数组,起始下标,长度)1.5 String(byte数组)1.6 String(byte数组,起始下标,长度)1.7 String(StringBuffer buffer)1.8 String(StringBuilder builder) 2. 普通方法2.1 char …

【Python教学】Python兼职有哪些?给你们分享一下最适合学生党/工作党的Python兼职攻略以及接私活经验

文章目录 前言一、做兼职的优势二、兼职种类三、基本技能要求四、平台和渠道五、案例分析六、做兼职注意事项总结 前言 Python是一种高级编程语言&#xff0c;它具有简单易学、代码可读性高、功能强大等特点&#xff0c;被广泛应用于数据分析、人工智能、Web开发等领域。Pytho…

修改mysql密码与mac中mysql的启动与终止

目录 修改mysql密码 1.进入你的mysql文件下的bin目录下&#xff1a; 2.修改mysql密码 mysql的启动与终止&#xff08;mac&#xff09; 修改mysql密码 1.进入你的mysql文件下的bin目录下&#xff1a; 如果不知道自己电脑上的mysql在哪里的话&#xff0c;输入&#xff1a; …