Page 15 of 18

タイトル通り2048AI の進捗状況です。

現在のソースコード

  • 高速化 grid を今まではstd::array<std::array<int,4>,4> でもっていたが、uint64_t で持つようにした。 それだけで大分速くなった気がする。

  • 世界と分離 koyone は思考をし、世界は盤面の状態を持つだけにきちんと分離できた。他の思考用class を用意して差し替えることが簡単にできるようになった。

  • 探索面 一手後の世界を予想する時に、ナイーブにするなら動かした後に開いてるマスに2 か4 を入れるが、開いてるマスすべてに2 を入れて読めば若干良くなるという話を聞いたので試してみた。それがKoyoneNext だ。

思考クラスたち

Koyone

単純にある程度の深さまで全探索を試みる。 評価関数はグリッド上の数字について、その数字にその数字のlog2 をとったものを掛けてたものの和。 それが一番大きくなるものの存在する方向に動かす。 前回 の時の思考はこれだった。

KoyoneNext

基本的にはKoyone と同じ。nextPossibleWorld だけを上記のように変更してある。 ちょっと以前のより強くなった。

Kihime

モンテカルロによる探索を実装しようとしてまだ中身は空だ。

HeartBleed の時にRaspberry Pi のOS をArch に変えたので、nginx 1.6 が簡単に使えるみたいだったので、乗りかえた。

nginx 1.6 ではなんとデフォルトでSPDY に対応している!

というわけでnna774.net もSPDY に対応しました。

quic も試してみたいけれど、まだ対応してるものは無いっぽい?ですね……

KMC で2048 のAI の強さを競うコンテストがあった。

2048 as a Servise を使ってたたかうもので、言語や環境等は自由であった。

まず始めにruby のサンプルコードを書いた。サンプルコード

そのまましばらくruby で書きつづけていた(mikutter のプラグイン以外でruby を書くのは初めてだった)。 このへんまで書いた。 nna774/2048-ruby

ナイーブに全探索を数手先までしているようなかんじだった。

どうにも遅かったのでC++ で書きなおした。実際に使ったのがこれ です。モンテカルロも実装しかけてたけど、バグバグだったのであきらめた。レポジトリはココ。 名前はkoyone です。

結果はこんな感じ。

かろうじて5位でした。

もっと次回までには強くしないといけない。

次回コンテストは6/4。 それまでに強化しよう……

ref

2048AIコンテストを開催します! - KMC活動ブログ

最近CI tool について調べていた。

以前から使っているJenkins氏も、CI tool(継続的インテグレーション, continuous integration) の一種だ。

使ってみたCI ツールについて、ちょっとだけ書いてみる。

drone.io

drone.io はいろいろな言語に対応していていい感じだった。

生成物を保管しておいてくれるので、そこからダウンロードしたりできていい感じ。

Travis CI

Travis CI は .travis.yml を書いて

昨日(暦としては18日の夜)、ミッドナイト念仏に行った。

is 何

公式ページ

知恩院で行なわれる法然上人の法要のイベント(?) のうちの一つである。

set

夜通し木魚を叩きつづけるイベントである(こんなふうに書いたら怒られそうだ)。

普段は入れない知恩院三門に入ることができるイベントでもある。

かなり低く見積っても数万回のBeat

三時ぐらいに知恩院に行って朝まで木魚を叩きつづけた。

中で撮影は禁止されていたけれど、特に録音は禁止されてなかったので、すこしだけ録音した。

nenbutsu.ogg

謎のトランス感のあるイベントであった。

現状、このページは、静的html等は事前にgzip で圧縮して、それをmod_rewrite でいいかんじにURL を書きかえてAccept-Encoding: gzip があればgzip版を返すよう設定してある。 ……と思ってたんだけれども、Accept-Encoding: gzip がついてなくても、gzip で返したり、対応するgz ファイルが存在しないと404 になったりしていた。

RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{REQUEST_FILENAME}.gz -f
RewriteRule ^(.*)\.css$ $1.css.gz [QSA,L]
RewriteRule ^(.*)\.js$ $1.js.gz [QSA,L]
RewriteRule ^(.*)\.html$ $1.html.gz [QSA,L]

のように書いていた。

調べていると、結局、RewriteCond が影響するのは、次のRewriteRule だけであることがわかった。 それでAccept-Encoding: gzip のないindex.html へのアクセスにもgzip圧縮されたものを返したり、index.html.gz がないと404 になったりしていたのだ。

RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{REQUEST_FILENAME}.gz -f
RewriteRule ^(.*)\.css$ $1.css.gz [QSA,L]
RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{REQUEST_FILENAME}.gz -f
RewriteRule ^(.*)\.js$ $1.js.gz [QSA,L]
RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{REQUEST_FILENAME}.gz -f
RewriteRule ^(.*)\.html$ $1.html.gz [QSA,L]

のように書きなおした現在、期待どうりの挙動をしているように見える。

最近流行りのOpenSSL のバグですが、うちのRaspberry Pi の上のRaspbian にすぐにアップデートが来なかったので、これを機にArch Linux に乗り変えることにした。

まだいろいろ設定している途中ですが、とりあえず80番と443番だけNAT を通すようにしてここも復活。

SSL の秘密鍵とりかえたいけどStart SSL は再発行にお金かかるらしいし、うーん ってかんじだ。 そもそも攻撃に狙われた可能性は低いとは思うけれど……(よくない考え方だ。安全側に倒すべきではある)

11歳ですよもう

鉄腕アトムも11歳。 だいぶ未来に来てしまった……

もざいく

アトムの誕生日は、電気の恋人の歌詞で覚えている。

歌詞: Sham Studio (リンク先音注意)

2003年4月7日に 未来のロボが生まれなくても

電気の恋人

私の小さな時にはもうPC 98 ではなくて、Windows 98 が家にあったような時代であったので、この曲の歌詞の最初のほうのような事は実際にはやったことは無いのだけれど(私の初めて触ったBASIC はWindows98 の上での十進BASICだ。プログラムの意味もよくわからないまま、豊富に同梱されていたサンプルプログラムを改造してみていた)、それでも、この曲を初めて聞いてからだけの機械の進化はすさまじくて、この曲自体を機械が歌うほどだ。

小さい時に聞いていたこの歌をミクが歌うというのは、なんというか、機械の進歩を強く表わしている気がして本当に好きだ。

この曲の入ったCD は現在入手困難ですが(わたしも欲しい)、AmazoniTunes なら購入することができます。

Heartsnative は他にも、「みんなみくみくにしてあげる♪」は"機械と人間" って感じがしてすごくいいと思う(そういう意味では、Heartsnative2 のほうはミクしか歌っていないので、比べると好きじゃない)。

何が言いたいかよくわからない記事になってしまった。アトムの誕生日はどっかにいってミクが好き って記事になってるし。しかも遅れて公開だし。

Page 15 of 18