クラス 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

      デフォルトコンストラクター
      変更履歴:
      8.5.3.2 (2023/10/13) JDK21対応。警告: デフォルトのコンストラクタの使用で、コメントが指定されていません
  • メソッドの詳細

    • execute

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

      public void setGAList(HybsGAObject[] gal)
      染色体配列のセット。
      パラメータ:
      gal - 染色体とする配列 // * @return クラス自身
      変更履歴:
      8.5.4.2 (2024/01/12) PMD 7.0.0 LinguisticNaming 対応
    • setCrossoverRate

      public void setCrossoverRate(double cr)
      交叉率のセット。 交叉率+突然変異率 < 1.0 となるようにする 初期値は0.8
      パラメータ:
      cr - 交叉率 // * @return クラス自身
      変更履歴:
      8.5.4.2 (2024/01/12) PMD 7.0.0 LinguisticNaming 対応
    • setMutationRate

      public void setMutationRate(double mr)
      突然変異率のセット。 交叉率+突然変異率 < 1.0 となるようにする 初期値は0.05
      パラメータ:
      mr - 突然変異率 // * @return クラス自身
      変更履歴:
      8.5.4.2 (2024/01/12) PMD 7.0.0 LinguisticNaming 対応
    • setElitismRate

      public void setElitismRate(double er)
      エリート主義の割合。 初期値は0.2
      パラメータ:
      er - エリート主義の率 // * @return クラス自身
      変更履歴:
      8.5.4.2 (2024/01/12) PMD 7.0.0 LinguisticNaming 対応
    • setTournamentArity

      public void setTournamentArity(int ta)
      トーナメントサイズ。 初期値は2
      パラメータ:
      ta - トーナメントサイズ // * @return クラス自身
      変更履歴:
      8.5.4.2 (2024/01/12) PMD 7.0.0 LinguisticNaming 対応
    • setPopulationSize

      public void setPopulationSize(int ps)
      集団サイズ。 染色体のサイズ等によって適度な値を取るべきだが、初期値は100としている。
      パラメータ:
      ps - 集団サイズ // * @return クラス自身
      変更履歴:
      8.5.4.2 (2024/01/12) PMD 7.0.0 LinguisticNaming 対応
    • setChromosomeClazz

      public void setChromosomeClazz(String cc)
      利用する染色体クラスを指定します。 初期値はorg.opengion.fukurou.math.HybsScheduleChromosome
      パラメータ:
      cc - 染色体のクラス名 // * @return クラス自身
      変更履歴:
      8.5.4.2 (2024/01/12) PMD 7.0.0 LinguisticNaming 対応
    • setOptionData

      public void setOptionData(Object obj)
      染色体クラスにオプションをセットします。
      パラメータ:
      obj - オプションデータ // * @return クラス自身
      変更履歴:
      8.5.4.2 (2024/01/12) PMD 7.0.0 LinguisticNaming 対応
    • main

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