自動計算・最適化

翼型の自動選定と GA 探索、揚力線理論の比較、飛行経路最適化

自動計算(U) メニュー

・滑空機シム+最大飛距離 翼型計算…

4 段平面形の各断面に翼型データベースの翼型を割り当て、 XFOIL で各断面のポーラを事前に計算してから、非線形 3DOF で 10 m からの滑空を計算します。

結果は 2 つのグラフで表示されます。

飛行軌跡水平距離と高度の関係
ピッチ角・合成速度時間に対するピッチ角と対気速度の変化
Reynolds 数は自動で決まります。 4 段平面形の各断面の翼弦長と、滑空機のシム滑空速度から自動算出されるので、 手で指定する必要はありません。

・翼型自動選定+最大飛距離 探索(GA)…

本プログラムの中でもっとも自動化が進んだ機能です。 翼根の翼厚を指定するだけで、あとは全自動で最良の機体を探します。

処理の流れは次のとおりです。

  1. 翼型の絞り込み … 指定した翼根翼厚 ± 許容幅で翼型データベースを検索し、 翼厚が近い順に候補を選びます
  2. XFOIL 事前解析 … 候補翼型を、迎角範囲 × Reynolds 数範囲でまとめて解析し、 断面ポーラ表を作ります
  3. GA 探索 … 4 段それぞれの翼型・取付角・コード長・上反角を遺伝的アルゴリズムで振りながら、 非線形 3DOF の滑空距離を並列で評価します
  4. ランキング … 飛行距離の大きい順に並べ、autocalc.db へ保存します

パイロットの体重と機体重量は決定済みの固定条件として扱い、 翼まわりの諸元だけを変化させて探索します。

探索中も他のモードを使えます。 ウィンドウを閉じても計算はバックグラウンドで走り続けます。 進み具合と停止ボタンは画面下のステータスバーに出るので、 モードを切り替えてもそこから止められます。
全翼型バッチ解析・GA最適化とは同時に走りません。 どれも CPU のコアを目いっぱい使う並列計算だからです。 バッチ解析とぶつかったときは、どちらを続けるか尋ねるダイアログが出ます。 GA最適化が動いているときは「ほかの計算が実行中です」と表示され、開始しません。 → 並列計算について

・揚力線理論群全計算+比較…

12 種類の揚力線理論を同じ条件でまとめて計算し、翼幅荷重分布を 1 枚のグラフに重ね描きします。 手法ごとの違いを見比べたいときに使います。

手法出典
SchrenkNACA TM-948
谷の平均値法谷一郎「主翼の壓力分布を簡單に計算する方法」
Lippisch Verfahren zur Bestimmung der Auftriebsverteilung längs der Spannweite
Lotz Berechnung der Auftriebsverteilung beliebig geformter Flügel
Prandtl フーリエ級数『航空力学の基礎』第3版
MutterperlNACA TN-834
Falkner The Calculation of Aerodynamic Loading on Surfaces of Any Shape
Multhopp Die Berechnung der Auftriebsverteilung von Tragflügeln
線形 WeissingerNACA TM 1120
Weissinger-L 法NACA TM 1120
Sivells–NeelyNACA TN-1269
Wickenheiser・Garcia Aerodynamic Modeling of Morphing Wings Using an Extended Lifting-Line Analysis

比較を成り立たせるため、零揚力角と揚力傾斜はすべての手法で同じ値を使います。 手法ごとに違う値を使うと、CL が 2 群に分裂して比べられなくなるためです。

・グラフと表の連動

計算後に手法のチェックを外すと、グラフから対応する曲線が消えます。 チェックを戻すとまた表示されます。線が混み合って見づらいときにお使いください。 非表示にした手法は、表の行も灰色になります。

最適化(O) メニュー

飛行経路そのものを最適化して、10 m からの飛行距離を最大にする操縦を求めます。

項目内容
SCGRA2 — 10 m 飛行距離最適化 逐次共役勾配復元法(Sequential Conjugate Gradient-Restoration Algorithm)による最適制御
SCGRA3 — 原田・別府・東 1996 論文モデル 論文のモデルをそのまま実装したもの
DCNLP — 10 m 飛行距離最適化 直接コロケーション非線形計画法(Direct Collocation NLP)
GA最適化 — 滑空距離最大化(NLFS6) 機体データベースの機体を 6 自由度モデルで飛ばし、操縦のしかたを遺伝的アルゴリズムで探します。 → GA最適化

・GA最適化 — 滑空距離最大化(NLFS6)…

「最適化(O) → GA最適化 — 滑空距離最大化(NLFS6)…」で開きます。

「翼型自動選定+最大飛距離 探索(GA)」が機体の形を探すのに対し、 GA最適化は決まった機体の飛ばし方を探します。 機体データベース(glider.db / hpa.db)から機体を選び、 NLFS6 の 6 自由度モデルで飛ばして、滑空距離が最大になる操縦パラメータを遺伝的アルゴリズムで見つけます。

設定内容
機体種別(グライダー/人力プロペラ機)と、データベースに保存した機体
飛行条件発進高度・打ち切り時間・計算刻み・向かい風
探索する操縦パラメータ 初期姿勢・引き起こしやバンクを始める時刻・目標経路角・自動操縦の PID ゲインなど。 「21 個すべて」か「17 個(初期ロール・ヨーとバンク横 PID の I・D を固定)」を選べます
機体データベースに入っている操縦を出発点にする 既定でオン。保存済みの操縦を初期集団に入れるので、結果が出発点より悪くなることはありません
GA の設定 個体数(既定 90)・エリート数(30)・世代数(90)・個体突然変異率(0.05)・遺伝子突然変異率(0.02)・交叉(2 点交叉/一様交叉)・並列プロセス数。 既定値は公開されている設定にそろえてあります

「最適化を開始」を押すと、世代ごとの最良飛距離がグラフに、見つかった操縦パラメータが表に出ます。 進捗バーは 1 個体を飛ばすごとに進み、経過時間と残り時間の見込みも表示されます。 終わったら「この操縦を機体データベースへ保存」で、その機体に操縦パラメータを保存できます。

ウィンドウを閉じても計算は止まりません。 進み具合と停止ボタンは画面下のステータスバーへ引き継がれ、モードを切り替えてもそこから止められます。 閉じている間に終わった結果は、もう一度開いたときに表示され、保存できます。
エリート(成績上位でそのまま次の世代へ残る個体)は飛ばし直さないので、 既定設定での評価回数は 5,490 回です(開始前にダイアログに表示されます)。

並列計算について

全翼型バッチ解析・GA 探索・GA最適化は、複数の CPU コアを使って並列に計算します。 既定の並列数はお使いの PC の CPU から自動で決まり、 GUI と他モードのために全コアは使いません。

この 3 つは同時には 1 つしか動きません。どれもコアを目いっぱい使うので、 重ねると互いに遅くなるだけだからです。

動いている計算始めようとした計算どうなるか
全翼型バッチ解析GA 探索どちらを続けるか尋ねるダイアログが出ます
GA 探索全翼型バッチ解析
全翼型バッチ解析 / GA 探索GA最適化 「ほかの計算が実行中です」と、動いている計算の名前と止め方が表示され、開始しません
GA最適化全翼型バッチ解析 / GA 探索

お使いの PC で何並列になるかは、「ヘルプ → αFOIL+ωSIM について」で確認できます。 実際のコア数・スレッド数(論理プロセッサ数)が表示されます。

並列数は開始前のダイアログで変更できます。他の作業をしながら回したいときは少なめに、 探索だけに集中したいときは多めにしてください。