GENITORについて

\section{GENITORについて} GENITORは Colorado State University の D.L.Whitley らにより 開発された遺伝的アルゴリズムの実験用ソフトである. 各種の遺伝表現について実験できるが,特にセールスマン巡回問題(TSP)に関する 部分が充実しており,TSP を始め順序問題の取り扱いができる点に特徴がある. ソースコードも公開されている. 以下ではソフトに添付されているマニュアルを参考に利用上の注意について 述べる. なお,GENITORはtarファイル GENITOR.tar を入手できる.

概要

  1. 遺伝子の表現として次の3種のいずれかが選択できるとなっているが, 整数の順序表現以外は使用したことがないので,状況は分からない.

     以下では整数の順序表現のみについて説明する.

  2. 遺伝的操作方式が以下のようにシンプルGAと少し異なる. 最初に集団の全個体を適合値に従ってソートして,最良の個体がトップに来て, 最悪のものが最後になるように適合値の順に並べた後,以下の操作を 所定の回数だけ実行する.

    このように1個体単位に進化させている.

  3. 選択操作はランク方式で行なわれる.

  4. TSPを対象に以下に示すように順序問題に特有な交叉のソフトが豊富に 準備されていて,この種の問題に使用するには最適である. しかし,これらを使用する際はmain関数ファイル main_tsp.c 及び Makefileを 書き換える必要がある. なお当初のソフトは辺再組合せ交叉の適用で作成されている.

  5. プログラムは各種用途への使用を考慮し,コンパクトにつくられ,かつ大域変数 も少ないので,ソフトの追加も容易である.

  6. 利用者が新たにソフトを追加あるいは変更して使用できる. 利用者は下記を作ればよい.

トップに戻る

プログラムの構成

GENITORのソフトは目的ごとに分類してディレクトリーに入れられている. その主なものは下記のとおり
  Genitor/src/ga    ga の基本的な操作のプログラムのソースコード
  Genitor/src/op    TSP 用のオペレータ,即ち,交叉用各種プログラムのソースコード
  Genitor/include/ga  上記用ヘッダーファイル
  Genitor/include/op  同上
  Genitor/Examples/TSP/Recomb/Original ソフトに添付されていた 辺再組合せ交叉の
                                      関係プログラム
  Genitor/Examples/TSP/SampleConfigs/15city 15都市の位置データ
  Genitor/Examples/TSP/SampleConfigs/30city 30都市の位置データ
  Genitor/Examples/TSP/Cycle,Order2,Position,Recomb,Order1,Pmx それぞれの
                    ディレクトリーに各種交叉方式のプログラムが入っている。
                    それぞれには次のものが収納されている  
      main_tsp.c   メインプログラム(方式ごとに異なる)
      eval_tsp.c   評価関数 距離の計算(すべての方式で同じ)
      Makefile     make 用(方式ごとに異なる)
      GenitorINT   コンパイルした結果の実行用プログラム(各方式とも同じ名前)
トップに戻る

利用上の注意

主な事項のみを記す.
  1. プログラムの作成.

  2. コンパイル:まずMakefile を作る必要があるが,これは TSP用を参考に すればよい.つぎにコンパイルは コマンド make で行なわれる.

  3. 実行方法:configuration file を作成して実行する. コマンドラインでオプションを指定できる. コマンドラインオプションとしては20個指定できる. 実行のための入力ファイルは4つ(TSPの場合), 実行結果の出力ファイルは2つある.

トップに戻る

プログラムの作成

提供されるのはアーカイブまたはその圧縮ファイルであるので, つぎのコマンドにより解凍し,アーカイブを展開する.
     uncompress  GENITOR.tar.Z (圧縮ファイルの場合)
     tar xvf  GENITOR.tar
以下のようにプログラムの作成,変更を行う.
  1. main関数の変更:オリジナルはセールスマン巡回問題(TSP)を対象に 作成されているので,取り扱う問題に応じて修正を必要とする.

  2. 評価関数の作成:適合値の計算用.TSPの場合は組み込みのものが 使用できるが,TSP 以外に使用する場合は使用者が作る必要がある.

  3. 交叉関係の選択,作成:TSP に対しては前述のように各種方式のものが 用意されているので,その中から選択すればよい. その他の用途では使用者が作成する必要がある.

  4. 突然変異の作成:突然変異のプログラムは含まれていないので, 使用者が作る必要がある.

  5. その他の作成:グラフィック表示などのプログラムを必要に応じて 作成する.

  6. Makefile の修正:現在のディレクトリーに対応して変更する.

  7. コンパイル:以上が終わればmakeコマンドによりコンパイルを行い, 実行用ファイルを作成する. まずMakefile を作る必要があるが,これは TSP用を参考にすればよい.
    つぎにコンパイルは コマンド make で行なわれる.

トップに戻る

実行

  1. configuration fileの作成:実行に際してプログラムに与えるパラメータ値を 記載したファイルである. パラメータ値はコマンドラインのオプションで与えることもできるが, 少なくとも以下の3つのパラメータ値はこのファイルで指定する必要がある.

    なお,ファイル名は コマンドラインオプション -c で指定する. その他のパラメータ値はあらかじめデフォルト値として与えられているが, それから変える場合はこのファイルか後述のコマンドラインオプションで指定する.
  2. コマンドラインでのパラメータ指定:configuration file よりも コマンドラインのパラメータオプションの方が優先する。

  3. 実行:つぎのコマンドで実行する.

       GenitorINT -c tsp30.config 
       configulation file 名をオプション -c で与えた場合.
     
トップに戻る

コマンドラインオプション

実行時に コマンド GenitorINT のオプションとしてパラメータを設定できるもので あり,20個のオプションが指定できる.以下,その内容を説明する. なお,オプションのところに記載の数値はサンプルを示す.また ( )内の数値は デフォルト値,また( )のないものはデフォルト値がない. マーク* を付したものは絶対必要なものである.
-c file       Config File    オプション設定用ファイル. 
-b 2.0  (2.0) Selection Bias 選択の際のバイアスであり,2のとき最良の個体の
               選ばれる確率は平均のものの2倍となる. 
-d 4500 (0)   Dump Interval  ファイルをダンプする間隔.
-e            Experiments    実験の数.
-f file       Final Populatoin file 最終結果の出力するファイル名.
-g 124  (0)   Current Generation 再スタート時に設定する世代の値.
-i file       Initial Population File  集団の初期化用データ,遺伝子の値と
                    その評価値.
-l 25       * String Length  遺伝子の長さ.
-m 0.0        Mutation  Rate 突然変異の確率.
-n file       Node File      TSPのみ必要ファイル.都市の位置情報 X-Y.
-o file       Dump File      ダンプファイル名.ファイル名には拡張子は不用.
                             dump\_pool,dump\_config の両ファイルを出力.
-p 100      * Pool Size      集団の個体数.
-r 8765       Random Seed    乱数の種,Long Integer.
-s 750        Status Interval 簡単な出力を画面に出す間隔(実行回数).
-t 9000     * Number Trials  実行回数の指定.この値を個体数で割った値が世代数.
   --- 以下は殆んど考慮の必要なし ---
-u Float N    Cut Off
-w Int        NumPOP         sub-population の数.
-x Int        Swap Interval  スワップ間隔.
-y Int        Swap Numbers   スワップするストリングの数.
-z reset/check               reset : 値がすべてゼロとなる.
                             check : デフォルト値に設定する.
トップに戻る

ファイル関係

プログラムの実行のための入力関係ファイルと実行の結果の出力用ファイルには 以下のものがある.
  1. 入力関係

  2. 出力関係

トップに戻る

小野 俊彦 (Toshihiko Ono)