クラス HybsGeneticAlgorithm

java.lang.Object
org.opengion.penguin.math.ga.HybsGeneticAlgorithm

public class HybsGeneticAlgorithm extends Object
apache.commons.mathを利用した遺伝的アルゴリズム実行クラスです。 0/1ではなくリスト形式の染色体をある程度手軽に利用できるようにしています。 利用する場合は上記パッケージをjava\jre\lib\ext等に配置してください。 交叉率等はsetterで与えられるようにしています。 スケジューリング等を考慮して、交叉方法はOrderedCrossover(順序交叉)としています。 選択方式はトーナメントです。突然変異は遺伝子ランダム入れ替えです。 染色体として与えるものはhybsGAObjectインタフェイスを継承したクラスです。 AbstractListChromosomeを継承したAbstracthybsChromosomeを利用して染色体を作成します。 mainメソッドではサンプルとして、巡回セールスマン問題を行います。
  • コンストラクタの詳細

  • メソッドの詳細

    • execute

      計算の実行。
      戻り値:
      最適染色体
    • setGAList

      染色体配列のセット。
      パラメータ:
      gal - 染色体とする配列
      戻り値:
      クラス自身
    • setCrossoverRate

      交叉率のセット。 交叉率+突然変異率 < 1.0 となるようにする 初期値は0.8
      パラメータ:
      cr - 交叉率
      戻り値:
      クラス自身
    • setMutationRate

      突然変異率のセット。 交叉率+突然変異率 < 1.0 となるようにする 初期値は0.05
      パラメータ:
      mr - 突然変異率
      戻り値:
      クラス自身
    • setElitismRate

      エリート主義の割合。 初期値は0.2
      パラメータ:
      er - エリート主義の率
      戻り値:
      クラス自身
    • setTournamentArity

      トーナメントサイズ。 初期値は2
      パラメータ:
      ta - トーナメントサイズ
      戻り値:
      クラス自身
    • setPopulationSize

      集団サイズ。 染色体のサイズ等によって適度な値を取るべきだが、初期値は100としている。
      パラメータ:
      ps - 集団サイズ
      戻り値:
      クラス自身
    • setChromosomeClazz

      利用する染色体クラスを指定します。 初期値はorg.opengion.fukurou.math.HybsScheduleChromosome
      パラメータ:
      cc - 染色体のクラス名
      戻り値:
      クラス自身
    • setOptionData

      染色体クラスにオプションをセットします。
      パラメータ:
      obj - オプションデータ
      戻り値:
      クラス自身
    • main

      public static void main(String[] args)
      ここからテスト用mainメソッド。
      パラメータ:
      args - ****************************************