GP
今回のような遺伝的プログラミングの応用は、かなり無理があると言わざるを得ないです。今回の方法についていろいろ考えましたが、仮に学習用データを10与えて、それを再現できるプログラムが、遺伝的プログラミングの手法により実現できるか?というと、そ…
【内部主要記事】 【Abstruct的?】 【ToDoもしくは目次】 【参考文献】 【本文】 ランダムなアルファベット小文字のリスト=学習用データ 作成。学習用データ作成に当たって使用した関数interpretはこの本を参考にしました。プログラミング言語SCHEME作者: …
【内部主要記事】 【Abstruct的?】 【ToDoもしくは目次】 【参考文献】 【本文】 レーベンシュタイン距離を使って個体の適合度を求めます。 gaucheの配列に関する資料 http://www.shiro.dreamhost.com/scheme/gauche/man/gauche-refj_71.html レーベンシュ…
http://www.geocities.jp/m_hiroi/func/scheme01.html リストの平坦化(記法はlambdaを使ったものに変更してあります) (define flatten (lambda (ls) (cond ((null? ls) '()) ((pair? ls) (append (flatten (car ls)) (flatten (cdr ls)))) (else (list ls)))…
【内部主要記事】 【Abstruct的?】 【ToDoもしくは目次】 【参考文献】 【本文】 なんとか、0世代目の個体*20を作成してベクターに格納するコードをschemeに移植して解釈してみました。 基本的な動きは、それだけなのですが *method-of-generation* 状態(fu…
【内部主要記事】 【Abstruct的?】 【ToDoもしくは目次】 【参考文献】 if文が通常の使われ方をするようにコードを出力することに成功しました。 (use math.mt-random) (define mt (make <mersenne-twister> :seed (sys-time))) (define terminal (lambda () (let ((rdm (mt-r</mersenne-twister>…
内部リンク Abstruct的? ToDoもしくは目次 以下の変更を加える carを使わない。 cdrを使わない。 (実質、非終端記号(関数)はcons、if、list?、eq?) とりあえず、出力された構文木(コード)は実行可能になりました。 まだ、if構文が(文法的に正しくても)、通…
内部リンク Abstruct的? ToDoもしくは目次 出力コードが文法的に正しくなるように調整中。 (define mt (make <mersenne-twister> :seed (sys-time))) (define terminal (lambda () (let ((rdm (mt-random-integer mt 26) )) (cond ((eq? rdm 0) 'a) ((eq? rdm 1) 'b) ((eq? rd</mersenne-twister>…
内部リンク Abstruct的? ToDoもしくは目次 以下の変更を加えます。 ifの次にlist?かeq?かが来るようにする。 defineは使わない quoteは使わない 終端記号(ここではアルファベット小文字)を文字型とする。 1は難しそう。とりあえず掲載。 ifの構文はまだ変。…
cond car cdr if 等をランダムに組み合わせて構文木を構築するプログラムを書いてみました。 以下に示した生成プログラムによって生成されたコードは、まだ正しい文法にはなりません。 それと、出力されるコードの構文木の深さを表すallowable-depthが生成プ…
Abstruct的? ToDoもしくは目次 (どこと繋がっているかわからない場合は、コメントなどで教えてもらえると内部リンクを張ります。)
遺伝的プログラミング (情報科学セミナー)作者: 伊庭斉志出版社/メーカー: 東京電機大学出版局発売日: 1996/06/01メディア: 単行本 クリック: 3回この商品を含むブログ (5件) を見る のサンプルの一つに収められている create-individual-program, create-ar…
「やりたいこと」 高速なschemeで遺伝的プログラミング(GP)を実行させる。>保留 scheme(gauche)などで遺伝的プログラミングを実行させる>着手:Abstruct的? 「そのために必要なこと」 schemeで遺伝的プログラムが可能か調査する。 http://www.geneticprogr…
Abstruct的? ToDo (どこと繋がっているかわからない場合は、コメントなどで教えてもらえると内部リンクを張ります。)
現在の非終端記号 car, cdr, cons, quote, define, if, eq?, list? condをifに、代入演算(バインド)はset!を削ってdefine単体のみとする。condは引数の数を決定できないうえに、構文的束縛が強いのでランダムに木構造を作るのは難しい。atomにatomかlistをバ…
現在の非終端記号 car, cdr, cons, quote, set!, cond, define, eq?, list? (use math.mt-random) (define mt (make <mersenne-twister> :seed (sys-time))) (define (non-terminal) (let ((rdm (mt-random-integer mt 9) )) (cond ((eq? rdm 0) 'car) ((eq? rdm 1) 'cdr) ((eq</mersenne-twister>…
シンプルなコード↓(mixiで教えていただきました) (use math.mt-random) (define mt (make <mersenne-twister> :seed (sys-time))) (define (terminal) (let ((rdm (mt-random-integer mt 26) )) (string-ref "abcdefghijklmnopqrstuvwxyz" rdm)))もしくは (use math.mt-random)</mersenne-twister>…
参考にさせていただいたページ。 http://sicp.g.hatena.ne.jp/hyuki/20060503/mt systime使っているけどメルセンヌツイスターになっているのだろうか? 僕にはよーわかりません。 gosh> (use math.mt-random) #<undef> gosh> (define mt (make <mersenne-twister> :seed (sys-time))) </mersenne-twister></undef>…
Abstruct的? ToDo (どこと繋がっているかわからない場合は、コメントなどで教えてもらえると内部リンクを張ります。)
ランダムに集団数の数だけ個体(木構造)を生成させる. さて、どう書くかな。 まず乱数を発生させる手順(mixiで教えていただきました) gosh> (use srfi-1) #<undef> gosh> (use srfi-27) #<undef> gosh> (random-integer 100) 81 gosh> (exit) ---- gosh> (require-exte</undef></undef>…
ハミング距離を使う。リスト長が一致しない場合は、長いほうに合わせる。 値が0に近いほど適合度が高いと判定する。レーベンシュタイン距離 というものもある。
終端記号(一般的には関数) car, cdr, cons, quote, set!, cond, define, eq?, list? 終端記号(一般的には変数) アルファベットの小文字一文字(a〜z)
進化的手法の代表例でるGPは現在盛んに研究されいます。 GPを自然言語処理に応用するための基礎技術として 「任意のリスト(アルファベット小文字1文字のみのリスト)から、 解となるリスト(アルファベット小文字1文字のみのリスト)を 出力するプログラム」 を…
「やりたいこと」 高速なschemeで遺伝的プログラミング(GP)を実行させる。 「そのために必要なこと」 schemeで遺伝的プログラムが可能か調査する。 http://www.geneticprogramming.com/Tutorial/ >できそう 線形論理(?)に従ったschemeを実装する。 >外…