February 03, 2006

OthelloAI

オセロをコンピュータで解く課題をこなしています。提出期限まで時間がないので、実装はRubyで行うことにしました。まだコンピュータ側のアルゴリズムを実装していないのですが、とりあえずオセロを実行するためのルールはできました。

othello.png
ソース置き場

こういった、コンピュータを使って問題をインテリジェントに解こうという話は、いわゆる人工知能とよばれる分野で、そのアルゴリズムはたくさんあります。しかしどの方法も万能というわけではなく、解こうとする問題によってチューニングする必要があります。
今回はどんなアルゴリズムを用いようか、現在考え中です。以前、この課題に挑戦した人はニューラルネットワーク+強化学習で良い成績を修めたそうです。

23:59 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | この記事をdel.icio.usでブックマーク | コメント (0) | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/460

February 09, 2006

OthelloAI その2

オセロをコンピュータで解く課題ですが、前の記事のルールの実装に続き、コンピュータが自分の手筋を決定するためのアルゴリズムの作りこみを行いました。
アルゴリズムとしては、盤面の状態が自分にとって有利かどうかを判断するための評価関数算出法としてベイズ推定を採用しました。また、その算出法ができるだけ確からしい値になるように経験をつませるため、強化学習(ぽいもの)を組み合わせました。
ソースを置いておきます。Rubyで書いてあります。

othello2.png
課題の対象は6x6のオセロ、現在学習中。

経験を積ませる過程で問題となったのがRubyの実行速度です。プログラムが高速に動けば動くほど、経験を多く積むことができ、賢くなるはずです。
ところが、Rubyは公式ページのチュートリアルにもあるように『RubyはCなどに比べて開発速度は速く,実行速度は遅い.』ので、Rubyに実行速度を求めるのはかなり問題があります。今回は課題の期限の関係で仕方なくRubyを選択したわけですが、こういった事情なので色々悪あがきをして高速に動くようチューニングしてみました。

チューニングのポイントとなるのが、あたり前ですが『時間がかかる部分を早くする』ことにあります。時間がかからない部分をいくらチューニングしたところであまり早くなりません。この時間がかかる部分をいかに見極めるかが重要で、この作業をプロファイルと呼びます。
Rubyではこの作業を簡単に実現することが可能です。

ruby -r profile hoge.rb
をしてみてください。実行が終わるとどの部分でどれだけ時間がかかったのかが表示されます。あとはその遅い部分をチューニングしていけば、プログラムが早くなります。

今回チューニングした点は、時間がかかる部分に対して

  • evalをしない
  • ループの入れ子を作らない
  • newをしない、できるだけ一度作ったものを再利用する
この3点でかなり実行速度が改善されました。

23:51 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | この記事をdel.icio.usでブックマーク | コメント (0) | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/461

February 17, 2006

H2A 9号機

H2A 9号機の打ち上げが迫っています。18日の15時26分だそうで、今のところ準備は順調に進んでおり、当日の天候も晴れ後曇りで問題がない見込みのようです。

ということで、これから種子島にロケットを見に行ってきます。あとは無事に打ち上げられることを祈るばかりです。

カウントダウンページ、または当日丸の内OAZOのJAXA iから打ち上げの様子は見れると思います。

13:01 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | この記事をdel.icio.usでブックマーク | コメント (3) | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/462

February 22, 2006

SH4基板 再び

なかなか時間がとれずにほったらかしにしてあったSH4基板ですが、前回の設計ではPLLの発振回路がたまに安定しないことがあるという問題点を抱えていたので、つくりなおすことにしました。

Sylpheed_RevB.png
できた基板。

今回利用したのは以前紹介した中国系のPCBCartというところです。中国ということでかなり人柱的に挑んでみたのですが、目視ではそれなりの品質は達成できているようです。
また値段は激安で今回の名刺サイズ(55 x 91 mm)4層基板で送料込みで約200ドルでした。200ドルの内訳は初期費用が120ドルであとは1枚あたりの単価20ドルが4枚ということです。つまりリピート注文であれば以降1枚20ドルで作成できます。
Eagleのファイルを直接取り扱ってくれるのもいい点です。慣れればOlimex感覚で使えると思います。

これからぼちぼちと組み立ててデバックしてみようと思います。予定ではあと1~2回程度試作で完動品が得られると思います。
あと、PCBCartのほうは実績的にはまだOlimexに及ばないところがあるので、Olimexでは補いきれないならPCBCartを使う、という方針で今後はいこうかと考えています。

23:59 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | この記事をdel.icio.usでブックマーク | コメント (5) | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/464

February 24, 2006

H2A Launching!

H2A_F9.jpg
生ロケットは凄い!!

H2A 9号機が2006/2/18に打ち上げ成功しました。中身(MTSAT-2)も現在予定通りのようです。

22:29 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | この記事をdel.icio.usでブックマーク | コメント (2) | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/465

February 27, 2006

USB-ADC2 Windowsで認識完了

試作中のUSB-ADC2ですが、組み立て、そしてその後、Windowsで認識することを確認しました。

USB-ADC2_revB.jpg
組みあがったUSB-ADC2。

実は基板に一箇所バグがあって、ReservedピンがGNDに落ちていなければならないのを、No Connectionにしていたため、認識しないという問題に見回れました。少々無骨ですが、ジャンパを飛ばすことにより解消、上の写真はその状態で撮影したものです。
あと注意ですが、このボードはFX2LPチップを使っています。FX2LPではFX2に比べ

  • クリスタルの負荷容量が20~33pFから12pFに変更
  • リセットタイムが1.91msから5msに変更
等の違いがあります。回路を組まれる方はご注意ください。このあたりの事情はFX2LPのDevelopment Kitをダウンロードしてインストールすると得られる、fx2_to_fx2lp.pdfというドキュメントに記述があります。

認識したということで、Eagleの回路図レイアウトを公開します(上記のジャンパ問題は修正済み)。

あとはファームを書くだけです。皆さんからFX2でのsdccの動作報告がされているようなので、こちらはスムーズにいくと思います。

21:26 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | この記事をdel.icio.usでブックマーク | コメント (5) | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/466