(57)【要約】  【課題】  本発明は，従来に比べ高速に最適値を求めるためのコンピュータシステムを提供することを目的とする。  【解決手段】  本発明は，基本的には，初期試行値を複数発生させ，それらに関して別々のコンピュータを用いて並列的に関数の勾配の計算を実行させ，いずれかのコンピュータでの計算が終了するごとに計算結果から新たな試行値を発生させ，新規試行値に関しての勾配の計算を実行させることを繰り返すことで，関数の極値を見つける最適化の高速化を可能にする。従って，ある一つの試行値での勾配を計算させ，その計算結果からへシアンを更新して新たな試行値を発生させ，新規試行値に関しての勾配の計算を実行させることを逐次的に繰り返す，従来のシステムとは異なる。  【選択図】図１
2006215804.tif 000002
【特許請求の範囲】
【請求項１】
マスターコンピュータと，前記マスターコンピュータに連結された複数のワーカーコンピュータによって構成される最適値を求めるためのコンピュータシステムであって，
前記マスターコンピュータは，
計算条件に関する情報を入力するための手段と，
前記計算条件に関する情報を，前記複数のワーカーコンピュータに送信するための手段と，
前記マスターコンピュータに最適値を求めるための初期値に関する情報を入力するための手段と，
前記初期値に関する情報から，複数の試行値を求めるための手段と，
前記複数の試行値に関する情報を，前記複数のワーカーコンピュータに送信するための手段と，
前記各ワーカーコンピュータがマスターコンピュータへ送信した計算の結果に関する情報を受け取るための手段と，
前記計算の結果に関する情報から，最適値が求められたかどうか判断するための手段と，
最適値が求められていたと判断した場合は，各ワーカーコンピュータへ計算を中止するように指令を出すための手段と，
最適値が求められていなかったと判断した場合は，前記計算の結果に関する情報から，新たな試行値を求めるための手段と，
前記新たな試行値に関する情報を，前記計算の結果を送信してきたワーカーコンピュータに送信するための手段と，
を具備し，
前記マスターコンピュータに連結されたワーカーコンピュータは，それぞれ，
前記マスターコンピュータから送信された計算条件に関する情報を入力するための手段と，
前記マスターコンピュータから送信された試行値に関する情報を入力するための手段と，
前記マスターコンピュータから送信された試行値及び計算条件に関する情報を用いて，計算により前記試行値における関数の勾配に関する情報を求めるための手段と，
前記計算が終了したかどうか判断するための手段と，
前記計算が終了したと判断した場合に，計算の結果に関する情報を前記マスターコンピュータに送信するための手段と，
を具備し，
前記マスターコンピュータに，計算条件に関する情報を入力する工程と，
前記マスターコンピュータが，前記計算条件に関する情報を，前記複数のワーカーコンピュータに送信する工程と，
前記マスターコンピュータに，最適値を求めるための初期値に関する情報を入力する工程と，
前記マスターコンピュータが，前記初期値に関する情報から複数の試行値を求める工程と，
前記マスターコンピュータが，前記複数の試行値に関する情報を，前記複数のワーカーコンピュータに送信する工程と，
前記マスターコンピュータに連結されたそれぞれのワーカーコンピュータが，前記マスターコンピュータから送信された計算条件に関する情報を入力する工程と，
前記マスターコンピュータに連結されたそれぞれのワーカーコンピュータが，前記マスターコンピュータから送信された試行値に関する情報を入力する工程と，
前記マスターコンピュータに連結されたそれぞれのワーカーコンピュータが，前記マスターコンピュータから送信された試行値及び計算条件に関する情報を用いて，計算により前記試行値における関数の勾配に関する情報を求める工程と，
前記マスターコンピュータに連結されたそれぞれのワーカーコンピュータが，前記計算が終了したかどうか判断する工程と，
前記マスターコンピュータに連結されたそれぞれのワーカーコンピュータが，前記計算が終了したと判断した場合に，計算の結果に関する情報を前記マスターコンピュータに送信する工程と，
前記マスターコンピュータが，前記ワーカーコンピュータがマスターコンピュータへ送信した計算の結果に関する情報を受け取る工程と，
前記マスターコンピュータが，前記計算の結果に関する情報から，最適値が求められたかどうか判断する工程と，
前記マスターコンピュータが，最適値が求められていたと判断した場合は，各ワーカーコンピュータへ計算を中止するように指令を出す工程と，
前記マスターコンピュータが，最適値が求められていなかったと判断した場合は，前記計算の結果に関する情報から，新たな試行値を求める工程と，
前記新たな試行値に関する情報を，前記計算の結果を送信してきたワーカーコンピュータに送信する工程と，
を含む工程により最適値を求めるコンピュータシステム。
【請求項２】
前記“マスターコンピュータ”は，前記ワーカーコンピュータが有する全ての手段を具備し，マスターコンピュータも前記複数のワーカーコンピュータのひとつとして機能する，
請求項１に記載の最適値を求めるためのコンピュータシステム。
【請求項３】
マスターコンピュータと，前記マスターコンピュータに連結された複数のワーカーコンピュータによって構成される最適値を求めるためのコンピュータシステムを用いた最適値を求めるための方法であって，
前記マスターコンピュータに，計算条件に関する情報を入力する工程と，
前記マスターコンピュータが，前記計算条件に関する情報を，前記複数のワーカーコンピュータに送信する工程と，
前記マスターコンピュータに，最適値を求めるための初期値に関する情報を入力する工程と，
前記マスターコンピュータが，前記初期値に関する情報から複数の試行値を求める工程と，
前記マスターコンピュータが，前記複数の試行値に関する情報を，前記複数のワーカーコンピュータに送信する工程と，
前記マスターコンピュータに連結されたそれぞれのワーカーコンピュータが，前記マスターコンピュータから送信された計算条件に関する情報を入力する工程と，
前記マスターコンピュータに連結されたそれぞれのワーカーコンピュータが，前記マスターコンピュータから送信された試行値に関する情報を入力する工程と，
前記マスターコンピュータに連結されたそれぞれのワーカーコンピュータが，前記マスターコンピュータから送信された試行値及び計算条件に関する情報を用いて，計算により前記試行値における関数の勾配に関する情報を求める工程と，
前記マスターコンピュータに連結されたそれぞれのワーカーコンピュータが，前記計算が終了したかどうか判断する工程と，
前記マスターコンピュータに連結されたそれぞれのワーカーコンピュータが，前記計算が終了したと判断した場合に，計算の結果に関する情報を前記マスターコンピュータに送信する工程と，
前記マスターコンピュータが，前記ワーカーコンピュータがマスターコンピュータへ送信した計算の結果に関する情報を受け取る工程と，
前記マスターコンピュータが，前記計算の結果に関する情報から，最適値が求められたかどうか判断する工程と，
前記マスターコンピュータが，最適値が求められていたと判断した場合は，各ワーカーコンピュータへ計算を中止するように指令を出す工程と，
前記マスターコンピュータが，最適値が求められていなかったと判断した場合は，前記計算の結果に関する情報から，新たな試行値を求める工程と，
前記新たな試行値に関する情報を，前記計算の結果を送信してきたワーカーコンピュータに送信する工程と，
を含む，方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，複数のコンピュータを用いた並列処理による最適値を求めるためのコンピュータシステムなどに関する。
【背景技術】
【０００２】
シミュレーションによって分子の安定構造などの最適値を求めることは，ナノテクノロジー分野のみならずバイオテクノロジー分野などにおいても重要である。例えば，実際に，タンパク質の立体構造を解明した例が多数報告され，この立体構造に基づいて医薬が開発されたこともある。通常，分子はエネルギー的に安定な構造の近傍の構造をとる確率が高い。そのため，安定構造における分子の性質が分子全体の性質を反映する場合が多い。すなわち，分子の安定構造を解明することは，その分子の機能を解明する有力な手段となる。従って，分子の安定構造を求めるシミュレーションは極めて重要である。ところが，量子化学計算によって，大きな（原子数の多い）分子の安定構造を求めるためには，多くの時間が必要となる。
【０００３】
一般的に，コンピュータの処理能力を高める方法として，並列処理が知られている。特に，最近は，インターネットを介して多数のパソコンを連携させて大規模な計算を可能にするグリッドコンピューティングによる並列処理が研究されている。グリッドコンピューティングは，LAN環境や，ADSLや光ファイバー通信等によるWAN環境の発展によって，今や世界中のコンピュータがネットワークでつながっているといってもよい状況の下，パソコンを有効利用しようとするものである。
【０００４】
しかし，量子化学計算での分子の構造最適化を並列処理させる研究は，なされていない。マルチCPUコンピュータでの共有メモリあるいは分散メモリによる計算が，量子化学計算でも可能となってきてはいる。しかし，これらは分子軌道を求める計算における並列処理であって，構造最適化計算に関して，並列処理を行った例はない。
【０００５】
また，ナノテクノロジーやバイオテクノロジー分野等でのシミュレーションにおける，グリッドコンピューティングの活用は，発展途上の段階である。今までの活用例は，数多くの別個の計算を別々のコンピュータで実行してその結果を単に集めるという完全分散処理的なもの，眠っているコンピュータを有効利用するための処理振り分け的な利用法や一般利用者に簡単な利用環境を提供するものが大多数である。即ち，一つの計算を高度に並列処理して実行させる活用例は少ない。その主な理由は，ネットワーク通信が高速化されつつあるものの，複雑な並列計算に使える程には通信速度が高速ではないためと，グリッドコンピューティングを活用するに足るアルゴリズムが未熟なためである。
【０００６】
一方，従来の分子構造最適化は，ガウシアン（Gaussian） 03  プログラムのように準ニュートン法に基づいて逐次的に行うアルゴリズムに基づいており，並列処理できなかった。準ニュートン法では，試行値としての試行構造qk（ここで，ベクトルqkは，直前に計算されたk番目の試行構造の座標を表す）での勾配（たて軸をエネルギー，横軸を座標（又は分子間距離）とした場合においては、エネルギーの座標による一次微分）のベクトルgkとその勾配の変化に基づき更新していく近似ヘシアンBk（ここで，へシアンはエネルギーの座標による二次微分の行列を意味する。）を用いて，qk+1 = qk - Bk-1gk （式１）に従って，新規試行構造qk+1を得る作業を繰り返す。このため，新規試行構造は旧試行構造の計算が完了しないと決められないからであった。即ち，このアルゴリズムは並列化には不向きである。
【０００７】
ところで，量子化学計算に関するグリッドコンピューティングの応用としては，産業総合研究所での量子化学計算グリッド 手法(下記非特許文献１)や，NEC等での生体分子の量子化学計算における活用手法(下記非特許文献２)がある。前者の手法は，広範囲な科学者や技術者に大規模量子化学計算の実行環境を提供しようとするものであり，大規模計算の高速化を目指したものではない。また，後者の手法では，QM/MM分子動力学法での活用に主眼が置かれている。従って，量子化学計算における分子構造最適化でのグリッドコンピューティングの応用例は無い。
【０００８】
一方，分子力場法に基づく，グリッドコンピューティングによる構造最適化の手法が，筑波大の中島等によってなされている(下記非特許文献３)。しかし，この手法は，数多く存在する立体配座のそれぞれを別々の計算機で構造最適化することで，高速化を成し遂げるようとするものである。即ち，この手法は一つの最安定構造を高速に求めようとする構造最適化に関してのものではない。ナノテクノロジー分野のシミュレーションでは，数多くの立体配座を求めることよりもむしろ，最安定な構造のみを高速に求めたい場合の方が多い。なぜなら，化学的経験で，大よその最安定構造は計算しなくとも予測できることも多いからである。
【０００９】
以上のように，グリッドコンピューティングを活用した，一つの安定構造を最適化するアルゴリズムは，前例がない。同様に、最適値、例えば関数の極値、を見出す最適化におけるグリッドコンピューティングの活用も前例がない。
【非特許文献１】T. Nishikawa, et al., "Design and implementation of Intelligent Scheduler for Gaussian Portal on Quantum Chemistry Grid", Lecture Notes in Computer Science (LNCS) 2003, 2659, 244.
【非特許文献２】高田俊和等，"GRIDコンピューティングによるタンパク質の量子化学計算"，分  子構造総合討論会2003講演要旨集，1Dp05.
【非特許文献３】中島佳宏等， "CONFLEX-G: OmniRPCによるグリッド環境上での分子立体配座探索  プログラムの実装と性能評価"，情報処理学会論文誌コンピューティングシステム，2004, 45  , 254.
【発明の開示】
【発明が解決しようとする課題】
【００１０】
本発明は，従来に比べ高速に最適値を求めるためのコンピュータシステムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明は，基本的には，多数の試行値での関数の勾配の情報を集めれば，新しい試行値を見出すのに必要な情報を正確かつ高速に求めることができるという知見に基づく。すなわち，試行値を複数発生させ，それらに関して別々のコンピュータを用いて並列的に勾配の計算を実行させ，いずれかのコンピュータでの計算が終了するごとに計算結果からへシアンを更新して新たな試行値を発生させ，新規試行値に関しての勾配の計算を実行させることを繰り返すことで，高速に関数の極値等の最適値を見出すことができる。従来の最適化は，“ある一つ”の試行値での勾配を計算し，その計算結果からへシアンを更新して新たな試行値を発生させ，新規試行値に関しての勾配の計算を実行させることを逐次的に繰り返していた。したがって，並列処理を行っても限界があったが，本発明のシステムでは，複数の試行値を求めそれらに関する勾配などの計算を同時に行うので，並列処理の利点を生かし，最適値を迅速に求めることができる。
【００１２】
〔1〕  すなわち，本発明の最適値を求めるためのコンピュータシステムは，マスターコンピュータと，前記マスターコンピュータに連結された複数のワーカーコンピュータによって構成される最適値を求めるためのコンピュータシステムであって，前記マスターコンピュータは，計算条件に関する情報を入力するための手段と，前記計算条件に関する情報を，前記複数のワーカーコンピュータに送信するための手段と，前記マスターコンピュータに最適値を求めるための初期値に関する情報を入力するための手段と，前記初期値に関する情報から，複数の試行値を求めるための手段と，前記複数の試行値に関する情報を，前記複数のワーカーコンピュータに送信するための手段と，前記各ワーカーコンピュータがマスターコンピュータへ送信した計算の結果に関する情報を受け取るための手段と，前記計算の結果に関する情報から，最適値が求められたかどうか判断するための手段と，最適値が求められていたと判断した場合は，各ワーカーコンピュータへ計算を中止するように指令を出すための手段と，最適値が求められていなかったと判断した場合は，前記計算の結果に関する情報から，新たな試行値を求めるための手段と，前記新たな試行値に関する情報を，前記計算の結果を送信してきたワーカーコンピュータに送信するための手段と，を具備し，前記マスターコンピュータに連結されたワーカーコンピュータは，それぞれ，前記マスターコンピュータから送信された計算条件に関する情報を入力するための手段と，前記マスターコンピュータから送信された試行値に関する情報を入力するための手段と，前記マスターコンピュータから送信された試行値及び計算条件に関する情報を用いて，計算により前記試行値における関数の勾配に関する情報を求めるための手段と，前記計算が終了したかどうか判断するための手段と，前記計算が終了したと判断した場合に，計算の結果に関する情報を前記マスターコンピュータに送信するための手段と，を具備し，前記マスターコンピュータに，計算条件に関する情報を入力する工程と，前記マスターコンピュータが，前記計算条件に関する情報を，前記複数のワーカーコンピュータに送信する工程と，前記マスターコンピュータに，最適値を求めるための初期値に関する情報を入力する工程と，前記マスターコンピュータが，前記初期値に関する情報から複数の試行値を求める工程と，前記マスターコンピュータが，前記複数の試行値に関する情報を，前記複数のワーカーコンピュータに送信する工程と，前記マスターコンピュータに連結されたそれぞれのワーカーコンピュータが，前記マスターコンピュータから送信された計算条件に関する情報を入力する工程と，前記マスターコンピュータに連結されたそれぞれのワーカーコンピュータが，前記マスターコンピュータから送信された試行値に関する情報を入力する工程と，前記マスターコンピュータに連結されたそれぞれのワーカーコンピュータが，前記マスターコンピュータから送信された試行値及び計算条件に関する情報を用いて，計算により前記試行値における関数の勾配に関する情報を求める工程と，前記マスターコンピュータに連結されたそれぞれのワーカーコンピュータが，前記計算が終了したかどうか判断する工程と，前記マスターコンピュータに連結されたそれぞれのワーカーコンピュータが，前記計算が終了したと判断した場合に，計算の結果に関する情報を前記マスターコンピュータに送信する工程と，前記マスターコンピュータが，前記ワーカーコンピュータがマスターコンピュータへ送信した計算の結果に関する情報を受け取る工程と，前記マスターコンピュータが，前記計算の結果に関する情報から，最適値が求められたかどうか判断する工程と，前記マスターコンピュータが，最適値が求められていたと判断した場合は，各ワーカーコンピュータへ計算を中止するように指令を出す工程と，前記マスターコンピュータが，最適値が求められていなかったと判断した場合は，前記計算の結果に関する情報から，新たな試行値を求める工程と，前記新たな試行値に関する情報を，前記計算の結果を送信してきたワーカーコンピュータに送信する工程と，を含む工程により最適値を求める，最適値を求めるための最適値を求めるためのコンピュータシステムである。
【００１３】
〔2〕  また，本発明の最適値を求めるためのコンピュータシステムの好ましい態様は，前記“マスターコンピュータ”は，前記ワーカーコンピュータが有する全ての手段を具備し，マスターコンピュータも前記複数のワーカーコンピュータのひとつとして機能する， 上記の〔1〕に記載の最適値を求めるためのコンピュータシステムである。本発明の最適値を求めるためのコンピュータシステムは，とくに量子化学計算に基づいて分子の安定構造を求めるために好適に用いることができる。そこで，以下では，最適値の例として分子の安定構造を求めることのできる態様について説明する。
【００１４】
〔3〕  本発明の最適値を求めるためのコンピュータシステムの好ましい態様は，前記“計算条件に関する情報を入力するための手段”における“計算条件に関する情報”は，分子の安定構造を求める場合においては、理論レベル，基底関数，及びスピン多重度を考慮するかどうかに関する情報である構造を最適化しようとする計算に関する情報を含む，上記のいずれかに記載の最適値を求めるためのコンピュータシステムであり，これにより分子の安定構造を得ることができるものである。
【００１５】
〔4〕  また，本発明の最適値を求めるためのコンピュータシステムの好ましい態様は，前記“マスターコンピュータに最適値を求めるための初期値に関する情報を入力するための手段”における“初期値に関する情報”は，分子の安定構造を求める場合においては、分子の構成元素に関する情報，又は分子の構成元素とそれらの位置関係に関する情報のいずれかである上記のいずれかに記載の最適値を求めるためのコンピュータシステムである。
【００１６】
〔5〕  また，本発明の最適値を求めるためのコンピュータシステムの好ましい態様は，前記“複数の試行値を求めるための手段”は，前記初期値に関する情報からあらかじめ設定した数値に基づき，初期値から複数の試行値を求めるものである。より具体的には，分子の安定構造を求める場合においては、初期値である初期構造の構成分子の分子間距離及び構成分子のなす角を変化させた複数の分子構造の候補を求めるものである，上記のいずれかに記載の最適値を求めるためのコンピュータシステムである。
【００１７】
〔6〕  また，本発明の最適値を求めるためのコンピュータシステムの好ましい態様は，前記“複数の試行値を求めるための手段”は，前記初期値に関する情報が，分子の安定構造を求める場合においては、分子の部分構成に関する情報である場合，あらかじめ登録された前記分子を構成する分子（部分分子）の安定構造に関する情報から，分子の構造に関する初期構造を求め，前記初期構造の構成分子の分子間距離及び構成分子のなす角を変化させた複数の試行値を求めるものである，上記のいずれかに記載の最適値を求めるためのコンピュータシステムである。
【００１８】
〔7〕また，本発明の最適値を求めるためのコンピュータシステムの好ましい態様は，前記“前記各ワーカーコンピュータがマスターコンピュータへ送信した計算の結果に関する情報を受け取るための手段”における“計算”は，分子の安定構造を求める場合においては、量子化学計算，分子力場計算，密度汎関数計算，分子軌道計算，パラメーターを用いた分子計算，のいずれか，または，これらの複合計算である，上記のいずれかに記載の最適値を求めるためのコンピュータシステムである。
【００１９】
〔8〕  また，本発明の最適値を求めるためのコンピュータシステムの好ましい態様は，前記“計算の結果に関する情報から，最適値が求められたかどうか判断するための手段”は，計算により求められた“試行値における関数の勾配”のベクトルの絶対値が，一定値以下であるかどうか判断するものである，上記のいずれかに記載の最適値を求めるためのコンピュータシステムである。この勾配は，分子の安定構造を求める場合においては、たとえば縦軸をエネルギー，横軸を座標とした場合のエネルギーの座標による一次微分である。
【００２０】
〔9〕  また，本発明の最適値を求めるためのコンピュータシステムの好ましい態様は，前記“計算の結果に関する情報から，最適値が求められたかどうか判断するための手段”における“計算の結果に関する情報”は，“試行値における関数の値に関する情報”，及び“試行値における関数の勾配の値に関する情報”，を含む，上記のいずれかに記載の最適値を求めるためのコンピュータシステムである。
【００２１】
〔10〕  また，本発明の最適値を求めるためのコンピュータシステムの好ましい態様は，前記“計算の結果に関する情報から，新たな試行値を求めるための手段”における“計算の結果に関する情報”は，“試行値における関数の勾配の値に関する情報”，を含み，前記“計算の結果に関する情報から，新たな試行値を求めるための手段”は，前記“試行値における関数の勾配の値に関する情報”，に基づいて試行値における関数の，ヘシアンに関する情報を更新し，新たな試行値を求めるものである，上記のいずれかに記載の最適値を求めるためのコンピュータシステムである。
【００２２】
〔11〕  また，本発明の最適値を求めるためのコンピュータシステムの好ましい態様は，前記“計算の結果に関する情報から，新たな試行値を求めるための手段”における“計算の結果に関する情報”は，“試行値における関数の勾配の値に関する情報”，を含み，前記“計算の結果に関する情報から，新たな試行値を求めるための手段”は，“前記試行値に関する情報”，“他のコンピュータが求めたものも含めた関数の値が最も小さい試行値およびこの試行値における関数勾配の値に関する情報”と，前記“試行値における関数の勾配の値に関する情報”，に基づいて試行値における関数の，ヘシアンに関する情報を更新し，新たな試行値を求めるものである，上記のいずれかに記載の最適値を求めるためのコンピュータシステムである。
【００２３】
〔12〕  また，本発明の最適値を求めるためのコンピュータシステムの好ましい態様は，前記“計算の結果に関する情報から，新たな試行値を求めるための手段”における“計算の結果に関する情報”は，“試行値における関数の勾配の値に関する情報”，を含み，前記“計算の結果に関する情報から，新たな試行値を求めるための手段”は，前記“試行値における関数の勾配の値に関する情報”，に基づいて試行値における関数の，ヘシアンに関する情報を求め，前記ヘシアンに関する情報から正値をとる有効ヘシアンの情報を求め，前記試行値に関する情報，前記有効ヘシアンに関する情報，及び“試行値における関数の勾配の値に関する情報”から新たな試行値を求めるものである，上記のいずれかに記載の最適値を求めるためのコンピュータシステムである。
【００２４】
〔13〕  また，本発明の最適値を求めるためのコンピュータシステムの好ましい態様は，前記“計算の結果に関する情報から，新たな試行値を求めるための手段”における“計算の結果に関する情報”は，試行値における関数の勾配の値に関する情報”，を含み，前記“計算の結果に関する情報から，新たな試行値を求めるための手段”は，前記新たな試行値を，直前に計算された関数の値が最低の場合は式（Ｉ）により求め，直前に計算された関数の値が最低でない場合は式（II）により求めるものである上記のいずれかに記載の最適値を求めるためのコンピュータシステムである。
【００２５】
【数１】
2006215804.tif 000003
【００２６】
（式（I）及び式(II)中，ベクトルqnewは，新たな試行値を表す。ベクトルqkは，直前に計算された試行値を表す。下付文字kは，計算が終了した順番を表す。行列βkはk番目の試行値における有効ヘシアンを表す。ｇkは，“k番目の試行値における関数の勾配”に関するベクトルを表す。Lprojk,rは，ベクトル−βk -1ｇl に直交する多数の固有ベクトルからランダムに選ばれた一つの固有ベクトルであり，スカラーＣはスケール因子である。また，ベクトルqlは，直前に計算された関数の値がｋ番目までの全ての試行値での関数の計算値の中で最低でない場合，ｋ番目までの全ての試行値の中で関数の値が最も低い試行値を表し，直前に計算された関数の値がｋ番目までの全ての試行値での関数の計算値の中で最も低い場合，全ての試行値の中で直前に計算された試行値の最も近傍にある試行値を表す。）
【００２７】
〔14〕また，本発明の最適値を求めるためのコンピュータシステムの好ましい態様は，前記有効ヘシアン（βk）の初期値として，すなわちβ1として，単位行列，又は近似で得られた二次微分行列を用いる上記のいずれかに記載の最適値を求めるためのコンピュータシステムである。
【００２８】
〔15〕  また，本発明の最適値を求めるためのコンピュータシステムの好ましい態様は，前記有効ヘシアン（βk）として，下記式(III)〜式（V）のいずれかにより表される暫定へシアン（Bk）を用いる上記のいずれかに記載の最適値を求めるためのコンピュータシステムである。
【００２９】
【数２】
2006215804.tif 000004
（式（III）中，太文字の１は単位行列を表し，Δｑk-l＝ｑk−ｑlであり，Δｇk-l＝ｇk−ｇlである。以下，同様である。）
【００３０】
【数３】
2006215804.tif 000005
【００３１】
【数４】
2006215804.tif 000006
【００３２】
〔16〕  また，本発明の最適値を求めるためのコンピュータシステムの好ましい態様は，
前記有効ヘシアン（βk）として，上記に記載の暫定へシアン（Bk）のいずれかが正値でかつ下記式(VI)を満たす場合には当該暫定ヘシアンを用い，
それ以外の場合は，下記式（VII）を用いる上記のいずれかに記載の最適値を求めるためのコンピュータシステムである。なお，いずれか2つ以上の暫定ヘシアンが正値かつ（VI）を満たす場合は，任意に暫定ヘシアンを選ぶことができる。
【００３３】
【数５】
2006215804.tif 000007
【００３４】
上記式（VI）及び（VII）中，gmは，ｋ番目までの全ての試行値の中で関数の計算値が最も低い試行値（m番目の試行値とする）での，勾配ベクトルである。スカラーRkmaxは，探索距離の限界値である。ωkは，有効へシアンが正値になり，関係式（VIII）を満たすように求められるスカラーである。
【００３５】
【数６】
2006215804.tif 000008
【００３６】
〔17〕  また，本発明の最適値を求めるためのコンピュータシステムの好ましい態様は，前記Rkmaxの初期値として，すなわちR1maxとして，0.0から10.0のいずれかの値を用いる上記のいずれかに記載の最適値を求めるためのコンピュータシステムである。
【００３７】
〔18〕  また，本発明の最適値を求めるためのコンピュータシステムの好ましい態様は，
前記Rkmaxとして，直前の試行値qkが，n番目の試行値qn及び勾配ベクトルgn及びo番目のへシアンBoを用いて見出された値であって，k番目までの試行値の中で，直前の試行値qkでの関数の値が最低の場合若しくはn番目の試行値qnが最低の関数の値を有する場合，下記式（IX）を用い，そうでない場合，Rkmax＝Rk-1maxを用いる上記のいずれかに記載の最適値を求めるためのコンピュータシステムである。
【００３８】
【数７】
2006215804.tif 000009
2006215804.tif 000010
（上記式においてE(qi)は，計算によって求められた，試行値qiでのエネルギーである。）
【００３９】
〔19〕  また，本発明の最適値を求めるためのコンピュータシステムの好ましい態様は，前記Lprojk,rとして，下記式（X）を満たすものを用いる上記のいずれかに記載の最適値を求めるためのコンピュータシステムである。
【００４０】
【数８】
2006215804.tif 000011
（上記式においてNは，自由度の数を表す。）
【００４１】
〔20〕  また，本発明の最適値を求めるためのコンピュータシステムの好ましい態様は，前記スケール因子Cとして，〔17〕に定義されるλprojk,rがλprojk,r2＜０の場合，下記式（XI）を用い，λprojk,r2≧０の場合，下記式（XII）を用いる上記のいずれかに記載の最適値を求めるためのコンピュータシステムである。
【００４２】
【数９】
2006215804.tif 000012
【００４３】
〔21〕  また，本発明の最適値を求めるためのコンピュータシステムの好ましい態様は，前記スケール因子Cとして，C=0を用いる上記のいずれかに記載の最適値を求めるためのコンピュータシステムである。
【００４４】
〔22〕  また，本発明の最適値を求めるためのコンピュータシステムの好ましい態様は，“前記マスターコンピュータから送信された試行値及び計算条件に関する情報を用いて，計算により前記試行値における関数の勾配に関する情報を求めるための手段”における，“試行値”は，分子の安定構造を求める場合においては、分子を構成する原子の相対的位置関係を表す，原子間距離，３原子の接続角，４原子の２面対角，を含む内部座標である，上記のいずれかに記載の最適値を求めるためのコンピュータシステムである。
【００４５】
〔23〕  また，本発明の最適値を求めるためのコンピュータシステムの好ましい態様は，“前記マスターコンピュータから送信された試行値及び計算条件に関する情報を用いて，計算により前記試行値における関数の勾配に関する情報を求めるための手段”における，“試行値”は，分子の安定構造を求める場合においては、分子を構成する原子の位置を表す，デカルト座標である，上記のいずれかに記載の最適値を求めるためのコンピュータシステムである。
【００４６】
〔24〕  また，本発明の最適値を求めるためのコンピュータシステムの好ましい態様は，“前記マスターコンピュータから送信された試行値に関する情報を用いて，計算により前記試行値における関数の勾配に関する情報を求めるための手段”における，“前記試行値における関数の勾配に関する情報”は，“試行値における関数の勾配の値に関する情報”，及び“試行値における関数の値”を含む，上記のいずれかに記載の最適値を求めるためのコンピュータシステムである。ここで，関数の勾配は，分子の安定構造を求める場合においては、ポテンシャルエネルギーの座標による一次微分を表す。
【００４７】
〔25〕  また，本発明の最適値を求めるためのコンピュータシステムの好ましい態様は，“前記マスターコンピュータから送信された試行値及び計算条件に関する情報を用いて，計算により前記試行値における関数の勾配に関する情報を求めるための手段”は，前記“計算条件に関する情報を入力するための手段”における“計算条件に関する情報”に基づいて，計算を行う，上記のいずれかに記載の最適値を求めるためのコンピュータシステムである。
【００４８】
〔26〕  本発明の分子構造最適化方法は，マスターコンピュータと，前記マスターコンピュータに連結された複数のワーカーコンピュータによって構成される最適値を求めるためのコンピュータシステムを用いた最適値を求めるための分子構造最適化方法であって，前記マスターコンピュータに，構造を最適化しようとする計算条件に関する情報を入力する工程と，前記マスターコンピュータが，前記計算条件に関する情報を，前記複数のワーカーコンピュータに送信する工程と，前記マスターコンピュータに，最適値を求めるための初期値に関する情報を入力する工程と，前記マスターコンピュータが，前記初期値に関する情報から複数の試行値を求める工程と，前記マスターコンピュータが，前記複数の試行値に関する情報を，前記複数のワーカーコンピュータに送信する工程と，前記マスターコンピュータに連結されたそれぞれのワーカーコンピュータが，前記マスターコンピュータから送信された計算条件に関する情報を入力する工程と，前記マスターコンピュータに連結されたそれぞれのワーカーコンピュータが，前記マスターコンピュータから送信された試行値に関する情報を入力する工程と，前記マスターコンピュータに連結されたそれぞれのワーカーコンピュータが，前記マスターコンピュータから送信された試行値及び計算条件に関する情報を用いて，計算により前記試行値における勾配に関する情報を求める工程と，前記マスターコンピュータに連結されたそれぞれのワーカーコンピュータが，前記計算が終了したかどうか判断する工程と，前記マスターコンピュータに連結されたそれぞれのワーカーコンピュータが，前記計算が終了したと判断した場合に，計算の結果に関する情報を前記マスターコンピュータに送信する工程と，前記マスターコンピュータが，前記ワーカーコンピュータがマスターコンピュータへ送信した計算の結果に関する情報を受け取る工程と，前記マスターコンピュータが，前記計算の結果に関する情報から，最適値が求められたかどうか判断する工程と，前記マスターコンピュータが，最適値が求められていたと判断した場合は，各ワーカーコンピュータへ計算を中止するように指令を出す工程と，前記マスターコンピュータが，最適値が求められていなかったと判断した場合は，前記計算の結果に関する情報から，新たな試行値を求める工程と，前記新たな試行値に関する情報を，前記計算の結果を送信してきたワーカーコンピュータに送信する工程と，を含む，分子構造最適化方法である。
【発明の効果】
【００４９】
本発明によれば，準ニュートン法とは異なるアルゴリズムを用いた最適化計算を行うことで，複数のコンピュータによる並列計算を可能とし，それにより従来に比べ高速に最適化を行うことができる。特に、従来手法では困難であった、量子化学計算における対象分子の最適化構造を高速に解明できるコンピュータシステムを提供できる。
【発明を実施するための最良の形態】
【００５０】
１．最適値を求めるためのコンピュータシステム
本発明の最適値を求めるためのコンピュータシステムは，マスターコンピュータと，前記マスターコンピュータに連結された複数のワーカーコンピュータによって構成される最適値を求めるためのコンピュータシステムであって，（A）前記マスターコンピュータは，（A-1）計算条件に関する情報を入力するための手段と，（A-2）前記計算条件に関する情報を，前記複数のワーカーコンピュータに送信するための手段と，（A-3）前記マスターコンピュータに最適値を求めるための初期値に関する情報を入力するための手段と，（A-4）前記初期値に関する情報から，複数の試行値を求めるための手段と，（A-5）  前記複数の試行値に関する情報を，前記複数のワーカーコンピュータに送信するための手段と，（A-6）前記各ワーカーコンピュータがマスターコンピュータへ送信した計算の結果に関する情報を受け取るための手段と，（A-7）前記計算の結果に関する情報から，最適値が求められたかどうか判断するための手段と，（A-8）最適値が求められていたと判断した場合は，各ワーカーコンピュータへ計算を中止するように指令を出すための手段と，（A-9）最適値が求められていなかったと判断した場合は，前記計算の結果に関する情報から，新たな試行値を求めるための手段と，（A-10）前記新たな試行値に関する情報を，前記計算の結果を送信してきたワーカーコンピュータに送信するための手段と，を具備し，(B)前記マスターコンピュータに連結されたワーカーコンピュータは，それぞれ，(B-1) 前記マスターコンピュータから送信された計算条件に関する情報を入力するための手段と， (B-2) 前記マスターコンピュータから送信された試行値に関する情報を入力するための手段と， (B-3)前記マスターコンピュータから送信された試行値及び計算条件に関する情報を用いて，計算により前記試行値における関数の勾配に関する情報を求めるための手段と，(B-4)前記計算が終了したかどうか判断するための手段と，(B-5)前記計算が終了したと判断した場合に，計算の結果に関する情報を前記マスターコンピュータに送信するための手段と，を具備する。
【００５１】
そして，前記マスターコンピュータに，計算条件に関する情報を入力する工程（ステップ1）と，前記マスターコンピュータが，前記計算条件に関する情報を，前記複数のワーカーコンピュータに送信する工程（ステップ2）と，前記マスターコンピュータに，最適値を求めるための初期値に関する情報を入力する工程（ステップ3）と，前記マスターコンピュータが，前記初期値に関する情報から複数の試行値を求める工程（ステップ4）と，前記マスターコンピュータが，前記複数の試行値に関する情報を，前記複数のワーカーコンピュータに送信する工程（ステップ5）と，前記マスターコンピュータに連結されたそれぞれのワーカーコンピュータが，前記マスターコンピュータから送信された計算条件に関する情報を入力する工程（ステップ6）と，前記マスターコンピュータに連結されたそれぞれのワーカーコンピュータが，前記マスターコンピュータから送信された試行値に関する情報を入力する工程（ステップ7）と，前記マスターコンピュータに連結されたそれぞれのワーカーコンピュータが，前記マスターコンピュータから送信された試行値及び計算条件に関する情報を用いて，計算により前記試行値における関数の勾配に関する情報を求める工程（ステップ8）と，前記マスターコンピュータに連結されたそれぞれのワーカーコンピュータが，前記計算が終了したかどうか判断する工程（ステップ9）と，前記マスターコンピュータに連結されたそれぞれのワーカーコンピュータが，前記計算が終了したと判断した場合に，計算の結果に関する情報を前記マスターコンピュータに送信する工程（ステップ10）と，  前記マスターコンピュータが，前記ワーカーコンピュータがマスターコンピュータへ送信した計算の結果に関する情報を受け取る工程（ステップ11）と，前記マスターコンピュータが，前記計算の結果に関する情報から，最適値が求められたかどうか判断する工程（ステップ12）と，前記マスターコンピュータが，最適値が求められていたと判断した場合は，各ワーカーコンピュータへ計算を中止するように指令を出す工程（ステップ13）と，前記マスターコンピュータが，最適値が求められていなかったと判断した場合は，前記計算の結果に関する情報から，新たな試行値を求める工程（ステップ14）と，前記新たな試行値に関する情報を，前記計算の結果を送信してきたワーカーコンピュータに送信する工程（ステップ15）と，を含む工程により最適値である分子の安定構造などを求める。
【００５２】
（A-1）計算条件に関する情報を入力するための手段
“計算条件に関する情報を入力するための手段”における“計算条件に関する情報”は，分子の安定構造を求める場合においては、たとえば量子化学計算の計算レベルなどに関する情報であり，理論レベル，基底関数，及びスピン多重度を考慮するかどうかに関する情報などがあげられる。この情報は，量子化学計算を行う際に，通常用いられるものを適宜用いればよい。理論レベルとして，HF，UHF,ROHF,MP2，CCSD(T)などがあげられる。また，基底関数として，STO-3G，3-21G,6-31G,6-31+G, 6-31+G*,6-311+G*,cc-pVDZ,aug-cc-pVDZなどがあげられる。基底関数における“＋”は，分子全体に広がる関数（diffuse function）を加えたものであり,基底関数における“*”は，分極関数を加えたものである。これらも量子化学計算において公知である。また，どのような情報をもって最適値が求められたとするかに関する情報を含んでいても良い。さらに，後述の関数の勾配をどのようにして求めるか（例えば，エネルギーを座標（又は分子間距離・位置）の関数として表現し，エネルギーの座標などにおける一次微分として求める）などの情報を含んでいても良い。
【００５３】
（A-2）  前記計算条件に関する情報を，前記複数のワーカーコンピュータに送信するための手段は，計算条件に関する情報を，前記複数のワーカーコンピュータに送信することができれば特に限定されない。なお，マスターコンピュータと各ワーカーコンピュータとは，好ましくはインターネット又はイントラネットにより連結されている。
【００５４】
（A-3）“マスターコンピュータに最適値を求めるための初期値に関する情報を入力するための手段”
“マスターコンピュータに最適値を求めるための初期値に関する情報を入力するための手段”における“初期値に関する情報”は，分子の安定構造を求める場合においては、例えば，分子の構成元素に関する情報，又は分子の構成元素とそれらの位置関係に関する情報のいずれかがを含む分子の初期構造に関する情報があげられる。例えば，最適値である安定構造を求める分子が二硫化炭素（CS2）である場合は，“分子の構成元素に関する情報”としてC，S，Sなどがあげられる。また，“分子の構成元素とそれらの位置関係に関する情報”として，構成分子C，S，S ，位置関係に関する情報S=C=S（C=S間の距離が1.56オングストローム，かつS=C=Sのなす角が0度）などがあげられる。なお，また，Ｘ線構造解析による情報や，ＮＭＲによる構造解析による情報からタンパク質などの分子の立体構造を求め，その構成分子及び立体構造に関する情報を“分子の構造に関する情報”として用いてもよい。
【００５５】
（A-4）初期値に関する情報から，複数の試行値を求めるための手段
“複数の試行値を求めるための手段”は，入力された“初期値に関する情報”から各ワーカーコンピュータ（又は各ワーカーコンピュータとマスターコンピュータ）が計算を行う試行値を求めるための手段である。“複数の試行値を求めるための手段”として，初期値に関する情報から，あらかじめ設定した数値に基づき，その数値をずらして複数の初期値を求めるものがあげられる。分子の安定構造を求める場合においては、具体的に，初期値として分子の初期構造が入力された場合は，構成分子の分子間距離及び構成分子のなす角を変化させた複数の分子構造の候補を求めるものがあげられる。たとえば，分子間距離を0.1オングストロームづつずらす，分子間角度を1度づつずらすというものであれば， S=C=S（C=S間の距離が1.56オングストローム，及び1.66オングストロームかつS=C=Sのなす角が0度），S=C=S（C=S間の距離が1.56オングストローム，及び1.66オングストロームかつS=C=Sのなす角が1度），S=C=S（C=S間の距離が1.66オングストローム，かつS=C=Sのなす角が0度），S=C=S（C=S間の距離が1.66オングストローム，かつS=C=Sのなす角が1度），及びS=C=S（C=S間の距離が1.56オングストローム，及び1.76オングストロームかつS=C=Sのなす角が1度）など複数の試行値の候補を求めるものがあげられる。
【００５６】
従来の構造最適化においては，ひとつの試行構造について量子化学計算を繰り返し，構造最適化を行っていた。このようなアルゴリズムに基づけば，複数のコンピュータを用いた並列計算を行っても，それほど処理速度は向上しない。さらには，コンピュータの台数を多くしても計算速度が速くならない収束状態に陥る。しかしながら，本発明によれば，それぞれ別の量子化学計算を，それぞれのコンピュータで行わせるので，それぞれのコンピュータの処理速度を最大限生かした構造最適化を迅速に行うことができる。
【００５７】
“複数の試行値を求めるための手段”は，分子の安定構造を求める場合においては、前記初期値に関する情報が，分子の部分構成に関する情報である場合，あらかじめ登録された前記分子を構成する分子（部分分子）の安定構造に関する情報から，分子の構造に関する初期構造を求め，前記初期構造の構成分子の分子間距離及び構成分子のなす角を変化させた複数の試行値を求めるものが好ましい。たとえば，二硫化炭素ダイマー（二量体）の構造を求める場合，あらかじめ登録してあった，二硫化炭素モノマーの構造を組み合わせ，二硫化炭素ダイマーの初期構造とすればよい。
【００５８】
（A-5）複数の試行値に関する情報を，前記複数のワーカーコンピュータに送信するための手段
“複数の試行値に関する情報を，前記複数のワーカーコンピュータに送信するための手段”は，複数の試行値に関する情報を，前記複数のワーカーコンピュータに送信することができれば特に限定されない。なお，マスターコンピュータと各ワーカーコンピュータとは，好ましくはインターネット又はイントラネットにより連結されている。
【００５９】
（A-6）各ワーカーコンピュータがマスターコンピュータへ送信した計算の結果に関する情報を受け取るための手段
“各ワーカーコンピュータがマスターコンピュータへ送信した計算の結果に関する情報を受け取るための手段”は，各ワーカーコンピュータがマスターコンピュータへ送信した計算の結果に関する情報を，受け取ることができるものであれば特に限定されない。通常のコンピュータやサーバは，このような手段を具備している。
【００６０】
（A-7）  計算の結果に関する情報から，最適値が求められたかどうか判断するための手段
“計算の結果に関する情報から，最適値が求められたかどうか判断するための手段”は，計算の結果に関する情報から，最適値が求められたかどうか判断する。具体的には，この手段は，計算により求められた“試行値における勾配”ベクトルの絶対値が，一定値以下であるかどうか判断し，一定値以下の場合に最適化されたと判断するものがあげられる。この勾配は，分子の安定構造を求める場合においては、たとえばエネルギーを縦軸，横軸を座標として求めればよい。なお，二次微分を求めてその値から最適値が求められたか判断しても良い。ここで，分子の安定構造を求める場合の最適値は，構造が最適化されたことを意味し，構造が最適化されたとは，ある分子がそのポテンシャルエネルギー曲面において，少なくともローカルミニマムのエネルギー位置に位置していることを意味する（好ましくは，最もエネルギーが低い構造に位置していることを意味する）。
【００６１】
“計算の結果に関する情報から，最適値が求められたかどうか判断するための手段”における“計算の結果に関する情報”は，“試行値における関数の値に関する情報”，及び“試行値における勾配（分子の安定構造を求める場合においては、エネルギーの座標による一次微分）の値に関する情報”，を含むものがあげられる。“試行値における関数の値に関する情報”は，新たな試行値を求める際に通常用いられる。分子構造最適化計算において，その試行値（最適化構造）におけるエネルギー値に関する情報は，その分子の熱力学的安定性などを比較する上でも重要である。また，“試行構造における勾配の値に関する情報”は，新たは試行構造を求める際に用いられる。
【００６２】
（A-8）各ワーカーコンピュータへ計算を中止するように指令を出すための手段
“各ワーカーコンピュータへ計算を中止するように指令を出すための手段”は，マスターコンピュータが，最適値が求められていたと判断した場合に，各ワーカーコンピュータへ計算を中止するように指令を出し，それ以降の計算を中止させるための手段である。
【００６３】
（A-9）計算の結果に関する情報から，新たな試行値を求めるための手段
計算の結果に関する情報から，新たな試行値を求めるための手段は，マスターコンピュータが、最適値が求められていなかったと判断した場合に，計算の結果に関する情報から，新たな試行値を求めるための手段である。すなわち，量子化学計算などの計算がなされた試行値（または試行構造）に関する情報から，あらかじめ設定した数値に基づき，その数値をずらして複数の初期値を求めるものである。具体的に，初期値として分子の初期構造が入力された場合は，構成分子の分子間距離及び構成分子のなす角を変化させた複数の分子構造の候補を求めるものがあげられる。たとえば，分子間距離を0.1オングストローム，分子間角度を1度ずらすというものであれば， S=C=S（C=S間の距離が1.56オングストローム，及び1.66オングストロームかつS=C=Sのなす角が0度）という試行値に対して，S=C=S（C=S間の距離が1.57オングストローム，及び1.67オングストロームかつS=C=Sのなす角が1度）などの試行値の候補を求めるものがあげられる。
【００６４】
“計算の結果に関する情報から，新たな試行値を求めるための手段”における“計算の結果に関する情報”として，“試行値における関数の勾配の値に関する情報”，を含むものがあげられる。または，“計算の結果に関する情報”として，“試行値における関数の値に関する情報”，及び“試行値における関数の勾配の値に関する情報”，を含むものがあげられる。
【００６５】
“計算の結果に関する情報から，新たな試行値を求めるための手段”として，“試行値における関数の勾配の値に関する情報”，に基づいて試行値における関数のヘシアンに関する情報を更新し，新たな試行値を求めるものがあげられる。
【００６６】
また，“計算の結果に関する情報から，新たな試行値を求めるための手段”として，“前記試行値に関する情報”，“他のコンピュータが求めたものも含めた関数の値が最も低い試行値における関数の勾配の値に関する情報”と，前記“試行値における関数の勾配の値に関する情報”，に基づいて試行値における関数のヘシアンに関する情報を更新し，新たな試行値を求めるものがあげられる。
【００６７】
また，“計算の結果に関する情報から，新たな試行値を求めるための手段”，として，“試行値における関数の勾配の値に関する情報”，に基づいて試行値における関数のヘシアンに関する情報を求め，前記ヘシアンに関する情報から正値をとる有効ヘシアンの情報を求め，前記試行値に関する情報，前記有効ヘシアンに関する情報，及び“試行値における関数の勾配の値に関する情報”から新たな試行値を求めるものがあげられる。
【００６８】
従来の準ニュートン法では，ヘシアンを更新する際に，ヘシアンの正値が維持される。そこで，ヘシアンをそのまま用いても，大きな問題にならなかった。しかし，本発明の手法により構造安定化を行うと，ヘシアンの正値が維持されないケースがたびたび見られた。ヘシアンが正値でなくなるとは，すなわち近似関数曲面が凸曲面になることを意味する。そのため，新規試行値を求める際に，上記のとおり更新したヘシアンではなく，正値を維持する有効へシアンを用いることが好ましい。この有効ヘシアンは，後述の式（III）及び（IV）で表されるヘシアンがあげられる。
【００６９】
“計算の結果に関する情報から，新たな試行値を求めるための手段”として，新たな試行値を，直前に計算された試行値（そのベクトルをqkとする。）での関数の値が最低の場合は式（Ｉ）により求め，直前に計算された関数の値が最低でない場合は式（II）により求めるものであることは，本発明の好ましい別の実施態様である。
【００７０】
【数１０】
2006215804.tif 000013
【００７１】
（式（I）及び式(II)中，ベクトルqnewは，新たな試行値を表す。ベクトルqkは，直前に計算された試行値を表す。下付文字kは，計算が終了した順番を表す。行列βkはk番目の試行値における有効ヘシアンを表す。ｇkは，“k番目の試行値における関数の勾配”ベクトルを表す。Lprojk,rは，ベクトル−βk -1ｇl に直交する多数の固有ベクトルからランダムに選ばれた一つの固有ベクトルであり，スカラーＣはスケール因子である。また，ベクトルqlは，直前に計算された関数の値がｋ番目までの全ての試行値での関数の値の中で最低でない場合，ｋ番目までの全ての試行値の中で関数の値が最も低い試行値を表し，直前に計算された関数の値がｋ番目までの全ての試行値での関数の値の中で最も低い場合，全ての試行値の中で直前に計算された試行値の最も近傍にある試行値を表す。）
【００７２】
前記有効ヘシアン（βk）の初期値として，すなわちβ1として，単位行列，若しくは，関数の試行値による二次微分行列の近似値（たとえば、分子の安定構造を求める場合、より低い理論レベルで計算されたエネルギーの座標による二次微分行列）のいずれかを用いることは，本発明の好ましい別の実施態様である。
【００７３】
なお，有効ヘシアン（βk）として，下記式(III)〜式（V）のいずれかにより表される暫定へシアン（Bk）を用いることは，本発明の好ましい別の実施態様である。
【００７４】
【数１１】
2006215804.tif 000014
（式（II）中，太文字の１は単位行列を表し，Δｑk-l＝ｑk−ｑlであり，Δｇk-l＝ｇk−ｇlである。）
【００７５】
【数１２】
2006215804.tif 000015
2006215804.tif 000016
【００７６】
【数１３】
2006215804.tif 000017
【００７７】
なお，式（III）は，BFGS法（C. G. Broyden, J. Inst. Math. Appl. 1970, 6, 76; R. Flether, Comput. J. 1970, 13, 317; D. Goldfarb, Math. Comput. 1970, 24, 23; D. F. Shanno, Math. Comput. 1970, 24, 647）に類似したヘシアン更新の式である。式（V）はDFP法（W. C. Davidon, AEC Res. and Dev. Report 1959, ANL-5990; R. Fletcher and M. J. D. Powell，Comput. J. 1963, 6, 163.）に類似したヘシアン更新の式である。
【００７８】
有効ヘシアン（βk）として，暫定へシアン（Bk）が正値でかつ下記式(VI)を満たす場合には暫定ヘシアンを用い，それ以外の場合は，下記式（VII）を用いることは，本発明の好ましい別の実施態様である。
【００７９】
【数１４】
2006215804.tif 000018
【００８０】
上記式（VI）及び（VII）中，gmは，ｋ番目までの全ての試行値の中で関数の値が最も低い試行値（m番目の試行値とする）での，関数の試行値による一次微分ベクトル、即ち勾配ベクトルである。スカラーRkmaxは，探索距離の限界値である。ωkは，有効へシアンが正値になり，関係式（VIII）を満たすように求められるスカラーである。なお，ωkは，自己無頓着になるようにすることで求めることができる。
【００８１】
【数１５】
2006215804.tif 000019
【００８２】
前記Rkmaxの初期値として，すなわちR1maxとして，0.0から10.0のいずれかの値を用いることは，本発明の好ましい別の実施態様である。
【００８３】
Rkmaxは，経験的に求められるものであるが，Rkmaxとして，直前の試行値qkが，n番目の試行値qn及び勾配ベクトルgn及びo番目のへシアンBoを用いて見出された試行値であって，k番目までの試行値の中で，直前の試行値qkの関数の値が最低の場合若しくはn番目の試行値qnが最低の関数の値を有する場合，下記式（IX）を用い，そうでない場合，Rkmax＝Rk-1maxを用いることは，本発明の好ましい別の実施態様である。
【００８４】
【数１６】
2006215804.tif 000020
（上記式においてE(qi)は，計算によって求められた，試行値qiでの関数の値である。）
【００８５】
固有ベクトルLprojk,rとして，下記式（X）を満たすものを用いることは，本発明の好ましい別の実施態様である。
【００８６】
【数１７】
2006215804.tif 000021
2006215804.tif 000022
（上記式においてNは自由度の数を表す。）
【００８７】
また，スケール因子として，λprojk,r2＜０の場合，下記式（XI）を用い，λprojk,r2≧０の場合，下記式（XII）を用いることは，本発明の好ましい別の実施態様である。
【００８８】
【数１８】
2006215804.tif 000023
【００８９】
又はスケール因子Cとして，C=0を用いることは，本発明の好ましい別の実施態様である。
【００９０】
なお，本明細書において“試行値”は，分子の安定構造を求める場合においては、分子を構成する原子の相対的位置関係を表す，原子間距離，３原子の接続角及び４原子の２面対角を含む内部座標，又は，分子を構成する原子の位置を表すデカルト座標があげられる。
（A-10）  新たな試行値に関する情報を，前記計算の結果を送信してきたワーカーコンピュータに送信するための手段
“新たな試行値に関する情報を，前記計算の結果を送信してきたワーカーコンピュータに送信するための手段”は， 新たな試行値に関する情報を，前記計算の結果を送信してきたワーカーコンピュータに送信することができるものであれば特に限定されない。
(B-1)前記マスターコンピュータから送信された計算条件に関する情報を入力するための手段
前記マスターコンピュータから送信された計算条件に関する情報を入力するための手段は，マスターコンピュータから送信されたに計算関する情報を，計算のためにワーカーコンピュータに入力しうるものであれば特に限定されない。
(B-2)マスターコンピュータから送信された試行値に関する情報を入力するための手段
マスターコンピュータから送信された試行値に関する情報を入力するための手段は，マスターコンピュータから送信された試行値に関する情報を，計算のためにワーカーコンピュータに入力しうるものであれば特に限定されない。
(B-3)マスターコンピュータから送信された試行値に関する情報を用いて，計算により前記試行値における勾配に関する情報を求めるための手段
“マスターコンピュータから送信された試行値及び計算条件に関する情報を用いて，計算により前記試行値における勾配に関する情報を求めるための手段”は，たとえばGAUSSIANプログラムなど公知の計算プログラムにおけると同様，試行値に関する情報（構成分子やその位置情報など）を用いて，計算を行い，試行値における勾配に関する情報を得るものである。“試行値における勾配に関する情報”として，試行値におけるエネルギーの値や，試行値における勾配の値に関する情報などが含まれる。
“マスターコンピュータから送信された試行値に関する情報を用いて，計算により前記試行値における関数の勾配に関する情報を求めるための手段”として，“計算条件に関する情報を入力するための手段”における“計算条件に関する情報”に基づいて，計算を行うものが好ましい。これは，分子の安定構造を求める場合においては、たとえば，MP2/6-31+G*など所定の計算レベルや考慮する関数などを調整して，安定構造を求めるものである。たとえば，初期計算は，低い計算レベルで安定構造を求めた後，分子の物性などを考慮しつつ徐々に計算レベルを上げて計算する。
(B-4)  計算が終了したかどうか判断するための手段
“計算が終了したかどうか判断するための手段”は，計算が終了したかどうか判断できるものであれば，特に限定されない。“計算が終了したかどうか判断するための手段”として，前記勾配ベクトルの値の絶対値が，所定の範囲内であるかどうか判断することにより行うものがあげられる。
(B-5)  計算が終了したと判断した場合に，計算の結果に関する情報を前記マスターコンピュータに送信するための手段
“計算が終了したと判断した場合に，計算の結果に関する情報を前記マスターコンピュータに送信するための手段”は，計算が終了したと判断した場合に，計算の結果に関する情報をマスターコンピュータに送信することができる者であれば特に限定されない。“計算の結果に関する情報”には，試行値の構造に関する情報，試行値におけるエネルギーに関する情報，試行値における勾配に関する情報などがあげられる。
【００９１】
２．分子の安定構造の求め方
以下では，上記のシステムを用いた分子構造最適化の方法について説明する。この方法は，以下の各工程により最適値である分子の安定構造を求めるものである。
【００９２】
マスターコンピュータに，構造を最適化しようとする計算条件に関する情報を入力する（ステップ1）。なお計算条件は，マスターコンピュータの入力装置により入力され，マスターコンピュータの記憶部（メモリ，ＲＯＭやＲＡＭなど）に記憶されていても良い。
【００９３】
マスターコンピュータが，前記計算条件に関する情報を，前記複数のワーカーコンピュータに送信する（ステップ2）。例えば，計算条件がメモリなどに記憶されており，ＣＰＵなどの演算部は，メインメモリ中の制御プログラムの指令を受け，計算条件に関する情報を読み出して，複数のワーカーコンピュータに計算条件に関する情報を出力装置を用いて送信すればよい。なお，ワーカーコンピュータが，入力装置から計算条件を入力し，計算条件を記憶しており，その計算条件を，ワーカーコンピュータのメインメモリ中の制御プログラムの指令を受け，計算条件に関する情報を読み出して，用いても良い。
【００９４】
マスターコンピュータに，最適値を求めるための初期値に関する情報を入力する（ステップ3）。具体的には，分子構造の初期構造などに関する情報が，クライアントなどから入力され，マスターコンピュータの入力装置によりマスターコンピュータに入力されるものがあげられる。入力された初期値に関する情報は，たとえば，メインメモリ中の制御プログラムの指令を受け，メモリなどの記憶部に記憶される。
【００９５】
マスターコンピュータが，前記初期値に関する情報から複数の試行値を求める（ステップ4）。この工程では，例えば，マスターコンピュータがのＣＰＵなどの演算部が，メインメモリ中の制御プログラムの指令を受け，メモリなどに記憶された初期値を読み出して，たとえば，予め試行値を作成する条件が記憶されたテーブルに記憶された条件（分子の角度を１度小さくする（１％小さくする）；分子の長さを１オングストローム（１％）短くする；分子の角度を１度大きくし，分子の長さを１オングストローム大きくするなど）を読み出し，その読み出した条件に応じて，初期値から複数（２又はそれ以上）の試行値を求めればよい。そして，このようにして求められた複数の試行値は，たとえば，ＲＡＭなどのメモリに一時期的に，または半永久的に記憶される。
【００９６】
マスターコンピュータが，前記複数の試行値に関する情報を，前記複数のワーカーコンピュータに送信する（ステップ5）。この工程では，例えば，マスターコンピュータがのＣＰＵなどの演算部が，メインメモリ中の制御プログラムの指令を受け，ＲＡＭなどのメモリに記憶された複数の試行値に関する情報を読み出し，読み出した順に，出力装置を用いて，複数のワーカーコンピュータに送信する。なお，たとえば，試行値を求める条件と送信するワーカーコンピュータとを対応させておくことは，本発明の好ましい実施態様である。例えば，前記の初期値を求めるためのテーブルは，リレーショナルデータベースなどとして行瀬されており，１番目の試行値を作成する条件（例えば，分子の角度を１％小さくする）によって求められた試行値には，１番の番号が与えられ，複数のワーカーコンピュータのうち１番に対応するものに，その試行値が送信される。このようにすれば，ワーカーコンピュータの数だけ，試行値を求めればよいこととなる。すなわち，ワーカーコンピュータの数に応じて,試行値を求める条件を記憶したテーブルを選択すればよいこととなる。
【００９７】
マスターコンピュータに連結されたそれぞれのワーカーコンピュータが，前記マスターコンピュータから送信された計算条件に関する情報を入力する（ステップ6）。この工程では，例えば，ワーカーコンピュータの入力装置が，マスターコンピュータから送信された計算条件に関する情報を受け取り，ワーカーコンピュータに入力すればよい。入力された計算条件に関する情報は，一時期的に又は半永久的に記憶される。計算条件に関する情報は，最適値を求める際に入力されてもよいし，予め入力されていても良い。
【００９８】
マスターコンピュータに連結されたそれぞれのワーカーコンピュータが，前記マスターコンピュータから送信された試行値に関する情報を入力する（ステップ7）。この工程では，例えば，ワーカーコンピュータの入力装置が，マスターコンピュータから送信された試行値に関する情報を受け取り，ワーカーコンピュータに入力すればよい。入力された試行値に関する情報は，一時期的に又は半永久的に記憶される。
【００９９】
マスターコンピュータに連結されたそれぞれのワーカーコンピュータが，前記マスターコンピュータから送信された試行値及び計算条件に関する情報を用いて，計算により前記試行値における勾配に関する情報を求める（ステップ8）。この工程では，たとえば，ワーカーコンピュータのＣＰＵなどの演算部が，メインメモリ中の制御プログラムの指令を受け，メモリなどに記憶された試行値及び計算条件に関する情報を読み出して，例えばＧＡＵＳＳＩＡＮなどの計算プログラムを利用して，計算により前記試行値における勾配に関する情報を求める。このようにして求められた計算の結果である勾配に関する情報などは，たとえば，メモリなどに記憶される。
【０１００】
マスターコンピュータに連結されたそれぞれのワーカーコンピュータが，前記計算が終了したかどうか判断する（ステップ9）。この工程では，たとえば，ワーカーコンピュータのＣＰＵなどの演算部が，メインメモリ中の制御プログラムの指令を受け，例えばＧＡＵＳＳＩＡＮなどの計算プログラムを利用して，計算が終了したかどうか判断する。
【０１０１】
マスターコンピュータに連結されたそれぞれのワーカーコンピュータが，前記計算が終了したと判断した場合に，計算の結果に関する情報を前記マスターコンピュータに送信する（ステップ10）。この工程では，たとえば，ワーカーコンピュータのＣＰＵなどの演算部が，メインメモリ中の制御プログラムの指令を受け，メモリなどに記憶された勾配に関する情報を読み出して，マスターコンピュータに送信する。なお，この際に，勾配に関する情報などの計算の結果に関する情報のみならず，ワーカーコンピュータの識別に関する情報も共に送られることは本発明の好ましい実施態様である。
【０１０２】
マスターコンピュータが，前記ワーカーコンピュータがマスターコンピュータへ送信した計算の結果に関する情報を受け取る（ステップ11）。この工程では，たとえば，マスターコンピュータの入力装置が，計算結果に関する情報などを受け取り，マスターコンピュータへ情報を入力する。この入力された情報は，たとえば，メモリなどに記憶される。
【０１０３】
マスターコンピュータが，前記計算の結果に関する情報から，最適値が求められたかどうか判断する（ステップ12）。この工程では，たとえば，ワーカーコンピュータのＣＰＵなどの演算部が，メインメモリ中の制御プログラムの指令を受け，メモリなどに記憶された計算の結果に関する情報を読み出して，例えばＧＡＵＳＳＩＡＮなどの計算プログラムを利用して，最適値が求められたかどうか判断する。そして，最適値が求められたかどうかはという情報は，例えばメモリなどに記憶される。
【０１０４】
マスターコンピュータが，最適値が求められていたと判断した場合は，各ワーカーコンピュータへ計算を中止するように指令を出す（ステップ13）。最適値が求められたと判断した場合，たとえば，ワーカーコンピュータのＣＰＵなどの演算部が，メインメモリ中の制御プログラムの指令を受け，メモリなどに記憶された最適値が求められたという情報を読み出して，出力装置からその情報を送信する。すると，その情報を受けた，１又は複数のワーカーコンピュータは，その最適値が求められたという情報を入力装置などから入力され，それにより，計算を終了する。
【０１０５】
マスターコンピュータが，最適値が求められていなかったと判断した場合は，前記計算の結果に関する情報から，新たな試行値を求める（ステップ14）。最適値が求められていなかったと判断した場合，たとえば，ワーカーコンピュータのＣＰＵなどの演算部が，メインメモリ中の制御プログラムの指令を受け，ワーカーコンピュータに送った試行値に対してさらに同じ試行値を求める条件を用いるなど所定の条件を当てはめ，新たに試行値を求める。先に説明した，方法にしたがって，新たな試行値を求めても良い。この新たな試行値は，たとえばメモリなどに記憶される。
【０１０６】
新たな試行値に関する情報を，前記計算の結果を送信してきたワーカーコンピュータに送信する（ステップ15）。そして，上記のステップ７に戻り，最適値が求められていたと判断するまで繰り返す。この工程では，たとえば，ワーカーコンピュータのＣＰＵなどの演算部が，メインメモリ中の制御プログラムの指令を受け，メモリなどに記憶された新たな試行値に関する情報と，計算の結果を送信したワーカーコンピュータに関する情報を読み出して，外部出力装置を用いてワーカーコンピュータに送信する。この新たな試行値を受け取ったワーカーコンピュータは，これまで説明したと同様の工程により，計算結果を求めて，マスターコンピュータへ送信し，最適値が求められたという情報が入力されるまで，計算を繰り返す。
【実施例１】
【０１０７】
以下本発明を，具体的な分子の安定構造最適化の計算例をあげて説明する。以下の実施例では，図１に示すようなシステムを用いて実験を行った。本発明のマスターコンピュター（及びワーカーコンピュータのひとつ）として，Dell社製パワーエッジ2600（PowerEdge2600）を用いた。また，ワーカーコンピュータとして，SGI社製オリジン2000（Origin2000），SGI社製テズロ（Tezro），及びNEC社製SX-6を用いた。そして，上記に説明したとおりのアルゴリズムに基づくシステムを用いて分子の構造最適化を行った。対象とした分子は，水２量体，水３量体，アゾベンゼン，テトラフェニルポルフィリン，シトシジン-グアノシンクラスターであった。図2は，水2量体の構造最適化を示す図である。図2Aは，初期試行構造である試行値を示す。図2Bは，構造安定化の結果得られた構造を示す。図3は，水3量体の構造最適化を示す図である。図3Aは，初期試行値を示す。図3Bは，構造安定化の結果得られた構造を示す。図4は，アゾベンゼンの構造最適化を示す図である。図4Aは，初期試行値を示す。図4Bは，構造安定化の結果得られた構造を示す。図5は，テトラフェニルポルフィリンの構造最適化を示す図である。図5Aは，初期試行値を示す。図5Bは，構造安定化の結果得られた構造を示す。図6は，シトシジン-グアノシンクラスターの構造最適化を示す図である。図6Aは，初期試行値を示す。図6Bは，構造安定化の結果得られた構造を示す。
表１に計算時間を示す。表１に示されているように，４台の計算機からなる本発明の最適値を求めるためのコンピュータシステムを用いて分子構造を最適化した場合，１台の計算機による計算に比べて，高速に計算できており，高い並列化効率が得られることがわった。このことから，本発明の最適値を求めるためのコンピュータシステムは，分子構造の最適化計算を高速に求めることができることがわかった。また，本発明の分子構造の最適化方法によれば，従来の分子構造最適化方法に比べ，高速に安定構造に関する計算を行うことができることがわかった。
【０１０８】
【表１】
2006215804.tif 000024
【産業上の利用可能性】
【０１０９】
本発明は，コンピュータによる最適化に関するもので，特に，並列処理の活用により高速計算を可能にするものであり，ナノテクノロジー分野等での材料開発や医療分野での生体機能解明のための分子シミュレーション等にも利用可能なものである。
【図面の簡単な説明】
【０１１０】
【図１】図１は，実施例１で用いたシステムの基本構成例を示す図である
【図２】図2は，水2量体の構造最適化を示す図である。図2Aは，初期試行構造を示す。図2Bは，構造安定化の結果得られた構造を示す。
【図３】図3は，水3量体の構造最適化を示す図である。図3Aは，初期試行構造を示す。図3Bは，構造安定化の結果得られた構造を示す。
【図４】図4は，アゾベンゼンの構造最適化を示す図である。図4Aは，初期試行構造を示す。図4Bは，構造安定化の結果得られた構造を示す。
【図５】図5は，テトラフェニルポルフィリンの構造最適化を示す図である。図5Aは，初期試行構造を示す。図5Bは，構造安定化の結果得られた構造を示す。
【図６】図6は，シトシジン-グアノシンクラスターの構造最適化を示す図である。図6Aは，初期試行構造を示す。図6Bは，構造安定化の結果得られた構造を示す。
【図１】
2006215804.tif 000025
【図２】
2006215804.tif 000026
【図３】
2006215804.tif 000027
【図４】
2006215804.tif 000028
【図５】
2006215804.tif 000029
【図６】
2006215804.tif 000030