u++の備忘録

【書評】『まんがでわかる ウラジーミル・ウラジーミロヴィチ・プーチン』

所感

  • 漫画なのでスイスイ読め、プーチンや彼を取り巻く時勢をザックリと把握できる
  • 決してプーチンを礼賛するだけの本ではなく、時に批判的に多面的に取り上げている
  • 例えば何の説明もなく「KGB」が出て来るなど、一定の世界情勢の知識は前提としている
  • 何度も読み返し、さらに別途で近代史を復習したくなるような良本だと思う

『新人君! RPGの世界でJavaを学ぼう』をやった

はじめに

本記事は、下記記事の続編。
upura.hatenablog.com

Githubのrepository

f:id:upura:20171231202156p:plain
github.com

所感

  • ざっとJavaオブジェクト指向を復習できる良本だったと思う
  • サンプルコードに不備がある箇所が数点あったが、逆に本質を理解しているか確認できて良かった
  • 無事に年内に宿題を終えられたのは褒めてあげたい

【冬休みの宿題】『新人君! RPGの世界でJavaを学ぼう』をやる

※この記事は宿題を宣言することで自らのやる気を奮い立たせるためのもの。

26日に納会があった。今回の年末年始は、冬休みの宿題として『新人君! RPGの世界でJavaを学ぼう』に取り組むことにした。
http://www.ric.co.jp/book/contents/book_936.html

来年以降も自分自身がJavaのコードを書くことは無さそうだが、プロジェクトとして関わることはありそうなので、まとまった時間が取れる時に入門書を通読したい。写経しながら、ザッとJavaオブジェクト指向について学び直す予定。

学習用のRepository

github.com

遺伝的アルゴリズムでゴールを決めてみた

遺伝的アルゴリズム」を用いて、サッカーでゴールを決めるのを目的とした学習モデルを設計した。2年前の大学の授業で作った資料が発掘されたので、ブログにまとめる。


モデル化

f:id:upura:20171228102051p:plain

赤色のチームが攻撃し、青色のチームのゴールを狙う。1回のシミュレーションは、赤色のチームがセンターラインから攻撃を開始し、青色のチームにボールを奪われるか、ゴールを決めるまで実施する。

2チーム分22人のエージェントを作成し、一定の規則に従い移動するよう制御。具体的には以下の通り。

  • 赤色のチーム……ゴール方向に向かって、一定速度で進む
  • 青色のチーム……赤色のチームのボールを保持しているエージェントに向かって、一定速度で進む

赤色のチームは、一定の時間(フェーズ)ごとに、ボールを保持したままドリブルするか、味方にパスを出すかを決める。ゴールへ一定の距離まで近づいたエージェントがボールを保持している場合、シュートを打つ。シュートは必ず決まる。

青色のチームのエージェントが、ボールを保持している赤色のチームのエージェントに一定の距離(ごく近く)まで近づいた場合、ボールを奪う。

遺伝的アルゴリズム

f:id:upura:20171228103226p:plain

赤色のチームに、上記のような遺伝子情報を持たせる。右上の表は、例えば「1フェーズ目で2番のエージェントにボールを保持させる(この時点で2番のエージェントがボールを保持していればドリブルし、そうでなければ他のエージェントからパスを貰う)」ということを意味する。

評価値

f:id:upura:20171228103604p:plain

とある遺伝子情報に対し、その指示に従ってシミュレーションを実行する。ここで「赤色のチームの一番先頭のエージェントが、どれだけ青色のチームのゴールに近づけたか」を評価値とする。

f:id:upura:20171228104246p:plain

複数個の遺伝子情報の中から、評価値の高いものを選択し、交叉(組み換え)を行うことで次世代の遺伝子情報群を生成する。「シミュレーションと評価→選択と交叉」の繰り返しで徐々に性能の高い遺伝子情報が生み出され、最終的にはゴールを決められる遺伝子情報が誕生するという仕組み。

実験結果

第1世代

即座にボールを奪われてしまう。

第3世代

第1世代より成長していると分かる。

f:id:upura:20171228104852p:plain

世代ごとの評価値の推移は上記の通り。世代を重ねるごとに評価値が上がっていると分かる。

第8世代

遂にゴールを決められる遺伝子情報が誕生。オフサイドとか言わない。

考察

以下の2条件を試してみた。

  1. 青色のチームのフォーメーションを変更
  2. 青色のチームの動き方を変更
    • 自分よりもボールの方が自陣ゴールに近い場合は、通常より速く移動

f:id:upura:20171228105128p:plain
f:id:upura:20171228105421p:plain

詳細は割愛するが、ゴールを決められる遺伝子情報が誕生するまでの時間は、1の場合はそれほど変わらず、2の場合は長く(13世代ほど)なった。(少なくとも今回の場合)システム設計自体を整えるより、問題が生じた場合の対策を用意しておく方が効果的だと示唆された。

参考

2年前の資料作成時、下記の動画を参考にした。当時は投稿者について知らなかったが、「平成将棋合戦ぽんぽこ」の製作者さんだった。
www.nicovideo.jp

Rで棒グラフと折れ線グラフを重ねた図を作成 〜出生数・出生率を例に〜

下記のツイートを見て、出生数・出生率の推移を調べてみようと思った。

可視化した結果は下記の通り。

f:id:upura:20171226114323p:plain

データは下記サイトからダウンロードした(出典:厚生労働省「人口動態統計」)。
内閣府ウェブサイトの常時暗号化による「https:」への切り替え - 内閣府

Rスクリプト

label <- t(df['year'])
num <- t(df['birth_num'])
rate <- t(df['birth_rate'])

par(mar=c(4, 5, 2, 5))
barx <- barplot(num, names.arg=label, xlab = "", ylab = "Number of live births", col=c('white'))

par(new=T)
plot(barx, as.matrix(rate), type="o", axes = F, xlab = "", ylab = "")
axis(side = 4)
mtext("Birthrate", side = 4, line = 3)
box()

abline(v=51)

東大を退学して10月に新卒入社した

はじめに

  • 退学 Advent Calendar 2017の6日目の記事
  • 本Advent Calendarの2日目の記事で触れられていた、「中退してすぐにプログラマとして就職できて良かった話」みたいな記事

masuda114.hatenablog.com

2017年の所属の変遷

辞めた理由

  • 学部を出て就職するつもりで4年次に内定を持っていたが、4年次から本格化した研究が上手くいかない自分が悔しく「このまま研究の奥深さ(自分に向いているorいない/自分が好きor嫌い)を知らずに就職したら後悔する」と思い、2016年7月に全内定を辞退して大学院進学を決意
  • 真面目に取り組んだ甲斐あり、卒業時には優秀卒論賞を受賞しMITでの短期プログラムにも参加、修士課程1年では国内会議(査読なし)発表・国際会議(査読あり)を経験
  • 前々から30代後半で家業を継ぐ可能性があり、(研究活動の最初の一歩をひと通り体験できたこの段階で)早めに次は一度企業で働いてみたいと思った

就活

  • 2017年3月ごろから就職の可能性を意識し出し、企業の選定を開始
  • 2017年5月中旬に新卒枠(新卒とは言っていない)で3社エントリー
  • 2017年6月頭に第一希望の内定を獲得
  • しばらく判断を保留していたが、2017年8月に大学院退学と入社を決意

現状の評価

  • 学生時代は朝4時半起きで週6日以上研究室に行くストイックな生活をしていたので、企業勤めになっても生活に特に変化はない(むしろホワイト化した)
  • 企業ならではの行動の遅さなどは若干不満だが、企業だからこそ体感できることもあり、概ね満足
  • 金銭面も独り身の現状では全く文句ない

おわりに

  • 2017年は激動の年だったが、現時点では退学して良かったという所感
  • 「はじめに」でも書いたように生存バイアスなので、一般論として大学・大学院は退学しない方が良いと思う
  • 正直ブログでは書けない/書き切れない話も多いので、(退学を考えている人など)興味ある方は連絡ください

追記

入社7カ月後

upura.hatenablog.com

新パックの「心眼の祭殿」でガン伏せ直接攻撃デッキが強化された件

12月1日に発売開始した「ブレイドオブスピリッツ」で登場した「心眼の祭殿」で、ガン伏せ直接攻撃デッキが強化された気がします。

f:id:upura:20171205081011p:plain

効果的な例

  • 直接攻撃が1000ダメージに
  • 相手から直接攻撃を食らっても最大1000ダメージに
  • ホーリージャベリン」などでの回復量は相手の攻撃力参照のため、大量に黒字に

デッキレシピ例

f:id:upura:20171205081239p:plain

まだカードが不足しているので、イメージだけ。「心眼の祭殿」が引けなかった場合には「リバース・ペイン」主体で戦うことを想定しています。