JPL に滞在した20年前の日記を読み返した(4)

 JPL のすぐ隣のセクションで Aeroassisted Orbital Maneuver の研究をしていた Dr. Kenneth Mease に研究テーマを貰い、1987年2月から研究を開始した。Guidance の問題と最適化の問題を提示された。Guidance は私に経験が無い事、Guidance の前にノミナル trajectory の最適化が必要な事を考えて、最適化の問題を選択した。具体的には、シャトルのような space plane の空気力と推力を両方使って軌道面を変える問題(Synergetic Plane Change Maneuver)である。高度 300km の円軌道において、傾斜角を28.5度から48.5度に変更する。空気力を利用するため、最初に減速して高度数十km まで大気圏に突入する。機体によって指定される空力加熱率の限界値に沿って機体を大きくバンクして飛行して(推力も使用)傾斜角を変え、その後推力を使って大気圏を脱出して元の高度の軌道に戻る。この研究については、このブログのここに記している。

 最初は、最大原理を用いて定式化を行ない、それを非線形計画法で解く事を考えた。以前に NASDA で液体アポジ・エンジンによる最適化を行なった時に使った方法である。しかし、この方法は失敗だった。液体アポジ・エンジンの場合は、インパルス近似が良い近似であり、随伴ベクトルの初期値の見積もりが容易であった。一方、Synergetic Plane Change Maneuver では非線形性が大きく、随伴ベクトルの初期値設定さえできなかった。5月の中旬まで頑張ってみて諦めた。この失敗の報告書を書くと共に、別の方法で検討を始めた。

 それは、離散的な時点で定義したspace plane の迎え角、バンク角、推力値などを、制約条件の下に、最適化するという方法である。当時、制約付き最適化問題を解くサブルーチンは、JPL には無く、制約なし最適化問題のサブルーチン(QNMDIF) を使い、ペナルティ関数で制約を考慮する方法を使った。解析ソフトができて動かし始めたが、余り解が改善されない。私の定式化が悪いのだろうと思い、色々な事を試してみた。しかし、解が改善されない。これは、サブルーチン QNMDIF がおかしい、と考えるようになった。JPL のライブラリのマニュアルに載っている例題を解いてみた。何と、例題が解けなかった。改良された Hessian のコレスキー分解で overflow が発生していた。

 ライブラリの管理をしている人に話をし、QNMDIF のバグを認識してもらい、調査と改修を依頼した。しかし、彼は、「調べている時間が無い。君が調べるか。」と言う。仕方ないので、QNMDIF のソースファイルを全て調べた。元々の QNMDIF にバグがある事は考え難い。JPL の中で誰かが手を加えたりした時にバグが入った可能性が最も高いと予想していた。そういう眼で見ると、数日でバグが発見できた。QNMDIF の中で使う最小実数と最大実数の定義に誤りがあった。これを訂正して例題を解くと、すぐに正解が得られた。
 この時の計算機は、VAX 11/780 であった。その前は、大型計算機 UNIVAC を使っており、ライブラリを VAX 11/780 用にコンバージョンした時にバグが入った様であった。当時の JPL では、1台の VAX 11/780 を 30人位の研究者が使っており、勤務時間中は、かなり混んでいた。よって、夜に走らせて、翌日結果を得ることもしばしば行なった。

 このバグを改修した後は、比較的順調に解析が進行し、7月後半に殆どの結果を得て、報告書を作成するまでになった。振り返ってみると、QNMDIF を使う前に、まず例題を解いてみるべきであった。しかしながら、当時の私にとって、JPL は絶対的な存在であり、そこが持っているライブラリにバグが入っているという事は予想だにしなかった。

 下の写真は、1987年6月29日に当時富士通(株)の加藤氏に撮って頂いたもの。左の机に VAX 11/780 の端末が置いてある。
c0011875_1323094.jpg

 (その5) に続く。
by utashima | 2007-07-16 23:58 | イベント | Trackback | Comments(0)
トラックバックURL : http://utashima.exblog.jp/tb/6506843
トラックバックする(会員専用) [ヘルプ]
※このブログはトラックバック承認制を適用しています。 ブログの持ち主が承認するまでトラックバックは表示されません。


<< 一時的視野欠損 JPL に滞在した20年前の日... >>