多波束测线优化建模:从几何原理到Python求解实战

📅 2026/8/27 21:06:51
多波束测线优化建模:从几何原理到Python求解实战
1. 项目概述从“多波束测线”到数学建模实战去年国赛B题“多波束测线问题”一出来不少同学就有点懵。题目背景是海洋测绘讲的是如何用多波束声呐系统高效、准确地测量一片矩形海域的海底地形。听起来很专业但核心其实是一个典型的优化问题给你一个测量船船上装了个能同时发射多条声波束测线的设备每条测线扫过海底能测出一长条区域的数据。船沿着规划好的航线测线走目标是用最少的航线或者最短的测量时间把目标海域完整地、且满足一定精度要求地测一遍。这题为什么值得拿出来细说因为它完美融合了几何建模、覆盖优化和算法设计这几个数学建模的核心模块。它不是让你去推导复杂的物理公式而是考验你如何把一个工程实际问题抽象成清晰的数学模型再用计算机去求解。很多同学卡在第一步——看不懂题。什么“覆盖宽度”、“相邻测线间距”、“测线方向角”一堆术语。其实你完全可以把它想象成家里用拖把拖地拖把的宽度是固定的类似单条测线的覆盖宽度你想用最少的来回把整个长方形客厅拖干净并且每一块地方都不能有遗漏完全覆盖同时相邻两拖把之间的重叠部分还不能太少或太多要满足测量精度要求。这么一想是不是亲切多了这道题适合所有正在备战数模竞赛的同学无论是新手想找一道综合性强的题目练手还是老手想深入理解优化建模的流程。接下来我会把这道题的解题思路掰开揉碎了讲并附上关键的Python参考代码。我们不只讲“怎么做”更重点讲“为什么这么做”以及我在实际求解过程中踩过的坑和总结的技巧。你会发现解决这个问题就像完成一次从现实世界到数学世界再回到现实世界的完整旅程。2. 问题核心与模型建立把海洋测绘拖进数学公式面对“多波束测线”问题第一步也是最关键的一步就是进行问题解析与模型假设。我们不能一头扎进代码里必须先把题目描述翻译成数学语言。2.1 核心概念拆解与合理假设题目给了几个关键参数海域是长L海里、宽W海里的矩形多波束换能器的开角是θ测线方向与海底坡面的法向在水平面上投影的夹角是α这就是测线方向角以及海底坡度γ。我们需要计算单条测线的覆盖宽度D以及相邻测线之间的最大允许间距d_max。这里第一个容易晕的地方就是几何关系。覆盖宽度D并不是一个固定值它依赖于测线方向角α和海底坡度γ。你可以想象一束光斜着打在斜坡上它照亮的区域宽度会和光的入射角度、斜坡的倾斜程度有关。声波束也是类似的道理。公式推导涉及三角函数在三维空间的应用是本题的第一个小难点。一个非常实用的假设在这里可以简化问题我们假设海底坡度γ是常数即海底是一个均匀倾斜的平面。这个假设符合题目中“坡度稳定”的描述也是将复杂现实问题模型化的常见手段。基于这个假设我们可以推导出具体推导过程在优秀论文里都能找到这里强调理解单条测线覆盖宽度DD (2 * 深度 * tan(θ/2)) / sqrt(cos²γ * sin²α cos²α)。这个公式告诉我们当测线方向 (α) 变化时有效覆盖宽度会变。相邻测线最大允许间距d_max为了保证测量精度相邻测线扫过的区域需要有重叠。d_max通常与D和一个给定的重叠率要求例如10%有关简单关系可以是d_max D * (1 - 重叠率)。这是控制我们优化模型精度的核心约束。有了这些我们的目标就清晰了在矩形海域内布置一组方向为α的平行测线使得所有测线的总长度或条数最小同时满足完全覆盖这些测线扫过的区域每条测线可看作一个以D为宽度的长条的并集必须完全覆盖整个L x W的矩形区域。精度约束任意两条相邻测线之间的实际距离d必须小于等于最大允许间距d_max。2.2 模型建立从目标到方程现在我们把上述描述转化为数学模型。这是一个二维平面上的条带覆盖优化问题。决策变量测线方向角α连续变量通常在0°到90°之间因为对称性。测线的位置一组平行线的截距。我们可以固定一个方向比如水平方向为基准那么一组平行线可以由它们的截距序列{y_i}来确定。目标函数 我们要最小化总工作量。最直接的衡量指标有两种思路最小化测线条数N因为每条测线都需要船只走一个完整的长度L或W的投影条数少意味着总航程短。最小化总测线长度总长度 单条测线长度 × 条数。对于矩形海域当测线平行于某一边时单条长度是固定的L或W当测线倾斜时单条长度是矩形对角线在垂直方向的投影会变长。因此目标函数需要根据α来计算总长度。在实际建模中最小化测线条数N是一个更简洁、更通用的目标。因为只要覆盖了整个区域总长度与条数成正比关系在测线方向固定时。我们优先采用这个目标。约束条件覆盖约束设矩形区域在测线法线方向上的投影高度为HH是L,W和α的函数。我们需要用宽度为D的条带完全覆盖这个高度为H的区间。这等价于N * D H且第一条和最后一条测线需要覆盖区域的边界。间距约束相邻测线的间距d必须满足d d_max。在完全覆盖且无浪费的理想情况下我们通常会取d d_max以达到用最少条数覆盖的目的。因此这个约束可以转化为确定最少条数的公式N ceil(H / d_max)其中ceil是向上取整函数。边界约束第一条测线需要覆盖区域的一边最后一条测线需要覆盖另一边。这决定了测线族的具体位置。模型总结 我们的核心优化问题可以表述为寻找一个测线方向角α使得在满足覆盖和间距约束的前提下计算出的所需最少测线条数N(α) ceil( H(α) / d_max(α) )达到最小。 其中H(α)是矩形在垂直于测线方向上的跨度d_max(α)是由α和γ决定的最大允许间距。注意这里有一个非常重要的实操心得。很多同学直接试图对N(α)这个包含向上取整函数的目标进行求导优化这会非常麻烦因为ceil函数不连续、不可导。更实用的方法是将α离散化。因为α的范围是有限的0°到90°我们可以以一定的步长如0.5°或1°进行遍历对每一个α值计算对应的H(α),D(α),d_max(α)进而得到N(α)。最后比较所有α对应的N(α)找到最小值及其对应的α。这种方法虽然看起来“笨”但对于计算机来说计算量极小且绝对可靠避免了陷入复杂的连续优化困境。这是数学建模中“化连续为离散”的经典策略。3. 求解思路与算法设计离散搜索与精确计算模型建立后我们就进入了求解阶段。正如上一节末尾提到的采用离散化搜索是解决本问题最稳健、最直观的路径。整个求解流程可以分解为以下几个清晰的步骤。3.1 算法流程分解参数初始化输入题目给定的常量海域长度L、宽度W、开角θ、坡度γ、重叠率要求η。设定测线方向角α的搜索范围如[0, 90]度和搜索步长step如0.1度或0.5度步长越小结果越精确但计算量稍增。单次计算函数定义一个函数calc_N_for_alpha(alpha)它接收一个alpha值并返回在该角度下所需的最少测线条数N。这个函数内部需要完成 a. 计算当前alpha下的单条测线覆盖宽度D。 b. 计算最大允许间距d_max D * (1 - η)。 c. 确定测量方向。我们需要决定测线是平行于海域的长边还是短边进行布置这取决于如何使总工作量最小。实际上对于给定的alpha测线族的方向就确定了。我们需要计算矩形区域在垂直于测线方向上的跨度H。H是L和W在垂直于测线方向上的投影之和计算公式为H L * |sin(alpha)| W * |cos(alpha)|这里假设alpha是与长边的夹角需根据你的坐标系定义调整。这个H就是我们需要用条带覆盖的“总高度”。 d. 计算最少测线条数N ceil(H / d_max)。 e. 可选计算总测线长度。总长度Total_Length N * L_line其中L_line是单条测线在矩形内的长度。当测线平行于矩形一边时L_line就是另一边的长度当测线倾斜时L_line需要通过几何相交计算是一个关于alpha,L,W的函数。对于最小化条数的目标这一步主要用于后续的方案对比和输出。全局搜索遍历alpha的每一个离散值调用calc_N_for_alpha函数记录下对应的N和总长度。结果提取从所有遍历结果中找到使N最小的alpha值。如果有多个alpha得到相同的最小N则选择其中使总测线长度更短的那个方案。输出方案输出最优的alpha、对应的最少测线条数N、每条测线的具体位置坐标即那组{y_i}或截距以及总航程估计。3.2 关键几何计算与代码实现要点在calc_N_for_alpha函数中几何计算是核心也是容易出错的地方。这里重点讲两个部分1. 覆盖宽度D的计算公式D (2 * depth * tan(θ/2)) / sqrt(cos²γ * sin²α cos²α)中的depth是中心点水深。题目通常会给出一个基准水深h0。在实际计算中由于海底有坡度不同位置的水深不同。一个简化处理是使用平均水深。对于坡度γ从海域一侧到另一侧水深变化是线性的。我们可以取海域几何中心点的水深作为代表或者更精确地取每条测线中心点的水深。在初步优化alpha时使用海域中心点水深进行计算是合理且高效的近似。在最终确定每条测线位置后可以再根据其具体位置的水深微调其覆盖宽度D和允许间距d_max进行第二轮精细化校验如果题目要求非常精确。2. 投影跨度H与测线长度的计算这是坐标变换的应用。假设我们的矩形海域左下角为原点(0,0)长边沿x轴宽边沿y轴。测线方向向量为(cos(alpha), sin(alpha))。那么与测线垂直的法线方向向量为(-sin(alpha), cos(alpha))。矩形区域在法线方向上的投影跨度H等于矩形四个顶点在法线方向上的坐标值点积的最大值与最小值之差。经过推导这个值就是H L * |sin(alpha)| W * |cos(alpha)|。这个公式需要理解并正确实现。单条测线的长度L_line对于一条方向为alpha的无限长直线它与矩形区域的相交部分是一个线段。这个线段的长度是固定的只与alpha、L、W有关计算公式为L_line min(W/|cos(alpha)|, L/|sin(alpha)|)当alpha不为0或90度时。更稳健的方法是使用几何裁剪算法如Cohen-Sutherland算法计算线段与矩形的交点但针对平行线族和矩形有解析解。在代码中我们可以直接使用这个解析解。下面我将给出核心计算部分的Python代码片段并附上详细注释。import numpy as np import math def calculate_optimal_survey_lines(L, W, theta, gamma, h0, overlap_rate0.1, alpha_step0.5): 计算矩形海域多波束测线最优布置方案。 参数: L, W: 海域长和宽海里 theta: 多波束开角度 gamma: 海底坡度度 h0: 海域中心点基准水深米 overlap_rate: 要求的重叠率默认10% alpha_step: 测线方向角搜索步长度 返回: best_alpha: 最优测线方向角度 best_N: 最优测线条数 best_total_length: 最优总测线长度海里 line_positions: 最优方案下各测线的位置列表 # 转换为弧度制方便计算 theta_rad np.deg2rad(theta) gamma_rad np.deg2rad(gamma) best_N float(inf) best_total_length float(inf) best_alpha None best_line_positions [] # 遍历测线方向角 alpha从0到90度 # 注意由于对称性通常只需遍历0-90度。alpha0和90度代表测线平行于矩形的边。 alphas np.arange(0, 90 alpha_step, alpha_step) for alpha_deg in alphas: alpha_rad np.deg2rad(alpha_deg) # --- 步骤1: 计算当前alpha下的单条测线覆盖宽度D --- # 使用中心点水深h0作为近似 depth h0 # 计算公式: D (2 * depth * tan(theta/2)) / sqrt(cos^2(gamma) * sin^2(alpha) cos^2(alpha)) numerator 2 * depth * math.tan(theta_rad / 2) denominator math.sqrt((math.cos(gamma_rad) ** 2) * (math.sin(alpha_rad) ** 2) (math.cos(alpha_rad) ** 2)) D numerator / denominator # --- 步骤2: 计算最大允许间距d_max --- d_max D * (1 - overlap_rate) # --- 步骤3: 计算矩形在垂直于测线方向上的投影跨度H --- # 法向量为 (-sin(alpha), cos(alpha)) # 矩形在法向量方向上的投影跨度 H L*|sin(alpha)| W*|cos(alpha)| H L * abs(math.sin(alpha_rad)) W * abs(math.cos(alpha_rad)) # --- 步骤4: 计算最少测线条数N --- N math.ceil(H / d_max) # 向上取整保证完全覆盖 # --- 步骤5: 计算单条测线在矩形内的长度L_line和总长度 --- # 避免除零错误 if abs(math.cos(alpha_rad)) 1e-10: # alpha 约等于 90度测线垂直 L_line W elif abs(math.sin(alpha_rad)) 1e-10: # alpha 约等于 0度测线水平 L_line L else: # 测线倾斜时与矩形相交线段的长度 L_line min(W / abs(math.cos(alpha_rad)), L / abs(math.sin(alpha_rad))) total_length N * L_line # --- 步骤6: 判断是否为更优解 --- # 第一目标测线条数N最少 if N best_N: best_N N best_total_length total_length best_alpha alpha_deg # 计算测线位置以一条通过矩形中心的测线为基准向两侧平移 # 这里计算的是各测线在法线方向上的坐标截距 best_line_positions calculate_line_positions(H, d_max, N, alpha_rad, L, W) elif N best_N and total_length best_total_length: # 如果条数相同选择总长度更短的方案 best_total_length total_length best_alpha alpha_deg best_line_positions calculate_line_positions(H, d_max, N, alpha_rad, L, W) return best_alpha, best_N, best_total_length, best_line_positions def calculate_line_positions(H, d_max, N, alpha_rad, L, W): 根据总跨度H、最大间距d_max和条数N计算各测线的具体位置截距。 假设测线族的方向由alpha_rad定义。 返回一个列表包含每条测线在法线方向上的截距值。 # 法向量 n (-sin(alpha), cos(alpha)) # 测线方程: n · (x, y) b其中b是截距。 # 覆盖区间总高度为H我们需要用N条线覆盖。 # 第一条线应覆盖边界最后一条线覆盖另一边界。 # 理想情况下相邻线间距为 d_actual H / (N - 1) 注意当N1时间距数N-1。 # 但为了满足 d_actual d_max我们通常让间距等于d_max以达到最少条数。 # 然而当H不能被d_max整除时实际间距会略小于d_max。 # 更通用的做法计算第一条线的截距b0和最后一条线的截距b1然后线性插值。 # 矩形区域在法线方向上的坐标范围。 # 计算矩形四个顶点在法线方向上的投影值。 # 顶点: (0,0), (L,0), (L,W), (0,W) n_x -math.sin(alpha_rad) n_y math.cos(alpha_rad) proj_values [ n_x * 0 n_y * 0, # (0,0) n_x * L n_y * 0, # (L,0) n_x * L n_y * W, # (L,W) n_x * 0 n_y * W # (0,W) ] b_min min(proj_values) b_max max(proj_values) # 我们需要N条线其截距均匀分布在 [b_min D/2, b_max - D/2] 区间内 # 更准确地说每条测线覆盖一个以它为中心、宽度为D的带区。 # 为了完全覆盖 [b_min, b_max]第一条测线的中心应位于 b_min D/2 # 最后一条测线的中心应位于 b_max - D/2。 # 因此截距列表为 start b_min D/2 end b_max - D/2 # 当N1时只有一条线应使其中心在区间中点以保证覆盖。 if N 1: positions [(start end) / 2] else: positions np.linspace(start, end, N).tolist() return positions # 示例使用题目可能给出的参数进行调用 if __name__ __main__: # 假设参数需替换为题目实际值 L 10 # 海里 W 4 # 海里 theta 120 # 度 gamma 1.5 # 度 h0 70 # 米 overlap_rate 0.1 best_alpha, best_N, best_total_length, line_positions calculate_optimal_survey_lines( L, W, theta, gamma, h0, overlap_rate, alpha_step0.5 ) print(f最优测线方向角: {best_alpha:.2f} 度) print(f最少测线条数: {best_N}) print(f估计总航程: {best_total_length:.2f} 海里) print(f各测线位置法线方向截距: {line_positions})这段代码提供了一个完整的求解框架。calculate_optimal_survey_lines函数是核心它通过遍历找到最优的alpha。calculate_line_positions函数用于在最优方案下计算出每条测线的具体位置。4. 模型验证、灵敏度分析与论文写作要点得到一组解最优alpha和测线布置并不意味着工作结束。一个完整的数学建模过程必须包含模型验证和灵敏度分析这也是论文拿高分的关键。4.1 结果可视化与验证“一张好图胜过千言万语。” 在数学建模论文中将你的方案可视化是证明其有效性的最强有力手段。需要绘制的图测线布置图在矩形海域的底图上画出你规划的所有测线。每条测线可以用一条有宽度的色带表示色带宽度即当前alpha下的覆盖宽度D。用不同颜色区分相邻测线并确保它们之间的重叠区域清晰可见。这张图能直观展示“完全覆盖”和“满足重叠率”这两个核心要求。import matplotlib.pyplot as plt import matplotlib.patches as patches def plot_survey_lines(L, W, alpha_deg, line_positions, D): 绘制测线布置图。 fig, ax plt.subplots(figsize(10, 6)) # 绘制矩形海域 rect patches.Rectangle((0, 0), L, W, linewidth2, edgecolork, facecolorlightblue, alpha0.3) ax.add_patch(rect) alpha_rad np.deg2rad(alpha_deg) # 法向量和测线方向向量 n_x -math.sin(alpha_rad) # 法向量x分量 n_y math.cos(alpha_rad) # 法向量y分量 dir_x math.cos(alpha_rad) # 测线方向x分量 dir_y math.sin(alpha_rad) # 测线方向y分量 # 绘制每条测线用矩形条带近似表示覆盖区域 for i, b in enumerate(line_positions): # 测线是直线 n·(x,y) b # 我们需要找到这条直线与矩形海域的两个交点以确定线段。 # 这里简化处理计算直线与矩形四条边的交点取在矩形内的两个点。 # 更简单的方法由于测线是平行的且覆盖整个矩形我们可以取一个足够长的线段。 # 我们计算该直线在法线方向上距离原点为b然后沿测线方向延伸。 # 取线段中点在矩形中心附近然后向两侧延伸足够长。 # 计算矩形中心在法线上的投影 center_proj n_x * (L/2) n_y * (W/2) # 找到直线上距离矩形中心最近的点 # 直线上任意点满足 n·p b 从中心出发沿法线方向移动 (b - center_proj) 的距离 dx (b - center_proj) * n_x dy (b - center_proj) * n_y point_on_line np.array([L/2 dx, W/2 dy]) # 沿测线方向正负各取一个足够大的长度确保线段穿过整个矩形 line_len max(L, W) * 1.5 start_pt point_on_line - line_len/2 * np.array([dir_x, dir_y]) end_pt point_on_line line_len/2 * np.array([dir_x, dir_y]) # 绘制测线中心线 ax.plot([start_pt[0], end_pt[0]], [start_pt[1], end_pt[1]], r-, linewidth0.5, alpha0.7) # 可以尝试绘制覆盖带用半透明的矩形条带但比较复杂。通常论文中只需画出中心线。 ax.set_xlim(-0.1*L, 1.1*L) ax.set_ylim(-0.1*W, 1.1*W) ax.set_aspect(equal) ax.set_xlabel(X (海里)) ax.set_ylabel(Y (海里)) ax.set_title(f多波束测线布置方案 (Alpha{alpha_deg:.1f}°, N{len(line_positions)})) plt.grid(True, linestyle--, alpha0.5) plt.show()目标函数随alpha变化图绘制N(alpha)和Total_Length(alpha)随alpha变化的曲线。这张图能清晰地展示最优解的存在性以及目标函数在最优解附近的敏感性。如果曲线在最优alpha处非常平坦说明方案对角度不敏感实际作业时容错率高如果曲线很陡峭则说明需要精确控制航向。参数灵敏度分析图分别改变theta开角、gamma坡度、overlap_rate重叠率观察最优alpha和最少条数N如何变化。可以用子图形式展示其他参数不变时目标结果随某一参数变化的趋势。这能体现模型的鲁棒性并得出一些有实际指导意义的结论例如“当海底坡度增大时最优测线方向应更倾向于垂直于等深线方向”等。4.2 灵敏度分析与模型讨论灵敏度分析是体现你思考深度的环节。不要只是罗列数据要解释现象背后的原因。开角theta的影响theta增大覆盖宽度D显著增大导致d_max增大。直观上需要的测线条数N会减少。最优alpha可能会如何变化由于D增大对方向alpha的依赖关系公式中的分母权重可能会发生变化可以分析一下。坡度gamma的影响这是本题的关键参数。gamma增大会导致公式中分母的cos²γ * sin²α项减小从而使D对alpha更敏感。当gamma0平坦海底时D与alpha无关最优方案就是简单的沿短边方向布置测线alpha0或90度取决于L和W谁更长。随着gamma增大为了获得更大的有效覆盖宽度D最优alpha会趋向于某个值通常与坡度方向有关以抵消坡度带来的覆盖宽度缩减效应。重叠率要求的影响重叠率要求提高overlap_rate增大意味着d_max减小这必然导致所需测线条数N增加。但它对最优alpha的选择影响可能不大因为alpha主要通过影响D来影响d_max比例关系不变。实操心得在做灵敏度分析时不要只变动一个参数。可以设计一个正交实验同时小范围变动theta、gamma、overlap_rate看看最优解是否稳定。如果最优alpha在参数合理波动范围内变化很小那么你的方案就非常稳健这是论文的一个亮点。在代码实现上这意味著你需要将之前的搜索过程包装成一个函数然后在一个多参数循环中调用它。4.3 论文写作核心要点与避坑指南有了模型和结果最后一步是如何在论文中清晰地呈现。国赛论文有固定的结构摘要、问题重述、模型假设、符号说明、模型建立与求解、结果分析、模型检验与灵敏度分析、模型评价与推广、参考文献、附录。摘要这是重中之重决定评委的第一印象。要用300字左右概括全部工作针对什么问题建立了什么模型“基于几何分析和覆盖优化理论建立了以测线条数最小为目标的非线性规划模型”采用了什么算法“采用了离散化搜索算法”得到了什么关键结果“最优测线方向角为XX度最少需布置XX条测线总航程约XX海里”并简要提及模型特色如进行了灵敏度分析发现方案对坡度变化敏感等。模型假设要合理且必要。本题的核心假设包括海底为均匀倾斜平面海水声速均匀忽略地球曲率使用中心点水深近似代表每条测线的水深可在模型改进中讨论。每一条假设都要说明其合理性以及对模型可能带来的简化。符号说明建议用三线表清晰列出所有变量符号、含义及单位。模型建立这部分是主体。推导D和d_max的公式时建议配合示意图。建立优化模型时要明确写出目标函数和约束条件的数学表达式。将“最小化测线条数”转化为“最小化ceil(H/d_max)”的过程要写清楚。模型求解详细说明你的离散搜索算法流程。为什么用离散搜索因为目标函数包含取整函数不连续。步长选多少为什么步长0.5度在计算效率和精度间取得了平衡。给出程序流程图可以手绘拍照或使用绘图工具但严禁用Mermaid。结果分析先给出针对题目所给标准参数的计算结果。然后必须配上可视化图形测线布置图、目标函数变化图。对结果进行解释为什么这个alpha是最优的从几何角度说明。灵敏度分析如前所述用图表展示参数变化的影响并给出物理解释。模型评价与推广客观评价模型的优点如原理清晰、求解稳定、实用性强和缺点如未考虑实际海流、风浪对航迹保持的影响使用了均匀坡度假设等。提出改进方向可以建立更精细的模型考虑动态水深、复杂海底地形非均匀坡度、以及测量船转弯成本等。附录附上核心代码不必全部关键函数即可。代码要整洁有注释。常见问题与避坑指南忽略单位统一题目中长度可能是海里水深是米角度是度。在计算时务必注意单位特别是在三角函数计算前要转换为弧度。建议在代码开头将所有长度单位统一如全部转换为米。ceil函数使用不当math.ceil()返回的是整数但如果你直接用于后续浮点数计算可能导致类型错误。确保逻辑正确。几何计算错误H L*|sin(alpha)| W*|cos(alpha)|这个公式适用于测线方向角alpha是测线与长边夹角的情况。如果你的坐标系定义不同公式需要调整。务必自己画图推导一遍确保理解。最优解不唯一有时你会发现alpha和180-alpha的结果对称或者alpha和90-alpha在某些情况下等价。在论文中要指出这一点并说明你选择某一区间如0到90度的原因。论文重模型轻分析很多同学花大篇幅推导公式和写代码但对结果的分析只有一两句话。评委更看重你分析结果的能力。为什么是这个数这个方案有什么实际意义参数变了会怎样这部分才是拉开差距的地方。最后再分享一个时间管理技巧三天比赛第一天上午一定要吃透题目完成建模和核心算法设计并开始编程实现。第二天上午必须出第一版结果和图表下午进行灵敏度分析和模型优化。第三天全天用于论文写作和打磨摘要。摘要一定要留出足够时间反复修改它是论文的“脸面”。代码调试和论文写作可以并行由队内不同成员负责。保持沟通确保模型、结果、论文表述三者一致。这道“多波束测线问题”是一个经典的优化建模案例吃透它你对数学建模的理解会上一个台阶。