プロが教える店舗&オフィスのセキュリティ対策術

ロボカップにシミュレーションリーグ参加したいと思い
プログラムを作成中です。
(ロボカップホームページhttp://www.robocup.org/)

サッカーの選手の動きを記述するモデルを探しています。
そのものずばり、または関連のあるものをご存知の方、
教えてください。

A 回答 (3件)

 実は人工知能に関しては随分長くなんにもやってないもんですから、完全にシロートのレベルです。


 ロボカップの重要なテーマは、不完全な通信しかできない分散協調システムの知的行動をダイナミックに決めていく事です。だから「放送で全員一斉に指令を受けるのは禁止。」これが大前提です。
 選手同士の通信にも時間が掛かるし、パスと同じく一定の確率で失敗し、さらに、無駄に動くとスタミナを消耗するとなると....
 いくつかの戦略を用意して選手に周知させておいたとしても、現在の状況(各選手は遠くの状況ほど粗い精度でしか見られません)を判断して戦略を切り替えるタイミングには、選手毎にずれがある。状況を先読みしようにも、敵も味方もてんでに動くんですからそう簡単じゃありません。状況をどう定義するか、どう分類するかがそもそも問題です。さらに、だれがイニシアチブを取るのか。リーダーが近くにいる選手に順々に意志を伝達していくのか、各自が判断するのか。謂わば、チーム内の協力ゲームからして考えなくちゃいけない問題です。そして勿論、相手の戦略を早く認識してそれに対処することが必要である。単なる状況判断じゃなく、展望が要求される。という風に普通は考えます。
 ですから「局面の先読み」という古典的手法が使えるかもしれない、というのは話の裏を掻いたような面白いアイデアですね。長期的というより、却って短期的な戦略じゃないでしょうか。決定論的なゲームやサイコロのゲーム(backgammonなど)と違って連続量の確率論的先読みというのは、ほんの近未来でコヒーレンスを失いほとんど無意味になってしまいます。(敵が単純に、パスする相手の選択を乱数で決めるという戦略で来る場合を考えてみてください。)たいして先読みできる筈がないし、敵も簡単には読まれないように動くでしょう。従って、敵の戦略がどうあれ、その時点での局面=「ボールと選手の配置」(移動速度も含めなくちゃいけないでしょうから、(22人+1個)×4次元 = 92次元空間。なかなか広い空間ですねえ。)から、最急降下法みたいに瞬間毎に最適な加速度を算出していくというのに近いことになりそうです。(各自の局面認識の精度が違うのはここでも重要な点ですが。)
 戦術的に心配なのは、このやり方では、ひどい状況に簡単に誘導されてしまう恐れはないか、という事です。局所的最適解(local minimum)に追い込まれるんじゃないか。小学生並に全員隅っこに集められちゃったりして。また、右に行くか左に行くか、どちらか分からないという「見合い」の状況にしょっちゅう持って行かれて、1/2の確率でやられちゃうとか。
 しかも、このように全く展望を持たず「試合を組み立てる」ことを放棄した戦略というのは、選手がうろうろするので急速に消耗しそうです。だからスタミナ温存も評価関数に組み込まなくちゃいけない。ところが戦術の選択と意志の疎通という観点がありませんと、パスする相手がラクしようとして走ってくれない可能性が高い。(全員が同じ精度で同じ結論を出すとは限らないんですから。)なにしろ味方の動きを見て自分の動きを決めているのでは、敵と同じぐらいしか味方の動きが読めない。これじゃ敵の裏をかくどころか、敵に見え見えの動きをしてしまいそうです。
 stomachmanとしては、フォーメーション毎に何か理想的な状況というものを幾つか想定しておいて、それに近い状況が生じたことを素早く認識して、dynamic programmingみたいにその状況になんとか収束させる。その収束先が最後の最後まで複数あって敵には絞れない。なんかそういう、状況認識における緩やかなパターンマッチングの技術がポイントのように思うんですが。勿論相手の出方によってフォーメーションを変える訳でして。
 ま、そう簡単にはいかないから、この問題は楽しいんですよね。
    • good
    • 0
この回答へのお礼

丁寧な解答ありがとうございます。

とにかく山のように課題があってなかなか大変な問題です。
そこでまずは大雑把ではありますが、個人スキルとチームスキルとにわけて考えることにしています。
ここでいう個人スキルとは、ドリブルをする技術だとか、ボールを奪う技術、正確に状況を把握する技術をさします。
また、チームスキルとは誰にボールをだすか、どこに向かって走ればよいか?といった問題として捉えています。
個人スキルのような細かい技術は他にまかせるとして、そうした技術を前提としてどうしたら効果的なパス回しが実現できるか、ということ主眼を置いています。

先を読むといってもおっしゃる通り、あまりに先を読みすぎると「コヒーレンスを失いほとんど無意味に」なってしまいます。先読みの深さは、パス2つ分くらいを考えています。(どうやってその深さを実現するかはまたまた難しい問題になりそうですが)
状況をどう定義するか、これもまた問題です。とりあえずはプレイヤの速度は無視してしまおうと考えてます。
また連続量で考える前に、最初の内は状況をグリッドに区切ってしまい、そこで先読みを行なおうと考えています。

1.エージェントに認識された空間を離散化する。
2.離散化された空間において、先読をし、次にとるべき行動を選択する。
3.選択された行動をサッカーサーバのプロトコルに合わせた命令に変換する
といった感じです。

まだまだ課題は山積で、実装までいたっていません。
まずは生成規則を用意して、グリッド上でツリーを構成してみようと考えています。

お礼日時:2001/02/20 16:05

ここなんかどうでしょう。


僕も参加しようかな~~なんて考えていて見つけたページです。
でもプログラム作成中ということですから、きっと見つけていらっしゃるでしょうね。

ロボカップシュミレーション部門
なんか気軽に参加できそうでよさそうですよね。
日本語もあったらうれしいのですけどね。

参考URL:http://ci.etl.go.jp/~noda/soccer/client/index.ht …
    • good
    • 0

ロボカップにシミュレーションリーグ参加する以上、オリジナルで、サッカーの選手の動きを記述するモデルを作るのが最大の仕事じゃないんでしょうか???



ちなみに、
小学生の時は、「全員がボールに向かって突進する」というアルゴリズムを使っておりました。

高校では、「ボールを股に挟んだ選手を、みんなで担いで運び、ゴールに投げ込む」というアルゴリズムを使っておりました。

この回答への補足

ちょっと質問が曖昧すぎました。すみません。

実際のボールゲームではミーティングではホワイトボードをつかって
選手の動きを指示したりしていますが、その記述形式には統一された
規格のようなものがあるのだろうか?もしそのような規格があるのなら
それを利用して、プロダクションルールを記述することができないだろ
うかと考えたのがことの発端です。

プロダクションルールとサーチアルゴリズムによる先読みを組み合わせたら
面白いだろうと考えています。
通常プロダクションルールというと、与えられた状態と目的からプランニング
を行ないますが、サッカーのような不完全情報ゲームでは破綻が目に見えて
ます。
そこで、もう少し緩いルール--与えられた状態を入力とし、とるべき行動の
候補を複数出力として出してくれるようなルールを考えます。
このルールを用いて、現在の局面の状態から次の局面へとツリーを構成し、
評価関数によって一番よいと思われる行動を決定するというものです。

先読みを行なうことで、従来の手法よりも長期的な戦術を実現できるのでは
ないか?という目論見です。

補足日時:2001/02/16 23:26
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!