%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%	tani_resume.syt 使用例
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%#! platex resume.tex
\documentclass[a4paper]{jarticle}

\usepackage{tani_resume}

\alignbeforeskip -5mm
\alignafterskip -5mm
\eqnarraybeforeskip -5mm
\eqnarrayafterskip -5mm

\jptitle{AIプログラム大会向けのコード作成}
\etitle{}
\jpauthor{荒金 誠二}
\eauthor{Tomokazu Aragane}
\course{谷聖一　研究室}
\year{24}
\abstract{%
人工知能（AI）とは,人間の計算,学習,思考,判断などの機能を分析してメカニズムを知り,これらの機能をコンピュータに実現させようという試みである.現在ではロボットや広告,ゲームに使われており,情報技術にかかせない存在である.ゲーム技術者の発掘・育成を目的としたAIプログラミングコンテストが開催されている.本演習では,そのようなコンテストの１つである,SamurAI Codingに参加した.又,MarioAI Championship向けのプログラムを制作した.
}

% 最終更新時刻の挿入
%\compheading

\begin{document}

% タイトルを表示させる
\maketitle

\begin{multicols}{2}
\setcounter{page}{3}
%こうやって2段組にします．
\section{はじめに}
人工知能（AI）とは,人間の計算,学習,思考,判断などの機能を分析してメカニズムを知り,これらの機能をコンピュータに実現させようという試みである.人工知能は１９５０年代から活発に研究され始めた(\cite{whatsai}).チューリングが１９５０年に知的活動のテストを可能にする方法としてチューリングテストを考案(\cite{whatsai}).１９５６年にはダートマス会議でJ.McCarthyにより人工知能と呼ばれるようになった(\cite{whatsai}).現在ではロボットや広告,ゲームに使われており,情報技術にかかせない存在である.人工知能には２種類あり情報から役に立つ知識を見つける学習型と,知識をもとに新しい結論を得る推論型に分けられる.学習型はショッピングサイト,広告などに利用されている.例えば,ショッピングサイトで買い物をすると買った品物と同じジャンルの商品をおすすめとしてメール等で知らせてくれる.推論型は主にロボットやゲームがある.ロボットでは歩く,走る,段差があれば登る動作をさせる等である.ゲームではプレイヤーの動きに合わせて敵を登場させ,攻撃させる等がある.AIはゲーム分野でも商品価値を高めるため,プレイヤーに面白さを提供するため応用,研究されている.ゲーム制作に興味があるため,本演習では,ゲームAIについて理解を深めることを目的にAIプログラミングコンテストに挑戦した.現在AIプログラミングにゲーム技術者の発掘・育成を目的とした様々なコンテストが開催されている.そこで,そのようなコンテストの１つである,SamurAI Codingに参加した.又,MarioAI Championship向けのプログラムを制作した.SamurAI Codingは２０１１年度から始まった新しいコンテストであり,年に１回開催されている.大会のゲームは年度によって異なるものになる.今回は２回目にあたる２０１２年度に谷研究室の荒金,並木の２人で参加した.SamurAI Codingには各チームにエージェントと呼ばれる３人の侍と犬が用意されている.並木は犬の動作を,私は侍の動作を担当した.SamurAI Codingは１１月に終了し,残りの期間はMario AI Championship向けのプログラムをできる限り制作した.

\section{SamurAI Coding}

\subsection{概要}
SamurAI Coding(\cite{samurai})は２０１１年度から開催されている,世界中の若手エンジニア,学生をターゲットにした大規模な国際的なコンテストである.GREE株式会社がイベントスポンサーをし,２０１１年度は早稲田大学鷲崎研究室が主催した.２０１２年度は情報処理学会が継承して主催した.\\
　使用する言語はsamurai言語というオリジナルの言語でプログラムを作成する.作成したプログラムをテストするには公式ページにあるTrial Gameで実行できる.
\begin{center}
\includegraphics[width=8cm]{samuraiss.eps}\\
\figurename{　スクリーンショット}
\end{center}

\subsection{ルール}
\subsubsection{初期設定}
プレイ人数は４人.盤面は３９行,奇数行の列は４１列,偶数行の列は４０列に六角形のセルが敷き詰められている.各チームにはエージェントと呼ばれる３人の侍と１匹の犬が用意されている.上下左右対称に５個づつランダムにゲートが配置されており,侍及び犬がゲートの先に行こうとすると反対側のゲートにワープする.
\subsubsection{進行}
試合毎にラウンド数がランダムに設定されており,ラウンド数（１０００��２０００）に上限に達すると試合が終了する.ラウンド毎にプログラムが読み込まれる.エージェントは１ラウンド毎に６方向の内１マス移動,または待機ができる.侍の役割は移動の際に足跡を残し,陣地を獲得する.犬には犬の脅威というものがあり,これにより犬の周囲６マスに敵の侍は入ることができない.また犬は足跡を残すことができない.エージェントにはフリーズ状態があり,他のエージェントと衝突,壁に衝突,犬の脅威の内側に入ることにより発生する.この状態を解除するには待機行動する必要がある.
\subsubsection{勝利条件}
勝利条件には大陸横断と大陸占領の２つがある.大陸横断は盤面の上辺下辺,または右辺左辺に足跡が繋がった場合,ラウンド数にかかわらず試合は終了し,勝利する.大陸占領は全てのラウンドが終了した時,最も占領したチームが勝利する条件である.
\subsubsection{コスト}
samurai言語にはコストが設けられている.条件式,繰り返し文,変数,配列,定数,演算子を使うごとに１づつコストがたまり,関数を作ると使うたびに中身の２倍コストがかかってしまう.合計２０００コストが上限になっており,それを超えた場合プログラムは動かない.

\subsection{侍の戦略}
\subsubsection{戦略}
侍たちを動かすにあたって,まず考えられた戦略が序盤で一気に大陸横断を狙うか,もしくは相手の邪魔をしつつ自分の領地を広げて大陸占領を狙うかの２つになった.大陸横断を狙う戦略は相手の情報を取らず,侍２人を上下に行かせ,１人を横に行かせたところ,２０ラウンド前後という速さで大陸横断を達成し,コストもかからず簡単に製作できた.一方,大陸占領をねらう戦略は相手の位置,あるマスはどのチームが占領しているのか,などの情報を取得し,それを頼りに侍たちに領地を獲得させるようなプログラムを製作した.しかし,コストが大幅にかかってしまい,コストオーバーで動作できなかった.機能を限定し,コストを削減して動かしたものの,満足のいく動作をさせることができなかった.これにより,大陸横断を狙う戦略を採用した.
\subsubsection{動作}
\begin{center}
\includegraphics[width=8cm]{position.eps}\\
\figurename{　初期配置}
\end{center}

上図のSamurai0とSamurai2のx座標が近いため,この２人の侍を大陸横断に専念させる.Samurai0を上下にある近くのゲートと同じx座標まで真横に移動させ,下へ移動させた.Samurai2も同様に真横に移動させてから上へ移動させた.これにより交差することになり,ラウンド数の短縮ができた.Samurai1は左右にある近くのゲートと同じy座標まで上下に移動させ,真横へ移動させた.これはSamurai0,2が失敗したときのためのリカバリーである.\\
　Samurai0にのみ周りの特定の３マスに誰かがいると横へ１マス移動するプログラムを実装した.これはコスト上限に達していたので３マスにしか実装できなかった.
\begin{center}
\includegraphics[width=5cm]{kenti.eps}\\
\figurename{　特定の３マス}
\end{center}

\subsection{結果}
予選は試合を４０回行い,順位に応じて得点を割り振り,その合計点数で競い合われた.１位６点,２位４点,３位２点,４位０点が与えられた.結果は１１２点で残念ながら２０チーム中１８位に終わった.大会後,提出プログラムを再レビューしたところ,バグを発見した.samurai言語はチーム毎に別々にプログラムを作成する必要があり,横へ１マス移動するプログラムが赤,黄色チームにのみ正常に動き,緑,青チームは赤,黄色チーム専用のプログラムが適用されていた.そして,味方同士で衝突する事態が発生してしまった.
\begin{center}
\includegraphics[width=8cm]{bug.eps}\\
\figurename{　バグ}
\end{center}

\section{Mario AI Championship}
\subsection{概要}
コペンハーゲンIT大学准教授Julian Togelius主催の大会(\cite{marioai}).Java言語で開発を行う,任天堂の有名なキャラクター,マリオを使ったAI大会である.公式ページでMario AI Benchmark source packageをパッケージをダウンロードすることでプレイ可能になる.ステージはランダムで生成されゴールに辿り着くまでのモンスターを倒した数,コインを獲得した数,残りタイムをもとにスコアを算出して競う.
\begin{center}
\includegraphics[width=8cm]{marioship.eps}\\
\figurename{　スクリーンショット}
\end{center}

\subsection{競技}
競技は４つに分けられている.作成したプログラムを用いて課題ステージをプレイさせ,その結果を競うGame Play Track.作成したプログラムを指定回数学習させ,課題ステージをプレイさせるLearning Track.ランダム生成されるステージをデザインするLevel Generation Track.プログラムに課題ステージをプレイさせ,いかに人間がプレイしているかのように見せるのを競うTuring Test Track.今回私たちはGame Play Track向けのプログラムを製作した.

\subsection{ルール}
Game Play Trackは敵を倒した数,コインを取得した数,ゴールまでの時間を元にスコアを算出して競い合う.

\subsection{現状}
壁と敵をジャンプで避けるプログラムを作成した.

\section{考察}
プログラムは最後に見直し,バグがないのを確認して初めてプログラムが完成したと言えることを今回反省した.\\
　Mario AI Championshipの今後の課題として穴を越えられないので越えるようにすること.スコアを伸ばすため敵を避けるのではなく倒すこと.高所からの着地とジャンプをして着地したときに,一瞬の硬直がある.そのときに敵を避けられず当たってしまうことがあった.マリオの前方の状況の情報を取得して,ジャンプの強弱と距離を調節できるようにしたい.これもスコアのためコインを取得するようにすること.以上４つの課題を実装できれば,AIとして第一歩を踏み出せるのではないだろうか.

\end{multicols}

\begin{thebibliography}{5}

\bibitem{whatsai} 人工知能学会. "人工知能の歴史". What's AI http://www.ai-gakkai.or.jp/whatsai/AIhistory.html, (参照 2013-02-21)
\bibitem{samurai} SamurAI Coding. https://samuraicoding.org/, (参照 2013-01-05)
\bibitem{marioai} Mario AI Championship. http://www.marioai.org/, (参照 2013-02-21)

\end{thebibliography}
\newpage
　\\
\end{document}
