(57)【要約】【課題】ハングアップを回避しながら目的に合致したアプリケーションソフトウェアの生成をコンピュータに実行させるためのプログラムを提供する。【解決手段】受付手段２０１は、外部から受けた評価基準Ｓｆｔを評価手段２０４へ出力する。実行手段２０２は、記憶手段２０３に格納されたアプリケーションソフトウェア（ＡＳｐ）を読み出してハングアップを回避しながら実行するとともに、評価値Ｆｔｐを計算する。評価手段２０４は、評価値Ｆｔｐを評価基準Ｓｆｔと比較してＡＳｐを個別評価する。進化手段２０５は、評価基準Ｓｆｔ以上の評価値Ｆｔｐを有するＡＳｐを進化させ、削除手段２０６は、“０”からなる評価値Ｆｔｐを有する一度実行されたＡＳｐを削除する。促進手段２０６は、ＡＳｐの実行が完了しなかったとき、次のＡＳｐ＋１に実行権限を与える。【選択図】図１４
2007265065.tif 000002
【特許請求の範囲】
【請求項１】
実行手段がハングアップを回避しながらｎ（ｎは１以上の整数）個のアプリケーションソフトウェアを順次実行する第１のステップと、
進化手段が、前記実行手段による１個のアプリケーションソフトウェアの実行を終了したときの前記１個のアプリケーションソフトウェアに対する評価値に応じて前記１個のアプリケーションソフトウェアを進化させる進化処理を各アプリケーションソフトウェア毎に実行する第２のステップと、
促進手段が、前記実行手段によって実行されたアプリケーションソフトウェアの実行が完了しなかったとき、次のアプリケーションソフトウェアに実行権限を与える促進処理を各アプリケーションソフトウェア毎に実行する第３のステップとをコンピュータに実行させるためのプログラム。
【請求項２】
削除手段が、実行されたアプリケーションソフトウェアのうちから前記評価値に応じて削除条件を満たすアプリケーションソフトウェアを削除する削除処理を１個のアプリケーションソフトウェアの実行が終了する毎に行なう第４のステップを更にコンピュータに実行させる、請求項１に記載のコンピュータに実行させるためのプログラム。
【請求項３】
前記第２のステップは、
受付手段が外部から評価基準を受付ける第１のサブステップと、
評価手段が、前記受付手段から前記評価基準を受けるとともに、前記実行手段によって前記１個のアプリケーションソフトウェアの実行が完了されると前記１個のアプリケーションソフトウェアの評価値を前記評価基準に基づいて評価する第２のサブステップと、
前記進化手段が、前記評価値が前記評価基準以上であるとき前記１個のアプリケーションソフトウェアを進化させる第３のサブステップとを含む、請求項１または請求項２に記載のコンピュータに実行させるためのプログラム。
【請求項４】
前記第３のサブステップにおいて、前記進化手段は、前記１個のアプリケーションソフトウェアから１個以上のアプリケーションソフトウェアを生成することにより前記１個のアプリケーションソフトウェアを進化させる、請求項３に記載のコンピュータに実行させるためのプログラム。
【請求項５】
前記第４のステップは、
前記評価手段が、前記受付手段から前記評価基準を受けるとともに、前記１個のアプリケーションソフトウェアの実行が終了する毎に、前記実行手段によって実行されたｍ（ｍは１≦ｍ≦ｎを満たす整数）個のアプリケーションソフトウェアに対するｍ個の評価値を前記評価基準に基づいて評価する第４のサブステップと、
前記削除手段が、前記評価手段による評価結果に基づいて、前記削除条件を満たすアプリケーションソフトウェアを削除する第５のサブステップとを含む、請求項３または請求項４に記載のコンピュータに実行させるためのプログラム。
【請求項６】
ハングアップを回避しながらｎ（ｎは１以上の整数）個のアプリケーションソフトウェアを順次実行する実行手段と、
前記実行手段による１個のアプリケーションソフトウェアの実行を終了したときの前記１個のアプリケーションソフトウェアに対する評価値に応じて前記１個のアプリケーションソフトウェアを進化させる進化処理を各アプリケーションソフトウェア毎に実行する進化手段と、
前記実行手段によって実行されたアプリケーションソフトウェアの実行が完了しなかったとき、次のアプリケーションソフトウェアに実行権限を与える促進処理を各アプリケーションソフトウェア毎に実行する促進手段とを備える中央演算処理装置。
【請求項７】
実行されたアプリケーションソフトウェアのうちから前記評価値に応じて削除条件を満たすアプリケーションソフトウェアを削除する削除処理を１個のアプリケーションソフトウェアの実行が終了する毎に行なう削除手段を更に備える、請求項６に記載の中央演算処理装置。
【請求項８】
評価手段は、受付手段が外部から受けた評価基準を前記受付手段から受けるとともに、前記実行手段によって前記１個のアプリケーションソフトウェアの実行が完了されると前記１個のアプリケーションソフトウェアの評価値を前記評価基準に基づいて評価し、
前記進化手段は、前記評価値が前記評価基準以上であるとき前記１個のアプリケーションソフトウェアを進化させる、請求項６または請求項７に記載の中央演算処理装置。
【請求項９】
前記進化手段は、前記１個のアプリケーションソフトウェアから１個以上のアプリケーションソフトウェアを生成することにより前記１個のアプリケーションソフトウェアを進化させる、請求項８に記載の中央演算処理装置。
【請求項１０】
前記評価手段は、前記１個のアプリケーションソフトウェアの実行が終了する毎に、前記実行手段によって実行されたｍ（ｍは１≦ｍ≦ｎを満たす整数）個のアプリケーションソフトウェアに対するｍ個の評価値を前記評価基準に基づいて更に評価し、
前記削除手段は、前記評価手段による評価結果に基づいて、前記削除条件を満たすアプリケーションソフトウェアを削除する、請求項８または請求項９に記載の中央演算処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、コンピュータにプログラムの進化を実行させるためのプログラムおよび中央演算処理装置に関し、特に、ハングアップを回避しながらアプリケーションソフトウェアの進化を実行可能なコンピュータに実行させるためのプログラムおよび中央演算処理装置に関するものである。
【背景技術】
【０００２】
従来、ハングアップしないプログラムとして人工生命システムの考え方を用いたプログラムが知られている（非特許文献１）。以下においては、このプログラムを研究のプロジェクト名である“Ｔｉｅｒｒａ”にちなんで、「Ｔｉｅｒｒａプログラム」と言う。
【０００３】
Ｔｉｅｒｒａプログラムは、機械語で書かれており、第１部、第２部および第３部からなる。第１部は、プログラムの長さを測定する機能を有する。第２部は、プログラムが動作している環境（メモリ）においてプログラムが入る領域を探索する機能を有する。第３部は、プログラムを複製する機能を有する。
【０００４】
このＴｉｅｒｒａプログラムは、１回、実行されると、上述した第１から第３部の機能により自己複製する。従って、Ｔｉｅｒｒａプログラムが複数回実行されることにより、Ｔｉｅｒｒａプログラムの数は、増加する。
【０００５】
このようにして、次々と自己複製された複数のＴｉｅｒｒａプログラムは、それぞれ、寿命を持っており、相対的に多くのプログラムを複製できたＴｉｅｒｒａプログラムが最終的に残る。従って、複数のＴｉｅｒｒａプログラムのうち、ある数のＴｉｅｒｒａプログラムは、淘汰され、相対的に多くのプログラムを複製できたＴｉｅｒｒａプログラムが最終的に生き残る。
【０００６】
このように、Ｔｉｅｒｒａプログラムは、自己複製を繰り返して実行可能なプログラムを子孫として残し、機能しないプログラムを淘汰する。その結果、Ｔｉｅｒｒａプログラムは、ハングアップを回避している。
【０００７】
一方、外部から与えられた目的に合致するプログラムを生成するものとして、ＧＡ（Ｇｅｎｅｔｉｃ  Ａｌｇｏｒｉｔｈｍ）に基づいたＧＰ（Ｇｅｎｅｔｉｃ  Ｐｒｏｇｒａｍｍｉｎｇ）がある（非特許文献２）。
【０００８】
このＧＰは、複数のプログラムを実行し、全てのプログラムの実行が完了した時点で、外部から与えられた目的を高く達成するプログラムを複数のプログラムから取り出し、その取り出した複数のプログラムを組み合わせて外部から与えられた目的をより達成するプログラムを生成するというものである。そして、ＧＰは、一般に、木構造で表され、高級言語により書かれる。なお、「全てのプログラムの完了」とは、全てのプログラムが正常に終了することを言う。
【０００９】
より具体的には、２個のプログラムＡ，Ｂを実行する場合を想定する。プログラムＡは、部分ａ１，ａ２からなり、プログラムＢは、部分ｂ１，ｂ２からなる。ここで、プログラムＡ，Ｂの各々が、外部から与えられた目的をより達成するものとする。
【００１０】
そうすると、ＧＰにおいては、２個のプログラムＡ，Ｂの実行が完了した時点で、プログラムＡの部分ａ１とプログラムＢの部分ｂ２とを組み合わせて［ａ１／ｂ２］または［ａ２／ｂ１］からなるプログラムを生成する。
【００１１】
ＧＰは、上述した機構によって、新たにプログラムを次々と生成し、外部から与えられた目的をより達成するプログラムを最終的に生成する。
【非特許文献１】「Ｔｉｅｒｒａ入門」，ｈｔｔｐ：／／ｗｗｗ．ｈｉｐ．ａｔｒ．ｃｏ．ｊｐ／〜ｋｉｍ／ＴＩＥＲＲＡ／ｔｉｅｒｒａ．ｈｔｍｌ
【非特許文献２】John R. Koza, “Genetic Programming: On the Programming of Computers by Means of Natural Selection”, Bradford Books, 1992.
【発明の開示】
【発明が解決しようとする課題】
【００１２】
しかし、Ｔｉｅｒｒａプログラムは、単に、新たなプログラムを自己複製するものであるため、外部から与えられた目的に合致したプログラムを生成することが困難であるという問題がある。
【００１３】
一方、ＧＰは、動作させる複数のプログラムの全てが完了した時点で目的に合致したプログラムを生成するため、複数のプログラムのうち、少なくとも１つのプログラムの動作が完了しない場合（即ち、正常に終了しない場合）、目的に合致したプログラムを生成することができないという問題がある。その結果、ＧＰにおいては、ハングアップが生じるという問題がある。
【００１４】
そこで、この発明は、かかる問題を解決するためになされたものであり、その目的は、ハングアップを回避しながら目的に合致したアプリケーションソフトウェアの生成をコンピュータに実行させるためのプログラムを提供することである。
【００１５】
また、この発明の別の目的は、ハングアップを回避しながら目的に合致したアプリケーションソフトウェアを生成可能な中央演算処理装置を提供することである。
【課題を解決するための手段】
【００１６】
この発明によるコンピュータに実行させるためのプログラムは、実行手段がハングアップを回避しながらｎ（ｎは１以上の整数）個のアプリケーションソフトウェアを順次実行する第１のステップと、進化手段が、実行手段による１個のアプリケーションソフトウェアの実行を終了したときの１個のアプリケーションソフトウェアに対する評価値に応じて１個のアプリケーションソフトウェアを進化させる進化処理を各アプリケーションソフトウェア毎に実行する第２のステップと、促進手段が、実行手段によって実行されたアプリケーションソフトウェアの実行が完了しなかったとき、次のアプリケーションソフトウェアに実行権限を与える促進処理を各アプリケーションソフトウェア毎に実行する第３のステップとをコンピュータに実行させるためのプログラムである。
【００１７】
好ましくは、コンピュータに実行させるためのプログラムは、削除手段が、実行されたアプリケーションソフトウェアのうちから評価値に応じて削除条件を満たすアプリケーションソフトウェアを削除する削除処理を１個のアプリケーションソフトウェアの実行が終了する毎に行なう第４のステップを更にコンピュータに実行させる。
【００１８】
好ましくは、第２のステップは、受付手段が外部から評価基準を受付ける第１のサブステップと、評価手段が、受付手段から評価基準を受けるとともに、実行手段によって１個のアプリケーションソフトウェアの実行が完了されると１個のアプリケーションソフトウェアの評価値を評価基準に基づいて評価する第２のサブステップと、進化手段が、評価値が評価基準以上であるとき１個のアプリケーションソフトウェアを進化させる第３のサブステップとを含む。
【００１９】
好ましくは、第３のサブステップにおいて、進化手段は、１個のアプリケーションソフトウェアから１個以上のアプリケーションソフトウェアを生成することにより１個のアプリケーションソフトウェアを進化させる。
【００２０】
好ましくは、第４のステップは、評価手段が、受付手段から評価基準を受けるとともに、１個のアプリケーションソフトウェアの実行が終了する毎に、実行手段によって実行されたｍ（ｍは１≦ｍ≦ｎを満たす整数）個のアプリケーションソフトウェアに対するｍ個の評価値を評価基準に基づいて評価する第４のサブステップと、削除手段が、評価手段による評価結果に基づいて、削除条件を満たすアプリケーションソフトウェアを削除する第５のサブステップとを含む。
【００２１】
また、この発明によれば、中央演算処理装置は、実行手段と、進化手段と、促進手段とを備える。実行手段は、ハングアップを回避しながらｎ（ｎは１以上の整数）個のアプリケーションソフトウェアを順次実行する。進化手段は、実行手段による１個のアプリケーションソフトウェアの実行を終了したときの１個のアプリケーションソフトウェアに対する評価値に応じて１個のアプリケーションソフトウェアを進化させる進化処理を各アプリケーションソフトウェア毎に実行する。促進手段は、実行手段によって実行されたアプリケーションソフトウェアの実行が完了しなかったとき、次のアプリケーションソフトウェアに実行権限を与える促進処理を各アプリケーションソフトウェア毎に実行する。
【００２２】
好ましくは、中央演算処理装置は、削除手段を更に備える。削除手段は、実行されたアプリケーションソフトウェアのうちから評価値に応じて削除条件を満たすアプリケーションソフトウェアを削除する。
【００２３】
好ましくは、評価手段は、受付手段が外部から受けた評価基準を受付手段から受けるとともに、実行手段によって１個のアプリケーションソフトウェアの実行が完了されると１個のアプリケーションソフトウェアの評価値を評価基準に基づいて評価する。進化手段は、評価値が評価基準以上であるとき１個のアプリケーションソフトウェアを進化させる。
【００２４】
好ましくは、進化手段は、１個のアプリケーションソフトウェアから１個以上のアプリケーションソフトウェアを生成することにより１個のアプリケーションソフトウェアを進化させる。
【００２５】
好ましくは、評価手段は、１個のアプリケーションソフトウェアの実行が終了する毎に、実行手段によって実行されたｍ（ｍは１≦ｍ≦ｎを満たす整数）個のアプリケーションソフトウェアに対するｍ個の評価値を評価基準に基づいて更に評価する。削除手段は、評価手段による評価結果に基づいて、削除条件を満たすアプリケーションソフトウェアを削除する。
【発明の効果】
【００２６】
この発明によるプログラムまたは中央演算処理装置は、１個以上のアプリケーションソフトウェアの個別評価（または非同期評価）を行なうとともに、アプリケーションソフトウェアが正常に終了しない場合でも評価値を用いた評価を行い、評価基準以上の評価値を有するアプリケーションソフトウェアを進化させる。
【００２７】
従って、この発明によれば、ハングアップを回避して外部から入力された目的に合致したアプリケーションソフトウェアを生成できる。
【発明を実施するための最良の形態】
【００２８】
本発明の実施の形態について図面を参照しながら詳細に説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰返さない。
【００２９】
図１は、この発明によるプログラムが実行されるコンピュータのハードウェア構成を示す概略図である。コンピュータ１００は、キーボード１０１と、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０３と、ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）ディスプレイ１０４と、バスＢＳとを備える。
【００３０】
キーボード１０１、ＣＰＵ１０２、ＲＡＭ１０３およびＣＲＴディスプレイ１０４は、バスＢＳを介して相互に接続されている。キーボード１０１は、外部から評価基準Ｓｆｔを受付け、その受付けた評価基準ＳｆｔをバスＢＳを介してＣＰＵ１０２へ出力する。
【００３１】
ＣＰＵ１０２は、この発明によるプログラムが灼付けられており、コンピュータ１００の電源がオンされると、この発明によるプログラムを実行し、ＲＡＭ１０３に格納されたアプリケーションソフトウェアに基づいて、ハングアップを回避しながらキーボード１０１から受けた評価基準Ｓｆｔを満たすアプリケーションソフトウェアを生成する。
【００３２】
また、ＣＰＵ１０２は、バスＢＳを介して各種の情報をＣＲＴディスプレイ１０４に表示する。
【００３３】
ＲＡＭ１０３は、ＣＰＵ１０２のワークメモリとして機能するとともに、ｎ（ｎは１以上の整数）個のアプリケーションソフトウェアＡＳ１〜ＡＳｎおよびアプリケーションソフトウェアＡＳ１〜ＡＳｎの評価値Ｆｔ１〜ＦＴｎ等を格納する。
【００３４】
ＣＲＴディスプレイ１０４は、ＣＰＵ１０２からの制御に従って各種の情報を視覚情報としてコンピュータ１００のユーザに与える。
【００３５】
図２および図３は、それぞれ、この発明の実施の形態によるコンピュータに実行させるためのプログラムを示す第１および第２のフローチャートである。この発明によるプログラムは、アプリケーションソフトウェアを動作させる環境を提供する機能を有するＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）としての基本ソフトウェアであり、機械語により記述されている。そして、この発明によるプログラムは、ハングアップを回避しながら外部から与えられた目的に合致するアプリケーションソフトウェアを生成するプログラムである。
【００３６】
以下、ハングアップを回避しながら外部から与えられた目的に合致するアプリケーションソフトウェアを生成するプログラムについて説明する。なお、以下においては、図１に示すＲＡＭ１０３は、ｎ個のアプリケーションソフトウェアＡＳ１〜ＡＳｎを格納していることを前提として説明する。
【００３７】
一連の動作が開始されると、コンピュータ１００の電源がオンされたか否かが判定され（ステップＳ１）、コンピュータ１００の電源がオンされると、キーボード１０１は、外部から評価基準Ｓｆｔを受付ける（ステップＳ２）。
【００３８】
その後、ＣＰＵ１０２は、キーボード１０１から評価基準Ｓｆｔを受け（ステップＳ３）、ＲＡＭ１０３に格納されたｎ個のアプリケーションソフトウェアＡＳ１〜ＡＳｎの評価値Ｆｔ１〜Ｆｔｎの各々を“０”に設定する（ステップＳ４）。そして、ＣＰＵ１０２は、アプリケーションソフトウェアの生成順を示す識別子ｐをｐ＝１に設定する（ステップＳ５）。
【００３９】
そうすると、ＣＰＵ１０２は、ＲＡＭ１０３に格納されたｎ個のアプリケーションソフトウェアＡＳ１〜ＡＳｎからアプリケーションソフトウェアＡＳｐを読み出し（ステップＳ６）、その読み出したアプリケーションソフトウェアＡＳｐに実行可能な命令数ＮＥＸＣを付与する（ステップＳ７）。この命令数ＮＥＸＣは、アプリケーションソフトウェアＡＳｐが実行可能な命令の行数からなり、アプリケーションソフトウェアＡＳｐに与えられる実行権限である。
【００４０】
その後、ＣＰＵ１０２は、アプリケーションソフトウェアＡＳｐが実行済みか否かを判定する（ステップＳ８）。ＲＡＭ１０３は、ｎ個のアプリケーションソフトウェアＡＳ１〜ＡＳｎに対応付けて、ｎ個のアプリケーションソフトウェアＡＳ１〜ＡＳｎの実行命令回数を格納しているので、ＣＰＵ１０２は、ＲＡＭ１０３に格納されたアプリケーションソフトウェアＡＳｐの実行命令回数を参照することにより、アプリケーションソフトウェアＡＳｐが実行済みか否かを判定する。
【００４１】
ステップＳ７において、アプリケーションソフトウェアＡＳｐが実行済みであると判定されたとき、ＣＰＵ１０２は、アプリケーションソフトウェアＡＳｐの評価値ＦｔｐをＲＡＭ１０３から読み出す（ステップＳ９）。
【００４２】
そして、ＣＰＵ１０２は、評価値Ｆｔｐが評価基準Ｓｆｔ以上であるか否かを判定する（ステップＳ１０）。ステップＳ１０において、評価値Ｆｔｐが評価基準Ｓｆｔ以上でないと判定されたとき、一連の動作は、後述するステップＳ１２へ移行する。
【００４３】
一方、ステップＳ１０において、評価値Ｆｔｐが評価基準Ｓｆｔ以上であると判定されたとき、ＣＰＵ１０２は、アプリケーションソフトウェアＡＳｐからアプリケーションソフトウェアＡＳｎ＋１を生成する（ステップＳ１１）。即ち、ＣＰＵ１０２は、実行済みのアプリケーションソフトウェアＡＳｐの評価値Ｆｔｐが評価基準Ｓｆｔ以上であるとき、新たなアプリケーションソフトウェアＡＳｎ＋１を生成する。この場合、アプリケーションソフトウェアＡＳｎ＋１は、その内容が必ずしも同じとは限らない。
【００４４】
そして、ＣＰＵ１０２は、生成順を示すｎ＋１を新たに生成されたアプリケーションソフトウェアに付与する。そして、ＣＰＵ１０２は、アプリケーションソフトウェアＡＳｎ＋１をＲＡＭ１０３の所定の番地に格納する。
【００４５】
その後、一連の動作は、ステップＳ１２へ移行する。
【００４６】
ステップＳ８において、アプリケーションソフトウェアＡＳｐが実行済みでないと判定されたとき、またはステップＳ１０において評価値Ｆｔｐが評価基準Ｓｆｔ以上でないと判定されたとき、またはステップＳ１１の後、ＣＰＵ１０２は、アプリケーションソフトウェアＡＳｐを実行する（ステップＳ１２）。このステップＳ１２におけるアプリケーションソフトウェアＡＳｐの実行は、アプリケーションソフトウェアＡＳｐの実行命令数が実行可能な命令数ＮＥＸＣに達するまでアプリケーションソフトウェアＡＳｐを実行することを含む。
【００４７】
そして、ＣＰＵ１０２は、アプリケーションソフトウェアＡＳｐの実行を開始し後、一定期間（＝アプリケーションソフトウェアＡＳｐが正常に実行されたとき、実行命令数が実行可能な命令数ＮＥＸＣに達するまでの期間）が経過すると、アプリケーションソフトウェアＡＳｐの実行命令数が実行可能な命令数ＮＥＸＣに達したか否かを判定する（ステップＳ１３）。この場合、ＣＰＵ１０２は、アプリケーションソフトウェアＡＳｐの実行命令数が実行可能な命令数ＮＥＸＣに達したか否かを判定することにより、アプリケーションソフトウェアＡＳｐの実行が完了したか否かを判定する。そして、ＣＰＵ１０２は、アプリケーションソフトウェアＡＳｐの実行命令数が実行可能な命令数ＮＥＸＣに達していれば、アプリケーションソフトウェアＡＳｐの実行が完了したと判定し、アプリケーションソフトウェアＡＳｐの実行命令数が実行可能な命令数ＮＥＸＣに達していなければ、アプリケーションソフトウェアＡＳｐの実行が完了していないと判定する。従って、この発明においては、「実行完了」とは、アプリケーションソフトウェアＡＳｐの実行命令数が正常に実行可能な命令数ＮＥＸＣに達したことを意味し、「実行が完了していない」とは、アプリケーションソフトウェアＡＳｐの実行命令数が実行可能な命令数ＮＥＸＣに達する前にアプリケーションソフトウェアＡＳｐの実行が停止したことを意味する。
【００４８】
ステップＳ１３において、アプリケーションソフトウェアＡＳｐの実行が完了したと判定されたとき、ＣＰＵ１０２は、実行したアプリケーションソフトウェアＡＳｐの評価値Ｆｔｐを計算し、その計算した評価値ＦｔｐをＲＡＭ１０３に格納する（Ｓ１４）。そして、一連の動作は、後述するステップＳ１６へ移行する。
【００４９】
一方、ステップＳ１３において、アプリケーションソフトウェアＡＳｐの実行が完了していないと判定されたとき、ＣＰＵ１０２は、実行したアプリケーションソフトウェアＡＳｐの評価値Ｆｔｐ（＝“０”）を維持し、または一度計算された評価値Ｆｔｐを“０”に戻す（Ｓ１５）。アプリケーションソフトウェアＡＳｐの実行が完了しない場合としては、アプリケーションソフトウェアＡＳｐの実行が途中で停止する場合が想定される。このような場合、評価値ＦｔｐによるアプリケーションソフトウェアＡＳｐの評価を行なわないことにすると、この発明によるプログラムが停止し、ハングアップ状態になるので、これを回避するために、アプリケーションソフトウェアＡＳｐが途中で停止した場合にも、評価値ＦｔｐによるアプリケーションソフトウェアＡＳｐの評価を行なうことにしたものである。また、アプリケーションソフトウェアＡＳｐが、一度、正常に実行され、“０”以外の評価値Ｆｔｐが計算された後に、アプリケーションソフトウェアＡＳｐが、再度、実行され、評価値Ｆｔｐが“０”と計算される場合もあるので、「一度計算された評価値Ｆｔｐを“０”に戻す」ことにしたものである。
【００５０】
そして、ステップＳ１４またはステップＳ１５の後、ＣＰＵ１０２は、実行されたアプリケーションソフトウェアＡＳｐの評価値Ｆｔｐに基づいて、ｎ個のアプリケーションソフトウェアＡＳ１〜ＡＳｎ、またはｎ＋１個のアプリケーションソフトウェアＡＳ１〜ＡＳｎ＋１のうち、実行されたｍ個のアプリケーションソフトウェアＡＳ１〜ＡＳｍの削除順序を変更する（ステップＳ１６）。この場合、ＣＰＵ１０２は、ｍ個のアプリケーションソフトウェアＡＳ１〜ＡＳｍの評価値Ｆｔ１〜Ｆｔｍが小さい順に並ぶように削除順序を変更する。なお、相対的に小さい評価値Ｆｔ１〜Ｆｔｍは、削除順序が相対的に早いことを表す。
【００５１】
ステップＳ１６の後、ＣＰＵ１０２は、ｍ個のアプリケーションソフトウェアＡＳ１〜ＡＳｍのうち、削除条件を満たすアプリケーションソフトウェアＡＳｐを削除する（ステップＳ１７）。この場合、削除条件の具体例としては、（ｉ）実行済みの評価値Ｆｔｐが“０”であること、（ｉｉ）削除順番が最も早い、の２つが想定される。
【００５２】
その後、ＣＰＵ１０２は、ＲＡＭ１０３に残っているアプリケーションソフトウェアＡＳｐの生成順番を更新する（ステップＳ１８）。この場合、ＣＰＵ１０２は、ステップＳ１７において、アプリケーションソフトウェアＡＳｐを削除していない場合、ＲＡＭ１０３に格納されたアプリケーションソフトウェアＡＳ１〜ＡＳｎの生成順番を維持し、ステップＳ１７において、アプリケーションソフトウェアＡＳｐを削除している場合、ＲＡＭ１０３に格納されたアプリケーションソフトウェアＡＳ１〜ＡＳｐ−１，ＡＳｐ＋１〜ＡＳｎの生成順番を連続するように変更する。
【００５３】
そして、ＣＰＵ１０２は、ｐ＝ｍｏｄ（ｐ，プログラム数）＋１を演算して、次に実行するアプリケーションソフトウェアを決定する（ステップＳ１９）。  その後、ＣＰＵ１０２は、コンピュータ１００の電源がオフされたか否かを判定する（ステップＳ２０）。コンピュータ１００の電源がオフされていないとき、一連の動作は、図２に示すステップＳ６へ戻り、ステップＳ２０において、コンピュータ１００の電源がオフされたと判定されるまで、上述したステップＳ６〜ステップＳ２０が繰り返し実行される。そして、コンピュータ１００の電源がオフされると、一連の動作は終了する。
【００５４】
上述したプログラムに従って、ＣＰＵ１０２が行なう動作を具体的に説明する。図４は、１個のアプリケーションソフトウェアＡＳｐ（ｐ＝１）の例を示す図である。アプリケーションソフトウェアＡＳｐは、命令と、番号とからなり、命令は、ＣＰＵ１０２が実行する命令を表し、番号は、ＣＰＵ１０２が各命令を実行する順番を表す。
【００５５】
この例のアプリケーションソフトウェアＡＳｐは、命令ｉｎｃＤ，ｉｎｃＥ，ｎｏｐ０，ｊｍｐｏ，ｎｏｐ１，ｉｆｚからなる。そして、命令ｉｎｃＤおよび命令ｉｎｃＥは、それぞれ、レジスタＤおよびレジスタＥの値を“１”だけ加算することをＣＰＵ１０２に命令する。
【００５６】
ｎｏｐ０，ｎｏｐ１の各々は、複数のｎｏｐ０および／またはｎｏｐ１によって“０”および／または“１”の配列を表す。より具体的には、配列［ｎｏｐ０，ｎｏｐ０，ｎｏｐ１，ｎｏｐ０］（図４においては、縦に配列されている）は、配列［００１０］を表し、配列［ｎｏｐ１，ｎｏｐ１，ｎｏｐ０，ｎｏｐ１］（図４においては、縦に配列されている）は、配列［１１０１］を表す。
【００５７】
ｊｍｐｏは、配列［ｎｏｐ０，ｎｏｐ０，ｎｏｐ１，ｎｏｐ０］の直後に配置されているので、配列［ｎｏｐ０，ｎｏｐ０，ｎｏｐ１，ｎｏｐ０］と相補な配列［ｎｏｐ１，ｎｏｐ１，ｎｏｐ０，ｎｏｐ１］が見つかれば、その見つかった配列［ｎｏｐ１，ｎｏｐ１，ｎｏｐ０，ｎｏｐ１］と相補な配列［ｎｏｐ０，ｎｏｐ０，ｎｏｐ１，ｎｏｐ０］の先頭（＝１０行目）へジャンプすることをＣＰＵ１０２に命令する。
【００５８】
そして、ＣＰＵ１０２は、１０行目へジャンプした後、配列［ｎｏｐ０，ｎｏｐ０，ｎｏｐ１，ｎｏｐ０］、命令ｊｍｐ０および配列［ｎｏｐ１，ｎｏｐ１，ｎｏｐ０，ｎｏｐ１］を再び検知するので、配列［ｎｏｐ０，ｎｏｐ０，ｎｏｐ１，ｎｏｐ０］→ｊｍｐｏ→配列［ｎｏｐ１，ｎｏｐ１，ｎｏｐ０，ｎｏｐ１］のループを繰り返し実行する。
【００５９】
なお、ｎｏｐ０，ｎｏｐ１，ｊｍｐｏを用いて、配列［ｎｏｐ０，ｎｏｐ０，ｎｏｐ１，ｎｏｐ０］→ｊｍｐ０→配列［ｎｏｐ１，ｎｏｐ１，ｎｏｐ０，ｎｏｐ１］のようなループ機能をＣＰＵ１０２に命令することは、ループ機能をＣＰＵ１０２に実行させることに相当する。
【００６０】
命令ｉｆｚは、レジスタＣが“０”であるか否かを調べることをＣＰＵ１０２に命令する。
【００６１】
番号は、０〜１９からなるので、アプリケーションソフトウェアＡＳｐは、２０行のプログラムからなることを表す。
【００６２】
図５は、図１に示すＲＡＭ１０３に格納されたアプリケーションソフトウェアＡＳ１〜ＡＳｎの実行状態を示す状態図である。状態図ＳＴｐにおいて、ＩｎｓｔＥｘｅｃは、アプリケーションソフトウェアＡＳｐの命令のうち実行された命令数を表し、Ｃｅｌｌｓは、ＲＡＭ１０３に格納されているアプリケーションソフトウェアの個数を表す。Ｃｅｌｌは、アプリケーションソフトウェアＡＳｐの名称および長さを表し、＠は、アプリケーションソフトウェアＡＳｐの先頭の命令が格納されているＲＡＭ１０３の番地を表す。
【００６３】
ＩＰは、実行されている命令の番地を表し、ＡＸ〜ＦＸは、それぞれ、変数Ａ〜Ｆのレジストの値を表す。ｇｅｎｏｍｅ  ｓｉｚｅは、アプリケーションソフトウェアＡＳｐの長さを表し、ｈｔｉｓ．ａ｜ｈｔｉｓ．ｉは、アプリケーションソフトウェアＡＳｐの名称を表し、ａｄｄｒｅｓｓは、アプリケーションソフトウェアＡＳｐが格納されているＲＡＭ１０３の先頭番地を表す。ｆｉｔｎｅｓｓは、アプリケーションソフトウェアＡＳｐの評価値Ｆｔｐを表し、ｃｅｌｌｓ  ｏｆ  ｈｔｉｓは、アプリケーションソフトウェアＡＳｐの実行命令数を表す。
【００６４】
なお、状態図ＳＴｐの内容は、アプリケーションソフトウェアＡＳｐに対応付けられてＲＡＭ１０３に格納される。
【００６５】
図６は、図１に示すＲＡＭ１０３に格納されたアプリケーションソフトウェアＡＳ１〜ＡＳｎの実行状態を示す状態図の第１の例である。状態図ＳＴ１において、ＩｎｓｔＥｘｅｃは、“４”であるので、図４に示すアプリケーションソフトウェアＡＳｐの４番目の命令を実行していることを表し、Ｃｅｌｌｓは、“１”であるので、１個のアプリケーションソフトウェアＡＳ１がＲＡＭ１０３に格納されていることを表す。
【００６６】
また、Ｃｅｌｌの“０：１”は、アプリケーションソフトウェアＡＳ１の名称を表し、Ｃｅｌｌの“００２０”は、アプリケーションソフトウェアＡＳ１の長さが２０行であることを表し、＠の“３００００”は、アプリケーションソフトウェアＡＳ１の先頭の命令がＲＡＭ１０３の３００００番地に格納されていることを表す。
【００６７】
ＩＰ［３０００４］は、アプリケーションソフトウェアＡＳ１の４番目の命令が実行されていることを表し、ＡＸ［０］，ＢＸ［０］，ＣＸ［０］，ＦＸ［０］は、それぞれ、変数Ａ，Ｂ，Ｃ，Ｆが設定されていないことを表し、ＤＸ［２］，ＥＸ［２］は、それぞれ、変数Ｄ，Ｅのレジストの値が“２”であることを表す。
【００６８】
ｇｅｎｏｍｅ  ｓｉｚｅ｜ｈｔｉｓ．ａ｜ｈｔｉｓ．ｉ｜ａｄｄｒｅｓｓ｜ｆｉｔｎｅｓｓ｜ｃｅｌｌｓ  ｏｆ  ｈｔｉｓの上段は、現在、実行されているアプリケーションソフトウェアを表し、下段は、ＲＡＭ１０３に格納されているアプリケーションソフトウェアを表す。そして、ＢｏｔｔｏＲｅａｐは、評価値Ｆｔｐが一番高いアプリケーションソフトウェアまたは一度も実行されていないアプリケーションソフトウェアを示す。
【００６９】
ｇｅｎｏｍｅ  ｓｉｚｅの“２０”は、アプリケーションソフトウェアＡＳ１の長さが“２０”行であることを表し、｜ｈｔｉｓ．ａ｜ｈｔｉｓ．ｉ｜は、それぞれ、Ｃｅｌｌの“０：１”が格納される。ａｄｄｒｅｓｓの“３００００”は、アプリケーションソフトウェアＡＳ１が格納されたＲＡＭ１０３の先頭番地を表す。ｆｉｔｎｅｓｓの“０”は、アプリケーションソフトウェアＡＳ１の評価値Ｆｔ１が“０”であることを表す。ｃｅｌｌｓ  ｏｆ  ｈｔｉｓの“４”は、アプリケーションソフトウェアＡＳ１の命令が“４”個実行されたことを表す。
【００７０】
状態図ＳＴ１は、１個のアプリケーションソフトウェアＡＳ１（＝０：１）がＲＡＭ１０３に格納されていることを表し、この発明によるプログラム（＝図２および図３に示すフローチャートからなる）が実行される初期状態を示す。
【００７１】
この発明によるプログラムは、状態図ＳＴ１によって示される初期状態（即ち、１個のアプリケーションソフトウェアがＲＡＭ１０３に格納された状態）から出発し、外部からコンピュータ１００に入力された目的に合致するアプリケーションソフトウェアを生成する。
【００７２】
そして、外部からコンピュータ１００に入力される目的としては、例えば、評価値Ｆｔｐ（＝ｆｉｔｎｅｓｓ）が“５”以上であるアプリケーションソフトウェアを生成することである。この場合、評価値Ｆｔｐ＝“５”がキーボード１０１からコンピュータ１００へ入力される。また、各アプリケーションソフトウェアＡＳｐが実行可能な命令数ＮＥＸＣは、例えば、“２５”に設定される。更に、アプリケーションソフトウェアを削除する削除条件は、「一度、実行され、評価値Ｆｔｐが“０”であること」とする。
【００７３】
図７から図１１は、それぞれ、図１に示すＲＡＭ１０３に格納されたアプリケーションソフトウェアＡＳ１〜ＡＳｎの実行状態を示す状態図の第２から第６の例を示す図である。
【００７４】
状態図ＳＴ２は、アプリケーションソフトウェアＡＳ１（＝０：１）が第２５行目まで実行され（ＩｎｓｔＥｘｅｃ＝２５参照）、番地“７７５３”に格納されたアプリケーションソフトウェアと、番地“３００００”に格納されたアプリケーションソフトウェアとの２個のアプリケーションソフトウェアがＲＡＭ１０３に格納されていることを表す。即ち、状態図ＳＴ２は、アプリケーションソフトウェアＡＳ１（＝０：１）の実行が完了し（＝正常に終了し）、アプリケーションソフトウェアＡＳ２（＝番地“７７５３”に格納されているアプリケーションソフトウェア）が生成されたことを表す。
【００７５】
アプリケーションソフトウェアＡＳ１（＝０：１）の実行が完了したことは、次の理由により解る。アプリケーションソフトウェアＡＳ１（＝０：１）の実行可能な命令数ＮＥＸＣは、上述したように“２５”であるので、アプリケーションソフトウェアＡＳ１（＝０：１）の実行命令数（ＩｎｓｔＥｘｅｃ）が“２５”であるということは、アプリケーションソフトウェアＡＳ１（＝０：１）の実行が完了したことを意味するからである。この場合、アプリケーションソフトウェアＡＳ１（＝０：１）は、配列［ｎｏｐ０，ｎｏｐ０，ｎｏｐ１，ｎｏｐ０］が１０行目〜１３行目に配置され、命令ｊｍｐ０が１４行目に配置され、配列［ｎｏｐ１，ｎｏｐ１，ｎｏｐ０，ｎｏｐ１］が１５行目〜１８行目に配置されているので、ＣＰＵ１０２は、アプリケーションソフトウェアＡＳ１（＝０：１）の１８行目まで実行した後、配列［ｎｏｐ０，ｎｏｐ０，ｎｏｐ１，ｎｏｐ０］→命令ｊｍｐ０→配列［ｎｏｐ１，ｎｏｐ１，ｎｏｐ０，ｎｏｐ１］のループ状態を繰り返し、実行した命令数が“２５”になった時点でアプリケーションソフトウェアＡＳ１（＝０：１）の実行を完了する。
【００７６】
また、状態図ＳＴ２においては、実行されたアプリケーションソフトウェアＡＳ１（＝０：１）のｆｉｔｎｅｓｓは、“５”である。そして、新たに生成されたアプリケーションソフトウェアＡＳ２は、未だ、実行されていないので、ｆｉｔｎｅｓｓは、“０”である。
【００７７】
［状態図ＳＴ１→状態図ＳＴ２］
状態図ＳＴ２においては、アプリケーションソフトウェアＡＳ１は、ｆｉｔｎｅｓｓが“５”の状態でＲＡＭ１０３に格納されているので、状態図ＳＴ１（図６参照）によって示すアプリケーションソフトウェアＡＳ１の実行が完了した時点でｆｉｔｎｅｓｓ＝“５”が計算され、ＲＡＭ１０３に格納（図２のステップＳ１３の“ＹＥＳ”，Ｓ１４参照）されたことを意味する。
【００７８】
そして、アプリケーションソフトウェアＡＳ１のｆｉｔｎｅｓｓが“５”であり、この時点では、アプリケーションソフトウェアＡＳ１のみがＲＡＭ１０３に格納されているので（状態図ＳＴ１参照）、図２に示すステップＳ１６およびステップＳ１７においては、ＣＰＵ１０２は、アプリケーションソフトウェアを削除しない。そうすると、１個のアプリケーションソフトウェアＡＳ１がＲＡＭ１０３に格納されているので、ＣＰＵ１０２は、ｍｏｄ（１，１）＋１＝１を演算し、ｐを“１”に設定する（ステップＳ１９参照）。
【００７９】
その後、ステップＳ２０において、電源がオフされていないと判定されると、一連の動作は、図２に示すステップＳ６へ戻り、ＣＰＵ１０２は、アプリケーションソフトウェアＡＳ１をＲＡＭ１０３から読み出す（ステップＳ６参照）。
【００８０】
そして、ＣＰＵ１０２は、上述したステップＳ７を実行し、その後、ステップＳ８において、状態図ＳＴ１のｃｅｌｌｓ  ｏｆ  ｈｔｉｓ（＝命令実行数）の“２５”（この時点では、“４”から“２５”に変更されている）を参照してアプリケーションソフトウェアＡＳ１が実行済みであると判定する。
【００８１】
その後、ＣＰＵ１０２は、上述したステップＳ９を実行して評価値Ｆｔ１＝５を読み出し、ステップＳ１０において、評価値Ｆｔ１＝５が評価基準Ｓｆｔ＝５以上であると判定する。そうすると、ＣＰＵ１０２は、ステップＳ１１において、アプリケーションソフトウェアＡＳ２（＝番地“７７５３”に格納されたアプリケーションソフトウェア）を生成する。
【００８２】
そして、ＣＰＵ１０２は、ステップＳ１２において、アプリケーションソフトウェアＡＳ１（＝番地“３００００”に格納されたアプリケーションソフトウェア）を実行し、ステップＳ１３において、アプリケーションソフトウェアＡＳ１（＝番地“３００００”に格納されたアプリケーションソフトウェア）の２回目の実行を完了したと判定し、ステップＳ１４において、アプリケーションソフトウェアＡＳ１（＝番地“３００００”に格納されたアプリケーションソフトウェア）の評価値Ｆｔ１＝５を計算して再びＲＡＭ１０３に格納する。
【００８３】
上述した経過を経て状態図ＳＴ１は、状態図ＳＴ２へ移行する。
【００８４】
［状態図ＳＴ２→状態図ＳＴ３］
状態図ＳＴ２によって示される状態においては、新たに生成されたアプリケーションソフトウェアＡＳ２（＝番地“７７５３”に格納されたアプリケーションソフトウェア）は、未だ、実行されておらず、実行されたアプリケーションソフトウェアは、アプリケーションソフトウェアＡＳ１のみであるので、ＣＰＵ１０２は、ステップＳ１７において、アプリケーションソフトウェアを削除しない。
【００８５】
そして、ＣＰＵ１０２は、２個のアプリケーションソフトウェアＡＳ１，ＡＳ２がＲＡＭ１０３に格納されているので、図３に示すステップＳ１９において、ｍｏｄ（１，２）＋１＝２を演算し、ｐを“２”に設定する。
【００８６】
その後、ステップＳ２０において、電源がオフされていないと判定されると、一連の動作は、図２に示すステップＳ６へ戻る。そして、ＣＰＵ１０２は、アプリケーションソフトウェアＡＳ２をＲＡＭ１０３から読み出し（ステップＳ６参照）、上述したステップＳ７を実行する。
【００８７】
その後、ＣＰＵ１０２は、ＲＡＭ１０３に格納された状態図ＳＴ２を参照して、アプリケーションソフトウェアＡＳ２（＝番地“７７５３”に格納されたアプリケーションソフトウェア）のｃｅｌｌｓ  ｏｆ  ｈｔｉｓの“０”を検出し、アプリケーションソフトウェアＡＳ２が実行済みではないと判定する（ステップＳ８参照）。
【００８８】
そして、ＣＰＵ１０２は、アプリケーションソフトウェアＡＳ２を実行する（ステップＳ１２参照）。その後、ＣＰＵ１０２は、アプリケーションソフトウェアＡＳ２の実行命令数が“２５”に達すると、ステップＳ１３において、アプリケーションソフトウェアＡＳ２の実行が完了したと判定し、ステップＳ１４において、アプリケーションソフトウェアＡＳ２の評価値Ｆｔ２＝“３”を計算し、その計算した評価値Ｆｔ２＝“３”をＲＡＭ１０３の状態図ＳＴ３（図８参照）に格納する。
【００８９】
このように、状態図ＳＴ３は、ステップＳ１１においてアプリケーションソフトウェアＡＳ１から生成されたアプリケーションソフトウェアＡＳ２の実行が完了した状態を示す。
【００９０】
［状態図ＳＴ３→状態図ＳＴ４］
状態図ＳＴ２から状態図ＳＴ３へ移行する段階においてアプリケーションソフトウェアＡＳ２の実行が完了した時点においては、アプリケーションソフトウェアが新たに生成されておらず、アプリケーションソフトウェアＡＳ２の評価値Ｆｔ２は“３”であり、ｐは“２”に設定されているので、ＣＰＵ１０２は、ステップＳ１６の後、ステップＳ１７においてアプリケーションソフトウェアＡＳ１，ＡＳ２を削除せず、ステップＳ１９において、ｍｏｄ（２，２）＋１＝１を演算し、ｐを“１”に設定する。
【００９１】
そして、ステップＳ２０において、電源がオフされていないと判定されると、一連の動作は、図２に示すステップＳ６へ戻り、ＣＰＵ１０２は、アプリケーションソフトウェアＡＳ１をＲＡＭ１０３から読み出し（ステップＳ６参照）、上述したステップＳ７を実行する。
【００９２】
その後、ＣＰＵ１０２は、ＲＡＭ１０３に格納された状態図ＳＴ３を参照して、アプリケーションソフトウェアＡＳ１（＝番地“３００００”に格納されたアプリケーションソフトウェア）のｃｅｌｌｓ  ｏｆ  ｈｔｉｓの“５３”を検出し、アプリケーションソフトウェアＡＳ１が実行済みであると判定する（ステップＳ７参照）。
【００９３】
そして、ＣＰＵ１０２は、ステップＳ９において、状態図ＳＴ３のｆｉｔｎｅｓｓ（＝Ｆｔ１）＝“５”を読み出し、ステップＳ１０において、評価値Ｆｔ１＝“５”が評価基準Ｓｆｔ＝“５”以上であると判定する。
【００９４】
そうすると、ＣＰＵ１０２は、ステップＳ１１において、アプリケーションソフトウェアＡＳ１からＡＳ３（番地“４７８０８”に格納されたアプリケーションソフトウェア）を生成する（図９の状態図ＳＴ４参照）。
【００９５】
その後、ＣＰＵ１０２は、ステップＳ１２において、アプリケーションソフトウェアＡＳ１を実行し、ステップＳ１３において、アプリケーションソフトウェアＡＳ１の３回目の実行が完了したと判定する。
【００９６】
そして、ＣＰＵ１０２は、ステップＳ１４において、アプリケーションソフトウェアＡＳ１の評価値Ｆｔ１＝５を計算し、その計算した評価値Ｆｔ１＝５を再びＲＡＭ１０３の状態図ＦＴ４（図９参照）に格納する。
【００９７】
これにより、状態図ＳＴ３が状態図ＳＴ４へ移行する。
【００９８】
［状態図ＳＴ４→状態図ＳＴ５］
状態図ＳＴ４の状態においては、３個のアプリケーションソフトウェアＡＳ１，ＡＳ２，ＡＳ３がＲＡＭ１０３に格納されており、そのうち、２個のアプリケーションソフトウェアＡＳ１，ＡＳ２が実行済みであり、残りのアプリケーションソフトウェアＡＳ３が未実行である。
【００９９】
そして、実行済みである２個のアプリケーションソフトウェアＡＳ１，ＡＳ２の評価値Ｆｔ１，Ｆｔ２は、それぞれ、“５”，“３”であるので、ＣＰＵ１０２は、ステップＳ１６において、評価値＝“５”，“３”が小さい順になるように２個のアプリケーションソフトウェアＡＳ１，ＡＳ２の削除順番を変更する。
その後、ＣＰＵ１０２は、評価値＝“３”，“５”をそれぞれ有するアプリケーションソフトウェアＡＳ２，ＡＳ１が削除条件を満たさないので、ステップＳ１７においてアプリケーションソフトウェアを削除せず、ステップＳ１９において、ｐ＝ｍｏｄ（１，３）＋１＝２を演算し、ｐを“２”に設定する。
【０１００】
そして、ステップＳ２０において、電源がオフされていないと判定されると、一連の動作は、図２に示すステップＳ６へ戻る。そして、ＣＰＵ１０２は、アプリケーションソフトウェアＡＳ２をＲＡＭ１０３から読み出し（ステップＳ６参照）、上述したステップＳ７を実行する。
【０１０１】
その後、ＣＰＵ１０２は、ＲＡＭ１０３に格納された状態図ＳＴ４を参照して、アプリケーションソフトウェアＡＳ２（＝番地“７７５３”に格納されたアプリケーションソフトウェア）のｃｅｌｌｓ  ｏｆ  ｈｔｉｓの“２５”を検出し、アプリケーションソフトウェアＡＳ２が実行済みであると判定する（ステップＳ７参照）。
【０１０２】
そして、ＣＰＵ１０２は、ステップＳ９において、状態図ＳＴ４のｆｉｔｎｅｓｓ（＝Ｆｔ２）＝“３”を読み出し、ステップＳ１０において、評価値Ｆｔ２＝“３”が評価基準Ｓｆｔ＝“５”以上でないと判定する。
【０１０３】
そうすると、ＣＰＵ１０２は、ステップＳ１２において、アプリケーションソフトウェアＡＳ２を実行し、アプリケーションソフトウェアＡＳ２の実行命令数（ＩｎｓｔＥｘｅｃ＝５０）に基づいて、ステップＳ１３においてアプリケーションソフトウェアＡＳ２の２回目の実行が完了したと判定する。
【０１０４】
その後、ＣＰＵ１０２は、ステップＳ１４において、アプリケーションソフトウェアＡＳ２の評価値Ｆｔ２＝５を計算し、その計算した評価値Ｆｔ２＝５をＲＡＭ１０３の状態図ＳＴ５（図１０参照）に格納する。アプリケーションソフトウェアＡＳ２の１回目の実行が完了した時点においては、評価値Ｆｔ２は、“３”（状態図ＳＴ３参照）であったが、アプリケーションソフトウェアＡＳ２の２回目の実行が完了した時点においては、評価値Ｆｔ２は、“３”から“５”まで向上した。
【０１０５】
これにより、状態図ＳＴ４が状態図ＳＴ５へ移行する。
【０１０６】
［状態図ＳＴ５→状態図ＳＴ６］
状態図ＳＴ４から状態図ＳＴ５へ移行する過程でアプリケーションソフトウェアＡＳ２が実行された段階では、アプリケーションソフトウェアが新たに生成されておらず、実行済みのアプリケーションソフトウェアＡＳ１，ＡＳ２の評価値Ｆｔ１，Ｆｔ２（ｆｉｔｎｅｓｓ）は、共に“５”であるので、ＣＰＵ１０２は、テップＳ１７においてアプリケーションソフトウェアを削除せず、ステップＳ１９において、ｐ＝ｍｏｄ（２，３）＋１＝３を演算し、ｐを“３”に設定する。
【０１０７】
そして、ステップＳ２０において、電源がオフされていないと判定されると、一連の動作は図２に示すステップＳ６へ戻る。
【０１０８】
そうすると、ＣＰＵ１０２は、アプリケーションソフトウェアＡＳ３をＲＡＭ１０３から読み出し（ステップＳ６参照）、上述したステップＳ７を実行する。
【０１０９】
その後、ＣＰＵ１０２は、ＲＡＭ１０３に格納された状態図ＳＴ５を参照して、アプリケーションソフトウェアＡＳ３（＝番地“４７８０８”に格納されたアプリケーションソフトウェア）のｃｅｌｌｓ  ｏｆ  ｈｔｉｓの“０”を検出し、アプリケーションソフトウェアＡＳ３が実行済みではないと判定する（ステップＳ８参照）。
【０１１０】
そして、ＣＰＵ１０２は、アプリケーションソフトウェアＡＳ３を実行する（ステップＳ１２参照）。その後、ＣＰＵ１０２は、アプリケーションソフトウェアＡＳ３の実行命令数が“２５”に達すると、ステップＳ１３において、アプリケーションソフトウェアＡＳ３の実行が完了したと判定し、ステップＳ１４において、アプリケーションソフトウェアＡＳ３の評価値Ｆｔ３を“０”と計算し、その計算した評価値Ｆｔ３（＝０）がＲＡＭ１０３に格納されている評価値Ｆｔ３（＝０）と同じであるので、評価値Ｆｔ３（＝“０”）を維持する（図１１参照）。
【０１１１】
これにより、状態図ＳＴ５が状態図ＳＴ６へ移行する。
【０１１２】
図１２は、図６に示す状態図ＳＴ１から図１１に示す状態図ＳＴ６への移行を示す模式図である。図１２の（ａ），（ｂ），（ｃ），（ｄ），（ｅ），（ｆ）は、それぞれ、図６から図１１に示す状態図ＳＴ１〜ＳＴ６の状態を示す。
【０１１３】
状態図ＳＴ１は、第１世代のアプリケーションソフトウェアＡＳ１（図１２では“０１”）を実行している状態を示す。そして、アプリケーションソフトウェアＡＳ１の１回目の実行が完了すると、評価値Ｆｔ１＝５が計算され、その計算された評価値Ｆｔ１＝５がＲＡＭ１０３に格納される（図１２の（ａ）参照）。
【０１１４】
アプリケーションソフトウェアＡＳ１の評価値Ｆｔ１が評価基準Ｓｆｔ（＝５）以上の“５”であるとき、アプリケーションソフトウェアＡＳ１が２回目に実行される前にアプリケーションソフトウェアＡＳ１からアプリケーションソフトウェアＡＳ２が生成された後（図２に示すステップＳ１１参照）、アプリケーションソフトウェアＡＳ１の２回目を実行し、その２回目のアプリケーションソフトウェアＡＳ１の実行が完了する（図２に示すステップＳ１１，Ｓ１２、図７および図１２の（ｂ）参照）。そして、アプリケーションソフトウェアＡＳ１の評価値Ｆｔ１＝５が再び計算され、ＲＡＭ１０３に再び格納される（図２に示すステップＳ１４参照）。この段階では、２個のアプリケーションソフトウェアＡＳ１，ＡＳ２がＲＡＭ１０３に格納されている（図７の状態図ＳＴ２参照）。
【０１１５】
その後、生成されたアプリケーションソフトウェアＡＳ２（図１２では“０２”）の１回目の実行が完了する（図２に示すステップＳ１２，Ｓ１３、図８および図１２の（ｃ）参照）。そして、アプリケーションソフトウェアＡＳ１が３回目に実行される前にアプリケーションソフトウェアＡＳ１からアプリケーションソフトウェアＡＳ３が生成されるとともに（図２に示すステップＳ１１参照）、アプリケーションソフトウェアＡＳ１の３回目の実行が完了する（図２に示すステップＳ１１，Ｓ１２、図９および図１２の（ｄ）参照）。そして、アプリケーションソフトウェアＡＳ１の評価値Ｆｔ１＝“５”が計算され、ＲＡＭ１０３に再び格納される（図２に示すステップＳ１４参照）。この段階では、３個のアプリケーションソフトウェアＡＳ１，ＡＳ２，ＡＳ３がＲＡＭ１０３に格納されている（図９の状態図ＳＴ４参照）。
【０１１６】
その後、アプリケーションソフトウェアの実行は、アプリケーションソフトウェアＡＳ１からアプリケーションソフトウェアＡＳ２へ移行する。この場合、アプリケーションソフトウェアＡＳ２（図１２では“０２”）は、２回目に実行されることになるが、１回目の実行が完了したときの評価値Ｆｔ２（＝ｆｉｔｎｅｓｓ）が“３”（状態図ＳＴ４参照）であるので、アプリケーションソフトウェアＡＳ２から新たなアプリケーションソフトウェアが生成されずに、アプリケーションソフトウェアＡＳ２（図１２では“０２”）の２回目の実行が行なわれる（図２に示すステップＳ１０の“ＮＯ”およびステップＳ１２参照）。そして、アプリケーションソフトウェアＡＳ２（図１２では“０２”）の２回目の実行が完了する（図１２に示すステップＳ１２，Ｓ１３、図１０および図１２の（ｅ）参照）。
【０１１７】
その後、アプリケーションソフトウェアの実行は、アプリケーションソフトウェアＡＳ２（図１２では“０２”）からアプリケーションソフトウェアＡＳ３（図１２では“０３”）へ移行し、アプリケーションソフトウェアＡＳ３（図１２では“０３”）の実行が完了する（図１２に示すステップＳ１２，Ｓ１３、図１１および図１２の（ｆ）参照）。
【０１１８】
このように、図２および図３に示すフローチャートからなるプログラムを実行することにより、新たなアプリケーションソフトウェアＡＳ１〜ＡＳ３がツリー状に生成される。そして、生成されたアプリケーションソフトウェアＡＳ１，ＡＳ２，ＡＳ３のうち、アプリケーションソフトウェアＡＳ１，ＡＳ２は、評価値Ｆｔ１，Ｆｔ２（ｆｉｔｎｅｓｓ）＝５を有し、アプリケーションソフトウェアＡＳ３は、評価値Ｆｔ３（ｆｉｔｎｅｓｓ）＝０を有する。
【０１１９】
従って、この発明によるプログラムは、新たなアプリケーションソフトウェアを生成する場合、元のアプリケーションソフトウェアＡＳ１の評価値Ｆｔ１＝５と同等の評価値Ｆｔ１＝５を有するアプリケーションソフトウェアＡＳ２を新たに生成する場合もあれば、元のアプリケーションソフトウェアＡＳ１の評価値Ｆｔ１＝５よりも低い評価値Ｆｔ３＝０を有するアプリケーションソフトウェアＡＳ３を新たに生成する場合もある。
【０１２０】
そして、元のアプリケーションソフトウェアＡＳ１の評価値Ｆｔ１＝５と同等の評価値Ｆｔ１＝５を有するアプリケーションソフトウェアＡＳ１，ＡＳ２を新たに生成する場合を「複製」と言い、元のアプリケーションソフトウェアＡＳ１の評価値Ｆｔ１＝５よりも低い評価値Ｆｔ３＝０を有するアプリケーションソフトウェアＡＳ３を新たに生成する場合を「劣勢」と言う。
【０１２１】
なお、この発明においては、元のアプリケーションソフトウェアＡＳ１の評価値Ｆｔ１＝５よりも高い評価値を有するアプリケーションソフトウェアを新たに生成する場合もあり、この場合を「優勢」と言う。
【０１２２】
そして、「複製」、「劣勢」および「優勢」は、図２に示すステップＳ１１において実現される。従って、図２に示すテップＳ１１は、一般的には、アプリケーションソフトウェアを進化させる「進化処理」を構成する。
【０１２３】
また、この発明によるプログラムは、上述したように、新たなアプリケーションソフトウェアをツリー状に生成することにより、外部から入力された評価基準Ｓｆｔ（＝５）に合致した評価値Ｆｔ１，Ｆｔ２（＝５）を有するアプリケーションソフトウェアＡＳ１，ＡＳ２を生成できる。
【０１２４】
そして、この評価基準Ｓｆｔ（＝５）に合致した評価値Ｆｔ１，Ｆｔ２（＝５）を有するアプリケーションソフトウェアＡＳ１，ＡＳ２を生成するためには、この発明によるプログラムのハングアップを回避することが重要であるが、この発明によるプログラムのハングアップを回避することは、次の２つの技術ＴＥＣ１，ＴＥＣ２によって実現される。
【０１２５】
１つ目の技術ＴＥＣ１は、図２に示すステップＳ８，Ｓ９において、実行済みのアプリケーションソフトウェアＡＳｐの評価値Ｆｔｐを個別に評価することである。また、２つ目の技術ＴＥＣ２は、ステップＳ１５において、アプリケーションソフトウェアＡＳｐが正常に終了しない場合にも、アプリケーションソフトウェアＡＳｐの評価値Ｆｔｐを設定することである。
【０１２６】
１つ目の技術ＴＥＣ１を詳細に説明する。例えば、３個のアプリケーションソフトウェアＡＳ１〜ＡＳ３がＲＡＭ１０３に格納されている段階で３個のアプリケーションソフトウェアＡＳ１〜ＡＳ３の３個の評価値Ｆｔ１〜Ｆｔ３を３個のアプリケーションソフトウェアＡＳ１〜ＡＳ３の全ての実行が完了した時点で評価する場合、３個のアプリケーションソフトウェアＡＳ１〜ＡＳ３のうち、１個でも実行を完了できないアプリケーションソフトウェアが存在すると、３個の評価値Ｆｔ１〜Ｆｔ３を評価できない。その結果、アプリケーションソフトウェアＡＳ１〜ＡＳ３を進化させるプログラムは、停止した状態、即ち、ハングアップ状態になる。
【０１２７】
しかし、この発明によるプログラムは、上述したように、各アプリケーションソフトウェアＡＳｐの評価値Ｆｔｐを１個のアプリケーションソフトウェアＡＳｐの実行が完了した時点で評価しているので（図２に示すステップＳ７，Ｓ８，Ｓ９参照）、その１個のアプリケーションソフトウェアＡＳｐが正常に終了していなくても（この場合、評価値Ｆｔｐは“０”に設定されている（図２に示すステップＳ１５参照））、図２に示すステップＳ９の“ＮＯ”→ステップＳ１２→ステップＳ１３の“ＮＯ”→ステップＳ１５→ステップＳ１６→ステップＳ１７→ステップＳ１８の“ＮＯ”→ステップＳ２１の“ＮＯ”→ステップＳ１９の経路を経て次のアプリケーションソフトウェアを実行させることができる。その結果、この発明によるプログラムのハングアップを回避できる。
【０１２８】
次に、２つ目の技術ＴＥＣ２を詳細に説明する。１個のアプリケーションソフトウェアを実行中に、その１個のアプリケーションソフトウェアが途中で停止した場合、その１個のアプリケーションソフトウェアの評価値に何も値を設定しない場合、アプリケーションソフトウェアＡＳ１〜ＡＳ３を進化させるプログラムは、停止した状態、即ち、ハングアップ状態になる。
【０１２９】
しかし、この発明によるプログラムは、上述したように、１個のアプリケーションソフトウェアの実行が完了しない場合、即ち、１個のアプリケーションソフトウェアが途中で停止した場合にも、その１個のアプリケーションソフトウェアの評価値を“０”に設定するので（図２に示すステップＳ１３の“ＮＯ”およびステップＳ１５参照）、この発明によるプログラムは、次のアプリケーションソフトウェアを実行させることができる。その結果、この発明によるプログラムのハングアップを回避できる。
【０１３０】
なお、上述した各アプリケーションソフトウェアの個別評価は、「非同期評価」とも言う。つまり、複数のアプリケーションソフトウェアの評価を同時に行なうのではなく、各アプリケーションソフトウェアの評価を任意のタイミングで行なうということである。
【０１３１】
そして、個別評価（または非同期評価）を実現するために、この発明によるプログラムは、実行可能な命令数ＮＥＸＣをアプリケーションソフトウェアＡＳｐに付与する（図２に示すステップＳ６参照）。即ち、実行可能な命令数ＮＥＸＣをアプリケーションソフトウェアＡＳｐに付与することによって、アプリケーションソフトウェアの実行が完了しない場合でも一定期間が経過した時点でアプリケーションソフトウェアの実行が完了したものと見做して評価値Ｆｔｐを計算し、そのアプリケーションソフトウェアを評価する。つまり、全てのアプリケーションソフトウェアに対して実行完了を待ってアプリケーションソフトウェアを評価するのではなく、一定の命令数ＮＥＸＣが実行された時点でアプリケーションソフトウェアを評価することによって、複数のアプリケーションソフトウェアのそれぞれの状態を個別に評価する。これにより、個別評価（または非同期評価）が実現される。
【０１３２】
更に、この発明によるプログラムは、１個のアプリケーションソフトウェアが実行された後に、それまでに実行されたｍ個のアプリケーションソフトウェアＡＳ１〜ＡＳｍの削除順序を変更する（図２に示すステップＳ１６参照）。これも、個別評価（または非同期評価）を実現するための手段である。
【０１３３】
なお、図１２の（ｂ）〜図１２の（ｆ）においては、実行対象のアプリケーションソフトウェア（＝０１，０２，０３）をツリー状に示すが、点線で囲まれたアプリケーションソフトウェアが、進化の結果、現在、ＲＡＭ１０３に格納されているアプリケーションソフトウェアであり、点線で囲まれたアプリケーションソフトウェアよりも上側に記載されているアプリケーションソフトウェアが、進化の結果、ＲＡＭ１０３から消されたアプリケーションソフトウェアである。
【０１３４】
図１３は、削除順序を変更する方法を説明するための図である。ＲＡＭ１０３は、削除リストＳＬ１（図１３の（ａ）参照）を格納している。削除リストＳＬ１において、数値は、各アプリケーションソフトウェアの評価値Ｆｔｐを表し、＊は、アプリケーションソフトウェアが未実行であることを表す。また、削除リストＳＬ１においては、紙面上で左側へ行くに従って削除順序が早くなる。
【０１３５】
削除リストＳＬ１がＲＡＭ１０３に格納されている時点で、ＣＰＵ１０２は、アプリケーションソフトウェアＡＳ４を実行し、評価値Ｆｔ４＝４を計算すると、評価値Ｆｔ４＝４を格納して削除リストＳＬ１を削除リストＳＬ２（図１３の（ｂ）参照）に更新する。そして、ＣＰＵ１０２は、アプリケーションソフトウェアＡＳ４の隣のアプリケーションソフトウェアＡＳ３の評価値Ｆｔ３＝７を評価値Ｆｔ４＝４と比較し、評価値Ｆｔ４＝４の方が小さいので、アプリケーションソフトウェアＡＳ４をアプリケーションソフトウェアＡＳ３と入れ替えて削除リストＳＬ２を削除リストＳＬ３（図１３の（ｃ）参照）に更新する。これにより、評価値Ｆｔｐが相対的に小さいアプリケーションソフトウェアの削除順序が相対的に早くなる。
【０１３６】
アプリケーションソフトウェアＡＳ４の評価値Ｆｔ４＝４は、アプリケーションソフトウェアＡＳ１，ＡＳ２の評価値Ｆｔ１＝５，Ｆｔ２＝６よりも小さいが、上述した削除順序の変更では、アプリケーションソフトウェアＡＳ４の隣のアプリケーションソフトウェアＡＳ３を削除順序の変更の対象とする。そして、アプリケーションソフトウェアＡＳ３が未実行である場合は、アプリケーションソフトウェアＡＳ３の更に隣のアプリケーションソフトウェアＡＳ２を削除順序の変更の対象とする。
【０１３７】
なお、削除順序の変更においては、削除リストＳＬ１に登録されている全てのアプリケーションソフトウェアＡＳ１〜ＡＳ４を対象として、評価値Ｆｔｐが左側から右側へ順次大きくなるように削除順序を変更するようにしてもよい。
【０１３８】
１個のアプリケーションソフトウェアが実行された時点で、上述した方法によって削除順序の変更を行なうことによって、その１個のアプリケーションソフトウェアをどのような順番で削除すべきかを個別（または非同期）に評価できる。そして、削除順序の変更は、実行されたアプリケーションソフトウェアを対象として行なわれるので、未実行のアプリケーションソフトウェアが存在しても、削除順序の変更は、正常に行なわれる。
【０１３９】
上述したように、この発明によるプログラムは、個別評価（または非同期評価）を行なうとともに、アプリケーションソフトウェアが正常に実行されない場合にも評価値Ｆｔｐを設定することによって自己のハングアップを回避する。
【０１４０】
そして、この発明によるプログラムは、評価基準Ｓｆｔ以上の評価値Ｆｔｐを有するアプリケーションソフトウェアをツリー状に進化させることによって、自己のハングアップを回避しながら外部から入力された目的に合致したアプリケーションソフトウェアを生成する。
【０１４１】
更に、この発明によるプログラムは、ｍ個のアプリケーションソフトウェアＡＳ１〜ＡＳｍのうち、削除条件を満たすアプリケーションソフトウェアを削除する（図２に示すステップＳ１７参照）。そして、このアプリケーションソフトウェアの削除は、１個のアプリケーションソフトウェアが実行された時点で行なわれる。従って、この発明によるプログラムは、削除条件を満たすアプリケーションソフトウェアを個別（または非同期）に削除する。
【０１４２】
図２および図３に示すステップＳ５〜ステップＳ２３からなるループは、コンピュータ１００の電源がオフされるまで繰り返し実行されるので、ステップＳ１７を繰り返し実行することにより、削除条件（評価値Ｆｔｐ＝０）を満たすアプリケーションソフトウェアは、次々に削除され、削除条件を満たさない、即ち、評価基準Ｓｆｔ以上の評価値Ｆｔｐを有するアプリケーションソフトウェアが最終的に残る。従って、この発明によるプログラムは、外部から入力された目的に合致しないアプリケーションソフトウェアを個別（または非同期）に淘汰する機能を有する。
【０１４３】
なお、図２および図３に示すフローチャートのステップＳ７においては、アプリケーションソフトウェアＡＳｐの実行命令数が実行可能な命令数ＮＥＸＣに達したか否かによってアプリケーションソフトウェアＡＳｐの実行が完了したか否かを判定すると説明したが、この発明においては、これに限らず、アプリケーションソフトウェアＡＳｐの実行命令数が実行可能な命令数ＮＥＸＣに達していなくても、アプリケーションソフトウェアＡＳｐの全ての命令が実行されていれば、アプリケーションソフトウェアＡＳｐの実行が完了したと判定するようにしてもよい。
【０１４４】
図１４は、この発明によるプログラムの構成を示す機能ブロック図である。この発明によるプログラム２００は、受付手段２０１と、実行手段２０２と、記憶手段２０３と、評価手段２０４と、進化手段２０５と、削除手段２０６と、促進手段２０７とを備える。
【０１４５】
受付手段２０１は、図１に示すキーボード１０１によって構成され、図２に示すステップＳ２において評価基準Ｓｆｔを外部から受け、その受けた評価基準Ｓｆｔを評価手段２０４へ出力する。
【０１４６】
実行手段２０２は、図１に示すＣＰＵ１０２によって構成され、図２に示すステップＳ４，Ｓ５，Ｓ６，Ｓ７，Ｓ１１〜Ｓ１４，Ｓ１８〜Ｓ２３を実行する。そして、実行手段２０２は、ステップＳ７において、読み出したアプリケーションソフトウェアＡＳｐが実行済みであると判定すると、その判定結果を評価手段２０４へ出力する。また、実行手段２０２は、ステップＳ１３において、アプリケーションソフトウェアＡＳｐの実行が完了していないと判定すると、その判定結果を促進手段２０７へ出力する。更に、実行手段２０２は、ステップＳ１４またはステップＳ１５において計算した評価値Ｆｔｐを評価手段２０４へ出力する。更に、実行手段２０２は、記憶手段２０３に格納された複数のアプリケーションソフトウェアを参照しながら、ステップＳ２０を実行する。
【０１４７】
記億手段２０３は、図１に示すＲＡＭ１０３によって構成され、ｎ個のアプリケーションソフトウェアＡＳ１〜ＡＳｎ、状態図ＳＴ１〜ＳＴ６および削除リストＳＬ１〜ＳＴ３等を記憶する。
【０１４８】
評価手段２０４は、図１に示すＣＰＵ１０２によって構成され、図２に示すステップＳ３，Ｓ８，Ｓ９，Ｓ１６を実行する。そして、評価手段２０４は、受付手段２０１から評価基準Ｓｆｔを受ける（ステップＳ３参照）。また、評価手段２０４は、アプリケーションソフトウェアＡＳｐが実行済みである旨の判定結果を実行手段２０２から受けると、アプリケーションソフトウェアＡＳｐの評価値Ｆｔｐを記憶手段２０３から読み出し（ステップＳ８参照）、その読み出した評価値Ｆｔｐを評価基準Ｓｆｔと比較する（ステップＳ９参照）。そして、評価手段２０４は、ステップＳ９において、評価値Ｆｔｐが評価基準Ｓｆｔ以上であると判定したとき、その判定結果を進化手段２０５へ出力する。また、評価手段２０４は、ステップＳ９において、評価値Ｆｔｐが評価基準Ｓｆｔ以上でないと判定したとき、その判定結果を実行手段２０２へ出力する。更に、評価手段２０４は、ステップＳ１６において、実行手段２０２から評価値Ｆｔｐを受け、その受けた評価値Ｆｔｐに基づいて、上述した方法によってｍ個のアプリケーションソフトウェアＡＳ１〜ＡＳｍの削除順序を変更する。そして、評価手段２０４は、削除順序を変更すると、削除順序の変更が終了した旨を削除手段２０６へ出力する。
【０１４９】
進化手段２０５は、図１に示すＣＰＵ１０２によって構成され、図２に示すステップＳ１０を実行する。進化手段２０５は、評価値Ｆｔｐが評価基準Ｓｆｔ以上である旨の判定結果を評価手段２０４から受けると、アプリケーションソフトウェアＡＳｐからアプリケーションソフトウェアＡＳｎ＋１を生成することにより、アプリケーションソフトウェアＡＳｐを記憶手段２０３において進化させる。
【０１５０】
削除手段２０６は、図１に示すＣＰＵ１０２によって構成され、図２に示すステップＳ１７を実行する。削除手段２０６は、削除順序の変更が終了した旨を評価手段２０４から受けると、削除条件を満たすアプリケーションソフトウェアを記憶手段２０３に格納された複数のアプリケーションソフトウェアから検出し、その検出したアプリケーションソフトウェアを削除する。
【０１５１】
促進手段２０７は、図１に示すＣＰＵ１０２によって構成され、図２に示すステップＳ１５を実行する。促進手段２０７は、アプリケーションソフトウェアＡＳｐの実行が完了していない旨の判定結果を実行手段２０２から受けると、評価値Ｆｔｐに“０”を設定し、“０”からなる評価値Ｆｔｐを記憶手段２０３に格納する。
【０１５２】
従って、受付手段２０１、実行手段２０２、評価手段２０４、進化手段２０５、削除手段２０６および促進手段２０７は、全体で図２および図３に示すフローチャートを実行し、ハングアップを回避しながら外部から入力された目的に合致したアプリケーションソフトウェアを生成する。
【０１５３】
そして、実行手段２０２、評価手段２０４、進化手段２０５、削除手段２０６および促進手段２０７は、全体で図２および図３に示すステップＳ１，Ｓ３〜Ｓ２３を実行し、図１に示すＣＰＵ１０２によって構成されるので、ハングアップを回避しながら外部から入力された目的に合致したアプリケーションソフトウェアを生成する「中央演算処理装置」を構成する。
【０１５４】
図１５から図１７は、それぞれ、この発明によるプログラムによって生成されたアプリケーションソフトウェアの第１から第３の例を示す図である。なお、図１５から図１７に示すアプリケーションソフトウェアは、図４に示すアプリケーションソフトウェアから出発して、この発明によるプログラムを実行することにより生成された実験結果である。
【０１５５】
図１５に示すアプリケーションソフトウェアは、１２２８２回のアプリケーションソフトウェアの実行命令によって生成されたものであり、“１０”の評価値Ｆｔｐ（＝ｆｉｔｎｅｓｓ）を有する。図１５に示すアプリケーションソフトウェアにおいては、配列［ｎｏｐ０，ｎｏｐ０，ｎｏｐ０，ｎｏｐ０］のうちの配列［ｎｏｐ０，ｎｏｐ０］と相補な配列［ｎｏｐ１，ｎｏｐ１］がｊｍｐ０命令の次に配置されているので、２１６６８番地まで実行された後は、配列［ｎｏｐ０，ｎｏｐ０，ｎｏｐ０，ｎｏｐ０］→ｊｍｐ０→配列［ｎｏｐ１，ｎｏｐ１］のループを繰り返し実行する。
【０１５６】
また、図１６に示すアプリケーションソフトウェアは、１２２８２回のアプリケーションソフトウェアの実行によって生成されたものであり、“５”の評価値Ｆｔｐ（＝ｆｉｔｎｅｓｓ）を有する。図１６に示すアプリケーションソフトウェアも、図１５に示すアプリケーションソフトウェアと同じループ機能を有する。
【０１５７】
更に、図１７に示すアプリケーションソフトウェアは、実行が途中で停止されたものであり、“０”の評価値Ｆｔｐ（＝ｆｉｔｎｅｓｓ）を有する。
【０１５８】
この場合、図１５に示すアプリケーションソフトウェアは、図４に示すアプリケーションソフトウェアの評価値Ｆｔｐ＝５よりも大きい評価値Ｆｔｐ＝１０を有しており、進化処理（図２にステップＳ１０参照）において「優勢」によって生成されたものである。
【０１５９】
また、図１６に示すアプリケーションソフトウェアは、図４に示すアプリケーションソフトウェアの評価値Ｆｔｐ＝５と同じ評価値Ｆｔｐ＝５を有しており、進化処理（図２にステップＳ１０参照）において「複製」によって生成されたものである。
【０１６０】
更に、図１７に示すアプリケーションソフトウェアは、図４に示すアプリケーションソフトウェアの評価値Ｆｔｐ＝５よりも小さい評価値Ｆｔｐ＝０を有しており、進化処理（図２にステップＳ１０参照）において「劣勢」によって生成されたものである。
【０１６１】
このように、この発明によるプログラムの実行によって新しいアプリケーションソフトウェアが生成されるとともに、その新しいアプリケーションソフトウェアの生成は、「優勢」、「複製」および「劣勢」のいずれかによって行なわれることを実験的に確認できた。
【０１６２】
なお、上記においては、アプリケーションソフトウェアＡＳｐから１個のアプリケーションソフトウェアＡＳｎ＋１を新たに生成すると説明したが、この発明においては、これに限らず、図２に示すステップＳ１１においては、アプリケーションソフトウェアＡＳｐから２個以上のアプリケーションソフトウェアが新たに生成される場合もあり、一般的には、アプリケーションソフトウェアＡＳｐから１個以上のアプリケーションソフトウェアが生成される。
【０１６３】
また、上記においては、アプリケーションソフトウェアＡＳｐの進化処理は、アプリケーションソフトウェアＡＳｐが１回実行され、その後、アプリケーションソフトウェアＡＳｐが２回目に実行される前に行なわれると説明したが、この発明においては、これに限らず、アプリケーションソフトウェアＡＳｐの進化処理は、アプリケーションソフトウェアＡＳｐの１回目の実行が完了した直後に行なわれてもよい。
【０１６４】
更に、上記においては、アプリケーションソフトウェアＡＳｐの個別評価（または非同期評価）は、アプリケーションソフトウェアＡＳｐが１回実行され、その後、アプリケーションソフトウェアＡＳｐが２回目に実行される前に行なわれると説明したが、この発明においては、これに限らず、アプリケーションソフトウェアＡＳｐの個別評価（または非同期評価）は、アプリケーションソフトウェアＡＳｐの１回目の実行が完了した直後に行なわれてもよい。
【０１６５】
更に、上記においては、アプリケーションソフトウェアの削除処理は、１個のアプリケーションソフトの実行が終了した後に行なわれると説明したが、この発明においては、これに限らず、アプリケーションソフトウェアの削除処理は、１個のアプリケーションソフトの実行が開始される前に行なわれてもよい。
【０１６６】
更に、上記においては、削除順序の変更は、１個のアプリケーションソフトの実行が終了した後に行なわれると説明したが、この発明においては、これに限らず、削除順序の変更は、１個のアプリケーションソフトの実行が開始される前に行なわれてもよく、任意のタイミングで行なわれてもよい。
【０１６７】
更に、上記においては、１個のアプリケーションソフトウェアを次々に進化させて目的に合致するアプリケーションソフトウェアを生成すると説明したが、この発明においては、これに限らず、複数のアプリケーションソフトウェアを次々に進化させて目的に合致するアプリケーションソフトウェアを生成してもよく、一般的には、ｎ個のアプリケーションソフトウェアを次々に進化させて目的に合致するアプリケーションソフトウェアを生成してもよい。
【０１６８】
更に、上記においては、一度実行された評価値Ｆｔｐが“０”であるアプリケーションソフトウェアを削除すると説明したが、この発明においては、これに限らず、削除条件は、「一度実行された評価値Ｆｔｐが“０”であること」以外の条件に設定されてもよい。
【０１６９】
更に、この発明においては、（ｉ）一度実行された評価値Ｆｔｐが“０”であること、（ｉｉ）削除順番が最も早い、の２つの削除条件のうち、少なくとも１つの削除条件を満たす場合に、アプリケーションソフトウェアを削除するようにしてもよい。
【０１７０】
更に、上記においては、１個の評価基準Ｓｆｔをコンピュータ１００に入力し、その入力した評価基準Ｓｆｔを満たすアプリケーションソフトウェアを生成すると説明したが、この発明においては、これに限らず、コンピュータ１００に入力する評価基準Ｓｆｔを順次変更して異なる目的に合致したアプリケーションソフトウェアを順次生成するようにしてもよい。
【０１７１】
この発明の実施の形態によれば、この発明によるプログラムは、１個以上のアプリケーションソフトウェアの個別評価（または非同期評価）を行なうとともに、アプリケーションソフトウェアが正常に終了しない場合でも評価値を設定し、評価基準以上の評価値を有するアプリケーションソフトウェアを進化させるので、ハングアップを回避して外部から入力された目的に合致したアプリケーションソフトウェアを生成できる。
【０１７２】
そして、この発明によるプログラムは、宇宙空間および海底等の電源のオフによってのみハングアップ状態から抜け出すことができる環境において使用される。宇宙空間では、宇宙線の影響によってビット反転が生じ、アプリケーションソフトウェアがハングアップすることがあるが、機械語によって記述された基本ソフトウェア（＝ＯＳ）である、この発明によるプログラムをＣＰＵに灼き付け、そのＣＰＵに各種のアプリケーションソフトウェアを実行させることにより、ある１個のアプリケーションソフトウェアにおいて宇宙線によってビット反転が生じても、新しいアプリケーションソフトウェアが次々に生成されるので、目的に合致したアプリケーションソフトウェアを宇宙船に搭載されたコンピュータで生成できる。海底を航行する船に搭載されたコンピュータにおいても同様である。
【０１７３】
なお、この発明において、「ハングアップ」とは、コンピュータでプログラムの暴走などのために入力を一切受け付けず、コンピュータが作動も機能もしなくなる状態を言う。より具体的には、「ハングアップ」とは、コンピュータが停止し、キーボードおよびマウスからの入力を受付けなくなることを言う。
【０１７４】
そして、ハングアップ状態を作り出すものには、次のものがある。
【０１７５】
（１）命令を実行しても終了しない。
【０１７６】
（２）無限ループに入る。
【０１７７】
（３）プログラムが暴走する。
【０１７８】
（４）デッドロックが生じる。
【０１７９】
（１）の具体例は、周辺機器のトラブルおよびファイル破損等である。また、（２）の具体例は、必要なデータが得られず、次のステップへ進めないことである。（３）の具体例は、制限以上の文字数を入力する、および熱暴走等の理由により、実行アドレスが異なる値になり、設計されたように動作しなくなることである。（４）の具体例は、資源ａを占有する処理Ａと、資源ｂを占有する処理Ｂとが並列に実行されており、Ａが次の処理にｂを、Ｂが次の処理にａを利用したい場合、ＡとＢとは互いに相手の資源を解放するのを待ってしまい、どちらも処理が停止しまうことである。
【０１８０】
また、この発明において、「ＯＳ」とは、コンピュータでソフトウェアの実行を管理する基本的なプログラムを言う。より具体的には、「ＯＳ」とは、キーボード入力および画面出力と言った入出力機能、ディスクおよびメモリの管理等の多くのアプリケーションソフトから共通して利用される基本的な機能を提供し、コンピュータシステム全体を管理するソフトウェアを言う。
【０１８１】
更に、この発明において、「機械語」とは、コンピュータが直接解読して実行できる命令語からなる言語を言う。
【０１８２】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した実施の形態の説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【産業上の利用可能性】
【０１８３】
この発明は、ハングアップを回避しながら目的に合致したアプリケーションソフトウェアの生成をコンピュータに実行させるためのプログラムに適用される。また、この発明は、ハングアップを回避しながら目的に合致したアプリケーションソフトウェアを生成可能な中央演算処理装置に適用される。
【図面の簡単な説明】
【０１８４】
【図１】この発明によるプログラムが実行されるコンピュータのハードウェア構成を示す概略図である。
【図２】この発明の実施の形態によるコンピュータに実行させるためのプログラムを示す第１のフローチャートである。
【図３】この発明の実施の形態によるコンピュータに実行させるためのプログラムを示す第２のフローチャートである。
【図４】１個のアプリケーションソフトウェアの例を示す図である。
【図５】図１に示すＲＡＭに格納されたアプリケーションソフトウェアの実行状態を示す状態図である。
【図６】図１に示すＲＡＭに格納されたアプリケーションソフトウェアの実行状態を示す状態図の第１の例である。
【図７】図１に示すＲＡＭに格納されたアプリケーションソフトウェアの実行状態を示す状態図の第２の例を示す図である。
【図８】図１に示すＲＡＭに格納されたアプリケーションソフトウェアの実行状態を示す状態図の第３の例を示す図である。
【図９】図１に示すＲＡＭに格納されたアプリケーションソフトウェアの実行状態を示す状態図の第４の例を示す図である。
【図１０】図１に示すＲＡＭに格納されたアプリケーションソフトウェアの実行状態を示す状態図の第５の例を示す図である。
【図１１】図１に示すＲＡＭに格納されたアプリケーションソフトウェアの実行状態を示す状態図の第６の例を示す図である。
【図１２】図６に示す状態図から図１１に示す状態図への移行を示す模式図である。
【図１３】削除順序を変更する方法を説明するための図である。
【図１４】この発明によるプログラムの構成を示す機能ブロック図である。
【図１５】この発明によるプログラムによって生成されたアプリケーションソフトウェアの第１の例を示す図である。
【図１６】この発明によるプログラムによって生成されたアプリケーションソフトウェアの第２の例を示す図である。
【図１７】この発明によるプログラムによって生成されたアプリケーションソフトウェアの第３の例を示す図である。
【符号の説明】
【０１８５】
１００  コンピュータ、１０１  キーボード、１０２  ＣＰＵ、１０３  ＲＡＭ、１０４  ＣＲＴディスプレイ、２００  プログラム、２０１  受付手段、２０２  実行手段、２０３  記億手段、２０４  評価手段、２０５  進化手段、２０６  削除手段、２０７  促進手段、ＢＳ  バス、ＳＴ，ＳＴ１〜ＳＴ６  状態図、ＳＬ１〜ＳＬ３  削除リスト。
【図１】
2007265065.tif 000003
【図２】
2007265065.tif 000004
【図３】
2007265065.tif 000005
【図４】
2007265065.tif 000006
【図５】
2007265065.tif 000007
【図６】
2007265065.tif 000008
【図７】
2007265065.tif 000009
【図８】
2007265065.tif 000010
【図９】
2007265065.tif 000011
【図１０】
2007265065.tif 000012
【図１１】
2007265065.tif 000013
【図１２】
2007265065.tif 000014
【図１３】
2007265065.tif 000015
【図１４】
2007265065.tif 000016
【図１５】
2007265065.tif 000017
【図１６】
2007265065.tif 000018
【図１７】
2007265065.tif 000019