체스 게임을 개발 중이며 현재는 미니 맥스 알고리즘을 구현하려고합니다. 나는 전에 이것을하지 않았으며, 또한 다음과 같은 평가 기능 (재료, 이동성, 조각 정사각형 테이블, 중앙 제어, 덫을 놓은 조각, 왕 안전, 템포 및 폰 구조)을 프로그래밍 방식으로 표현하고 구현하는 방법에 대해 잘 알고 있지 않습니다. 나는 누군가에게 나를 자세히 설명 할 수 있으면 감사 할 것이다. 각 체스 조각, 조각 동작 값 및 각 조각에 대한 사각형 테이블에 값을 할당 할 수있었습니다. 현재 문제는 점수에서 더하거나 뺄 부분을 공격하고 방어 한 값을 생성하는 방법입니다. 여기서 아이디어는 AI 에이전트가 조각을 보호하고 조각이 공격 당했을 때 벌점을주고 싶어한다는 것입니다. 진보에 감사드립니다.체스 게임 평가 기능에 대한 도움이 필요합니다.
답변
공격에 대한 계산 및 방어 된 부분을 포함하지 않아야한다고 생각합니다. 이 기능은 minmax 알고리즘에 의해보다 효율적으로 고려되었습니다.
다음 공격에서 상대가 데려 갈 수있는 경우 공격 당한다. 정적 평가 함수에서이 가능성을 평가하려고하면 올바르게 수행하기를 원할 경우 문제가 발생할 것입니다. 내 보호 된 폰이 문제가 아닌 상대 퀸에게 가져간 경우. 이것을 어떻게 생각합니까? 내 여왕이 반대 전당포에 의해 데려가지만 전당포를 움직이면 왕이 공격을 당하게됩니까?
이러한 고려 사항은 평가자가 아닌 minmax 알고리즘으로보다 잘 관리됩니다. 당신이 먹을 수있는 먹을 수있는 조각이 몇 개인지를 생각해 보면 가능한 모든 움직임을 고려해야하며 아마도 minmax 알고리즘에서 한 단계 더 깊숙이 들어가기 위해 동일한 시간을 소비 할 것입니다. 또한 나중에 minmax에서 한 걸음 더 나아가기로 결정하면 그 시간은 낭비됩니다.
언급 한 각 평가 기능은 계산 시간을 소비합니다.
- 검색
- 평가
그리고 모두 같은 귀중한 자원, 컴퓨팅 시간을 주장 : 당신이 이미 알고있는 바와 같이, 체스 엔진의 재생 강도는 두 개의 소스에서 제공됩니다. 평가은 추론을 기반으로하는 경향이 있으므로 약간 흐릿한 반면, 검색은보다 구체적이고 적절한 결과를 산출하는 경향이 있습니다. 엔진을 만들기 시작한 경우 평가를 기본으로하면서 검색에 초점을 맞추는 것이 좋습니다 (약하지만!). 그렇게하면 무언가가 잘못되었다는 것을 정확히 알 수 있으므로 초기의 실망을 피할 수 있습니다. 더욱이, Stockfish와 같은 인기있는 엔진은 강력한 검색 알고리즘을 먼저 구축함으로써 시작되었습니다. 당신이 여기까지 읽을 수있을만큼 환자가 있었던 경우
, 나를 평가를 위해 두 개의 유용한 자원을 지적하자
- Chess Programming Wiki's evaluation page :이 웹 사이트는 아마 일반적으로 체스 엔진 개발을위한 최고의 온라인 리소스입니다.
- Link to a basic but not weak evaluation function : 이것은 C# 코드입니다. 불행히도 나는이 평가를 바탕으로 한 원본 기사를 찾을 수 없습니다.
이 당신의 답변을 많이 :)
덕분에 도움이되기를 바랍니다, 그것은 도움이 – user3816650