1

Alpha-Beta Pruning을 사용하여 Gomoku (연속 5 개) AI를 만들었습니다. 그것은 어리석은 수준으로 움직이지 않습니다. 먼저 Alpha-Beta 알고리즘의 등급 지정 기능을 모호하게 설명하겠습니다.게임 AI를위한 유전 알고리즘의 헬스 기능 al

게시판을 입력으로 받으면 돌의 모든 반복을 찾아내어 길이에 따라 결정되는 위협의 유용성에 따라 4 가지 가능한 값 중에서 점수를 부여합니다. 그리고 모든 반복 점수의 합계를 반환합니다.

하지만 문제는 내가 점수 (총 4 점)를 명시 적으로 결정했기 때문에 문제가 아니라고 생각합니다. 그래서 나는이 점수를 생성하는 유전자 알고리즘을 구현하기로 결정했습니다. 각 유전자는 4 점 중 하나입니다. 예를 들어, 하드 코딩 된 점수의 염색체는 다음과 같습니다. [5, 400001000000050000]

그러나 유전자 알고리즘을 사용하여 점수 함수를 작성하기 때문에 유전 적 기능을 어떻게 구현해야하는지 확신 할 수 없습니다. 그래서 대신에 다음을 생각해 보았습니다.

피트니스 기능을 사용하는 대신 선택 프로세스를 병합합니다. 두 개의 염색체 A와 B가 있고 하나를 선택해야하는 경우 각 인공 지능에서 A와 B 염색체를 사용하여 게임을 시뮬레이션하고, 승리하는 염색체를 선택하십시오.

1 이것은 피트니스 기능을 대체 할 수 있습니까?

2. 알파 베타 알고리즘의 특징으로 인해, 나는 대부분의 경우 무한대로 설정되는 승패 조건에 최대 점수를 부여해야합니다. 그러나 Infinity를 사용할 수 없기 때문에 나는 방금 엄청나게 많은 수를 사용했습니다. 이 점수를 염색체에 추가해야합니까? 또는 중요하지 않고 채점 기능의 값을 변경하지 않으므로 상수로 둡니다.

3. 처음에는 염색체를 생성 할 때, 무작위 생성, 표준 분포에 따라 가장 최적이라고합니다. 그러나 제 경우의 유전자에는 큰 편차가 있습니다. 무작위로 염색체를 생성하는 것이 여전히 괜찮습니까?

답변

1

피트니스 기능을 대체 할 수 있습니까?

예, 그렇습니다. 보드 게임을위한 피트니스 기능을 정의하는 것은 꽤 일반적인 방법입니다. 아마도 한 번의 라운드만으로 충분하지 않을 수도 있습니다 (하지만 실험을해야합니다).

약간의 변형은 뭔가 같은 :

double fitness(Agent_k) 
    fit = 0 

    repeat M times 
    randomly extract an individual Agent_i (i <> k) 

    switch (result of Agent_k vs Agent_i) 
     case Agent_k wins: fit = fit + 1 
     case Agent_i wins: fit = fit - 2 
     case draw:   fit doesn't change 

    return fit 

즉 에이전트가 (교체하지만 피할자가 일치와) 인구에서 M 무작위로 선택된 상대에 대한 재생됩니다.

노이즈가 감소하지만 시뮬레이션 시간이 더 필요합니다 (M=5은 일부 체스 관련 실험에서 사용되는 값입니다). 알파 - 베타 알고리즘의 특성

2.Because

...

질문 확실하지. 매우 큰 값은 정적 인 평가 함수가 승리 조건을 알리는 표준 접근법입니다.

정확한 값은 그다지 중요하지 않으며 최적화 대상이되지 않아야합니다.

3. 처음에 염색체를 생성 할 때, 임의의 생성이 표준 분포에 따라 가장 적합하다고합니다. 그러나 제 경우의 유전자에는 큰 편차가 있습니다. 무작위로 염색체를 생성하는 것이 여전히 괜찮습니까?

이것은 특정 유전 알고리즘 "향기"와 관련이 있습니다.

표준 유전자 알고리즘은 완전히 임의의 초기 값이 아닌 경우 더 잘 작동 할 수 있습니다.

다른 변형 (예 : 차동 진화)은이 측면에 덜 민감 할 수 있습니다.

이 질문/대답에 또 한 번보세요 : Getting started with machine learning a zero sum game?

+0

당신은 어떻게 생각하십니까, 그것은 몬테 - 카를로 트리 검색과 알파 - 베타 가지 치기를 대체 할 수 있습니까? –

+1

@TodorBalabanov 아마도 그렇습니다. GA는 정적 평가 함수의 매개 변수에 대해 여기에서 제안 된 동일한 방법으로 MCTS- 휴리스틱의 매개 변수를 최적화하는 데 사용될 수 있습니다. 실제로 나는 Chess/Alpha-Beta/GA로 실험했지만 MCTS에 대한 직접적인 경험이 없으므로 중요한 측면을 간과 할 수 있습니다. 또한 최적화 시간이 실제 문제 일 수 있습니다. – manlio

+0

MCTS는 ABP보다 구현이 훨씬 쉽기 때문에 더 좋아진다. 또한 MCTS는 계산 자원이 충분하지 않을 때 시간 제한을받을 수 있습니다. –