ルーレットホイール選択を使用した遺伝的アルゴリズム

JNMN:

私が取り組んでいる遺伝的アルゴリズムに対して異なる選択方法を作成しようとしていますが、すべての選択方法で遭遇する1つの問題は、各ノードの適合度が異なる必要があることです。私のフィットネス計算機は非常に基本的であり、いくつかの同一のフィットネスが得られるため、これは私にとって問題です

public static Map<String, Double> calculateRouletteSelection(Map<String, Double> population) {
        String[] keys = new String[population.size()];
        Double[] values = new Double[population.size()];
        Double[] unsortedValues = new Double[population.size()];
        int index = 0;
        for(Map.Entry<String, Double> mapEntry : population.entrySet()) {
            keys[index] = mapEntry.getKey();
            values[index] = mapEntry.getValue();
            unsortedValues[index] = mapEntry.getValue();
            index++;
        }
        Arrays.sort(values);
        ArrayList<Integer> numbers = new ArrayList<>();
        while(numbers.size() < values.length/2) {
            int random = rnd.nextInt(values.length);
            if (!numbers.contains(random)) {
                numbers.add(random);
            }
        }

        HashMap<String, Double> finalHashMap = new HashMap<>();
        for(int i = 0; i<numbers.size(); i++) {
            for(int j = 0; j<values.length; j++) {
                if(values[numbers.get(i)] == unsortedValues[j]) {
                    finalHashMap.put(keys[j], unsortedValues[j]);
                }
            }
        }

        return finalHashMap;

    } 

私のすべての異なる選択方法の90%は同じなので、1つで解決できるかどうかは、すべての問題を解決できると確信しています。私が間違っていることに何か助けていただければ幸いです

編集:私は起こっていることの一般的な振る舞いを投稿するつもりであることがわかったので、基本的にメソッドはHashMap <>を受け取り、値に基づいて値をソートし、半分ソートされた値をランダムに選択して、これらを新しいHashMap <>に追加しますそれらの対応する染色体。

皿:

コレクションクラスを使用する方がはるかに良いでしょう。

List<Map.Entry<String, Double>> sorted = new ArrayList<>(population.entrySet());
// sort by fitness
Collections.sort(sorted, Comparator.comparing(Map.Entry::getValue));

Set<Integer> usedIndices = new HashSet<>(); // keep track of used indices
Map<String, Double> result = new HashMap<>();
while (result.size() < sorted.size()/2) {
    int index = rnd.nextInt(sorted.size());
    if (!usedIndices.add(index)) {
        continue; // was already used
    }
    Map.Entry<String,Double> survivor = sorted.get(index);
    result.put(survivor.getKey(), survivor.getValue());
}
return result;

しかし、Sergeyが述べたように、これがアルゴリズムに必要なものだとは思いません。あなたはより高いフィットネスを持つ個人を支持する必要があります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Golangを使用した遺伝的アルゴリズムでのルーレットホイールの選択

分類Dev

遺伝的アルゴリズムでのフィットネス比例選択(ルーレットホイール)の確率リストを生成します

分類Dev

遺伝的アルゴリズムを使用して、最適なネットワークモデルとパラメーターを選択できますか?

分類Dev

遺伝的アルゴリズムトーナメントの選択

分類Dev

非遺伝的ケースのMatlab遺伝的アルゴリズム

分類Dev

遺伝的アルゴリズムでブリーダーを選ぶ

分類Dev

遺伝的アルゴリズム:ランガーマンの機能とトーナメントの選択

分類Dev

mlr遺伝的アルゴリズムの初期集団の選択

分類Dev

Matlabの遺伝的アルゴリズムを使用した画像再構成アルゴリズムの最適化

分類Dev

訓練されたニューラルネットワークの混合-遺伝的アルゴリズム

分類Dev

ニューラルネットワークはどのように遺伝的アルゴリズムとバックプロパゲーションを使用してゲームをプレイしますか?

分類Dev

遺伝的アルゴリズム:大きな解空間を解くためのパラメーターを選択するための経験則

分類Dev

ランダムなサブセットを選択するための遺伝的アルゴリズムの実装

分類Dev

遺伝的アルゴリズム-親の選択とクロスオーバーの確率

分類Dev

選択アルゴリズムを使用したコンパイル時の再帰的ソート

分類Dev

univeristyタイムテーブルの遺伝的アルゴリズム

分類Dev

データセット機能で遺伝的アルゴリズムを変更する方法

分類Dev

Java:遺伝的アルゴリズムのクロスオーバーのために2つのダブルビットストリングを混合する

分類Dev

遺伝的アルゴリズム-収束

分類Dev

DEAP遺伝的アルゴリズム

分類Dev

Rの遺伝的アルゴリズム

分類Dev

遺伝的アルゴリズムにおけるトーナメント評価

分類Dev

遺伝的アルゴリズムとPYTHONの多目的最適化:使用するライブラリ/ツール?

分類Dev

遺伝的アルゴリズムとPYTHONの多目的最適化:使用するライブラリ/ツール?

分類Dev

MATLABの最適化ツールボックスで遺伝的アルゴリズムを使用して多目的関数を解く

分類Dev

遺伝的アルゴリズム-部分的にマッピングされたクロスオーバー-Java

分類Dev

Aforge遺伝的アルゴリズムライブラリを使用して、遺伝子を兼ねる染色体を実装しますか?

分類Dev

遺伝的アルゴリズムに部分的に一致したクロスオーバーを使用する場合の重複の処理

分類Dev

遺伝的アルゴリズムはダート/フラッターで奇妙な結果を吐き出します

Related 関連記事

  1. 1

    Golangを使用した遺伝的アルゴリズムでのルーレットホイールの選択

  2. 2

    遺伝的アルゴリズムでのフィットネス比例選択(ルーレットホイール)の確率リストを生成します

  3. 3

    遺伝的アルゴリズムを使用して、最適なネットワークモデルとパラメーターを選択できますか?

  4. 4

    遺伝的アルゴリズムトーナメントの選択

  5. 5

    非遺伝的ケースのMatlab遺伝的アルゴリズム

  6. 6

    遺伝的アルゴリズムでブリーダーを選ぶ

  7. 7

    遺伝的アルゴリズム:ランガーマンの機能とトーナメントの選択

  8. 8

    mlr遺伝的アルゴリズムの初期集団の選択

  9. 9

    Matlabの遺伝的アルゴリズムを使用した画像再構成アルゴリズムの最適化

  10. 10

    訓練されたニューラルネットワークの混合-遺伝的アルゴリズム

  11. 11

    ニューラルネットワークはどのように遺伝的アルゴリズムとバックプロパゲーションを使用してゲームをプレイしますか?

  12. 12

    遺伝的アルゴリズム:大きな解空間を解くためのパラメーターを選択するための経験則

  13. 13

    ランダムなサブセットを選択するための遺伝的アルゴリズムの実装

  14. 14

    遺伝的アルゴリズム-親の選択とクロスオーバーの確率

  15. 15

    選択アルゴリズムを使用したコンパイル時の再帰的ソート

  16. 16

    univeristyタイムテーブルの遺伝的アルゴリズム

  17. 17

    データセット機能で遺伝的アルゴリズムを変更する方法

  18. 18

    Java:遺伝的アルゴリズムのクロスオーバーのために2つのダブルビットストリングを混合する

  19. 19

    遺伝的アルゴリズム-収束

  20. 20

    DEAP遺伝的アルゴリズム

  21. 21

    Rの遺伝的アルゴリズム

  22. 22

    遺伝的アルゴリズムにおけるトーナメント評価

  23. 23

    遺伝的アルゴリズムとPYTHONの多目的最適化:使用するライブラリ/ツール?

  24. 24

    遺伝的アルゴリズムとPYTHONの多目的最適化:使用するライブラリ/ツール?

  25. 25

    MATLABの最適化ツールボックスで遺伝的アルゴリズムを使用して多目的関数を解く

  26. 26

    遺伝的アルゴリズム-部分的にマッピングされたクロスオーバー-Java

  27. 27

    Aforge遺伝的アルゴリズムライブラリを使用して、遺伝子を兼ねる染色体を実装しますか?

  28. 28

    遺伝的アルゴリズムに部分的に一致したクロスオーバーを使用する場合の重複の処理

  29. 29

    遺伝的アルゴリズムはダート/フラッターで奇妙な結果を吐き出します

ホットタグ

アーカイブ