パッケージ org.opengion.penguin.math.ga

# クラス 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メソッドではサンプルとして、巡回セールスマン問題を行います。

- ## コンストラクタの概要

  コンストラクタ
  コンストラクタ
  説明
  `HybsGeneticAlgorithm()`

- ## メソッドの概要

  修飾子とタイプ
  メソッド
  説明
  `AbstractHybsGAChromosome`
  `execute()`
  計算の実行。
  `static void`
  `main(String[] args)`
  ここからテスト用mainメソッド。
  `HybsGeneticAlgorithm`
  `setChromosomeClazz(String cc)`
  利用する染色体クラスを指定します。
  `HybsGeneticAlgorithm`
  `setCrossoverRate(double cr)`
  交叉率のセット。
  `HybsGeneticAlgorithm`
  `setElitismRate(double er)`
  エリート主義の割合。
  `HybsGeneticAlgorithm`
  `setGAList(HybsGAObject[] gal)`
  染色体配列のセット。
  `HybsGeneticAlgorithm`
  `setMutationRate(double mr)`
  突然変異率のセット。
  `HybsGeneticAlgorithm`
  `setOptionData(Object obj)`
  染色体クラスにオプションをセットします。
  `HybsGeneticAlgorithm`
  `setPopulationSize(int ps)`
  集団サイズ。
  `HybsGeneticAlgorithm`
  `setTournamentArity(int ta)`
  トーナメントサイズ。

  ### クラスから継承されたメソッド java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## コンストラクタの詳細

  - ### HybsGeneticAlgorithm

    public HybsGeneticAlgorithm()

- ## メソッドの詳細

  - ### execute

    public AbstractHybsGAChromosome execute()
    計算の実行。
    戻り値:
      最適染色体

  - ### setGAList

    public HybsGeneticAlgorithm setGAList(HybsGAObject[] gal)
    染色体配列のセット。
    パラメータ:
      `gal` - 染色体とする配列
    戻り値:
      クラス自身

  - ### setCrossoverRate

    public HybsGeneticAlgorithm setCrossoverRate(double cr)
    交叉率のセット。 交叉率＋突然変異率 ＜ 1.0 となるようにする 初期値は0.8
    パラメータ:
      `cr` - 交叉率
    戻り値:
      クラス自身

  - ### setMutationRate

    public HybsGeneticAlgorithm setMutationRate(double mr)
    突然変異率のセット。 交叉率＋突然変異率 ＜ 1.0 となるようにする 初期値は0.05
    パラメータ:
      `mr` - 突然変異率
    戻り値:
      クラス自身

  - ### setElitismRate

    public HybsGeneticAlgorithm setElitismRate(double er)
    エリート主義の割合。 初期値は0.2
    パラメータ:
      `er` - エリート主義の率
    戻り値:
      クラス自身

  - ### setTournamentArity

    public HybsGeneticAlgorithm setTournamentArity(int ta)
    トーナメントサイズ。 初期値は2
    パラメータ:
      `ta` - トーナメントサイズ
    戻り値:
      クラス自身

  - ### setPopulationSize

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

  - ### setChromosomeClazz

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

  - ### setOptionData

    public HybsGeneticAlgorithm setOptionData(Object obj)
    染色体クラスにオプションをセットします。
    パラメータ:
      `obj` - オプションデータ
    戻り値:
      クラス自身

  - ### main

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