ページ 11

遺伝アルゴリズム

Posted: 2013年4月30日(火) 20:06
by ひらた
関数f(x)=xsin(10πx)+2の閉区間[-1,2]で、最大にするxを遺伝的アルゴリズムの考え方で求めよ。
という問題を教えてください。
考え方は、www.sol.hiroshima-u.ac.jp/jikken1/ga_text_H14B.pdf で理解できました。
でもこれをプログラミングするとなると、難しくてできません。
詳しく実際のプログラムを元に教えてください。言語はC言語です。

質問の丸投げは禁止されてることは知っています。ただ、締め切りが近くC言語の知識が乏しい為、私としてはプログラムを見て学習したいと思っています。よろしくおねがいします。

Re: 遺伝アルゴリズム

Posted: 2013年4月30日(火) 23:30
by たいちう
> ただ、締め切りが近くC言語の知識が乏しい為、
> 私としてはプログラムを見て学習したいと思っています。

締め切り間近にプログラムをもらっても、
その後に学習する人の居た試しがないから禁止されています。
本当に学習する気があるならば、連休中ある程度は付き合えます。


【提案1】
「遺伝的アルゴリズムによる関数最適化」は抽象的な概念が多いので、
もっと具体的なテーマである「巡回セールスマン問題」や「ナップサック問題」を解き、
遺伝的アルゴリズムに慣れてみてはどうでしょうか。
「関数最適化」でも同じ考えを使える部分も多く、お勧めです。
Web上にサンプルは沢山見つかるでしょう。


【提案2】
そうは言っても課題以外に割く余力はないというならば仕方ないです。
「関数最適化」に正面から取り組みましょう。【提案1】よりも近道ですが、その分、急勾配です。

まず、参考サイトの「手順1 (初期化) ランダムな染色体をもつ個体をN個生成して,
初期世代の個体群を設定する.」から始めましょう。まずこれを実装して下さい。