Skip to content

Latest commit

 

History

History
49 lines (34 loc) · 2.72 KB

CODE_DESCRIPTION.md

File metadata and controls

49 lines (34 loc) · 2.72 KB

AI이름: 이어팟주세요

최종 2등 !!

AI 로직 요약

상대방이 낼 액션을 확률적으로 예측하고 예측된 액션에 따른 최적의 액션을 선택합니다.

  1. 현재 턴에서 상대방이 낼 액션을 확률적으로 예측합니다.
  2. 예측한 액션에 따라서 해당 상황에 맞는 최적의 액션을 선택합니다. (mp, hp, you_mp, you_hp, 예측의 정확성도 어느정도 고려함)

AI 세부 설명

1. 현재 턴에서 상대방이 낼 액션을 예측합니다.

1.1 YOU_MP 기반으로 예측

YOU_MP가 n 이라고 할때 상대방이 주로 어떤 액션을 취하는지를 예측합니다.

    1) 예를들어 현재 턴에서 YOU_MP가 1이라면, 
       oldgames와 history에서 YOU_MP가 1일때 냈던 상대방의 액션의 빈도수를 계산합니다.
       상대가 이전 턴들에서 YOU_MP가 1일때, 
       상대가 attack 을 8번내고, block을 1번내고, charge를 1번냈다면,
       d = {"attack": 9, "block": 2, "charge": 2} 형태로 빈도수가 저장이 됩니다. 
    2) d에 저장된 액션들의 빈도수 합을 d_sum이라고 할때 (d_sum*0.75) 보다 
       한 액션의 빈도수가 더 많을경우에는 이를 상대방이 낼 액션이라고 예측하며 accuracy 를 high라고 지정합니다.
    3) 2)의 경우에 해당이 되지않는 경우에는 d 에 저장된 빈도수를 
       랜덤함수의 가중치로 설정하여 상대방이 낼 액션을 예측합니다. 
       (*부가 설명: 위의 예시의 경우에는 [어택,어택,어택,어택,어택,어택,어택,어택,어택,블락,블락,차지,차지] 
         이런식의 배열이 만들어지고,랜덤함수를 통해 (0~마지막요소인덱스)중에 하나의 인덱스값이 선택된다.)

1.2 바로 이전턴의 액션 기반 예측

바로 이전 턴에서 (나: ACTION1, 상대: ACTION2)을 냈을때 상대는 이번턴에서 어떤 선택을 할것인지 예측합니다.

세부적인 알고리즘은 1.1의 예측 모델의 알고리즘과 유사함. (빈도계산->바로예측 또는 가중치 랜덤)

1.3 accuracy가 high인 액션이 우선적으로 선택되며, 둘다 accuracy가 high 가 아닐경우에는 1.1 에 의해 예측된 액션이 선택됩니다.

2. 예측한 상대의 액션에 따른 최적의 액션을 합니다.

예측한 액션과 accuracy, hp,mp,you_mp,you_hp 등을 고려했을때의 최적의 선택을 수행함

  1. 상대의 액션이 charge 로 예측되었을때, counter_action_for_charge 함수 참고
  2. 상대의 액션이 block 로 예측되었을때, counter_action_for_block 함수 참고
  3. 상대의 액션이 attack 로 예측되었을때, counter_action_for_attack 함수 참고