OptQ は、 開待ち行列網で表されるシステムの構成を自動的に設計するツールであり、 もともとは、 クリーン・ルーム内の半導体生産システムの中間在庫量を最適化するために開発された。 しかし、生産システム以外に、計算機システム、 通信システム等の構成の最適化も扱うことができる。 ここで開待ち行列網とは、 入力された仕事が終了すると消滅するタイプの待ち行列網を扱う数学モデルである。 OptQ を利用する前提条件として、対象システムに以下の4点が求められる。
OptQ は、このような枠内において、開待ち行列網解析を行ない、 コスト・パフォーマンスを計算する。 そして、条件を変えてこの計算を数万回繰返すことにより、 最適なシステム構成を探し出す。
OptQ の計算精度には限界がある。 この限界は開待ち行列網の数学モデルの単純さによる。 多くの場合この限界が、OptQ の応用範囲を決める。 より正確な解析には、離散シミュレーターが必要になる。 しかし、これら離散シミュレーターは、 解析はできても自動設計を行なうことはできない。 したがって、計算精度の限界が問題になるシステムでは、 大まかな最適化設計を OptQ で行ない、 詳細な設計変更の評価を離散シミュレータで行なう等の手順が有効である。
待ち行列網解析は、手軽な性能評価法として研究されてきた。 この章では、この待ち行列網解析と、 近年さかんに研究されている最適化を組合わせることで、 どのようなツールができるかを説明する。
何に限らずシステムは「正しい動作」をし、 「適切な性能」を持たねばならない。 性能予測とは、前者を仮定した上で、 後者が実現されるかどうかを確かめることを目的とする。
「性能」とは、たとえば、データベースを考えたとき、 「検索要求を出してから、結果が出るまでどれだけ時間がかかるか」 あるいは、「ディスクの稼働率はどれくらいになるか」 または、「ディスクに平均、どれだけの待ちが生じているか」 または、「システム・ダウンが起こる可能性はどれだけか」等のことである。
システムの性能をあげるには、多くのディスクやメモリを使えばよい。 しかし、必要以上に多くしても、コストがかかるだけで営業上不利になる。 資源を最小限に抑えてコストパフォーマンスのよいシステムを設計するには、 以下に述べるような方法での性能予測が必要である。 そして、様々な構成を試してみて、 コストパフォーマンスのよいものを選ばなくてはならない。
離散事象シミュレーションも待ち行列網解析と同様、 性能を予想する方法である。 シミュレーションを使えば、 システムの過渡解析も含めた詳細な予測をすることができる。 しかし、システムの初期状態の記述をはじめ、ジョブやステーションの動作を、 なんらかの言語でプログラムしなければならない。 この作業は人手と時間がかかる。
一方、待ち行列網解析は、定常状態を単純化したモデルを入力するだけで、 いろいろな性能指標を得ることができる。 このモデルを作成する手間は、離散事象シミュレーションより、 はるかに容易である。 しかも、いったんモデルが作成されれば、性能の計算は瞬時に行なうことができる。 例えば「開待ち行列網最適化ツール」OptQ は、 しかし、定常状態にあるシステムの性能しか得られないので、 離散事象シミュレーションのように、 システムの立上がり時などの性能を予測することはできない。
このように、待ち行列網解析と離散事象シミュレーションとは、 性能評価の目的によって、使い分けられる。 待ち行列網解析は、大雑把な性能を急いで知りたい時、 例えば、客先に至急データを提示する必要があり、 モデル作成時間や計算機資源が限られている場合に有効である。
最適化の手法としても、歴史ある数理計画法から、 ニューラルネットワークやジェネティック・アルゴリズムまで、 さまざまなものが存在する。 最適化の研究は、成功すれば応用に結びつきやすく、 社会に大きな影響を与える。 そのため、たとえば、内点法による線形計画法のように、 一般の新聞にもよくとりあげられる。
最適化の研究のなかでも、注目を浴びているのが、 汎用の最適化法である。 すなわち、その手法1つを知っていれば、 様々な問題を最適化できるようなものである。 汎用の最適化は、いままで最適化不可能であった問題を最適化可能とする。 今まで人間が、時間をかけて設計・分析を繰返していた作業を、 この最適化によってかなり自動化することができる。
一方、技術の変化が激しい現在、問題に依存した最適化手法は、 陳腐化が速くなっている。 せっかく最適化手法を確立しても、5年後にシステムの設計法が変り、 新たなシステム設計や運用に役にたたなくなるのであれば、効率がわるい。 最適化法は、汎用であることが人的資源の有効利用に結びつく。
待ち行列網解析は、最適化手法と組合わせることができれば、 システム自動設計手法になる。 待ち行列網解析によりコスト・パフォーマンスを計算し、 最適化手法でこれを向上させる。 これにより、いままで設計と実験を繰返して、 コスト・パフォーマンスを向上させていた作業を自動化できる。 また、自動化によって、いままで見逃していた構成を見つけることもできる。
複雑なシステムの最適化を行なうためには、 数千回から数百万回の試行錯誤と性能計算が必要である。 従って、1回の性能計算は速くなければならない。 例えば、8時間で十万回性能計算するためには、 1回の性能計算は 0.3 秒で終えなければならない。 しかし、離散事象シミュレーションによる性能計算は、 通常1回だけでも数分から数時間を要する。 従って、離散事象シミュレーションと汎用の最適化手法を組合わせることは、 不可能であろう。
現在、最適化に使えるほど高速な待ち行列網の解法は限られている。従って、今後、 最適化のための高速な待ち行列網解析の近似計算法の研究が盛んになると思われる。 精度と速度を両立させた、近似計算法が重要である。
「開待ち行列網最適化ツール」OptQ を使ってシステムの性能予測を行なう場合でも、 あるいはコスト・パフォーマンスの良いシステムの自動設計を行なう場合でも、 待ち行列網モデルの立て方を正確に把握しておく必要がある。 この章では、開待ち行列網とは何か、 パラメータの意味、結果の解釈等について説明する。
OptQ は、AT&TのQNA(Queueing Network Analyzer)という ソフトウェア・パッケージの算法に基づいて、開待ち行列網解析を行なう。 この項ではこの算法の概要を述べる。
モデルは、幾つかのステーションを持つ。 各ステーションは、 バッファに制限のない複数窓口・先着順サービスの待ち行列とみなされる。 ジョブは、システムの外部から到着して、 少なくとも1ヵ所のステーションを使用した後、 最終的にはシステムの外部へ去って行く。 このように外部からジョブが発生し、外部へジョブが退去するような待ち行列網は、 開待ち行列網と呼ばれる。 (一方、一定数のジョブが、 システム内を巡回するような待ち行列網を閉待ち行列網と呼ぶ。) ジョブには複数種類が認められている。 下に開待ち行列網の例を示す。 '○'がステーションを示し、'□□□'が待ち行列を示す。
外部から到着 →□□□○→↓ ↓ 外部から到着 →□□□○→・→□□□○→→→→→↓ ↓ ↓ ↓ →□□□○→・→ 外部へ退去 ↓ ↑ ↓ ・→□□□○→・ ↓ ↑ ↓ ↓ ↑ →□□□○→・→ 外部へ退去 ↑ ↓ ↑←←←←←←←←←←←←←
OptQ では、サービス時間や、ジョブの発生間隔の分布を、 平均と変動係数(標準偏差/平均)で指定する。
入力データは、以下のようになる。
データ1とは、ディスクの処理能力や、CPUの処理能力である。 また、ディスクの台数(待ち行列の窓口数)なども含む。 これらの値は、カタログなどを見ればわかることが多い。 例えば、ディスクのアクセスタイムなどが、それにあたる。
データ2の例として、データベースをあげると、ジョブのタイプには、 たとえば、登録と検索の2種類が考えられる。 各々単位時間当たり何件ずつあるかが、ジョブの発生率にあたる。 プラントの制御システムなどでは、これは比較的簡単に手に入る。 なぜなら、設計の段階で、計算機がどのような処理をするかが、 はっきりしているからである。 しかし、たとえば、流通向けのシステムでは、この見込をつけるのは難しい。
データ3の値は、ソフトウェア等を解析して得られる。 ジョブの例として、データベースの登録処理をあげると、 データ3は次のようになる。
このデータ3は、データ1に依存することに注意すること。 実際のデータの収集では、 プログラムを読んで詳しい処理を記述するのが理想的である。 しかし、それができない時は、実際にプログラムを走らせたときの、 ステーションの動作から推定する。
以上の3つのデータから、開待ち行列網解析は、 応答時間や待ち行列長など、性能を計算する。
以下に入力データ・ファイルの例'test.txt'を示す。 これは小規模な計算機システムの開待ち行列網モデルをあらわす。 この計算機システムは、1台のCPU、複数のディスク、 通信モジュールから構成される。 ジョブ、すなわち、処理は登録処理、検索処理、計算処理の3タイプを考える。 パラメータの詳細は次の項で説明する。 最後の TotalCost と書いてある行を読み込むと、コストを計算し、 print CurrScore で結果を出力する。
# → → → # 通信 CPU ディスク # ← ← ← # ↓ Title ----------------- " QNA sample " ----------------- NameN AvaiN SrCost SrN SrMin SrMax MsgN CPU 1.0 100000 1 1 1 CPUの台数は固定 ディスク 1.0 500000 2 1 10 ディスクは最大10台まで 通信 1.0 30000 5 1 20 通信は最大20個まで NameJ AvArJ CvArJ RespCost MsgJ 登録処理 0.5 3.0 100000 まとまって行なわれ、遅くともよい 検索処理 0.9 1.0 2000000 頻繁で、すばやく行なう必要がある 計算処理 0.0016 0.1 0 10分に1回あり、応答時間は問わない NameJ PathL AvStL CvStL 登録処理 通信 0.01 0.1 CPU 0.01 0.1 ディスク 0.80 1.0 CPU 0.05 0.5 ディスク 1.60 1.0 CPU 0.01 0.1 通信 0.01 0.1 ; 検索処理 通信 0.01 0.1 CPU 0.01 0.1 ディスク 0.80 1.0 CPU 0.01 0.1 通信 0.01 0.1 ; 計算処理 通信 0.10 0.1 CPU 0.03 0.1 ディスク 4.00 1.0 CPU 5.00 0.5 ディスク 5.00 1.0 CPU 0.01 0.1 ; TotalCost Print CurrScore
実行は
C:\> OptQ test.txt
のように行なう。
先に示したデータ・ファイルを OptQ で処理すると、 性能も含めたコストが出力される。 さらに、必要に応じて Print コマンドを追加すれば、 さまざまな性能指標が出力できる。 以下に応用上重要な変数を示す。
以下に、出力コマンド・ファイルの例'report'を示す。
Print Title Print NameN SrN TrafN WaitN QLenN CustN MsgN Print NameJ RespJ MsgJ
C:\>OptQ test.txt report.txt
の様に行なう。結果を以下に示す。
Title ----------------- " QNA sample " ----------------- NameN SrN TrafN WaitN QLenN CustN MsgN CPU 1 0.061 0.033 0.110 0.063 CPUの台数は固定 ディスク 2 0.967 14.531 27.656 29.077 ディスクは最大10台まで 通信 5 0.006 0.000 0.000 0.006 通信は最大20個まで NameJ RespJ MsgJ 登録処理 31.653 まとまって行なわれ、遅くともよい 検索処理 15.438 頻繁で、すばやく行なう必要がある 計算処理 43.303 10分に1回あり、応答時間は問わない
「開待ち行列網最適化ツール」OptQ は、 シミュレーテッド・アニーリング法により、 システムの自動設計を行なう。 このプログラムは、 自分自身で問題の統計的性質を調べながら最適化のパラメータを自動調整する。 したがって、ユーザーはパラメータを調節する必要もなければ、 アルゴリズムの詳細について知る必要もない。
しかし、特殊な場合、例えば、 遅い計算機で少ない試行錯誤で最適化を行ないたい場合には、 パラメータを変更する必要がある。 anneal.html では、 特殊な場合にパラメータの調節を行なうための最低限の知識を説明する。
以下に、最適化パラメータ・ファイルの例'optsrn.txt'を示す。
Sample Crit Gamma Multi MaxCount Smooth DispBest 384 10.0 0.01 8 100000 0.25 1 InitList MetList "Count BestScore Energy99 Sigma99 GlbAcc99 LocAcc99 Beta" "Count BestScore Energy Sigma LoopSize Temp MaxTe" Echo # annealing ... Anneal TotalCost WalkMove SrN SrMin SrMax
この'optsrn.txt'を使って、
C:\> OptQ test.txt optsrn.txt report.txt
の様に行なう。結果を以下に示す。
# annealing ... BestScore SrN 6.73e+006 1 9 2 : 省略 : BestScore SrN 4.37e+006 1 4 1 Count BestScore Energy99 Sigma99 GlbAcc99 LocAcc99 Beta 384 4.37e+006 7.8e+009 2.4e+010 5.3e+000 1.4e+000 2.5e-001 Count BestScore Energy Sigma LoopSize Temp MaxTe 415 4.37e+006 7.8e+009 2.4e+010 31 2.4e+011 1.0e-037 : 省略 : Count BestScore Energy Sigma LoopSize Temp MaxTe 3914 4.37e+006 4.7e+006 2.5e+005 36 3.5e+003 9.4e+005 TN Title 3 ----------------- " QNA sample " ----------------- NameN SrN TrafN WaitN QLenN CustN MsgN CPU 1 0.061 0.033 0.110 0.063 CPUの台数は固定 ディスク 4 0.484 0.076 0.144 0.630 ディスクは最大10台まで 通信 1 0.028 0.000 0.000 0.028 通信は最大20個まで CurrScore NameJ RespJ MsgJ 4.37e+006 登録処理 2.741 まとまって行なわれ、遅くともよい 検索処理 0.982 頻繁で、素早く行なう必要がある 計算処理 14.391 10分に1回あり、応答時間は問わない
今まで、5台もあった 通信モジュールが1台にへり、 ボトルネックだったディスクが4台に増えている。 応答時間 RespJ が、ジョブの応答時間に対する費用 RespCost に見合うよに改善され、 結果としてコスト CurrScore も 3530 万円から437 万円まで安くなっている。
R.H. J.M. Otten and L.P. P.P. van Ginneken. The Annealing Algorithm. Kluer Academic Publishers, 1989.
W.Whitt. The Queueing Network Analyzer. The Bell System Technical Journal, Vol.62, No.9, November 1983.
木村 俊一. QNA: Queueing Network Analyzer について(1-3). オペレーションズ・リサーチ, 29-6,7,8:366-371,431-439,494--500, 1984.