2023 May Cup 数学モデリングの質問: ドローン定点配送の問題を解決する全プロセス、書類と手順

2023 メイカップ数学モデリング

質問A:ドローンの定点配送について

元のタイトルを再掲:

  科学技術の発展に伴い、ドローンはさまざまな分野で広く活用されています。上空で定点配送ミッションを行うドローンの場合、配送精度はドローンの運用技術だけでなく、ドローンがミッションを遂行する状態や環境にも関係します。ドローンが配達ポイントに近づくときの高度、速度、ドローンの位置の風速、配達ポイント周辺の地理的環境などの要因。この質問では、ジェット ドローンのみが考慮されています。関連情報を参照し、次の質問について検討してください:
  質問 1: ドローンが水平面と平行に飛行し、空中に物資を投下すると仮定します (物資は半径 20cm の球形です)地上の指定された場所に到着します。
  (1) ドローンの配送距離(資材を投下する際、ドローンと地面資材の着地予定点との間の直線距離)とドローンの飛行高度、飛行速度、空気抵抗、など。
  (2) UAV の飛行高度は 300m、飛行速度は 300km/h、風速は 5m/s、風向は水平面と平行であると仮定します。ドローンの飛行方向が風向と同じ(角度が 0 度)、逆(角度が 180 度)、または垂直(角度が 90 度)の場合のドローンの配送距離を提供する数学モデルが確立されています。 )。
  質問 2: UAV は定点に物資を投下するだけでなく、UAV の前面に取り付けられた発射管から爆発物を発射して川を浄化することもできます。大まかな流れとしては、まずドローンが障害物の近くまで水平飛行し、その後急降下して爆薬を発射するタイミングを計り、発射後すぐに上昇して飛び去ります。現在、氷が堆積して川がせき止められており、標的を爆破するにはドローンで爆発物(爆発物は球形で半径8センチ、重さ5キロ)を発射する必要がある。UAV の開始点からターゲットまでの水平距離が 10,000m であると仮定します。環境の影響を受けるため、ドローンは急降下して発射する必要があり、発射方向はドローンの飛行方向と一致している必要があります。
  (1) UAV の発射距離(発射点と目標との間の直線距離)と UAV の飛行高度、飛行速度、急降下角度、発射速度等の関係を与える数学的モデルを確立する。
  (2) 風速 6m/s、目標に接近する際のドローンの飛行高度 800m、飛行速度 300km/h、爆発物の発射速度 600km/h とする(速度比)ドローンの)。爆発物を発射する際のドローンと目標物との距離は1000m~3000m、ドローンの高さは300m以上であることが求められますが、ドローンが目標物に命中するための発射戦略を教えてください。
  質問 3: ドローンがターゲットに命中させるために爆発物を発射する精度は、ドローンの飛行の安定性と大きな関係があります。同じ条件下で、爆発物を発射する際のドローンの安定性が高いほど、標的への命中精度が高くなります。ドローン操縦者は、ダイビングを開始した後、風向や風速がドローンに与える影響を修正するために、常にドローンの飛行姿勢を調整する必要があります。
  (1) 飛行速度や発射速度が一定である場合には、様々な要素を総合的に考慮して UAV 飛行の安定性を定量化するための数理モデルを構築し、安定性と命中精度との関係を与え、数値シミュレーション等を利用する方法。 UAV の安定性を分析および検証します。
  (2) 風速が 6m/s、ドローンの飛行速度範囲が 300km/h ~ 400km/h、爆発物の発射速度が 500km/h であると仮定します(ドローンの速度との比較) )。ドローンは高度 800m でダイビングを開始します。初期ダイビング角度は 45°です。爆発物発射時の飛行高度は 300m 以上です。ドローンをできるだけ安定させるための飛行姿勢の最適な調整戦略を提供してください。

ソリューションプロセス全体の概要 (要約)

  この論文では、空中からの物資輸送と爆破ミッションを実行する過程におけるジェット UAV の数学的モデリングの問題を研究します。ドローンの爆発物発射時の命中精度に対するドローンの飛距離と飛行高度、飛行速度、空気抵抗などの要因との関係、飛行姿勢、飛行速度、発射速度などの要因の影響を分析しました。 。この記事は主に 3 つの問題、すなわち、水平面に平行に飛行するときに UAV が物質を投下する数学的モデル、異なる風向条件下での UAV の到達距離、および爆発物で河川を浚渫するタスクを実行するときの UAV の発射について説明します。そして最適な飛行姿勢調整戦略。
  質問 1 では、ドローンの配達距離、飛行高度、飛行速度、空気抵抗の関係を説明するための単純化された数学モデルを確立しました。落下物の水平距離 D は飛行時間 t と水平速度 v から計算でき、飛行時間 t は鉛直方向の加速度運動方程式から計算できることがわかりました。既知の条件を数学モデルに代入し、追い風、向かい風、横風の条件でのドローンの到達距離を計算しました。
  質問 2 では、解体ミッションを実行する際の UAV の発射戦略を検討しました。私たちは、ドローンの発射距離と、飛行高度、飛行速度、急降下角度、発射速度などの要素との関係を記述する数学的モデルを確立しました。私たちは、最適な発射角度や発射速度など、既知の条件に基づいた特定の制約の下で UAV の発射戦略を計算しました。
  質問 3 では、UAV の飛行安定性が爆発物の発射時の命中精度に与える影響に焦点を当てました。さまざまな要因を総合的に考慮した数理モデルを構築し、UAVの飛行安定性と命中精度の関係を定量化し、数値シミュレーションなどの手法を用いてUAVの安定性を解析・検証しました。飛行速度と発射速度が一定の場合、ドローンの飛行姿勢を調整することで命中精度が大幅に向上することがわかりました。特定の条件下で UAV を可能な限り安定に保つための最適な飛行姿勢調整戦略を提供します。
  この記事の研究結果は、ジェット UAV が空中からの物資輸送や爆発物の河川浚渫作業を実行するための効果的な数学的モデリング方法を提供します。UAV の飛行状態と環境要因の包括的な分析を通じて、さまざまなミッション シナリオにおける UAV 運用戦略の理論的ガイダンスを提供します。これらの結果は、UAV がさまざまなタスクを実行する際の効率と安全性を向上させる上で非常に重要です。科学技術の継続的な発展に伴い、ドローンはより多くの分野で活躍することになります。UAV の数学的モデリングの問題を徹底的に研究することで、実用化のためのより正確かつ効率的なガイダンスを提供し、UAV 技術のさらなる開発と応用を促進することができます。

モデルの仮定:

  この記事で提起された質問に応えて、次のモデルの仮定を立てました。
  1. 空気抵抗は水平方向の動きにのみ影響すると仮定します。
  2. 地球は平面モデルであると仮定し、物体に対する重力の影響を無視します。
  3. 爆発物発射時のドローンの発射方向は、ドローンの飛行方向と一致しているものとします。
  4. ドローンの飛行速度と爆発物の発射速度は変わらないと仮定します。
  5. 爆発物と物質の質量分布は均一であり、それらの飛行に影響を与える他の外部干渉要因はありません。
  6. ドローンと発射管の間の物理的接触や摩耗はごくわずかです。
  7. 爆発の威力は無視でき、周囲の環境や人員に大きな影響を与えることはありません。

問題分析:

  質問 1 分析
  質問 1 は主に、UAV が空中で資材配送タスクを実行する際の配送距離と飛行高度、飛行速度、空気抵抗およびその他の要因との関係に焦点を当てています。この問題を解決するには、水平面と平行に飛行する際にドローンから地面に落下する物質の軌道を考慮する必要があります。材料は重力と空気抵抗の影響を受け、垂直方向の加速度を受け、水平方向の風速の影響を受けます。したがって、空気中の物質の動きを説明するには、これらの要素を含む数学的モデルを確立する必要があります。
  材料の質量、形状、サイズが空気抵抗に与える影響を考慮する必要があります。また、ドローンの飛行高度や速度も配送距離に影響します。さまざまな風向条件下でのドローン配送ミッションの指針を提供するには、これらの要因を定量的に分析する必要があります。
  質問 2 の分析
  質問 2 は主に、発射距離と飛行高度、飛行速度、急降下角度、発射速度およびその他の要因との関係を含む、爆破ミッションを実行する際の UAV の発射戦略に焦点を当てています。この問題を解決するには、爆発物がターゲットに正確に命中することを保証するために、ダイビングプロセス中にターゲットの位置、飛行状況、環境条件に応じてドローンがどのように発射角度と速度を調整するかを分析する必要があります。
  ドローンが急降下する際の空気抵抗や重力の影響、爆発物を発射する際の反力なども考慮する必要があります。さらに、実際の運用の指針を提供するために、さまざまな飛行姿勢における UAV の動的特性を解析する必要もあります。最後に、数値計算とシミュレーション手法を通じて、特定の制約の下でモデルの実現可能性と有効性を検証する必要があります。
  質問 3 の分析
  質問 3 は主に、爆破ミッションの実行中の命中精度に対する UAV の飛行安定性の影響に焦点を当てています。この問題を解決するには、UAVの飛行安定性と命中精度の関係を定量化するために、さまざまな要因を総合的に考慮した数理モデルを確立する必要があります。ドローンの飛行姿勢、飛行速度、発射速度などが飛行安定性に与える影響を考慮する必要があります。さらに、実際の運用の指針を提供するために、風速と風向が UAV の飛行安定性に及ぼす影響を研究する必要もあります。数学的モデルを確立する際、姿勢角変化率、飛行速度変動など、飛行安定性を測定するための指標を導入することで、飛行中の UAV の安定性を説明できます。同時に、命中精度を向上させるために、姿勢調整や速度調整など、さまざまな飛行状態における UAV の制御戦略も考慮する必要があります。
  UAV の飛行安定性と命中精度の関係を分析することで、実用化に向けた的を絞った運用提案を提供できます。また、数値シミュレーションやその他の手法を使用して UAV の飛行安定性を分析および検証し、モデルと運用戦略の有効性を検証することもできます。

モデルの確立とソリューション全体の論文のサムネイル

ここに画像の説明を挿入します

すべての論文については、以下の「QQ 名刺のモデリングのみ」を参照してください。QQ 名刺をクリックしてください。

コード:

手順の一部は次のとおりです。

clear
clc
 
% 遗传算法参数设置
pop_size = 100; % 种群大小
num_var = 10; % 决策变量个数
num_gen = 200; % 最大迭代次数
p_crossover = 0.8; % 交叉概率
p_mutation = 0.1; % 变异概率
ub = [500, 500, 500, 500, 500, 1000, 1000, 1000, 1000, 1000]; % 决策变量上界
lb = [0, 0, 0, 0, 0, 500, 500, 500, 500, 500]; % 决策变量下界
 
% 目标函数
fitness_fun = @(x) -(x(6)*cos(x(7))*cos(x(8)) + x(6)*sin(x(7))*sin(x(8))*cos(x(9)) - x(5))^2 - (x(6)*sin(x(7))*cos(x(8))*cos(x(9)) - x(4))^2 - (x(6)*sin(x(8)) + x(3))^2;
 
% 初始化种群
pop = rand(pop_size, num_var) .* (ub - lb) + lb;
 
% 计算适应度
fitness = zeros(pop_size, 1);
for i = 1:pop_size
    fitness(i) = fitness_fun(pop(i,:));
end
 
% 迭代
for gen = 1:num_gen
    % 选择
    probs = fitness / sum(fitness);
    [pop_new, ~] = roulette_wheel_selection(pop, probs);
    
    % 交叉
    pop_new = crossover(pop_new, p_crossover);
    
    % 变异
    pop_new = mutation(pop_new, p_mutation, ub, lb);
    
    % 计算适应度
    fitness_new = zeros(pop_size, 1);
    for i = 1:pop_size
        fitness_new(i) = fitness_fun(pop_new(i,:));
    end
    
    % 合并种群
clear
clc
 
% 遗传算法参数设置
pop_size = 100; % 种群大小
num_var = 10; % 决策变量个数
num_gen = 200; % 最大迭代次数
p_crossover = 0.8; % 交叉概率
p_mutation = 0.1; % 变异概率
ub = [500, 500, 500, 500, 500, 1000, 1000, 1000, 1000, 1000]; % 决策变量上界
lb = [0, 0, 0, 0, 0, 500, 500, 500, 500, 500]; % 决策变量下界
 
% 目标函数
fitness_fun = @(x) -(x(6)*cos(x(7))*cos(x(8)) + x(6)*sin(x(7))*sin(x(8))*cos(x(9)) - x(5))^2 - (x(6)*sin(x(7))*cos(x(8))*cos(x(9)) - x(4))^2 - (x(6)*sin(x(8)) + x(3))^2;
 
% 初始化种群
pop = rand(pop_size, num_var) .* (ub - lb) + lb;
 
% 计算适应度
fitness = zeros(pop_size, 1);
for i = 1:pop_size
    fitness(i) = fitness_fun(pop(i,:));
end
 
% 迭代
for gen = 1:num_gen
    % 选择
    probs = fitness / sum(fitness);
    [pop_new, ~] = roulette_wheel_selection(pop, probs);
    
    % 交叉
    pop_new = crossover(pop_new, p_crossover);
    
    % 变异
    pop_new = mutation(pop_new, p_mutation, ub, lb);
    
    % 计算适应度
    fitness_new = zeros(pop_size, 1);
    for i = 1:pop_size
        fitness_new(i) = fitness_fun(pop_new(i,:));
    end
    
    % 合并种群
    pop_all = [pop; pop_new];
    fitness_all = [fitness; fitness_new];
    
    % 精英保留
    [~, idx] = sort(fitness_all, 'descend');
    pop = pop_all(idx(1:pop_size),:);
    fitness = fitness_all(idx(1:pop_size));
    
    % 输出结果
    [~, idx] = max(fitness);
    x_opt = pop(idx,:);
    fval = fitness(idx);
    fprintf('第%d代,最优解:', gen);
    disp(x_opt);
    fprintf('第%d代,最优目标函数值:%.4f\n', gen, -fval);
end
 
% 选择操作
function [pop_new, idx] = roulette_wheel_selection(pop, probs)
    [N, ~] = size(pop);
    cum_probs = cumsum(probs);
    pop_new = zeros(N, size(pop,2));
    for i = 1:N
        r = rand();
        idx = find(cum_probs > r, 1);
        pop_new(i,:) = pop(idx,:);
    end
end
 
% 交叉
function pop_new = crossover(pop, pc)
[N, n_var] = size(pop);
pop_new = zeros(N, n_var);
for i = 1:N/2
p1 = pop(2i-1, :);
p2 = pop(2i, :);
r = rand();
if r < pc
% 单点交叉
c_point = randi([1, n_var-1]);
pop_new(2i-1, :) = [p1(1:c_point), p2(c_point+1:end)];
pop_new(2i, :) = [p2(1:c_point), p1(c_point+1:end)];
else
pop_new(2i-1, :) = p1;
pop_new(2i, :) = p2;
end
end
end
 
% 确保个体数量为偶数
if mod(N, 2) ~= 0
    pop = pop(1:end-1,:);
end
 
% 交叉
pop_new = zeros(size(pop));
for i = 1:2:N
    p1 = pop(i, :);
    p2 = pop(i+1, :);
    if rand() < p_crossover
        % 两点交叉
        c = randi(size(pop, 2) - 1);
        pop_new(i,:) = [p1(1:c), p2(c+1:end)];
        pop_new(i+1,:) = [p2(1:c), p1(c+1:end)];
    else
        % 不交叉
        pop_new(i,:) = p1;
        pop_new(i+1,:) = p2;
    end
end
 
 
% 变异
function pop_new = mutation(pop, pm, lb, ub)
[N, n_var] = size(pop);
pop_new = zeros(N, n_var);
for i = 1:N
p = pop(i, :);
r = rand();
if r < pm
% 随机变异
idx = randi(n_var);
p_new = p;
p_new(idx) = lb(idx) + (ub(idx)-lb(idx)) * rand();
pop_new(i, :) = p_new;
else
pop_new(i, :) = p;
end
end
end
すべての論文については、以下の「QQ 名刺のモデリングのみ」を参照してください。QQ 名刺をクリックしてください。

おすすめ

転載: blog.csdn.net/weixin_43292788/article/details/132855263