【2023高教社杯】B题 多波束测线问题 问题分析、数学模型及参考文献
【2023高教社杯】B题 多波束测线问题 问题分析、数学模型及参考文献

1 题目
1.1 问题背景
多波束测深系统是利用声波在水中的传播特性来测量水体深度的技术,是在单波束测深的基础上发展起来的,该系统在与航迹垂直的平面内一次能发射出数十个乃至上百个波束,再由接收换能器接收由海底返回的声波。多波束测深系统克服了单波束测深的缺点,在海底平坦的海域内,能够测量出以测量船测线为轴线且具有一定宽度的全覆盖水深条带。
多波束测深条带的覆盖宽度 𝑊 随换能器开角 𝜃 和水深 𝐷 的变化而变化。若测线相互平行且海底地形平坦,则相邻条带之间的重叠率定义为 𝜂 = 1 − 𝑑 ,其中 𝑑 为相邻两条测线的间𝑊距,𝑊 为条带的覆盖宽度。若 𝜂 < 0,则表示漏测。为保证测量的便利性和数据的完整性,相邻条带之间应有 10%~20% 的重叠率。但真实海底地形起伏变化大,若采用海区平均水深设计测线间隔,虽然条带之间的平均重叠率可以满足要求,但在水深较浅处会出现漏测的情况(图 5),影响测量质量;若采用海区最浅处水深设计测线间隔,虽然最浅处的重叠率可以满足要求,但在水深较深处会出现重叠过多的情况(图 6),数据冗余量大,影响测量效率。
问题
问题 1: 与测线方向垂直的平面和海底坡面的交线构成一条与水平面夹角为 𝛼 的斜线(图7),称 𝛼 为坡度。请建立多波束测深的覆盖宽度及相邻条带之间重叠率的数学模型。

图 7 问题 1 的示意图
若多波束换能器的开角为 120∘,坡度为 1.5∘,海域中心点处的海水深度为 70 m,利用上述模型计算表 1 中所列位置的指标值,将结果以表 1 的格式放在正文中,同时保存到 result1.xlsx 文件中。
表1 问题1 的计算结果
| 测线距中心点处的距离/m | −800 | −600 | −400 | −200 | 0 | 200 | 400 | 600 | 800 |
|---|---|---|---|---|---|---|---|---|---|
| 海水深度/m | 70 | ||||||||
| 覆盖宽度/m | |||||||||
| 与前一条测线的重叠率/% | — |
问题 2: 考虑一个矩形待测海域(图 8),测线方向与海底坡面的法向在水平面上投影的夹角为 𝛽,请建立多波束测深覆盖宽度的数学模型。

图 8 问题 2 的示意图
若多波束换能器的开角为 120∘,坡度为 1.5∘,海域中心点处的海水深度为 120 m,利用上述模型计算表 2 中所列位置多波束测深的覆盖宽度,将结果以表 2 的格式放在正文中,同时保存到 result2.xlsx 文件中。
表 2 问题 2 的计算结果
| 覆盖宽度/m | 测量船距海域中心点处的距离/海里 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| 0 | 0.3 | 0.6 | 0.9 | 1.2 | 1.5 | 1.8 | 2.1 | ||
| 测线方向夹角/° | 0 | ||||||||
| 45 | |||||||||
| 90 | |||||||||
| 135 | |||||||||
| 180 | |||||||||
| 225 | |||||||||
| 270 | |||||||||
| 315 |
问题 3: 考虑一个南北长 2 海里、东西宽 4 海里的矩形海域内,海域中心点处的海水深度为 110 m,西深东浅,坡度为 1.5∘,多波束换能器的开角为 120∘。请设计一组测量长度最短、可完全覆盖整个待测海域的测线,且相邻条带之间的重叠率满足 10%~20% 的要求。
问题 4: 海水深度数据(附件.xlsx)是若干年前某海域(南北长 5 海里、东西宽 4 海里)
单波束测量的测深数据,现希望利用这组数据为多波束测量船的测量布线提供帮助。在设计测线时,有如下要求:
(1) 沿测线扫描形成的条带尽可能地覆盖整个待测海域;
(2)相邻条带之间的重叠率尽量控制在 20% 以下;
(3) 测线的总长度尽可能短。在设计出具体的测线后,请计算如下指标:a.测线的总长度;b. 漏测海区占总待测海域面积的百分比;c. 在重叠区域中, 重叠率超过 20% 部分的总长度。
注 在附件中,横、纵坐标的单位是海里,海水深度的单位是米。1 海里=1852 米。附件 海水深度数据
2 问题分析
2.1 问题一
这个题需要建立多波束测深的覆盖宽度及相邻条带之间重叠率的数学模型。首先,需要确定多波束测深系统中每个波束所覆盖的区域。由于多波束测深系统能够在与航迹垂直的平面内发射数十个乃至上百个波束,因此可以将整个海域划分为若干个小区域,每个小区域都有自己的覆盖宽度W和重叠率 η \eta η。
其次,覆盖宽度W的大小与换能器开角 θ \theta θ和水深D有关。可以根据实际数据和测深原理来建立覆盖宽度W与 θ \theta θ 和D的关系模型。最后,相邻条带之间的重叠率$\eta $可以通过计算相邻两条测线的间距d,并根据d和覆盖宽度W的关系来确定。
2.2 问题二
建立多波束测深覆盖宽度的数学模型,以求解在矩形待测海域中,测线方向与海底坡面的法向在水平面上投影的夹角为 β \beta β时,覆盖宽度 W 的数学表达式。
由题设可知,多波束测深覆盖宽度 W 与换能器开角 θ \theta θ 和水深 D 相关,并且相邻条带之间应有一定的重叠率 η \eta η。要构建数学模型,可以考虑以下几点因素:
(1)换能器开角 θ \theta θ :换能器开角的大小将影响覆盖宽度 W 的大小。一般情况下,换能器开角越大,覆盖宽度也会相应增大。
(2)水深 D :水深越大,覆盖宽度也会相应增大。这是因为,在水深较大的区域,声波传播的距离更长,因此覆盖宽度需要更大才能实现全覆盖。
(3)相邻条带之间的重叠率 η \eta η :根据题设要求,相邻条带之间应有一定的重叠率,一般为10%~20%。通过调整测线间隔,可以控制重叠率的大小。
2.3 问题三
根据问题背景,需要设计一组测量长度最短、可完全覆盖整个待测海域的测线,并且要求相邻条带之间的重叠率满足 10%~20% 的要求。考虑到海域中心点处的海水深度为 110 m,海域的南北长为 2 海里,东西宽为 4 海里,海底的坡度为 1.5 ∘ \circ ∘,多波束换能器的开角为 120 ∘ \circ ∘。为了设计满足要求的测线,可以采用以下方法:
(1)利用海域的南北长和东西宽来确定需要的测线条数。
(2)根据海底坡度和海水深度,在每条测线上确定一定间距的测点。
(3)在第一条测线上选择一个起点,在该起点的水平投影上选择第一个测点,然后根据换能器开角确定下一个测点的位置,并以此类推,直到覆盖整个待测海域。
(4)计算每个测线的长度,并根据重叠率的要求进行调整。
2.4 问题四
这是一个优化问题,需要考虑三个指标:测线总长度、漏测海区占比、重叠率超过20%的总长度。为了达到这些指标,需要设计一个合理的多波束测线。由于海底地形变化复杂,而且数据只有单波束测量的海深信息,因此需要通过数学模型来解决该问题。
数学模型过程的话,可以按照以下的思路
(1)建立坐标系和网格
通过题目背景描述和文件附件中提供的数据,可以建立一个坐标系和网格,使得整个希望测量的海域被覆盖。同时,为了方便处理问题,可以将网格等分成大小相同的子区域。
(2)设计波束扫描范围和扫描方向
根据多波束测线的原理,可以将船体在水平方向上的扫描范围分为若干个波束,每个波束的扫描范围为一条扇形区域,扇形区域的中心在测线上,开始和结束角度通过设计波束的开角确定。同时,需要确定波束的扫描方向,可以采取等角度分布或等角度间距分布。
(3)优化测线设计
在确定了波束的扫描范围和方向后,可以使用数学优化方法来设计测线。需要依据要求,设计出一种测线布局方式,可以覆盖整个测量区域,并使相邻条带之间的重叠率尽量控制在20%以下,同时使总长度最短。可以采取贪心算法或遗传算法等优化方法。
(4)计算指标
根据所设计的测线布局方式,可以计算出测线总长度和漏测海区占比。同时,为了计算重叠率超过20%的总长度,需要对相邻条带之间的区域进行计算,并判断是否超过20%。
3 数学模型
3.1 问题一
多波束测深的覆盖宽度及相邻条带之间重叠率的数学模型可以表示为:
W = 2 ( D t a n ( θ i ) − ( d / 2 ) t a n ( θ 0 ) ) W = 2(D tan(\theta_i)-(d/2) tan(\theta_0)) \ W=2(Dtan(θi)−(d/2)tan(θ0))
η = 1 − d / W \eta = 1 -d/W η=1−d/W
其中, α \alpha α 为坡度,g ≥ 0为任意波束编号, θ g \theta_g θg为波束 g 的发射角度,W 为波束的覆盖宽度,d 为波束间距,D 为水深, η \eta η 为相邻条带之间的重叠率。
(1)对于每个测线位置x,根据海水深度D和坡度α计算出每个波束的发射角度 θ g \theta_g θg:
θ g = t a n − 1 ( ( x + d / 2 ) t a n ( α ) − D t a n ( o p e n a n g l e / 2 − g π / 180 ) ) \theta_g = tan^{-1}((x+d/2)tan(\alpha) - D tan(open_angle/2-g\pi /180)) θg=tan−1((x+d/2)tan(α)−Dtan(openangle/2−gπ/180))
(2)根据模型公式依次计算每个波束的覆盖宽度 W g W_g Wg:
W g = 2 ( D t a n ( θ g ) − ( d / 2 ) t a n ( θ 0 ) ) W_g = 2(D tan(\theta_g)-(d/2)tan(\theta_0)) Wg=2(Dtan(θg)−(d/2)tan(θ0))
(3)依次计算每个测线与前一条测线的重叠率 η g \eta_g ηg:
η g = 1 − d / W g , η 0 = 0 \eta_g = 1-d/W_g,\eta_0 = 0 ηg=1−d/Wg,η0=0
3.2 问题二
多波束测深覆盖宽度的数学模型可表示为:
W = D × t a n ( θ / 2 ) × ( 1 − η ) W = D × tan(\theta/2)×(1-\eta) W=D×tan(θ/2)×(1−η)
其中,
W 为多波束测深的覆盖宽度;
D 为水深;
θ \theta θ 为换能器开角;
η \eta η 为相邻条带之间的重叠率( η \eta η = 1 - d,d 为相邻两条测线的间距)。
3.3 问题三
设 n 为测线条数, d 为相邻两条测线的间距。根据问题背景,将问题转化为求解 n 和 d 的最优解,使得满足以下条件:
请下载完整资料
3.4 问题四
需要设计的多波束测深系统需要对 m m m个点进行测量。建立二维直角坐标系,令点 i i i的坐标为 ( x i , y i ) (x_i, y_i) (xi,yi),对海域进行网格化处理,将整个海域分成 n × n n\times n n×n个小网格,每个小网格的边长为 d d d。设扫描的总宽度为 W W W,每个波束的宽度为 w w w,角度间距为 α \alpha α(即相邻波束之间的角度度数),开角为 θ \theta θ。则有:
W = m w α ( 1 ) W = \frac{mw}{\alpha} \qquad (1) W=αmw(1)
请下载完整资料
4 完整资料

相关文章:
【2023高教社杯】B题 多波束测线问题 问题分析、数学模型及参考文献
【2023高教社杯】B题 多波束测线问题 问题分析、数学模型及参考文献 1 题目 1.1 问题背景 多波束测深系统是利用声波在水中的传播特性来测量水体深度的技术,是在单波束测深的基础上发展起来的,该系统在与航迹垂直的平面内一次能发射出数十个乃至上百个…...
如何处理异步编程中的回调地狱问题?
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 解决回调地狱问题的方法⭐使用 Promise⭐使用 async/await⭐ 使用回调函数库⭐模块化⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端…...
什么是Lambda表达式?
Lambda表达式是Java 8引入的一个重要特性,用于简化函数式编程中的匿名函数的定义和使用。它可以被视为一种轻量级的匿名函数,可以作为参数传递给方法或存储在变量中。 Lambda表达式的语法形式如下: (parameters) -> expression 或 (para…...
公式trick备忘录
增大不同class feature之间的距离用hinge loss 相关, similarity learning, svm https://www.youtube.com/watch?vQtAYgtBnhws https://www.youtube.com/watch?vbM4_AstaBZo&t286s...
向量数据库Milvus Cloud核心组件再升级,主打就是一个低延迟、高准确度
支持 ScaNN 索引 Faiss 实现的 ScaNN,又名 FastScan,使用更小的 PQ 编码和相应的指令集可以更为友好地访问 CPU 寄存器,从而使其拥有优秀的索引性能。该索引在 Cohere 数据集,Recall 约 95% 的时候,Milvus 使用 Knowhere 2.x 版本端到端的 QPS 是 IVF_FLAT 的 7 倍,HN…...
ELK框架Logstash配合Filebeats和kafka使用
ELK框架Logstash配合Filebeats和kafka使用 本文目录 ELK框架Logstash配合Filebeats和kafka使用配置文件结构input为标准输入,output为标准输出input为log文件output为标准输出output为es input为tcpspringboot配置logstash配置 input为filebeatsfilebeats配置logsta…...
后端面试话术集锦第 十二 篇:java基础部分面试话术
这是后端面试集锦第十二篇博文——java基础部分面试话术❗❗❗ 1. String类中常用的方法 split():把字符串分割成字符串数组 indexOf():从指定字符提取索引位置 trim():去除字符串两端空格 replace():替换 hashCode():返回此字符串的哈希码 subString():截取字符串 equa…...
【广州华锐互动】电厂三维数字孪生大屏的功能和优势
在工业互联网的背景下,电厂三维数字孪生大屏系统正在逐渐成为电力行业的重要技术。通过创建电厂的虚拟模型,这个数字孪生系统可以实现对实际电厂的实时监控,预测维护需求,优化运营效率,甚至在某些情况下,能…...
es6解构用法
一: 解构数组 二:解构对象 一: 解构数组 原理:模式(结构匹配), 索引值相同的完成赋值 总结:位置对应 二:解构对象 原理:模式(结构匹配), 属性名相同的完成赋值 {}{} 对象结构赋值的应用 常用的就以上两种 &#…...
a_bogus 音 算法还原大赏
a_bogus算法还原大赏 hello,大家好呀,我是你的好兄弟,[星云牛马],花了几天时间算法还原了这个参数的加密过程,一起看看吧,记得加入我们的学习群:529528142 天才第一步,F12你会不&am…...
【计算机网络】UDP协议详解
目录 前言 端口号的拓展 端口号范围划分 netstat pidof UDP协议 UDP协议端格式 UDP的特点 面向数据报 UDP的缓冲区 UDP使用注意事项 基于UDP的应用层协议 前言 我们前面讲完了http和https协议,它们都属于应用层,按照TCP/IP五层模…...
2023-9-8 满足条件的01序列
题目链接:满足条件的01序列 #include <iostream> #include <algorithm>using namespace std;typedef long long LL;const int mod 1e9 7;int qmi(int a, int k, int p) {int res 1;while(k){if(k & 1) res (LL) res * a % p;a (LL) a * a % p;…...
获取街道、乡镇级的地图geoJson数据,使用echarts绘制地图
在此以泰州靖江市为例为例,记录一下实现过程 1、整体完成后实现的效果如下 2、获取数据 (1)DataV.GeoAtlas 第一个能想到的获取数据的网站就是它, 是阿里推出的一个用于获取全国、各省、各市以及个县级市详细地图信息的json文…...
DBMS_RESOURCE_MANAGER
参考文档: Database Administrator’s Guide 27 Managing Resources with Oracle Database Resource Manager 27.5.5 Creating a Resource Plan BEGINDBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();DBMS_RESOURCE_MANAGER.CREATE_PLAN(PLAN > bugdb_plan,…...
通俗讲解傅里叶变换
参考:六一礼物:给孩子解释什么是傅里叶变换 牛!不看任何数学公式来讲解傅里叶变换 如何直观形象、生动有趣地给文科学生介绍傅里叶变换? - 知乎 从基说起…… 从数学的角度,提供一个形象有趣的解释。理解傅里叶变换的钥匙是理解基♂,它能让你重新认识世界。 1. 什么是…...
数据结构——带头双向循环链表
数据结构——带头双向循环链表 一、带头双向循环链表的定义二、带头双向循环链表的实现2.1初始化创建带头双向循环链表的节点2.2申请新节点2.3节点的初始化2.4带头双向循环链表的尾插2.5带头双向循环链表的头插2.6判空函数2.7带头双向循环链表的打印函数2.8带头双向循环链表的尾…...
MySQL大数据量高速迁移,500GB只需1个小时
在上篇「快、准、稳的实现亿级别MySQL大表迁移」的文章中,介绍了NineData在单张大表场景下的迁移性能和优势。但在大部分场景中,可能遇到的是多张表构成的大数据量场景下的数据搬迁问题。因为搬迁数据量较大,迁移的时长、稳定性及准确性都受到…...
kafka复习:(25)kafka stream
一、java代码: package com.cisdi.dsp.modules.metaAnalysis.rest.kafka2023;import org.apache.kafka.common.serialization.Serdes; import org.apache.kafka.streams.KafkaStreams; import org.apache.kafka.streams.StreamsBuilder; import org.apache.kafka.s…...
接口自动化测试总结
一、什么项目适合做自动化测试? 软件需求变动不频繁 测试脚本的稳定性决定了自动化测试的维护成本。如果软件需求变动过于频繁,测试人员需要根据变动的需求来更新测试用例以及相关的测试脚本,而脚本的维护本身就是一个代码开发的过程&#x…...
【Redis】Lua脚本在Redis中的基本使用及其原子性保证原理
文章目录 背景一、Eval二、EvalSHA三、Redis 对 Lua 脚本的管理3.1 script flush3.2 script exists3.3 script load3.4 script kill 四、Lua在Redis中原子性执行的原理 背景 Lua 本身是一种轻量小巧的脚本语言,在Redis2.6版本开始引入了对Lua脚本的支持。通过在服务…...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...
有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...
SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...
逻辑回归暴力训练预测金融欺诈
简述 「使用逻辑回归暴力预测金融欺诈,并不断增加特征维度持续测试」的做法,体现了一种逐步建模与迭代验证的实验思路,在金融欺诈检测中非常有价值,本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...
在 Spring Boot 项目里,MYSQL中json类型字段使用
前言: 因为程序特殊需求导致,需要mysql数据库存储json类型数据,因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...
