2012-01-21 1 views
2

설정 : 멀티 플레이어 팀 게임.멀티 플레이어 팀 게임 : 플레이어 순위에 따라 자동 팀 균형 알고리즘

문제점 : 각 플레이어는 플레이어 통계를 기반으로 계산되는 1에서 5까지의 별점 등급을가집니다. 나는 가능한 한 가장 공정하게 팀을이 선수들에게 할당하는 알고리즘을 찾고 싶었다.

두 팀이 있으며 팀당 최대 5 명입니다.

6 명의 플레이어가 서버에 참여한다고 가정 해 봅니다. 그것은 서버가이 같은 팀 할당하는 것이 바람직 할 것이다 :

  1. 5 스타 플레이어를
  2. 3 스타 플레이어
  3. 3 스타 플레이어

VS

  1. 5 스타 플레이어
  2. 4 성급 플레이어
  3. 2 스타 플레이어

..as이

  1. 5 스타 플레이어
  2. 5 스타 플레이어
  3. 4 스타 플레이어

VS

에 반대,515,
  1. 3 스타 플레이어
  2. 3 스타 플레이어
  3. 2 급 플레이어 첫 번째 예

에게, 팀 당 11 개 중 한 곳이 두 번째 예에서, 반면, 하나 개의 팀을 갖는 총 14 개의 별, 다른 하나는 8 개입니다.

죄송합니다. 더 이상 간결 할 수는 없습니다.

+0

각 팀의 선수 수는 같아야합니까? – Dialecticus

답변

2

평균 점수가 모든 선수의 평균에 가장 가까운 팀마다 3 점을 골라 낼 수는 없습니까?

가장 높은 두 선수를 팀에 배정한 다음 나머지 4 개의 숫자의 순열을 평균하여 가장 균형을 잘 맞추는 팀을 선택할 수 있습니다.

각 팀의 마지막 두 멤버를 얻는 데 더 많은 로직 기반 솔루션이있을 것이라고 확신합니다.

+0

감사합니다. 잘 작동합니다. – user1162099

1

가장 기본적인 해결책은 모든 플레이어 등급을 먼저 합산하고이를 2로 나눈 다음 플레이어를 추가하여 그 숫자에 도달하는 것입니다. 정확한 변화를 모으는 것과 같습니다. 아마 멋진 알고리즘 일 것입니다.

이것은 특별한 경우를 설명하지 않습니다. 예를 들어, 플레이어 1, 1, 1, 2, 2가있는 경우, 모든 것을 합치면 모든 2 가가 가장 공정한 분배가 아닙니다.

하지만 무언가가 공정 할 때 좋은 선수 간의 팀웍 또한 중요합니다. 또한 플레이어 순위가 아마도 완벽하지는 않다는 것을 고려할 때,이 알고리즘을 과도하게 최적화하면 생산적이라고 확신하지 못합니다.

1

별은 실제 기술 수준이 아니라 힌트로 처리해야합니다. 한 팀에서 최고와 최악을 짝을 짓고 두 번째와 두 번째로 최악을 짝을 지어 나머지 팀을 분배하여 각 팀의 별표 합계가 전체 합계의 절반에 근접하도록합니다.

2

먼저 모든 스타를 추가하고 합계를 2로 나눕니다. 플레이어 목록을 별표 개수로 정렬합니다. 다음으로, 최고의 선수를 팀 1에, 두 번째를 팀 2에, 세 번째를 팀 1에 추가하십시오. 이렇게하면 좋은 결과를 얻을 수 있지만 완벽하지는 않습니다. 예를 들어 5,1,1,1 명의 선수가있는 경우입니다. 5,1 VS 1,1이됩니다.

이제 팀 간의 차이를 계산하고 두 팀의 일부 플레이어를 선택하여 교환 할 수 있습니다. 강한 팀에서 가장 강한 플레이어를 선택하고 다른 팀에서 약한 플레이어를 뽑아서 팀을 교환하면 완벽한 팀이 될 수 있습니다. 이것이 불가능할 경우, 강한 팀에서 가장 강한 것보다 한 스타가 적은 플레이어를 선택하고 같은 작업을 수행하는 등의 작업을 시도하십시오.

하지만 모든 플레이어가 동시에 행동 할 수있는 에이전트이기 때문에 각 팀에 다른 플레이어 수를 지정하는 경우주의해야합니다. "한 명의 플레이어가 더 많은 스타 추가"를 추가하면 여기에서 도움이 될 수 있습니다. 그러나 당신의 게임을 모른 채로, 나는 그것에 대해 당신에게 더 말할 수 없습니다.

1

다음을 확인하십시오. http://www.stanford.edu/class/cme305/References/approx.pdf 또는 플레이어를 그룹화하고 최상의 솔루션을 유지하는 100 가지 무작위 방법을 시도 할 수 있습니다. 플레이어가 20 명 미만인 경우 모든 가능한 구성 (2^20)을 확인할 수도 있습니다.

관련 문제