翼型の”美しさ”について&機械学習

ご無沙汰しておりました。yuukivelです。

長かった大学院入試がやっと終わりました(面接まだあるけれども)(実はこれを書いているのは面接の待ち時間だったりする)いやはや大変だった。
とにかくやりたいことできず、つらいわでほんと、大変だったとしか言えないです。
やりきった感はあるけれども。合格発表までしばしやりたいことやるとします。

さて、本題に入ろう。

今回のタイトルはいかがわしい(?)感満載だが、「翼型は美しい!」って事が言いたいのではく、ちゃんと工学的なお話なので安心を。。。

早速だが、下に示す翼型のうち、どちらが”美しい”と言えるだろうか。


たぶん大半の方が、「上の方が美しい」というのではないだろうか。

そこでもう一つ質問しよう。

なにを基準に美しいと判断したのか。

この質問は難しい、本当に難しい。

そこで、今回の記事のテーマは「翼型の美醜をいかに数値的に表すか」というテーマだ。ちょっとArtisticかな?中二病からしかたないね!

主に3DCADプログラミングの界隈で、曲線の美しさをいかに定義するかということに関して多くの先行研究がある。
歪みエネルギー最小化曲線網に基づく曲面の生成
といった論文を紹介しておこう。

ここの論文にあるとおり、曲線の滑らかさについては、曲線の歪みエネルギー
R=\frac{x''y'-x'y''}{((y')^2+(x')^2)^{3/2}}

E=\int{R^2dx}

で求められる。ここで翼型の場合、前縁付近で
\frac{dy}{dx}=\infty
となるので、精度は落ちるけれども、x,yについての差分表現とした。

実際に翼型の歪みエネルギーを計算してみると結構面白くて、事実、上に表示した翼型の歪みエネルギーはそれぞれ
上:0.1351
下:0.3768
となり、上の翼型が圧倒的に翼型歪みエネルギーが小さくなる。

他にも、曲率の連続性が曲線の美しさに影響するとあったり、様々なようだ。
STUDIOの曲率連続性評価 - Autodesk Knowledge Network

ここで、とりあえず美しさの一つのパラメータとして翼型歪みエネルギーがあることが分かったが、これだけではないと思われる。
キャンバーや翼厚の分布のさせ方やその値自体、最大キャンバや最大翼厚の位置といったことも影響してくるのではないだろうか。

そこで、翼型に関する私自身の好みをはっきりさせ、翼型設計に活かしていくために、これらのパラメータを収集し、最近はやりの
機械学習
を用いて、自分の好みの翼型と好みじゃない翼型の判別(点数付け)を行ってみた。

なぜこれをしたかというと、このブログでさんざん述べてきた「遺伝的アルゴリズムによる翼型設計」と深く関係がある。

現在、距離競技機の設計を行っているけれども、そこで現在公開しているXGAGの改良として、
レイノルズ数(翼弦長)および有次元翼厚の最適化を含めた遺伝的アルゴリズムによる翼型設計コード
『Tubdotgag』」
を開発した。
(開発者専用試作設計コードとかいえばかっこいいでしょ?えへへ)
(設計が落ち着いたらこちらも公開しようと思います。ただし最適化が強すぎてちょっと使いにくいのは確か。またXGAGにもましてピーキーな翼型がでることがあるので、そうした翼型を弾くためにも翼型の速度分布や圧力分布、境界層パラメータを見る事ができる知識が必要です)

遺伝的アルゴリズムによる翼型設計は、最終的には翼型設計者が形状を見て、その翼型を採用するかを決めることが多い。つまりはいかに性能が良くてもその翼型が”汚”ければ採用されない。
そこで、GA内の評価関数に翼型の美醜を組み込む事によって、もう最初から汚いのはいらない、としてしまえば良いのではないかと思ったのが事の始まりだ。
確かに探索範囲が狭くなってしまって、たとえば汚いと判断された翼型の中にも美しいものがあって、素晴らしい性能を持つものがあるかもしれない。GAのコンセプトとして系の多様性をできるだけ大きくするのが重要だが、少しそれには反するのかなと。
しかしこの効果は大きくて、実際に組み込んでみると、本当に好みの翼型ばかり出るようになった。

さて、実際にどのように翼型の美醜を組み込んでいるのか見てみよう。

まず、収集するデータだ

  • 翼型歪みエネルギー
  • 翼型キャンバ分布歪みエネルギー
  • 翼型翼厚分布歪みエネルギー
  • 前縁曲率
  • 後縁角度
  • 最大キャンバ
  • 最大キャンバ位置
  • 最大翼厚
  • 最大翼厚位置
  • 美醜どちらかの(人の)判定結果

の10個だ。何が影響するかは分からないので、とにかく雑多にデータを集めてみた。曲率の連続性等も今後とれればいいなと。

収集したデータはフリーの機械学習ソフト「Weka」で読み込むことができるフォーマットになっている。
http://www.cs.waikato.ac.nz/ml/weka/
データをWekaで可視化するとこんな感じ

また、Wekaについて参考にした書籍は以下の通り。

フリーソフトではじめる機械学習入門

フリーソフトではじめる機械学習入門

評価関数に組み込むためには、美醜を数値化しなければならない。その数値化には「マハラノビス距離」を用いた。
マハラノビス距離とは感覚的に、「多次元正規分布において、その分布の山の中で何合目あたりにいるか」の指標だ(すみません僕自身初心者なのであまりよく分かっていないのです。。。)
つまりは、ある値、例えば翼型歪みエネルギーのデータをとって、その平均を求める。データが平均値付近に集まっていれば、平均値から大きく外れた個体のマハラノビス距離はとても大きくなる。
逆にデータが平均から散らばって存在していれば、普通の距離では前のデータと同じくらい離れていたデータでも、マハラノビス距離は小さくなる。

詳しくはこのWebサイトに詳しい。
http://www.geisya.or.jp/~mwm48961/statistics/hanbetu1.htm

マハラノビス距離は以下のように定義される
C:共分散行列
\bold{x}-\mu:値を計算するデータと平均値の差のベクトル
Maharanobis Distance = \sqrt{(\bold{x}-\mu)^TC(\bold{x}-\mu)}

共分散行列はpythonのnumpyでもoctaveでもビルトインファンクションで計算してくれるのでかなり楽だ。

Tubdotgagではマハラノビス距離が閾値以上になった場合にその値に応じて罰則を付加している。



機械学習を最適化に組み込むのはとても面白いと感じた。
そして遺伝的アルゴリズムの拡張はいろいろやりやすくて楽しい。

あと某琵琶湖での大会にて、「曲線の美しさとか、生物模倣とか、凄く興味あるんです」と言ってくれた設計の人もいて、凄く嬉しく思った事もかいておかなければならない。