2015-10-01から1ヶ月間の記事一覧
最近、入不二先生の『あるようにあり、なるようになる』を読んでる。 あるようにあり、なるようになる 運命論の運命作者: 入不二基義出版社/メーカー: 講談社発売日: 2015/07/29メディア: 単行本この商品を含むブログ (5件) を見る こちらの感想はまた別に書…
昨日は本文の組立てまで説明した。 今日は表紙の作成と、全体の組立てをやっていく。 黄ボール紙の裁断 まずは黄ボール紙の裁断から。 あらかじめ書籍用のサイズにカットされた黄ボール紙も売ってるんだけど、自分が買ったのは四切判の大きなものなので、適…
昨日は本文の印刷まで説明した。 今日は本文の組立てをやっていく。 本文の裁断 まずは本文の裁断から。 これは何をやるのかというと、A5の内容をA4の紙に印刷したので、半分に切って、A5サイズにするという作業。 実際のところ、これは裁断する代わりに折る…
自分は哲学が好きで、『哲学散歩道』っていう同人誌を書いたりしてる。 今日は、その『哲学散歩道』をどうやって製本したのかを、ちょっと紹介してみたい。 完成した本の姿 手順などを紹介していく前に、まずは完成した本の姿を紹介しておきたい。 思ったよ…
子供の頃、交通安全教室とかで、道を渡るときには「右、左、右」の順に確認しましょう、ということを教わるはず。 でも、なんで「右、左、右」の順なのか、ということは、あまり教わらない(あるいは、教わったていたとしても、理解できなかったり、覚えてい…
これまでの各記事は以下から。 ランダムAI 「BirdHead」の思考ルーチンを作ってみた。(その1) - いものやま。 グリーディAI 「BirdHead」の思考ルーチンを作ってみた。(その2) - いものやま。 強化学習AI 「BirdHead」の思考ルーチンを作ってみた。(そ…
昨日はアクション選択と学習のアルゴリズムを実装した。 今日は、パラメータの保存とロードを実装して、クラスとして完成させる。 SarsaComクラス(続き) 保存とロード 保存とロードの実装を入れたクラス全体の様子は、以下のようになる。 (省略されている…
昨日はプレイヤー・ビューの特徴ベクトル化とそれを使った価値の計算について説明した。 今日はそれを使ったアクションの選択と学習について説明していく。 SarsaComクラス(続き) アクションの選択 アクションの選択は、Sarsa()法を使うので、任意のソフト…
昨日はグリーディAIを実装した。 今日からは強化学習を使ってAIを作っていく。 方針 まず、方針について。 強化学習にはいくつかのアルゴリズムがあるけれど、今回はSarsa()法を使う。 これは強化学習について学んでみた。(その19) - いものやま。で説明し…
昨日は「BirdHead」に対するランダムAIを実装した。 今日はもうちょっとマシなAIを実装してみる。 グリーディAI 「22」や「5本のキュウリ」のルールを聞いたときに誰もが思うのが、「それなら一番強いカードを出し続ければいいんじゃないの?」というもの。 …
前回までで「BirdHead」を遊べるようにした。 今回からは「BirdHead」の思考ルーチンを作っていく。 ランダムAI まずは一番簡単なところから。 合法手からランダムにアクションを選択するだけの、ランダムAI。 //============================== // BirdHead…
10月18日に宇都宮の森林公園で開かれたジャパンカップサイクルロードレース。 JAPAN CUP CYCLE ROAD RACE | この観戦に自走で行ってみた。 ルート概要 今回のルートは以下のようなもの。 自宅から江戸川CRに登り、江戸川CRを北上して、関宿に着いたらそこか…
昨日はSarsa法によるAIの実装を行った。 今日はQ学習によるAIの実装を行っていく。 QLearningCom さっそくQ学習によるAIの実装を。 #!/usr/bin/env ruby require './tic_tac_toe' require './state' require './value' module TicTacToe class QLearningCom …
昨日は○×ゲームをプレイできるようにするところまで実装した。 今日はSarsa法を使ったAIを実装していく。 Valueクラス まずは行動価値を表すValueクラスから。 #==================== # value.rb #==================== require './state' module TicTacToe …
昨日はSarsa法とQ学習の説明をした。 今日からは実際にこれらのアルゴリズムを使って○×ゲームのAIを作ってみる。 ○×ゲーム まぁ、○×ゲームの説明は不要だよね・・・ とりあえずは、○×ゲームをCUIで遊べるようにするところから。 モジュールと定数の定義 とり…
昨日はTD学習の考え方について説明した。 今日は方策オン型制御であるSarsa法と、方策オフ型制御であるQ学習について説明していく。 Sarsa法 Sarsa法は方策オン型制御のアルゴリズムの1つで、方策としてソフト方策を使うことで知識利用と探査のバランスをと…
前回までは、モンテカルロ法について説明していた。 今日からはTD学習(Temporal Difference Learning: 時間的差分学習)について説明していく。 おさらい まず、強化学習のベースとなる考え方は、Bellman方程式を解いて、ある方策の元での状態や行動の価値…
これまでの各記事は以下から。 デッキの実装 「BirdHead」を遊べるようにしてみた。(その1) - いものやま。 モデル全体の構成 「BirdHead」を遊べるようにしてみた。(その2) - いものやま。 アクション、プレイヤーの実装 「BirdHead」を遊べるようにし…
昨日はコントローラの実装を行った。 今日は人間プレイヤーの実装を行って、実際に遊べるようにしてみる。 Humanクラス ということで、さっそくコードを。 //============================== // BirdHead //------------------------------ // Human.swift /…
昨日までで、モデルの大部分は実装できた。 今日は、これらを繋ぎ合わせて動作させるコントローラを実装していく。 GameControllerクラス コントローラはビューとモデルを結びつける「糊」の役割を果たすので、UIごとに作っていくことになる。 ここで作るの…
昨日はゲーム情報の実装を行った。 今日はプレイヤー・ビューの実装を行っていく。 GameInfo.PlayerViewクラス プレイヤー・ビューはGameInfoクラスの内部クラスとして定義していく。 // 続き class PlayerView { // 続く なお、YWFのBoardと同じく、本質的…
昨日はアクションとプレイヤーの実装をした。 今日からは、ゲーム情報、および、プレイヤー・ビューの実装をしていく。 GameInfoObserverプロトコル その前に、ゲーム情報のオブザーバになるGameInfoObserverプロトコルのインタフェースを定義しておく。 ビ…
昨日はモデル全体の構成について説明した。 今日はアクションを表すAction列挙型とプレイヤーを表すPlayerプロトコルを実装していく。 Action列挙型 まずはAction列挙型から。 //============================== // BirdHead //----------------------------…
昨日はデッキの実装をした。 今日はモデル全体の設計を書いていきたいと思う。 モデル全体の構成をどうするか? YWFを作っていたときは、モデル全体の構成をどうすればいいかは、簡単だった。 すなわち、目に見えるボードがあって、プレイヤーがいて、プレイ…
昨日はトランプゲーム「22」のルールをちょっと変えてテーマを乗せたゲーム「BirdHead」を考えた。 今日からは、このゲームを実際に(CUIで)遊べるようにしてみる。 カード、デッキ まずは、カードとデッキを実装するところから。 といっても、BirdHeadの場…
昨日はトランプゲーム「22」の紹介をした。 実はこれは今日への布石・・・ ということで、「22」のルールをちょっと変更して、さらにテーマを乗せることを考えてみた。 「22」のちょっと不満なところ 「22」はすごくいいゲームで大好きなんだけど、ちょっと…
すでにいろんなところで紹介しているのだけど、ブログでも。 ということで、ちょっと変わったトリックテイキング「22」の紹介。 どんなゲーム? 「22」は以前紹介したシュナプセンやブリスコラと同じく、トリックテイキングというジャンルに分類されるゲーム…
このブログでずっと開発の様子を伝えていた変種オセロ「YWF」がリリースされました。 これまでの開発の様子 これまでの開発の様子は、以下の各まとめから。 考案〜Rubyによる実装(CUI) AIの作成 Swiftへの移植(CUI) ゲーム画面でのUIの作成 スタート画面…
昨日は方策オン型モンテカルロ制御と方策オフ型モンテカルロ制御について説明した。 今日は、実際にこれらのアルゴリズムを使ったプログラムを書いてみる。 レーストラック 本で練習問題とされているレーストラックの問題を、方策オン型モンテカルロ制御、方…
昨日はモンテカルロ-ES法を使ってブラックジャックのAIをプログラミングした。 今日は、開始点探査の仮定を外す方法について考えていく。 方策オン型手法と方策オフ型手法 まず、開始点探査の仮定を外す方法として、大きく分けて2通りの方法が考えられる。 …