ワークショップのチーム分けを組合せ最適化問題として解く
背景 ワークショップをするにあたってチーム分けは重要。得意技が違うメンバーと力を合わせてアウトプットを出すのが醍醐味なので、チーム内のメンバーは偏らないのが望ましい。また、特定のチームだけズバ抜けて能力が高かったり低かったりする不公平も避けたい。 一方で、膨大な組み合わせの中からイケてるチーム分けを考えるのは結構大変な作業である。例えば、36人を6チームに分ける組み合わせを考えると、36C6 * 30C6 * ... * 6C6 / 6! = 3.71*10^(21) とのことで、 聞き慣れない 「37 垓 通り 」なる組み合わせから選ばなければならない。なんとか上手く対処できる方法はないかと考えた。 やりたいこと 人工知能が将棋で人間に勝つよう、膨大な組み合わせの中から最もイケてる手を選ぶのはコンピューターの得意とするところ。そこで、ワークショップのチーム分けを 組合せ最適化 問題として定式化し、解決しようと試みる。 アプローチとして、事前に参加者から「 実践コーチング 」でタイプ診断してもらい、その点数を使ってチーム分けのイケている度合いの求め方や、チーム分けの表現を行列計算でモデリングし、データサイエンティスト御用達の R言語 で実装して解く。 コミュニケーションタイプとイケてるチーム分けの関係性 「 実践コーチング 」は、コミュニケーションの図り方の4タイプ「コントローラー」「プロモーター」「サポーター」「アナライザー」それぞれ点数で診断してくれる。各タイプがまんべんなく集まったチームは、多様性があって良いチームに違いないという憶測のもと進める。 例えば私の診断結果は以下の通り。 コントローラーの点数:3 プロモーターの点数:3 サポーターの点数:2 アナライザーの点数:0 タイプは「コントローラー/プロモーター」です チームメンバーの点数をタイプごとに合計し、各タイプの点数が均一であれば、バランスの良いチームだと言えそう。図の例ではチーム合計10,3,4,8であり「コントローラー」タイプに偏ったチームといえる。 また、チーム内のすべての点数をさらに合計した値(例だと25)がチームの能力であるとし、他のチームと比べてばらつきが少なければ、公平なワークショップになると言えそう。 行列で表現してみる ...