バイナリを生物として扱うことで、進化的にバイナリを生成するシステムです。
詳しくは以下の同人誌『バイナリ生成環境「daisy-tools」実験報告』をご覧ください。こちらで、コンセプトとアーキテクチャ、使い方、daisy-toolsを用いた実験とその結果を紹介しています。
なお、daisy-toolsは作者独自の「バイナリ生物学」という考え方と基本設計に基づいて作られています。これについては同人誌「バイナリ生物学入門」で紹介していますので、こちらも良ければご覧ください。
作者の同人誌や制作物は以下のウェブサイトにまとめていますので、もし興味があればこちらからどうぞ。
諸々の説明は飛ばして、以下の手順で「何もせず正常終了(ステータス0でexit)するだけのELFバイナリ」を生成する実験が行えます。
$ sudo apt install build-essential libc6 bash jq strace
$ git clone https://github.com/cupnes/daisy-tools.git
$ cd daisy-tools
$ make setup
諸々のファイルを配置した作業ディレクトリを~/dsy-workに作成する
$ cd ~/dsy-work
$ samples/setup-sample exit
実験用の諸々のファイルを配置する
$ bin/run
実行完了を待つ
$ ls out.cell
out.cell # 目的の振る舞いをするように進化した細胞ファイル
$ cp out.cell cell/
$ bin/dsy-cell2elf out.cell out.elf # 細胞ファイルをELFバイナリへ変換
$ chmod +x out.elf
$ strace ./out.elf
何もせず正常終了(ステータス0でexit)している事がわかるビルド環境・実行環境を説明します。なお、いずれもUnix/Linux環境を想定しています。ディストリビューションに依らない想定ですが、参考として、作者はDebianで開発しています。
daisy-toolsをビルドするために必要なソフトウェアは以下の通りです。
- make
- gcc
Debian系ディストリビューションであればbuild-essentialというパッケージにこれらが含まれていますので、これをインストールしておけばOKです。
$ sudo apt install build-essential実行する際に必要なソフトウェア/ライブラリは以下の通りです。
- GNU Cライブラリ(libc)
- bash
- jq
Debian系のディストリビューションであれば、以下のようなパッケージ指定でインストール可能です。
$ sudo apt install libc6 bash jqなお、実行に必須というわけではありませんが、詳細なログはsyslogに出力していますので、実行時の詳細なログを見たい場合はsyslogが使用できる環境が良いです。ただ、おおよその実行ログは標準出力/標準エラー出力へ出力していますし、「詳細なログが見れない」というだけなので、syslogが使えない環境でも実行自体に問題はありません。
詳しくは前述の同人誌の通りですが、ここに簡単に使い方をまとめておきます。
このディレクトリ直下で以下を実行すると、実行したユーザーのホームディレクトリ直下にdsy-workというディレクトリを作成し、そこへdaisy-toolsの実行に必要なディレクトリ構造とプログラム/スクリプトを配置します。
$ make setupなお、ここで生成されるdsy-workディレクトリをZIPアーカイブにしたものが、リリースページで公開しているdsy-work_YYYYMMDD.zipです。
daisy-toolsを実行するに際し、初期設定として「細胞ファイル」・「コード化合物ファイル」という独自のファイルをcell・codeディレクトリへ配置しておく必要があります。
また、実行時に自動生成されるファイルの名前付けに使われるdsy-nameと、codeディレクトリに生成された細胞ファイルの評価に使われるdsy-evalも、実験内容や好みに応じて作成しbinディレクトリへ配置しておく必要があります。
これらに関しては、サンプルがsamplesディレクトリにあります。詳しくは同人誌『バイナリ生成環境「daisy-tools」実験報告』を参照してください。
daisy-toolsのシステムを開始するには、dsy-workディレクトリ直下で以下を実行します。
$ bin/dsy-sysenvなお、開始するとフォアグラウンドで実行し続けプロンプトは返ってこないので、screenやtmuxなどのターミナルマルチプレクサ上で実行してデタッチしておくとか、何らかの方法で放置しておけるようにするのがおすすめです。
適応度100の細胞ファイルが生まれるとdaisy-toolsは自動的に停止し、その細胞ファイルをdsy-workディレクトリ直下にout.cellという名前で保存します。この辺りについても詳しくは同人誌『バイナリ生成環境「daisy-tools」実験報告』を参照してください。
daisy-toolsの実行中はdsy-workディレクトリ直下にrunningという名前のファイルが生成されます。停止させる際はこのファイルを削除してください。(するとdaisy-toolsは動作を停止します。)
$ rm running再開させる際は再度dsy-sysenvを実行すればOKです。
$ bin/dsy-sysenv標準出力に========== XX 周期目 ==========と出力される周期カウンタの値だけは1から始まりますが、細胞や化合物の状態など、周期カウンタ以外はすべて停止した状態から引き継がれています。