2015年4月16日木曜日

CFR(Counterfactual regret minimization)でdudo

CFR で三目並べに続いてdudoというdiceゲームをCFRで書いてみた。


GitHubのソースコード

dudoのゲームルールはこちらを参照。
三目並べと比較すると、dudoは非完全情報ゲームなので、CFRを適用するにはちょうどいい対象である。


CFRの評価がしたかったので、ゲームの実装は実際のdudoに比べて下記のように簡略化してある。


  • 1の目はワイルドカードとしてカウントしない。
  • プレイヤーの数は二人
  • 各プレイヤーが持つダイスの数は2つ。


200回ほどトレーニングをさせたCFRと、単純に相手のコールにひとつだけ上乗せをする戦略をとるBoarPlayerを戦わせたところ、大体75%ほどの勝率でCFRは勝利を収めた。


MSCFの理解に役立ったリンク


ファイルサーバを例に設定の仕方が細かく載っている。
Failover Cluster Step-by-Step Guide: Configuring a Two-Node File Server Failover Cluster

VMWare上のWindows 2008R2でMSFC

VMware Playerの上で動かしたwin2008R2同士でクラスタを組んだ。

どっちも同じvmdkファイルをコピーして使いまわしていたら、フェールオーバクラスタマネージャの構成の検証でネットワーク周りのエラーが出た。

こんな感じのエラー

ネットワークトポロジを読み込み中にエラーが発生しました 0x90070005

無視して進もうにも、クラスターの作成、のウィザードで「アクセスが拒否されました」とエラーメッセージが出て進めなかった。

いろいろ調べたところ、原因はvmdkファイルを使いまわしたことによってドメインSIDが重複していることがわかった。これは、クラスターのノードとなる2008R2のアプリケーションログを見ることによって発見した。

下記のページの手順に沿ってSIDを再度設定しなおしたところ、構成の検証が通るようになった。



ドメインSIDについてはこちらを参照

2015年3月24日火曜日

classloaderとstatic変数

classloaderとstatic変数の関係を調査してみた。

基本的にはclassloaderが異なると、static変数の値も異なるというのが仕様のようだ。
ただし、classloaderのhierarchyで同じparentを共有していると、static変数は共有される。

詳細はstackoverflowで。

Multiple instances of static variables


ちなみに下記の日本語ブログでも、static変数はクラスローダごとに別になるとの情報があるが、ブログに載ってるサンプルコードを実行したところ、2つのクラスローダでstatic変数は共有されているようだった。

[Java]別々の ClassLoader にロードされたクラスのフィールドは別になる


URLClassLoaderとPluginClassLoaderが階層的にどういう関係にあるのか調べてないけど、親をどっかで共有してたりするのだろうか。または、2006年の情報なのでjavaのバージョンが関係して足りすのだろうか。


2015年3月19日木曜日

pipでプロキシを設定する方法

環境変数に設定する。

%> export https_proxy="http://<proxy.server>:<port>"
%> pip install <xxxxx>


参考文献
http://stackoverflow.com/questions/19080352/how-to-get-pip-to-work-behind-a-proxy-server

 

RHELでCentOSのレポジトリを使用する方法まとめ

RHELは標準構成ではほとんどソフトウェアがインストールされていないので、いろいろ開発していると追加でインストールする必要が出てくる。 RHELにソフトウェアをインストールする方法は大きく2つ。
  1. rpmをどっかから持ってきてインストール
  2. yumを使う
ただし、yumを利用する場合RedHatの契約が必要になる。 正式運用環境ならともかく、単なる開発環境ではそんなもの用意してられないので、こういう時はCentOSのレポジトリにつないでインストールするといい。 ここではそのための設定をまとめる。

レポジトリの設定

下記のパスのファイルを新規作成し、下記の内容を記述する。
/etc/yum.repos.d/CentOS-Base.repo


プロキシの設定

プロキシを使っていない場合は、この設定は不要。
下記のファイルに
/etc/yum.conf

下記の設定を行う
proxy=<url>:<port>

2015年3月13日金曜日

CFR(Counterfactual regret minimization)で三目並べ(Tic Tac Toe)

CFRの習い作として三目並べ(Tic Tac Toe)のAIを書いてみた。

が、書き始めて気づいたのだが、三目並べは完全情報ゲームであり、探索空間も狭いため、1回の試行で全部の戦略を探索できてしまう。
正直、CFRの例としてあまり意味をなしてないが、まあCFRとはなんぞやというのを理解する目的は果たせてると思うので、一応公開することとした。



CFR for Tic Tac Toe