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)))…

初期個体群の生成2

【内部主要記事】 【Abstruct的?】 【ToDoもしくは目次】 【参考文献】 【本文】 なんとか、0世代目の個体*20を作成してベクターに格納するコードをschemeに移植して解釈してみました。 基本的な動きは、それだけなのですが *method-of-generation* 状態(fu…

構文木が文法的に正しく出力されるようにする3(if文正常出力成功)

【内部主要記事】 【Abstruct的?】 【ToDoもしくは目次】 【参考文献】 if文が通常の使われ方をするようにコードを出力することに成功しました。 (use math.mt-random) (define mt (make <mersenne-twister> :seed (sys-time))) (define terminal (lambda () (let ((rdm (mt-r</mersenne-twister>…

構文木が文法的に正しく出力されるようにする2

内部リンク Abstruct的? ToDoもしくは目次 以下の変更を加える carを使わない。 cdrを使わない。 (実質、非終端記号(関数)はcons、if、list?、eq?) とりあえず、出力された構文木(コード)は実行可能になりました。 まだ、if構文が(文法的に正しくても)、通…

ランダムな個体(木構造)の生成 random-tree-v0.2.scm

内部リンク 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>…

構文木が文法的に正しく出力されるようにする1

内部リンク Abstruct的? ToDoもしくは目次 以下の変更を加えます。 ifの次にlist?かeq?かが来るようにする。 defineは使わない quoteは使わない 終端記号(ここではアルファベット小文字)を文字型とする。 1は難しそう。とりあえず掲載。 ifの構文はまだ変。…

ランダムな個体(木構造)の生成 random-tree-v0.1.scm デバッグバージョン

cond car cdr if 等をランダムに組み合わせて構文木を構築するプログラムを書いてみました。 以下に示した生成プログラムによって生成されたコードは、まだ正しい文法にはなりません。 それと、出力されるコードの構文木の深さを表すallowable-depthが生成プ…

内部リンク

Abstruct的? ToDoもしくは目次 (どこと繋がっているかわからない場合は、コメントなどで教えてもらえると内部リンクを張ります。)

ランダムな個体(木構造)の生成 random-tree-v0.0.scm

GP

遺伝的プログラミング (情報科学セミナー)作者: 伊庭斉志出版社/メーカー: 東京電機大学出版局発売日: 1996/06/01メディア: 単行本 クリック: 3回この商品を含むブログ (5件) を見る のサンプルの一つに収められている create-individual-program, create-ar…

ToDo

「やりたいこと」 高速なschemeで遺伝的プログラミング(GP)を実行させる。>保留 scheme(gauche)などで遺伝的プログラミングを実行させる>着手:Abstruct的? 「そのために必要なこと」 schemeで遺伝的プログラムが可能か調査する。 http://www.geneticprogr…

内部リンク

GP

Abstruct的? ToDo (どこと繋がっているかわからない場合は、コメントなどで教えてもらえると内部リンクを張ります。)

初期集団の木構造の生成(Initialization)を考慮した、非終端記号をランダムに出力するコード

GP

現在の非終端記号 car, cdr, cons, quote, define, if, eq?, list? condをifに、代入演算(バインド)はset!を削ってdefine単体のみとする。condは引数の数を決定できないうえに、構文的束縛が強いのでランダムに木構造を作るのは難しい。atomにatomかlistをバ…

とりあえず、非終端記号をランダムに出力するコード

GP

現在の非終端記号 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>…

とりあえず、終端記号のa〜zまでをランダムに出力するコード

GP

シンプルなコード↓(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>…

乱数:メルセンヌツイスター

GP

参考にさせていただいたページ。 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>…

内部リンク

GP

Abstruct的? ToDo (どこと繋がっているかわからない場合は、コメントなどで教えてもらえると内部リンクを張ります。)

1.初期集団の木構造の生成(Initialization)

GP

ランダムに集団数の数だけ個体(木構造)を生成させる. さて、どう書くかな。 まず乱数を発生させる手順(mixiで教えていただきました) gosh> (use srfi-1) #<undef> gosh> (use srfi-27) #<undef> gosh> (random-integer 100) 81 gosh> (exit) ---- gosh> (require-exte</undef></undef>…

適合度の計算

GP

ハミング距離を使う。リスト長が一致しない場合は、長いほうに合わせる。 値が0に近いほど適合度が高いと判定する。レーベンシュタイン距離 というものもある。

非終端記号、終端記号の決定

GP

終端記号(一般的には関数) car, cdr, cons, quote, set!, cond, define, eq?, list? 終端記号(一般的には変数) アルファベットの小文字一文字(a〜z)

Abstract的?

GP

進化的手法の代表例でるGPは現在盛んに研究されいます。 GPを自然言語処理に応用するための基礎技術として 「任意のリスト(アルファベット小文字1文字のみのリスト)から、 解となるリスト(アルファベット小文字1文字のみのリスト)を 出力するプログラム」 を…

ToDo

「やりたいこと」 高速なschemeで遺伝的プログラミング(GP)を実行させる。 「そのために必要なこと」 schemeで遺伝的プログラムが可能か調査する。 http://www.geneticprogramming.com/Tutorial/ >できそう 線形論理(?)に従ったschemeを実装する。 >外…