最近やっている事をダラダラと書きます。
コインパズルの対戦モードを作るにあたって、以前、人vs人を作ろうとしたのですが、そもそもやっている人が少ないので、全然マッチングしないんですよね。
それで、AIを利用して、CPUと闘うものを作ろうと思っている訳です。
そこでまずは、Unityと言う開発言語を使って、コインがどこに置くと合計得点が何点になる、と言うのを3手先まで計算したんですね。
3手先、と言うと大した事に無いように思えますが、一手につき5通りの答えがありますから、これは5の3乗で125通りのデータとなる訳です。
しかし、3手先では全然弱い。
だから4手にすると、さらに5をかける事になり、これは625手も読まなきゃいけないので、これは計算に時間がかかりすぎて、ゲームがいちいち止まるのです。
そこで、pythonなる言語を使って、計算ではなく、「こう言う場合はこうする」と言う条件分岐的なシステムで行こうと思った訳です。
pythonと言う言語はフレームワークと呼ばれる追加機能みたいな物がたくさんあり、Pandasと言うのが最強な訳です。
Pandasまで行き着くために、結構苦労がありました。
1、Visualstudio codeと言うソフトを入れる
2、アナコンダ(たくさんの小売店が入ったデパート的なソフト?)なるものを入れる
3、ターミナルでpythonをダウンロード
4、なぜかPandasが最新のpythonで使えずダウングレード
5、ただし、アナコンダ内のjupiterってソフトでは普通に使える。Visualstudio codeでは無理
これは、例えば株価の100日間のデータから、明日の株価を予想する、みたいなシステムが作れます。
データ分析の専門家の方にPandasで株価予想できますか?って聞いたら株は数字以外のデータが多すぎて無理、とおっしゃっていましたが、例えばそんな事ができます。
とにかく、たくさんのヒントから答えを予想する、と言う手法である事だけ、お伝えしておきたいと思います。
これを使って、例えば空の8割が曇りなら、雨が降る、そうでないなら降らない、と言うような感じでコインをどこに置くかを割り出していく分岐を勝手に作ってくれる訳ですから、恐ろしいシステムです。
このツールの凄さはこの一文で伝えるのは難しいですが、例えば株価の100日間のデータを見て、明日の株価と最も関係があるのは24日前のデータです、なんて事を一発で当ててくれる、そんなイメージです。しかも、明日株価が上がるか、下がるかをどんな基準で判断したか、まで詳細に図にまとめてくれます。
これは分岐が凄い事になりますから、これを「決定木」と呼ぶそうです。
この決定木は割と簡単に作れました。
問題は、これを読み込み、変数をそれに投げてコインを何番目に置くか、と言うシステムです。
データ分析の専門家の方(プログラミングスクールの生徒 笑)によると、unityとpythonの連携は前例が少ないらしく、結構手探りで頑張って下さい、との事。
ネットにある色々なコードをちょこちょこと変えて、実装。
ネットにあるコードを改良して、自分がやりたい事ができるコードに変えるの、多分結構得意です。
しかし、これが重いんですよね。
原因としては、作った決定木をpythonに読み込む、ここで時間を食ってるっぽい。
クオラと言う質問サイトに投稿したところ、onnxなるツールを使うと良いそう、との事でした。
onnxなるツールはpythonで作ったものをC#上で開けるとのこと。
まずはpythonにonnxを導入して、書き出すところまではできました。
しかし、C#に読み込めない。
C#に読み込むためにはMenohSharpなるツールをC#に入れる必要があるらしいのですが。
これが入らないところで苦しんでます。