上で書いたのはエネルギー関数(評価関数) E の
最小化(評価関数なら普通は最適化=最大化かも)
のアルゴリズムです。
>> T が 0 になれば、最適解になってる。
> divided by zero が気になるのですが、
実際に 0にすると言う意味ではなくて、
T-> 0 の極限で最適解になると言う意味です。
>> 大きくなった場合には、確率 exp(-dE/T) で
上では書いてませんでしたが、 dE はパラメータ
を変化させた場合の E の増分です。
T が大きい(無限大)と、
dE にかかわらず、 確率は 1(=exp(0)) になりますので
基本的にはランダムウォークするけれども、
T が小さくなってくると E が大きくなる方向へは、
移動しにくくなります(0≒exp(-∞))。
で、T が十分に小さくなっていれば、E が最小となるところ
に落ち着くと言う感じです。
T は時間経過とともに徐々に小さくするようにします。
このスケジューリングの仕方は知りません。(^-^;
気になるところ (スコア:1)
2.個体数の確保
適合度って何を基準に出しているのかしらん?処理時間?
あと一つのPCで複数の個体を保持しているのかなぁ。
1PC1個体にして、ネットワーク経由で交配、とか妄想してみたけど違うみたいですね。そうだったら正に「ネットは広大」という事でかなりアレゲなんですが。
Re:気になるところ (スコア:1, 余計なもの)
また個体は1台のPC内に複数保持しないと交配できないため、もちろんそのようになっています。
「ネットワーク越しで交配」というのは本来の意味が失われてしまいます。
なぜならば
Re:気になるところ (スコア:1)
GA っぽいですが、 一つのコンピュータ上で進化するなら、
Simulated Annealing [google.com] が 良いのでは?
実際には、試してみないと分からないでしょうが。
Re:気になるところ (スコア:1)
ですから、「GAよりもSAのほうが良い」というのは奇妙な感じです。
--kwbt
Re:気になるところ (スコア:1)
エネルギー関数が小さくなった場合には確率1 で、
大きくなった場合には、確率 exp(-dE/T) で
新しいパラメータを受理する。
で、徐々に T を小さくする。
T が 0 になれば、最適解になってる。
っていうものじゃないでしょうか?
Re:気になるところ (スコア:0)
divided by zeroが気になるのですが、 逆にdivided by zeroが起きると最適解なのでしょうか?
何も知らない素人考えですが。
Re:気になるところ (スコア:1)
最小化(評価関数なら普通は最適化=最大化かも)
のアルゴリズムです。
>> T が 0 になれば、最適解になってる。
> divided by zero が気になるのですが、
実際に 0にすると言う意味ではなくて、
T-> 0 の極限で最適解になると言う意味です。
>> 大きくなった場合には、確率 exp(-dE/T) で
上では書いてませんでしたが、 dE はパラメータ
を変化させた場合の E の増分です。
T が大きい(無限大)と、
dE にかかわらず、 確率は 1(=exp(0)) になりますので
基本的にはランダムウォークするけれども、
T が小さくなってくると E が大きくなる方向へは、
移動しにくくなります(0≒exp(-∞))。
で、T が十分に小さくなっていれば、E が最小となるところ
に落ち着くと言う感じです。
T は時間経過とともに徐々に小さくするようにします。
このスケジューリングの仕方は知りません。(^-^;