2016-03-29 16 views
-1

私は遺伝的アルゴリズムの基本的な(より多くの序論を)学びました。代入のために、区間0 < = x < = 256のf(x)= sin(x * pi/256)を最大にするxの値を見つける必要があります。Cで遺伝的アルゴリズムのための母集団を生成

フィットネス個人の健康状態をどのように正常化するか、私は人口の生成に少し失われています。本文では、交叉と突然変異を行うために、各個体を8ビットで表現する。例:

189 = 10111101

35 = 00100011

私の質問はこれです:Cを使用して

  1. 、集団を作製するための最良の方法は何ですか?私はそれを見て、私が見つけることができるのはuint8_tを使っていた。私はそれを配列として生成し、整数表現に変換する方法を見つけることを考えています。

  2. フィットネスの正規化はどのような目的ですか?

  3. 遺伝的アルゴリズムを使用したプログラムを作成するのは初めてのことですので、留意すべきアドバイスはありますか?

ありがとうございます。

+0

初期集団はランダムでなければなりません。 –

+0

"間隔0 <= x <= 256"は、 '256 'が範囲外であるため、' uint8_t'の使用を除外します。正当な理由がない限り、自然な大きさの 'int'または' unsigned'を使って作業してください。 –

+0

ランダムな母集団を作成するには、ランダムな母集団を生成するためにrand()を使用し、それを8ビット表現に変換して配列に格納することを考えていました。問題は変換部分です。 – Mog

答えて

0

一般的な方法は母集団をランダムにすることですが、いくつかの予備的な最適化がある場合は、すでに利用可能な結果の周りに母集団を形成することができます。

GAにaltoritmsh(PSO、シミュレーテッドアニーリングなど)が混在している場合、ハイブリッドアルゴリズムを使用することは非常に一般的です。

関連する問題