(57)【要約】【課題】  遺伝的アルゴリズム（以後ＧＡと略す〕の手法を用いて、整数係数のＸのｎ次（ｎ≧１なる整数）方程式（Ｆ（Ｘ）＝０）の実数解を全て求めるものである。  ＧＡで定義する染色体は高々有限個の遺伝子で構成されるため、表現できる解も限定され、特に循環小数や無理数が解の場合などは直接、解を生成することも不可能である。またＦ（Ｘ）から無理数等を解にもつ因数の除去方法が課題となる。【解決手段】  整数（≧０）に対応する遺伝子配列を染色体として定義し、解の検索は染色体の値を直接Ｆ（Ｘ）の解候補とするのではなく、その値を基に有理数や無理数形式の複数の解候補を作成する。更に「その１つの解候補に対して、その全ての共役根」を解にもつＦ（Ｘ）の因数候補を作成し、これを基に実数解を検索する。解の判定はＦ（Ｘ）がその因数候補で割り切れるか否かで判断する。因数候補は整数係数のＸのｍ次（ｎ≧ｍなる正の整数）多項式となる。【選択図】  なし【特許請求の範囲】
【請求項１】
遺伝的アルゴリズム（以後ＧＡと略す）の手法を用いた、整数係数のＸのｎ次（ｎ≧１）方程式（Ｆ（Ｘ）＝０）の全ての実数解を求める方法論に関するものである。
以後、説明および表記の便宜上、使用する変数や記号の意味を以下のように約束する。
ａ（≧１なる整数）：Ｆ（Ｘ）の次数ｎ次の項の係数の任意の約数。
ｂ（≧０なる整数）：Ｆ（Ｘ）の次数（ｎ−１）次の項の係数の任意の約数。
ｄ（≧０なる整数）：ＧＡが生成する染色体集合の各染色体の値。
（ａＸ±ｄ）      ：（ａＸ＋ｄ）または（ａＸ−ｄ）を意味する。
（  ）＊＊ｐ      ：（  ）のｐ乗を意味する。
（ｐ√ｄ）        ：ｄのｐ乗根（ｎ≧ｐ）を意味する。（√ｄ）はｄの平方根。
平方根の共役根    ：（√ｄ）、（−√ｄ）の２つの根。
立方根の共役根    ：（３√ｄ）、（３√ｄ）ω、（３√ｄ）ω＊＊２の３つの根。
但しωはＸ＊＊２＋Ｘ＋１＝０の１つの虚根
４乗根の共役根    ：（４√ｄ）、（−４√ｄ）、（４√ｄ）ｉ、（−４√ｄ）ｉの４つの根。
但しｉ＊＊２＝−１
Ｆ（Ｘ）の因数    ：Ｆ（Ｘ）の約数となるＸの多項式。
ＧＡの遺伝子操作によって生成した染色体の値を直接方程式の解候補とするのではなく、染色体の値を基に、検索する解の形式（「有理数」、「有理数＋無理数」および「有理数＋無理数＋…＋無理数」の３つの形式）に対応した複数の解候補を作成し、その解候補を解にもつ整数係数のＸの多項式を作成する。この多項式をＦ（Ｘ）の因数候補とする。
特に無理数を含む形式では、その「全ての共役根］を解にもつ多項式を作成する。
ＧＡの遺伝子操作によって生成した染色体の値を基に作成するＦ（Ｘ）の因数候補を基に、共役根も含めた複数の解を同時に求めるのを特徴とする。
解の判定は、因数候補がＦ（Ｘ）の因数か否かで判断する。
【請求項２】
請求項１で記載した因数候補は、検索する解の形式に応じて、以下のように作成する。
「有理数」のみの形式の解を検索する場合は、ＧＡで生成する整数ｄを基に、
（ａＸ±ｄ）なる形式の２つの因数候補
を作成しＦ（Ｘ）の解を求めるのを特徴とする。
「有理数＋無理数」形式の解を検索する場合は、ＧＡで生成する整数ｄを基に、
（（ａＸ±ｂ）＊＊ｐ±ｄ）なる形式の４つの因数候補
を作成しＦ（Ｘ）の解を求めるのを特徴とする。
但しｐはｎ≧ｐ≧２なる整数とする。
【請求項３】
「有理数＋無理数１＋…＋無理数ｍ」なる形式の解を検索する場合は、
但し無理数１、…、無理数ｍはｐ（４≧ｐ≧２）乗根以下の全て異なる無理数とする。まず無理数の個数ｍに対応して、それぞれ独立した複数の染色体集合を発生させる。
各染色体集合で生成する整数（≧２）ｃ、…、ｄを基に、該当する「べき根」を作成し、
（ｐ√ｃ）、…、（ｑ√ｄ）（但し４≧ｐ、ｑ≧２）
を無理数１、…、無理数ｍに対応させる。
次に各無理数の共役根より、「無理数１の共役根＋…＋無理数ｍの共役根」なる形の無理数和の全ての組み合わせを作成し、これらをＡ、Ｂ、…、Ｃとする。
（ａＸ±ｂ−Ａ）（ａＸ±ｂ−Ｂ）…（ａＸ±ｂ−Ｃ）（但し符号±は同順）
は「無理数１＋…＋無理数ｍ」の全ての共役根を解にもつ整数係数のＸの多項式となり、この因数候補を基にＦ（Ｘ）の解を求めるのを特徴とする。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は、遺伝的アルゴリズムの手法を用いて整数係数のＸのｎ次（ｎ≧１）方程式の全ての実数解を求めるための方法論に関する。
【背景技術】
【０００２】  遺伝的アルゴリズムの応用として、関数の最大・最小値問題など条件を満足する１つの最適解を求める事例が文献（例えば、非特許文献１参照。）等で紹介されている。
【非特許文献１】石田良平・村瀬治比古・小山修平  著  「パソコンで学ぶ遺伝的アルゴリズムの基礎と応用」
【発明の開示】
【発明が解決しようとする課題】
【０００３】  整数係数のＸのｎ次（ｎ≧１なる整数）方程式（Ｆ（Ｘ）＝０）の実数解を求めるにあたり、ＧＡの手法を適用するものである。
ＧＡは染色体に遺伝的な操作を加えることで進化させ、求める解に近づけていく方法であり、求める解を整数や有理数に限定すれば、ＧＡの手法のみで検索することも可能である。しかし方程式の解が無理数等を含む場合は、ＧＡの手法で直接求めようとしても、高々有限個の遺伝子で構成される染色体では無理数を直接生成することは不可能である。【０００４】  また仮に解となる無理数を発見できたとしても、全ての解を求めるためにはＦ（Ｘ）から求めた解を逐次除去することが必要となるが、解が無理数のときは、そのままでは解を正確に除去することが不可能で、結果として全ての実数解を正確に求めることが出来なくなる。この発明はこれらの課題を解決し方程式の全ての実数解を求めるものである。
【課題を解決するための手段】
【０００５】  ＧＡで生成する染色体の値を直接Ｆ（Ｘ）の解候補とするのではなく、染色体の値を基に有理数や無理数形式の複数の解候補を作成する。更にその解候補に対して「全ての共役根」を解にもつＦ（Ｘ）の因数候補を作成し、この因数候補をもとにＦ（Ｘ）の解を求める。
Ｆ（Ｘ）の解が無理数であっても、作成する因数候補は「全ての共役根」を解にもつため整数係数からなるＸの多項式となり、Ｆ（Ｘ）から正確に無理数解を含む因数を除去することが可能である。解であるか否かの判定は、その因数候補がＦ（Ｘ）の約数か否かで判断する。因数候補は、検索する解の形式（「有理数」、「有理数＋無理数」および「有理数＋無理数＋…＋無理数」の３つの形式）に応じて、以下のように作成する。【０００６】  「有理数」のみの形式の解を検索する場合は、ＧＡで生成する整数ｄを基に、
（ａＸ±ｄ）なる形式の２種類の因数候補
を作成しＦ（Ｘ）の解の検索を行う。（ａＸ±ｄ）がＦ（Ｘ）の因数となるとき、
ａＸ±ｄ＝０なる有理数はＦ（Ｘ）＝０の解である。次にその因数を除去した関数を改めてＦ（Ｘ）と定義し、同様の手順を繰り返し同形式の全ての有理数解を検索する。【０００７】  「有理数＋無理数」形式の解を検索する場合は、ＧＡで生成する整数ｄを基に、
（（ａＸ±ｂ）＊＊ｐ±ｄ）（±は順不同）なる形式の４種類の因数候補
を作成しＦ（Ｘ）の解の検索を行う。
前記「０００６」と同様の手順を繰り返し同形式の全ての解を検索する。
この形式の因数の次数は無理数によって異なる。例えば無理数が平方根のときは、因数は整数係数のＸの２次多項式式、立方根の場合はＸの３次多項式式、４乗根の場合はＸの４次多項式式となる。【０００８】  「有理数＋無理数１＋…＋無理数ｍ」なる形式の解を検索する場合は、
但し無理数１、…、無理数ｍはｐ（４≧ｐ≧２）乗根以下の全て異なる無理数とする。
まず無理数の個数ｍに対応して、それぞれ独立した複数の染色体集合を発生させる。
各染色体集合で生成する整数（≧２）ｃ、…、ｄを基に、該当するべき根を作成し、
（ｐ√ｃ）、…、（ｑ√ｄ）（但し４≧ｐ、ｑ≧２）
無理数１、…、無理数ｍに対応させる。【０００９】  次に各無理数の共役根より、「無理数１の共役根＋…＋無理数ｍの共役根」なる形の無理数和の全ての組み合わせを作成し、これらをＡ、Ｂ、…、Ｃとする。
（ａＸ±ｂ−Ａ）（ａＸ±ｂ−Ｂ）…（ａＸ±ｂ−Ｃ）（但し符号±は同順）
は「無理数１＋…＋無理数ｍ」の全ての共役根を解とする整数係数のＸの多項式となり、この因数候補を基にＦ（Ｘ）の解を求めるのを特徴とする。前記「０００６」と同様の手順を繰り返し同形式の全ての解を検索する。
この形式の因数の次数は「全ての共役根」の個数となる。
例えば無理数和が「平方根＋平方根」のときは「±平方根±平方根」（順不同）なる４つの共役根をもつのでＸの４次多項式、「平方根＋立方根」のときはＸの６次多項式、「平方根＋平方根＋平方根」のときはＸの８次多項式、「立方根＋立方根」の場合はＸの９次多項式となる。
【発明の効果】
【００１０】  整数係数のＸのｎ次（ｎ≧１）方程式が整数および有理数以外に無理数解を有する場合でも、上記因数候補はいずれも整数係数のＸの多項式であるため、Ｆ（Ｘ）から正確に解の因数を除去することができ、全ての実数解を順次検索することが可能となる。
また解の形式や無理数の種別（平方根や立方根など）に合わせてＦ（Ｘ）の解を検索するため、求めた解（因数）を下記「数１」、「数２」に示すように整形した形での表示が可能である。但し√２は２の平方根、√３は３の平方根を意味する。
【数１】
Ｆ（Ｘ）＝４Ｘ＊＊４−２０Ｘ＊＊３＋２３Ｘ＊＊２−４Ｘ−２
＝（２Ｘ−１＋√２）（２Ｘ−１−√２）
（Ｘ−２＋√２）（Ｘ−２−√２）
【数２】
Ｆ（Ｘ）＝１６Ｘ＊＊８−３２Ｘ＊＊７−１７６Ｘ＊＊６＋３５２Ｘ＊＊５
＋１６８Ｘ＊＊４−３５２Ｘ＊＊３＋６４Ｘ＊＊２＋３２Ｘ−８
＝（Ｘ＋（√３＋√２））（Ｘ−（√３＋√２））
（Ｘ＋（√３−√２））（Ｘ−（√３−√２））
（２Ｘ−１＋（√３＋√２））（２Ｘ−１−（√３−√２））
（２Ｘ−１＋（√３＋√２））（２Ｘ−１−（√３−√２））
【発明を実施するための最良の形態】
【００１１】  ＧＡの手法に関する知識を前提条件に、以下本発明の実施方法を述べる。
図１の「９行９列の遺伝子配列（例）」を染色体として定義する。
各遺伝子の状態は０か１で、遺伝子の値は遺伝子配列内の位置により、図１及び図２の例で示すように１０進整数に対応付ける。染色体の値は各遺伝子の値の総和とし、この染色体の値を基に検索する解の形式に対応した上記因数候補を作成して、この因数候補をもとに方程式の実数解を求める。【００１２】  染色体の値ｄの評価は因数候補の解ＸをＦ（Ｘ）に代入し、その絶対値をＧＡの適応度関数（ここでは単調減少のシグモイド関数を採用）に代入した値を評価値とする。因数候補が共役根など複数の解を含んでいる場合は、解Ｘとして、実数解の１つを選択する。
因数候補の解ＸがＦ（Ｘ）＝０の実数解に近いほど染色体の評価値は０．５に近づき、Ｆ（Ｘ）＝０のとき評価値は０．５となる（評価値≦０．５）。【００１３】  解の判定は、染色体の評価値が０．５か否かではなく、その因数候補がＦ（Ｘ）の因数か否かで判断する。即ち因数候補がＦ（Ｘ）の約数のとき、共役根を含む因数の全ての解は方程式の解となる。解が決定すると、対象のＦ（Ｘ）からその因数を除去し、次数の下がった関数を新たにＦ（Ｘ）と定義し同様の手順で実数解を順次検索する。
Ｆ（Ｘ）の次数が２次以下の場合は、ＧＡを適用するまでもなく一般的な２次方程式の解法により、実数解を容易に求めることは可能である。【００１４】  ＧＡでは世代交代（評価値の高い染色体を優先的に選択し、これを親として子孫を作る）を繰り返しながら解となる染色体を生成するが、染色体集合の要素数や世代交代数が少な過ぎると解の生成にも失敗する。本発明では
染色体集合の要素数＝２００個
世代交代数        ＝２００回
交叉確率          ＝０．５  （５０％）
突然変異率        ＝０．０５（  ５％）
と指定している。
また２００回の世代交代で「検索対象とした形式」の解が検索できない場合、「該当形式の解は存在しない」と判断している。
【図面の簡単な説明】
【００１５】
【図１】  ９行９列の遺伝子配列で構成される染色体（表現型）
【図２】  染色体の値が２５６のときの遺伝子の状態（遺伝子型）
【符号の説明】
【００１６】１  染色体を構成する遺伝子を表している。各遺伝子は０か１の状態をとり、遺伝子の値は遺伝子の状態と染色体内部の位置（行列）によって決定する。
２  ９行９列の遺伝子配列で構成される１個の染色体を表している。染色体の値は染色体を構成する全ての遺伝子の値の総和とする。
３  遺伝子型へマッピングされたときの各遺伝子の状態を表している。各遺伝子の状態は０か１であ
４  この遺伝子は状態が１で、遺伝子の位置が２行７列（列は１００の位、行は２の数）であるので、この遺伝子の値は１０進数の２００を表している。
５  この遺伝子は状態が１で、遺伝子の位置が５行８列（列は１０の位、行は５の数）であるので、この遺伝子の値は１０進数の５０を表している。
６  この遺伝子は状態が１で、遺伝子の位置が６行９列（列は１の位、行は６の数）であるので、この遺伝子の値は１０進数の６を表している。
７  この染色体の値は符号「４」、「５」、「６」の遺伝子の値の総和で２５６となる。
【図１】
2005092836.tif 000002
【図２】
2005092836.tif 000003