0

遺伝的アルゴリズムがどのように機能するかを理解しようとしています。何かを書いてみることで学んだことはすべてそうですが、私の知識は非常に限られており、これが正しいかどうか確信が持てません。

このアルゴリズムの目的は、人口の半分がすでに感染している場合、群れの半分が病気に感染するのにどれくらいの時間がかかるかを調べることです. これは私の頭の中で思いついた例にすぎないので、これが実行可能な例であるかどうかはわかりません.

どうすれば自分の知識を向上させることができるかについて、いくつかのフィードバックをいただければ幸いです。

コードは次のとおりです。

import random

def disease():
    herd = []
    generations = 0
    pos = 0
    for x in range(100):
        herd.append(random.choice('01'))
    print herd
    same = all(x == herd[0] for x in herd)
    while same == False:
        same = all(x == herd[0] for x in herd)
        for animal in herd:
            try:
                if pos != 0:
                    after = herd[pos+1]
                    before = herd[pos-1]
                    if after == before and after == '1' and before == '1' and animal == '0':
                        print "infection at", pos
                        herd[pos] = '1'
            #print herd
                pos += 1
            except IndexError:
                pass
        pos = 0
        generations += 1
        random.shuffle(herd)
        #print herd
    print "Took",generations,"generations to infect all members of herd."
if __name__ == "__main__":
    disease()
4

1 に答える 1

2

あなたのコードは を実装していませんGeneticAlgorithm。必要に応じて独自のライブラリを実装する前に、まずオープン ソース ライブラリから始めて、それがどのように機能するかを理解することをお勧めします。

遺伝的アルゴリズムを使用するには、次のものが必要です。

1-最小化しようとしている目的関数

2- 目的関数の決定変数をモデル化する染色体表現 (実数値など)。あなたの目標は、目的関数を最小化する最良の染色体を見つけることです

3- 検索を開始する染色体の初期集団 (ランダムである可能性があります)

4- 遺伝的操作、つまり、現在の集団に適用して次の世代に適用する選択、交叉、突然変異

5- 世代の最大数や希望するフィットネス値などの停止基準に達するまで繰り返します

これは、遺伝的アルゴリズムの実装に必要な内容の簡単な説明です。

于 2013-02-09T05:49:19.067 に答える