euphonictechnologies’s diary

Haskell超初心者の日記です。OCamlが好きです。

follow us in feedly

コンピュータ将棋

ものすごいメモ - いま注目している論文・技術資料など

かなり個人的なメモです。いま注目している論文や技術資料などです。今読んでるものと後で読むものを混在させています。 Contextual Bandit Taming the Monster: A Fast and Simple Algorithm for Contextual Bandits - Microsoft Research Thomson Sampling…

Haskellで将棋 - Small update - 探索を劇的に高速化させる方法

もしくは探索を劇的に低速化させる方法。 バックグラウンド 遅延評価パワーとか言って指し手生成部分を手前のマイクロベンチマークで2倍以上低速化させた前々回。 Haskellで将棋 - 指し手生成部を少しずつ改良していく - euphonictechnologies’s diary Haske…

Haskellで将棋 - 探索を遅延評価を駆使した形に置き換える

Haskellのパワーはなんといっても遅延評価。Ocamlから移ってきた私としては一番戸惑うのはその部分で、末尾最適化への気の払い方とかが若干違ってくる気がします。なんというか、foldl'と比べてfoldrなら必要な部分しか評価されないから無限リストも処理でき…

Haskellで将棋 - 指し手生成のスピードテストとHaskellのマイクロベンチマークライブラリ:criterion

前回は指し手生成部分に手を加えてみた。ここにあるよくベンチマークに使われている局面からの指し手生成スピードを測定して、先の変更がどれ位悪影響をもたらしているかを確認しておく必要がある。 当然のことながら一発で計算できるものを分割してリストを…

Haskellで将棋 - 指し手生成部を少しずつ改良していく

今回は、指し手生成部を2つの関数に分解する。 現在は指し手生成を駒を移動する手と持ち駒を打つ手に分けて生成しているが、これをさらに分解して 駒を打つ手 駒を移動する手のうち取る手 駒を移動する手のうち取らない手 に分解していきたい。正確に言うと…

df-pnとproof number searchはじめました+雑記

オセロのAIを実装しています。 将棋を少し離れて諸事情によりオセロのAIを実装しています。将棋に少し関わりがあるので、少しメモを。 いま実装しているのは必勝読みルーチン、読みきりルーチンです。df-pnを勉強しつつ単純なpnsを実装しています df-pn探索(…

Haskellで将棋 - off-topic: 将棋ぶらうざQのYosemiteでの動作とHaskell将棋の設定方法(未熟編)

コメントを頂いたので早速Haskell将棋の設定方法の現状の問題点と回避方法をメモしておきます。 ついでにYosemiteにアップグレードしたので将棋ぶらうざQの動作に必要なことをさらっとメモしておきます。 Yosemiteで将棋ぶらうざQを立ち上げる Yosemiteにア…

Haskellで将棋 - 探索と指し手生成の改善について考える

現状のコード 現状の探索と指し手生成は、実際にコードを見るほうが早いので早速見てみると Search.hs: minmax :: Int -> Board.Bd -> Result minmax 0 bd = Result (Eval.eval bd) [] minmax dep bd = maximumBy (compare `on` va) nexts where nexts = map…

Haskellで将棋 - 指し手生成

指し手生成は大事 指し手生成は局面探索のために必要なルーチンで、非常に重要なコンポーネントの一つだ。 指し手生成の肝は無駄なく素早く必要な指し手を生成して探索モジュールに渡すこと。Bonanzaの指し手生成は指し手を幾つかのカテゴリに分類して必要な…

Haskellで将棋 - KKP/KPP評価関数を見てみる

今回は ボナンザ型の評価関数(ここでは単にfv.binを使ったKKP/KPP評価のことを指すことにする)、であるコードを解析していく。 コード: hamilcar/Eval.hs at master · ysnrkdm/hamilcar · GitHub KPP/KKP Kは王、Pはピースで2つの王と一つの何かしらの駒、…

Haskellで将棋 - 駒割を見てみる

前回は外観を見始めて、エントリポイントから評価関数のところまで追いかけてみた。そこで評価関数はボナンザ型の評価と駒割りの足し算となっていることがわかった。 今回は駒割りの部分に注目してみる。 駒割りとIArray IArrayはHaskellにおけるimmutableな…

Haskellで将棋 - プログラムの外観をみてみる

将棋ぶらうざQで対局をしてみた Gyazoというサービスがあるのでそれを使って対局の模様をGIFアニメにしてみた。 (このサービスすぐアップロードしてくれて便利。) 将棋ぶらうざQはGUIの完成度は高いし、Haskellの将棋プログラムも動かすことができたので、こ…

(一番お手軽に)Macでコンピュータ将棋をやるために必要なこと

このエントリの続き Haskellでコンピュータ将棋を書く、のテンプレート - euphonictechnologies’s diary Macでコンピュータ将棋を楽しむ環境をまずセットアップしてみる。 コンピュータ将棋は基本的に思考エンジンとフロントエンドGUIがわかれていて、エンジ…

Haskellでコンピュータ将棋を書く、のテンプレート

偉大な先人のコード片からコンピュータ将棋を始めてみる。 実は昔からコンピュータ将棋には興味があって、いくつかものすごくプリミティブなプログラムを書いたことがある。 このリンク先のエントリに触発されて、Haskellでもぜひコンピュータ将棋のプログラ…