• 【已更新建模代码】2023数学建模国赛B题matlab代码--多波束测线问题


    一、 问题重述
    1.1问题背景
    海洋测深是测定水体深度与海底地形的重要任务,有两种主要技术:单波束测
    深与多波束测深。单波束适用于简单任务,但多波束可提供更精确的地形数据。多
    波束系统的关键在于覆盖宽度与重叠率的设计,以确保数据完整性。重叠率需在10%
    到20%之间。然而,海底地形变化复杂,需要根据具体情况设计测线间隔。在浅水
    区,较小的间隔可避免漏测,而在深水区,较大的间隔可减少数据冗余。海洋测深
    是一项重要的海洋测量任务,用于确定海洋、海湾、湖泊等水域的水深和海底地形。
    这些数据对于海洋导航、地质勘探、海洋资源管理和环境研究都有重要意义。

    交流:790539996
    完整代码:https://mbd.pub/o/bread/mbd-ZJ2clZtt
    
    • 1
    • 2

    1.2信息提取
    ⚫ 多波束测量技术中条带覆盖宽度
    随开角 和水深
    变化,相邻条带之间
    的重叠率定义为
    ,其中 为相邻两条测线间距,
    为条带宽度
    ⚫ 为兼顾测量的速度和质量,要求重叠率
    ⚫ 由于真实地形起伏大,若水深较浅会出现漏测现象,若条带稀疏则在水浅
    处漏测影响测量质量;条带密集则在水深处重叠率较高影响测量效率。
    1.3问题重述
    现需要我们利用题目描述并结合相关知识解决一下问题:
    问题一:要求建立多波束测深技术中的覆盖宽度
    和相邻条带之间的重叠率
    数学模型。这个模型需要考虑多波束换能器的水平开角 、坡度 和海水深度
    等因素,然后利用模型计算给定位置的覆盖宽度和重叠率。具体来说,问题给
    定了多波束换能器的开角、坡度和海水深度,并要求计算并记录不同位置的覆盖
    宽度和重叠率。最终,需要将计算结果以表格形式呈现,并保存到result1.xlsx
    文件中。
    问题二:在问题一的基础上,问题二要求建立一个考虑不同测线方向的多波
    束测深的数学模型,针对一个矩形海域,其中测线方向与海底坡面法向在水平面
    上的投影夹角为𝛽。这个模型需要考虑多波束换能器的开角、坡度、以及海域中心
    点的海水深度等因素,并根据模型计算不同位置的多波束测深覆盖宽度。具体来
    说,问题提供了多波束换能器的参数和海域特征,要求计算并记录不同位置的覆
    盖宽度,然后将结果以表格形式呈现,并保存到result2.xlsx文件中。
    问题三:问题三要求在一个南北长2海里、东西宽4海里的矩形海域内,其中
    海水深度从西到东逐渐变浅,坡度 为1.5度,多波束换能器的开角为120度的情
    况下,设计一组测量线,以满足以下要求:这组测量线的总长度最短,同时要确
    保完全覆盖整个矩形海域,并且相邻测量线之间的重叠率在10%到20%之间,以获
    得高效准确的海洋深度数据,同时最小化测量成本和工作量。这是一个典型的海
    洋测深测量布置优化问题。
    问题四:问题四涉及利用已有的海水深度数据来优化设计多波束测量船的测
    量线路。待测海域为南北长5海里、东西宽4海里,拥有单波束测深数据。设计要
    求包括:(1) 保证测线覆盖整个海域;(2) 控制相邻测量线的重叠率在20%以下;
    (3) 最小化测线总长度。解决这个问题需要设计具体的测线布局,并计算相关指
    标,如总长度、漏测区域占比和超过20%重叠率的长度。这个问题的目标是提高测
    量效率,减少漏测,同时最小化测量成本和工作量。
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    包含完整求解结果
    代码部分如下图:

    在这里插入图片描述

    其中main函数为:

    x=70;
    d=[-4	-3	-2	-1	0	1	2	3	4];
    d=70 - 200 * tand(1.5) * d;
    
    w = zeros(1,9);
    eta = zeros(1,9);
    
    x0 = [100 100 100 100 100];
    options = optimoptions(@fsolve, 'MaxFunctionEvaluations', 10000, 'MaxIterations', 10000);
    
    temp = fsolve(@root5d_1, x0, options);
    w(1) = temp(5);
    eta(1) = 1-200/w(1);
    
    temp = fsolve(@root5d_2, x0, options);
    w(2) = temp(5);
    eta(2) = 1-200/w(2);
    
    
    temp = fsolve(@root5d_3, x0, options);
    w(3) = temp(5);
    eta(3) = 1-200/w(3);
    
    
    temp = fsolve(@root5d_4, x0, options);
    w(4) = temp(5);
    eta(4) = 1-200/w(4);
    
    
    temp = fsolve(@root5d_5, x0, options);
    w(5) = temp(5);
    eta(5) = 1-200/w(5);
    
    temp = fsolve(@root5d_6, x0, options);
    w(6) = temp(5);
    eta(6) = 1-200/w(6);
    
    temp = fsolve(@root5d_7, x0, options);
    w(7) = temp(5);
    eta(7) = 1-200/w(7);
    
    temp = fsolve(@root5d_8, x0, options);
    w(8) = temp(5);
    eta(8) = 1-200/w(8);
    
    temp = fsolve(@root5d_9, x0, options);
    w(9) = temp(5);
    eta(9) = 1-200/w(9);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
  • 相关阅读:
    前后端分离项目-基于springboot+vue的足球青训俱乐部管理后台系统的设计与实现(内含代码+文档+报告)
    保证高并发性能以及数据安全的硬件层支持
    Python 操作BeautifulSoup4(爬取网页信息)
    手写call方法
    一文彻底搞懂ZAB算法,看这篇就够了!!!
    strcpy和memcpy的异同
    顶层设计:who适合且能够当大学校长
    棱镜七彩正式成为openchain项目官方工具合作伙伴
    GC回收算法
    .Net Core 配置文件读取 - IOptions、IOptionsMonitor、IOptionsSnapshot
  • 原文地址:https://blog.csdn.net/yeqianqian_/article/details/132757706