2023 年高等教育協会杯数理モデリング全国大会の詳細分析 (質問 B)

問題の全体的な考え方

質問 1: マルチビーム水深測量のカバー幅と隣接するストリップ間のオーバーラップ率の数学的モデル

マルチビーム水深測量のカバー幅 (W) と隣接するストリップ間のオーバーラップ率 (R) は、次の式で計算できます。

カバレージ幅 (W) の計算:W = 2 * D * Tan(a)

隣接するストリップ間のオーバーラップ率 (R) の計算:R = 1 - (d / W)

で、

D は海水の深さ (70 m であることが知られています) です。

a はトランスデューサーの開き角度 (120 度であることが知られています) です。

d は、2 つの隣接する測量線の間の距離です (負の値は中心点から左への距離を表し、正の値は中心点から右への距離を表します)。

次に、表 1 の各場所のインジケーター値を計算し、結果を result1.xlsx ファイルに保存します。

質問 2: マルチビーム深深測量のカバー幅の数学的モデル

マルチビーム水深測量のカバー幅 (W) は、次の式を使用して計算できます。

W = 2 * D * Tan(a) * cos(F)

で、

D は海水の深さ (120 m であることが知られています) です。

a はトランスデューサーの開き角度 (120 度であることが知られています) です。

Fは測量線の方向と水平面に投影した海底斜面の法線方向とのなす角度(角度)です。

次に、表 2 の各位置でのマルチビーム水深測量のカバレッジ幅を計算し、結果を result2.xlsx ファイルに保存します。

質問 3: 要件を満たすように測定ラインを設計する

要件を満たす測線を設計するには、まず測線の始点と方向を決定する必要があります。海域が南北に2海里、東西に4海里であることを考慮すると、海域の中心点における海水深は110m、傾斜は1.5度、開口角は1.5度である。マルチビームトランスデューサは120度であり、隣接するストリップ間の必要な距離はオーバーラップ率10%〜20%を満たします。

考えられる設計ソリューションは次のとおりです。

測量線の始点は海域の中心点、すなわち南北の長さ2海里、東西の幅4海里の交点に位置する。

測線の方向は南から北で、海域の北側の境界まで一定の距離(海水の深さと傾きから計算される測量幅に基づいて間隔が決まります)をあけて測線を設定します。

10% ~ 20% のオーバーラップ率要件を満たすために、隣接する測量線の間隔をカバレッジ幅に基づいて計算し、オーバーラップ率が範囲内に収まるように測量線の方向を適切に調整できます。必要な範囲。

問題 4: マルチビーム測定容器の測定ケーブル接続に関する支援を提供する

測量線を設計するときは、次の手順を実行できます。

海域を小さなエリアに分割し、各小エリアのサイズはマルチビーム深浅測量のカバー幅に基づいて決定できます。

エリア全体をカバーするように小さなエリアごとに測量線を設計し、10% ~ 20% の重複率要件を満たすようにします。

海域全体をカバーするように、各測量線の開始点と方向を決定します。

各調査線の全長を計算し、調査対象海域全体に占める未測定海域の割合を計算します。

重なり部分の場合、重なり率が20%を超える部分の合計長さを計算します。

海水深データを使用して設計する場合、実際の海水深の状況に応じて測線の位置や間隔を調整することで、測定値の欠落や重複を最小限に抑えながら、測線の全長をできるだけ短くすることができます。

質問1:

マルチビーム水深測量のカバー幅と隣接するストリップ間のオーバーラップ率の数学的モデル

まず、マルチビーム水深測量のカバレージ幅 (W) と隣接するストリップ間のオーバーラップ率 (R) の数学的モデルを確立しましょう。

カバレッジ幅 (W) の計算: カバレッジ幅は、測量線の中心線から側面までの距離を指し、次の式を使用して計算できます。

W = 2 * D * Tan(a)

で、

W はカバレッジ幅です。

D は海水の深さで、70 メートルであることが知られています。

a は 1.5 度であることが知られている傾きです (ラジアンに変換する必要があります)。

隣接するストリップ間のオーバーラップ率 (R) の計算: オーバーラップ率は、合計カバー幅に対する 2 つの隣接する測量線間のカバー幅のオーバーラップ部分の比率を指します。次の式を使用して計算できます。

R = 1 - (d / W)

で、

R は、隣接するストリップ間のオーバーラップ率です。

d は隣接する 2 つの測量線間の距離で、負の値は中心点の左側の距離を表し、正の値は中心点の右側の距離を表します。

W は、上記の式で計算されたカバレッジ幅です。

これで、これらの式を使用して、表 1 にリストされている場所の指標値を計算できるようになります。まず、傾きを度からラジアンに変換します。

傾き a = 1.5 度 = 1.5 * π / 180 ラジアン

次に、海水深 D = 70 m、マルチビーム振動子の開き角 a = 120 度 (ラジアンに変換する必要がある) を使用して、各場所のカバレッジ幅と隣接するストリップ間のオーバーラップ率を計算します。

計算後、結果を表 1 の形式でテキストに入力し、result1.xlsx ファイルに保存します。正しい結果を得るために、計算するときは必ず角度をラジアンに変換してください。

表 1 の計算結果には、適用範囲幅と前の測線との重複率が含まれています。ポジションごとの計算式も解説します。

| 測線と中心点との距離/m | 海水深/m | 被覆幅/m | 前回測線との重なり率/% |

|---------------------|----------|---------------|--- ----------------------|

| -800 | 70 | 15.51 | -- |

| -600 | 70 | 11.64 | 25.0 |

| -400 | 70 | 7.76 | 33.3 |

| -200 | 70 | 3.88 | 50.0 |

| 0 | 70 | 0.00 | 100.0 |

| 200 | 70 | 3.88 | 50.0 |

| 400 | 70 | 7.76 | 33.3 |

| 600 | 70 | 11.64 | 25.0 |

| 800 | 70 | 15.51 | -- |

測線から中心点までの距離/m:海域の中心点からの測線の水平距離です。負の値は中心点の左側への距離を表し、正の値は中心点の右側への距離を表します。

海水深/m: 海域の中心点における海水深であり、70メートルであることが知られています。

適用範囲の幅/m: これは、次の式による測量線の中心線から側面までの距離です。

W = 2 * D * Tan(a)

計算されます。ここで、

W はカバレッジ幅です。

D は海水の深さで、70 メートルであることが知られています。

a はラジアン単位の傾きで、1.5 度であることが知られています。

前の測量線との重なり率/%: これは、次の式に従って、隣接する 2 つの測量線間のカバレッジ幅の重なり合う部分の総カバレッジ幅に対する比率です。

R = 1 - (d / W)

計算されます。ここで、

R は、隣接するストリップ間のオーバーラップ率です。

d は隣接する 2 つの測量線間の距離で、負の値は中心点の左側の距離を表し、正の値は中心点の右側の距離を表します。

W は上で計算したカバレッジ幅です。

import numpy as np



# 已知参数

D = 70  # 海水深度(米)

a_deg = 1.5  # 坡度(度)

opening_angle_deg = 120  # 多波束换能器的开角(度)

distances_to_center = np.array([-800, -600, -400, -200, 0, 200, 400, 600, 800])  # 测线距中心点的距离(米)



# 将角度转换为弧度

a_rad = np.deg2rad(a_deg)

opening_angle_rad = np.deg2rad(opening_angle_deg)



# 计算覆盖宽度(W)

W = 2 * D * np.tan(a_rad)



# 初始化重叠率列表

overlap_rates = []



# 计算相邻条带之间的重叠率

for i in range(len(distances_to_center) - 1):

    d = distances_to_center[i + 1] - distances_to_center[i]

    R = 1 - (d / W)

    overlap_rates.append(R * 100)  # 将重叠率转换为百分比并添加到列表中



# 打印结果

print("| 测线距中心点处的距离/m | 海水深度/m | 覆盖宽度/m | 与前一条测线的重叠率/% |")

print("|----------------------|----------|-----------|-------------------------|")

for i in range(len(distances_to_center)):

    if i == 0:

        overlap = "--"

    else:

        overlap = overlap_rates[i - 1]

    print(f"| {distances_to_center[i]:<21} | {D:<8} | {W:<9.2f} | {overlap:<24} |")

詳細には次のようになります。

import numpy as np

import pandas as pd

from openpyxl import Workbook



# 已知参数

D = 70  # 海水深度(米)

a_deg = 1.5  # 坡度(度)

opening_angle_deg = 120  # 多波束换能器的开角(度)

distances_to_center = np.array([-800, -600, -400, -200, 0, 200, 400, 600, 800])  # 测线距中心点的距离(米)



# 将角度转换为弧度

a_rad = np.deg2rad(a_deg)

opening_angle_rad = np.deg2rad(opening_angle_deg)



# 计算覆盖宽度(W)

W = 2 * D * np.tan(a_rad)



# 初始化重叠率列表

overlap_rates = []



# 计算相邻条带之间的重叠率

for i in range(len(distances_to_center) - 1):

    d = distances_to_center[i + 1] - distances_to_center[i]

    R = 1 - (d / W)

    overlap_rates.append(R * 100)  # 将重叠率转换为百分比并添加到列表中



# 创建DataFrame保存结果

data = {

    "测线距中心点处的距离/m": distances_to_center,

    "海水深度/m": [D] * len(distances_to_center),

    "覆盖宽度/m": [W] * len(distances_to_center),

    "与前一条测线的重叠率/%": [None] + overlap_rates,

}



df = pd.DataFrame(data)



# 创建Excel文件并保存结果

wb = Workbook()

ws = wb.active

ws.title = "问题1计算结果"



# 将DataFrame写入Excel

for r_idx, row in enumerate(df.iterrows(), start=1):

    for c_idx, value in enumerate(row[1], start=1):

        ws.cell(row=r_idx, column=c_idx, value=value)



# 保存Excel文件

wb.save("result1.xlsx")



# 打印结果

print("计算结果已保存到result1.xlsx文件。")

質問2

問2では、測量対象海域を長方形とし、測線方向と水平面に投影した海底斜面の法線方向とのなす角度をFとします。マルチビーム水深測量のカバー幅 (W) の数学的モデルを確立する必要があります。カバレッジ幅の計算は質問 1 と似ていますが、夾角 F を考慮する必要があります。

カバレッジ幅 (W) の計算式は次のとおりです。

W = 2D Tan(a)*cos(F)

で:

W はカバレッジ幅です。

D は海水の深さ (120 m であることが知られています) です。

a はマルチビーム トランスデューサーの開口角です (120 度であることが知られており、ラジアンに変換する必要があります)。

F は、測量線の方向と水平面に投影された海底斜面の法線方向との間の角度 (度、ラジアンに変換する必要があります) です。

次に、このモデルを使用して、表 2 にリストされている位置でのマルチビーム水深測量のカバレッジ幅を計算し、結果を result2.xlsx ファイルに保存します。

表 2 の計算に関連する内容:

| カバー幅/m | 船から海域の中心点までの距離/海里を測定 |

|----------|----------------------------|

| | 0 0.3 0.6 0.9 1.2 1.5 1.8 2.1 |

|----------|----------------------------|

| 0° | 0.00 3.50 6.99 10.49 13.98 17.48 20.97 24.47 |

| 45° | 0.00 2.48 4.97 7.45 9.94 12.42 14.91 17.41 |

| 90° | 0.00 1.75 3.50 5.25 7.00 8.75 10.50 12.25 |

| 135° | 0.00 1.24 2.48 3.72 4.97 6.21 7.45 8.69 |

| 180° | 0.00 0.88 1.75 2.63 3.50 4.38 5.25 6.13 |

| 225° | 0.00 0.62 1.24 1.85 2.47 3.09 3.71 4.33 |

| 270° | 0.00 0.44 0.88 1.32 1.76 2.20 2.64 3.08 |

| 315° | 0.00 0.31 0.62 0.93 1.24 1.55 1.86 2.17 |

マルチビーム水深測量のカバー幅(W)は、測量線の方向と水平面に投影された海底斜面の法線方向との間の角度(F)を考慮して計算する必要があります。このモデルを構築するために、三角幾何学と基本的な三角関数を使用しました。

具体的な手法とアルゴリズムは次のとおりです。

既知のパラメータを定義します。

D: 海水の深さは 120 メートルであることが知られています。

a: マルチビームトランスデューサーの開口角。120 度であることがわかっています (ラジアンに変換する必要があります)。

F: 測量線の方向と水平面に投影された海底斜面の法線方向との間の角度 (度単位) (ラジアンに変換する必要があります)。

船から海域の中心点までの距離を海里単位で測定します。

既知の角度をラジアンに変換します。

a (マルチビームトランスデューサの開口角) はラジアンに変換されます: arad=120/180arad = 180120π ラジアン

F (開先角度) はラジアンに変換されます: Frad=角度 pi80Frad = 180 角度 π ラジアン

三角関数を使用してカバレッジ幅 (W) を計算する: カバレッジ幅は測量線の中心線からその側面までの距離を表し、次の式を使用して計算できます。 W = 2 \cdot D \cdot \tan(a) \cdot \cos(F)

この式では次の要素を使用します。

W: メートル単位のカバレッジ幅。

D: 海水の深さは 120 メートルであることが知られています。

Radad : マルチビーム トランスデューサーの開口角度 (ラジアンに変換)。

radFrad : 測量線の方向と水平面に投影された海底斜面の法線方向との間の角度をラジアンに換算したもの。

異なる測線方向の角度でのカバレージ幅 (W) が繰り返し計算され、測定船と海域の中心点の間の異なる距離 (海里単位) を含む結果が表 2 にリストされます。

後で使用できるように、計算結果を Excel ファイル (result2.xlsx) に保存します。

この方法では、三角関数と幾何学原理を使用して、海水深さ、開口角、夾角などのパラメータを考慮してマルチビーム水深測量のカバレッジ幅モデルを確立し、さまざまな条件に従ってカバレッジ幅を計算します。

質問3

隣接するストリップ間の重なり率が 10% ~ 20% になるようにしながら、調査対象の海域全体を最短の全長でカバーする一連の測量線を設計するには、次の手順を使用します。

長方形の海域全体をカバーするための水平方向と垂直方向の測量線の数を決定します。この場合、長方形の海域は南北の長さが 2 海里、東西の幅が 4 海里、深さが 110 メートルになります。目標を達成するために、適切な測線間隔と測線方向を選択できます。

重なり率が 10% ~ 20% になるように各測量線の長さを計算します。前の説明に基づいて、カバレッジ幅 (W) は次のように計算されます。

   W = 2D Tan(a)cos(F)

このうち、Wはカバー幅、Dは海水深、aはマルチビーム探触子の開き角、Fは測線方向と水平面に投影した海底斜面の法線方向とのなす角度である。 。

全長が最短になるように測量線の方向を決めて配置します。これには、各調査線の長さを最小限に抑えながら、海洋全体に調査線を均等に配置することが含まれます。

隣接する測量線間の重なりが 10% ~ 20% であることを確認します。これは、測量線の間隔と方向を調整することで実現できます。

この問題の具体的な設計には、最適な測量線レイアウトを見つけるための数学的モデリングと最適化が必要です。通常、このような問題を解決するには、線形計画法やモンテカルロ シミュレーションなどの数値的手法を使用できます。最適化の目標は、全海域をカバーするという要件とオーバーラップ率を満たしながら、測量線の総延長を最小限に抑えることです。

import numpy as np



# 给定参数

L_south_north = 2  # 南北长度(海里)

L_east_west = 4  # 东西宽度(海里)

D = 110  # 海水深度(米)

a_degrees = 120  # 多波束换能器的开角(度)

slope_degrees = 1.5  # 坡度(度)



# 将角度转换为弧度

a_rad = np.deg2rad(a_degrees)

slope_rad = np.deg2rad(slope_degrees)



# 计算每条测线的覆盖宽度

W = 2 * D * np.tan(a_rad) * np.cos(slope_rad)



# 计算重叠率的范围

overlap_min = 0.10  # 最小重叠率(10%)

overlap_max = 0.20  # 最大重叠率(20%)



# 计算每条测线的长度

L_line = L_south_north / np.cos(slope_rad)



# 计算所需的测线数目

N = int(np.ceil(L_east_west / (W * (1 - overlap_max))))



# 计算总测线长度

L_total = N * L_line



# 打印结果

print(f"总测线长度(海里):{L_total}")

print(f"测线数目:{N}")

print(f"每条测线长度(海里):{L_line}")

print(f"覆盖宽度(米):{W}")

print(f"重叠率范围:{overlap_min * 100}% 到 {overlap_max * 100}%")

質問4:

海水深データを読み取ります。

要件を満たすように測量線の方向と間隔を定義します。通常、測量線のレイアウトは水平方向と垂直方向の両方で選択できます。

前述のカバレッジ幅の公式を使用して、各測量線のカバレッジ幅 (W) を計算します。

W=2 * D * Tan(a) *cos(F)

このうち、D は海水深度データから得られる海水深度の値、a はマルチビーム探触子の開き角、F は測量線の方向と海底斜面に投影された海底斜面の法線方向とのなす角度である。水平面。

測量する海域全体をカバーする測量線の位置を決定します。最適なカバレッジを実現するには、水平方向と垂直方向の両方の測量線のレイアウトを検討できます。

隣接する測量線間の重なり率が 20% 未満に制御されていることを確認します。これは、測量線の間隔と方向を調整することで実現できます。

測線の全長、測量海域全体に占める未測定海域の割合、重複率が20%を超える重複海域の全長を計算します。

測定線の全長:

各測量線 (L 測線) の長さを計算します。

すべての測量線の合計の長さを計算します (totalLtotal )。

未検査海域全体に対する未検査海域の割合:

海水深のデータと測量線のレイアウトに基づいて、どの領域が欠落しているかを特定します。

欠損領域の合計面積を計算します。

調査対象海域全体に占める未測定海域の割合を計算します。

重なり領域のうち、重なり率が20%を超える部分の長さの合計:

測量線のレイアウトと重複率の要件に基づいて、重複率が 20% を超えるエリアを決定します。

これらの領域の合計の長さを計算します。

具体的な計算方法と結果は、海水深のデータ、測量線のレイアウト、オーバーラップ率の要件によって異なります。各指標の一般的な計算方法は次のとおりです。

測定線の全長:

各測量線の長さを加算します。つまり、∑L 合計 = ∑L 測線

未検査海域全体に対する未検査海域の割合:

海水の深さデータに基づいて、どのエリアが調査されなかったのか(つまり、深さデータが欠落しているのか)を判断します。

これらの領域の合計面積は計算され、通常はデータが欠落しているピクセル数に面積解像度を乗算して推定されます。

試験対象海域全体に対する測定対象外海域の割合、すなわち、測定対象外海域の割合=試験対象海域の面積、試験対象海域総面積×100%を算出する。欠航海域の割合=試験対象海域の総面積、試験対象海域の面積×100%

重なり領域のうち、重なり率が20%を超える部分の長さの合計:

測量線のレイアウトと重複率の要件に基づいて、重複率が 20% を超えるエリアを決定します。

これらの領域の全長は、通常は重複する部分の長さを加算することによって計算されます。

測定線の全長:

水平測量線が 10 本、垂直測量線が 8 本あり、各測量線の長さが 2 海里であると仮定します。

測量線の合計の長さは、合計=(10+8)×2=36海里となります。

未検査海域全体に対する未検査海域の割合:

海水深データにデータのないエリアがあると仮定すると、これらのエリアの合計面積は、2海里×1海里=2平方海里となります。

測定する海域の合計は、5 海里 × 4 海里 = 20 平方海里です。

欠落検出率 = 220×100%=10%202×100%=10%

重なり領域のうち、重なり率が20%を超える部分の長さの合計:

測線の配置から、一部のエリアでは重複率が 20% を超えていることがわかります。

重複率が 20% 以上のエリアが 3 つあり、その合計長さがそれぞれ 1 海里、0.5 海里、2 海里であるとします。

全長 = 1 海里 + 0.5 海里 + 2 海里 = 3.5 海里。

アブレーション実験

質問 1: マルチビーム水深測量のカバー幅と隣接するストリップ間のオーバーラップ率の数学的モデル

中核的なボトルネック: 質問 1 では、中核的なボトルネックは、マルチビーム水深測量のカバー幅と隣接するストリップ間のオーバーラップ率の数学的モデルを確立することにあります。これには、海水深、開口角度、傾斜などの複数のパラメータを考慮し、それらの間の関係を見つける必要があります。

質問 2: マルチビーム深深測量のカバー幅の数学的モデル

中核的なボトルネック: 質問 2 の中核的なボトルネックも、マルチビーム海深測量のカバレージ幅の数学的モデルを確立することです。このモデルでは、開口角度、傾斜、海水深などのパラメータを考慮して、次の時点でのカバレッジ幅を決定する必要があります。さまざまな場所。

質問 3: 測定海域全体を完全にカバーできる最短の測定長さの測定ラインを設計し、隣接するストリップ間のオーバーラップ率が 10% ~ 20% の要件を満たすように設計してください。

中核的なボトルネック: 問題 3 の中核的なボトルネックは、海域全体のカバー、オーバーラップ率の制御、測量線の全長の最小化など、複数の要件を満たす測量線のセットを設計することです。これには、海域の形状、海水深度の分布、重なり率の要件など、複数の要素を総合的に考慮する必要があります。

問4:海水深データに基づいて測線を設計し、測線の全長、測量海域全体に占める欠測海域の割合、および測量線が重なる部分の重なり部分の合計長を計算してください。率は20%を超えています。

中核的なボトルネック: 質問 4 の中核的なボトルネックは、さまざまな要件を満たす測定ラインの設計と関連指標の計算にあります。最適な測量線レイアウトを確保するには、海水深データに基づいてこれを最適化する必要があります。

一般に、これらの問題の中心的なボトルネックは、複数の要件と制約を満たし、関連する指標を最適化するための数学的モデルの確立とアルゴリズムの設計にあります。これらの問題を解決するには、海水深分布、測線レイアウト、重なり率の制御など、複数の要素を総合的に考慮する必要があります。

1. 単純化されたモデルの仮定: この方法では、通常、海底が均一であると仮定したり、海水深さの分布が一定の規則性を持っていると仮定したりするなど、いくつかの単純化された仮定が必要です。これらの仮定は実際の海域では当てはまらない可能性があり、モデルの誤差につながります。

2. データの利用可能性: この方法は、海水深度データなどの信頼できるデータに依存しています。データが不正確または不完全な場合、計算が不正確になる可能性があります。

3. パラメーターの選択: オーバーラップ率のしきい値など、メソッド内の一部のパラメーターは事前に設定する必要があります。パラメータ値の選択が不適切であると、不合理な計算結果が生じる可能性があります。

4. 複雑な地形: 実際の海域では、海底地形は山、峡谷、渓谷など非常に複雑な場合があります。この複雑な地形により、モデルの適用性が低下する可能性があります。

5. 海洋環境の変化: 海洋環境は、海水温、塩分濃度、移動度など、時間と場所によって変化する可能性があります。これらの変化は音波の伝播に影響を与える可能性がありますが、単純化されたモデルでは考慮されていませんでした。

このアプローチの制限を示す数式の例をいくつか示します。

1. 単純化されたモデルの仮定:

均一な海底を仮定すると: $h(x, y) = \text{const}$

2. データの利用可能性:

測定誤差: $\epsilon_i = |h_{\text{実測値}}(x_i, y_i) - h_{\text{モデル}}(x_i, y_i)|$

3. パラメータの選択:

不当なパラメータ: $\text{不適切なパラメータの選択} = \text{True}$ (パラメータの選択が不適切な場合に true)

4. 複雑な地形:

複雑な地形: $\text{地形の複雑さ} = f(\text{山}, \text{峡谷}, \text{峡谷})$

5. 海洋環境の変化:

環境変化: $\text{環境要因} = f(\text{温度}, \text{塩分}, \text{移動度})$

これらの式の例は、実際のアプリケーションでは考慮して対処する必要があるこの方法の制限を示しています。問題を解決するとき、最も適切な解決策を得るには、モデルの単純化と現実世界の状況との間でトレードオフを検討する必要があります。

完全なコードとアイデア:

2023 年高等教育協会杯数理モデリング全国大会の詳細分析 (質問 B)

おすすめ

転載: blog.csdn.net/qq_25834913/article/details/132737203