[実験]アルゴリズム化学

抽象化学反応系、ルールダイナミクス s/a/b/ s/b/c/ s/c/a/ この3つが、他のsedスクリプトを書き換えながら、増殖します。 オートポイエーシスにまでは到達してないけど、ハイパーサイクルには到達したかも。 (実行に当たってはパーミッションに注意) ini…

試した結果

今回のような遺伝的プログラミングの応用は、かなり無理があると言わざるを得ないです。今回の方法についていろいろ考えましたが、仮に学習用データを10与えて、それを再現できるプログラムが、遺伝的プログラミングの手法により実現できるか?というと、そ…

学習用データ作成

【内部主要記事】 【Abstruct的?】 【ToDoもしくは目次】 【参考文献】 【本文】 ランダムなアルファベット小文字のリスト=学習用データ 作成。学習用データ作成に当たって使用した関数interpretはこの本を参考にしました。プログラミング言語SCHEME作者: …

レーベンシュタイン距離を求める

【内部主要記事】 【Abstruct的?】 【ToDoもしくは目次】 【参考文献】 【本文】 レーベンシュタイン距離を使って個体の適合度を求めます。 gaucheの配列に関する資料 http://www.shiro.dreamhost.com/scheme/gauche/man/gauche-refj_71.html レーベンシュ…

配列に関してのメモ

使用例 gosh> (use gauche.array) #<undef> gosh> (define A #,(<array> (0 3 0 3) 8 3 4 1 5 9 6 7 2)) A gosh> A #,(<array> (0 3 0 3) 8 3 4 1 5 9 6 7 2) ; [0] [1] [2] ;[0] 8 3 4 ;[1] 1 5 9 ;[2] 6 7 2 gosh> (array? A) #t gosh> (array-size A) 9 gosh> (array-set! A 0 </array></array></undef>…

リストの平坦化

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

言語学に触れてみる

さて、この手の研究のメインストリートを知らなすぎるので言語学の本を読んでみました。情報科学のための自然言語学入門―ことばで探る脳のしくみ作者: 畠山雄二出版社/メーカー: 丸善発売日: 2003/08メディア: 単行本 クリック: 32回この商品を含むブログ (7…

初期個体群の生成2

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

大域変数はアスタリスクで囲う

http://www.h7.dion.ne.jp/~matsu/feature/common-lisp/basic/variable.html 大域変数名は前後を*で囲うのがLispでの習慣らしい.

":" (キーワード)

http://openspace.timedia.co.jp/~nyama/wiliki/ghg.cgi?p=gauche.h%3AKeyword&c=e Common Lispでは、':' で始まるシンボルは常に自分自身を値とする特別なシンボル で、「キーワード」と呼ばれます。Gaucheでは、キーワードはシンボルとは異なるオブジェク…

aref

http://flex.ee.uec.ac.jp/texi/eljman/eljman_74.html Function: aref array integer この関数は、配列の integer 番目の要素を返します…次の例において、文字 b は ASCII 98 です。 (setq primes [2 3 5 7 11 13]) => [2 3 5 7 11 13] (aref primes 4) => …

incf

CLISPの (nicf x) は schemeの (set! x (+ x 1)) に等しい。 schemeのマクロで実現 http://www.shido.info/lisp/scheme_syntax.html syntax-rules には複数の変換パターンを定義することができます。例えば、変数の値を増加させるマクロ incf を考えて見まし…

nth

http://www.bookshelf.jp/texi/elisp-intro/jp/emacs-lisp-intro_9.html (nth 0 '("one" "two" "three")) => "one" (nth 1 '("one" "two" "three")) => "two"http://www5a.biglobe.ne.jp/~sasagawa/MLEdit/Scheme/scheme9.html (define nth (lambda (n ls) (…

otherwise

http://wisdom.sakura.ne.jp/programming/lisp/clisp11.html …otherwise 記号を指定します。 これは、C言語の switch で例えると default 句に相当します。 schemeのelseに相当。

参考文献

遺伝的プログラミング (情報科学セミナー)作者: 伊庭斉志出版社/メーカー: 東京電機大学出版局発売日: 1996/06/01メディア: 単行本 クリック: 3回この商品を含むブログ (5件) を見る(サンプルプログラムは、古いCLISPで書かれているようです。) 【謝罪】 本…

初期個体群の生成1

【内部主要記事】 【Abstruct的?】 【ToDoもしくは目次】 【参考文献】 【本文】 さて、今日は「個体群を作成する関数」を作ることにしました。コレを無事作り終えたなら、初期化の機能まで組み込めることになる。…ふむ、順調か?この関数の作成に参考文献…

構文木が文法的に正しく出力されるようにする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の構文はまだ変。…

gaucheでtraceを使う

内部リンク Abstruct的? ToDoもしくは目次 Gauche:FAQ の項目「Q. INSTALL.eucjpの通りにconfigureしたのに、エラーによりSLIBが実行できないのですが。」 に書かれている以下の方法を実行してmakeしなおしたら使えるようになりました。 # ./configure --wi…

ランダムな個体(木構造)の生成 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>…