遺伝的アルゴリズムを教えて下さい

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
C言語&C++で作りたいと思ってます
2デフォルトの名無しさん:2001/02/15(木) 16:22
www1.neweb.ne.jp/wa/kamekame/ga/index.htm
3しょーがないわねー:2001/02/15(木) 18:34
4お父さんでーす:2001/02/15(木) 19:38
int main( void )
{
  int a,b;
  a = 1 ;
  b = 776 ;
  printf("%d たす %d は %d です\n",a,b,a+b) ;
return 0 ;
}
卵子は母親の遺伝子の内の半分、X染色体を提供し、精子は父親の遺伝子の半分のX染色体もしくはY染色体を提供する。
卵子が精子を受け入れることにより母親からの遺伝情報と父親からの遺伝情報が混じり合い、新しい生命体として子供が出来る。

一般的に遺伝情報には優性、劣性があって、優性遺伝情報は劣性遺伝情報をキャンセルして子供に現れる。が、劣性の遺伝情報も消えるわけではないので隔世で劣性の遺伝情報が現れることがある。

いじょ。
6アダルトハンタ:2001/03/04(日) 00:05
>>5
幽々白書に実例が紹介されていますね
7デフォルトの名無しさん:2001/03/04(日) 00:37
マソコの中にアーメソを流し込めばOK.
8デフォルトの名無しさん:2001/03/04(日) 02:14
ぼくはC++でつくりました。
GAの原理さえ知ってりゃわりとかんたんです。
9デフォルトの名無しさん:2001/03/04(日) 03:06
>1
卵との同期処理を忘れると動きません!
10:2001/03/04(日) 03:06
1じゃなくて >>7 の間違い
11デフォルトの名無しさん:2001/03/04(日) 03:16
>>9
こっそりと同期させられてしまった経験あり
あのときはあせったね
12デフォルトの名無しさん:2001/03/04(日) 06:34
>>11
プロ技板にようこそ>キムタク

しっかしこの手のスレはなんでこうなるんだろ
興味あんのに・・・・・AIスレといいさ
13デフォルトの名無しさん:2001/03/04(日) 10:36
1に自分で調べようと言う気がないから。
14デフォルトの名無しさん:2001/03/04(日) 14:02
どうもAIスレと同じ奴が立てているような気がするのは俺だけか?
スレを立て逃げスンナ!
15デフォルトの名無しさん:2001/03/04(日) 17:25
もしかして、黒衣じゃないか?
16デフォルトの名無しさん:2001/03/04(日) 22:01
>>15
中西?
17デフォルトの名無しさん:2001/03/05(月) 20:05
遺伝的アルゴリズムは、本質的には幅優先探索の一種です。
18デフォルトの名無しさん:2001/03/05(月) 22:37
>>17
ちゃうよ。オペレータの設計によってどうとでもなる。
コツは連続空間をbit operationでジャンプするっちゅう
あたり。だから離散空間への適応はほぼないっす。
結局オペレータの設計いかん。
場合によってはモンテカルロよかまし程度に考えると
いいでしょう。
以前設計したやつは煮詰まると発散するようにした。
けど、それでも問題しだいやね。
ミューテーションに++とか--とかしてもいいんだよ。
遺伝アルゴリズムとか本読まないでチャレンジ
した方がいいと思われる。作ってから読もう。
19SEA:2001/03/05(月) 22:56
20デフォルトの名無しさん:2001/03/05(月) 23:06
優良馬を輩出するための学問ですか?
21五郎:2001/03/05(月) 23:40
>18

むずいなーわけわからん。
ライフゲームみたいなイメージなんだけど?

もっと実用的なってゆうか、よりアプリに近いレベルの話を聞きたい。
22デフォルトの名無しさん:2001/03/05(月) 23:51
>ライフゲームみたいなイメージなんだけど?
それは、セルオートマトンと勘違いしてやしないかい?
23五郎:2001/03/06(火) 01:35
>22
ごめん。セルオートマトンもよくわからない。

18さんの空間とかビットとかジャンプとか離散ってのをみて、なんだかライフゲームが頭に浮かんだだけっす。
なにもしらないしらないしらない。
AIの講義は1回出ただけなんですよ…。先生がつまんなそうだったから。講義する教授が別の人だったら講義出てただろうな。
24デフォルトの名無しさん:2001/03/06(火) 01:47
>>17
戦略のある総当り探索といえる。
25デフォルトの名無しさん:2001/03/06(火) 07:45
幅優先っつーか、ビームサーチそのもの。
2618:2001/03/06(火) 10:01
>>24,25
だってコストすらもってないじゃん。A*なんかの
一般公式にどうあてはめるの?探索空間をツリーでは
なくてどこでもいけるものとしてとらえるのがGAの違いだよ。
だから、GAは解のない所へもとんでいくっしょ。
もともとモンテカルロと大差ないんだから、いつかは
正解にたどり着く確率が100%に限りなく近くなるような
アルゴリズムだよ(収束速度あげたりするとそうでもないけど)
コードはだいたいこんなもん。3分もあれば書ける。
系列1=乱数の初期値
系列2=乱数の初期値
for(;;){
値1=系列1の評価
 値2=系列2の評価
 if( 値1>値2 ){
  値2=遺伝子操作(値1,値2)
}else{
  値1=遺伝子操作(値1,値2)
 }
}
遺伝子操作はmutationとかcrossoverとか
好きなことすればいいよ。これはモデルが
単純過ぎてあんまり収束しないけどね。
27デフォルトの名無しさん:2001/03/06(火) 11:52
GAはTSP(Traveling Salesman Problem)とかよく例に出されるよね。
2824:2001/03/06(火) 13:38
>>26
>だから、GAは解のない所へもとんでいくっしょ。
だから、総当りっていってるんだけど。

コードにPopulationの概念が入ってないぞ。
系列がPopulationのつもりかもしれんが、それなら世代が進まないので
なにを目的としてるのかわからん。系列が更新されないんだから
収束しないのはあたりまえ。
29デフォルトの名無しさん:2001/03/06(火) 13:47
↑「デバッグ音頭」で検索できるぞなもし。
3026:2001/03/06(火) 13:57
総当りかぁ。うーん。
24さんにはごめん。

あ、ごめんコード間違えてた。
系列1=乱数の初期値
系列2=乱数の初期値
for(;;){
 値1=系列1の評価
 値2=系列2の評価
 if( 値1>値2 ){
  系列2=遺伝子操作(系列1,系列2,値1,値2)
 }else{
  系列1=遺伝子操作(系列1,系列2,値1,値2)
 }
}
だね。スマソ。
遺伝子操作は、評価の比率で適当に2つの系列から
新しい系列を生成する関数のつもり。
3125:2001/03/06(火) 14:47
次の手が生成できるという事は枝が存在しているという事を意味しています。
ビームの幅がポピュレーションです。
次の世代へのパスが枝です。
ビームサーチそのものです。

3217:2001/03/06(火) 15:24
>18
有限個の染色体をバラ撒いて、解がありそうな部分を並列的に
探索してるんだから幅優先の一種だとおもうが…
3326:2001/03/06(火) 19:40
>>31
あのさあ、解の展開できるすべてのノードに対するコストと
すでに展開したノードのコストからなる関数をどう扱うかで
いろんな探索はできるのだよね。
枝はあるけど、可能性は全部じゃん。その理屈では全部を
対象とするんだから、1手で求まらないと変じゃない?
んじゃ、もっと聞くけどモンテカルロ法は何サーチなの?(藁
34デフォルトの名無しさん:2001/03/06(火) 22:24
GAは
・確率的探索である
・与えられたコスト関数の最大化問題である
・変数空間の位相構造が比較的自由に決められる
 (離散最適化問題に適用しやすい)

という点から、simulated annealing法(SA)と類比されることが多いです。
多点同時SAという言い方をしている人もいます。

うんちくsage
35デフォルトの名無しさん:2001/03/07(水) 07:05
>>32
その幅優先の一種をビームサーチって言うんだって。

>>33
要するにあんたはビームサーチって聞いた事もないわけね。
それならそれでいいです。さよなら。
36デフォルトの名無しさん:2001/03/08(木) 02:38
GAをこのまえ卒研でつかいました。せんでもいいGUIまで用意して,そのせいで結構時間がかかりました。肝心のGA本体部分はそこまでむずくないっす。なんだか18さんのかきこみるとむずかしくきこえるみたいですけど、そんなことないっす。
37デフォルトの名無しさん:2001/03/08(木) 21:57
32>35
べつに、ビームサーチじゃないとは言ってないよ。18さんが
幅優先じゃないよって言ってるから、それに反応しただけ。
あと、ビームサーチは幅優先というか、
最良(のn個)優先探索の一種だと。(山登り法の一種じゃ?)
38デフォルトの名無しさん:2001/03/08(木) 23:28
シミュレーション板にもあった。
まー、あっちは閑古鳥が鳴いてて役に立つかどうかは・・・

http://mentai.2ch.net/test/read.cgi?bbs=sim&key=960616675
39ななしさん:2001/03/09(金) 21:25
ここのスレ見て、ナップザック問題解くやつを作ってみた。

結構感動ものだね。n がいくら大きくても関係ねーよーって
感じが良い。
40デフォルトの名無しさん:2001/03/10(土) 21:21
>39
>ナップザック問題解く
近似解を見つけるだけで「解く」と言われると、ちょっと違和感が…
(数理科学出身)
41ななしさん:2001/03/10(土) 23:52
まあ確かに近似解だし、それがどの程度近似しているのかも
わからん。

ただ、今実用で似た問題を解く必要に迫られていて、
これなら十分だと感じた。つうか、試した例は全部
ぴったりの解が見つかった。

工学系の発想(なのか?)ですまん。
42デフォルトの名無しさん
GAはね、設計につかうとかなり面白いよ。
パラメトリックデザインな問題にしておいて、
そのパラメータを最適化すんの。自作の画像圧縮ルーチンは
適当なオペレータをたくさんいれておいて、あとどれ使うか
というパラメータを作成して、それでぶんまわして3日くらい
機械に考えさせて作った。現在数万人くらい使ってるかな。
知らずに。