Proxima b, Proxima b 2.0 및 Cosette의 후속 버전인 Rust로 작성된 UCI 체스 엔진입니다. 이 프로젝트는 3000 Elo의 힘을 달성하는 것을 목표로 몇 시간 후에 작성되었습니다. 매우 빠른 게임을 사용하여 엄격한 테스트를 거쳤기 때문에 다른 체스 엔진의 스파링 파트너로 완벽합니다. Syzygy 테이블베이스, MultiPV, 숙고 및 멀티스레딩을 지원합니다.
현재 체력 : 3000 Elo (01-11-2024)
문서 : https://tearth.dev/Inanis/
버전 | 출시일 | 엘로 | 주요 변경사항 |
---|---|---|---|
1.5.0 | 2024년 1월 11일 | 3000 | 열망 창, 향상된 성능 및 멀티스레딩 |
1.4.0 | 2024년 3월 8일 | 2950 | 확장자, 상대 PST, 대응 휴리스틱 확인 |
1.3.0 | 2024년 6월 14일 | 2900 | 경사하강법 튜너, 향상된 SEE 및 평가 |
1.2.1 | 2023년 4월 9일 | 2850 | UCI 모드에서 완벽하게 명령줄에서 직접 실행되는 명령 |
1.2.0 | 2023년 15월 1일 | 2850 | 향상된 Syzygy 지원, 일반 성능 및 안정성 개선 |
1.1.1 | 2022년 8월 14일 | 2800 | 보고된 문제에 대한 다양한 수정, 안정성 개선 |
1.1.0 | 2022년 7월 31일 | 2800 | Syzygy 테이블베이스, MultiPV, 조정된 평가 |
1.0.1 | 2022년 5월 4일 | 2750 | 보고된 문제에 대한 다양한 수정, 안정성 개선 |
1.0.0 | 2022년 2월 4일 | 2750 | 최초 출시 |
각 릴리스에는 Linux(x86, x86-64, ARM, AArch64) 및 Windows(x86, x86-64) 등 다양한 플랫폼용 바이너리 세트가 포함되어 있습니다. Linux x86-64 및 Windows x86-64는 모두 POPCNT 및 POPCNT + BMI1 + BMI2라는 두 가지 추가 명령어 세트 변형으로 컴파일되었습니다. 최고의 성능을 얻으려면 다른 엔진 변형을 사용하여 benchmark
명령을 실행하고 다음 중 하나를 선택하십시오. 오류를 반환하지 않았으며 가장 고급 지침이 있습니다.
모든 테스터와 그들의 노력에 큰 감사를 드립니다! 위 목록의 Elo는 엔진 풀과 테스트에 사용된 시간 제어가 다르기 때문에 작성자의 추정과 약간 다를 수 있습니다.
Inanis에는 엔진에 도전할 수 있는 공식 lichess 계정이 있습니다: https://lichess.org/@/InanisBot. 등급은 매우 절제되어 있으며 CCRL 등급과 비교할 수 없습니다. 총알, 공세, 빠르고 고전적인 시간 제어 기능을 갖춘 표준 체스를 허용합니다.
Hash
(기본값: 2MB) - 전치 테이블 및 폰 해시테이블의 총 크기(MB)Move Overhead
(기본값: 10ms) - 예상치 못한 지연(예: GUI 속도 저하 또는 네트워크 지연)을 검색하는 동안 예약해야 하는 시간(밀리초)입니다.MultiPV
(기본값: 1 PV 라인) - 검색 중에 표시되어야 하는 PV 라인 수Threads
(기본값: 1 스레드) - 검색 중에 사용할 스레드 수(최고의 성능을 얻으려면 프로세서 코어 수보다 작아야 함)SyzygyPath
(기본값: <empty>) - 선택적 Syzygy 테이블베이스의 위치SyzygyProbeLimit
(기본값: 8개) - 테이블베이스 프로브를 실행해야 하는 최대 조각 수SyzygyProbeDepth
(기본값: 6) - 테이블베이스 프로브가 실행되어야 하는 최소 깊이Ponder
(기본값: false) - 상대방의 시간 동안 엔진이 생각할 수 있도록 허용합니다.Crash Files
(기본값: false) - 활성화되면 충돌 메시지를 ./crash 디렉터리에 저장합니다. 기본적으로 cargo build
또는 cargo build --release
호출하면 Syzygy 테이블베이스를 지원하지 않고 엔진이 빌드됩니다(그러나 여전히 완벽하게 작동함). 이를 포함하려면 --features syzygy,bindgen
추가하고 Windows에서 작업할 때 clang을 설치했는지 확인하세요(MSVC는 일부 C11 요소를 지원하지 않으므로 사용할 수 없음).
Inanis에는 잘 알려진 Texel의 튜닝 방법을 사용하여 모든 평가 매개변수를 최적화할 수 있는 내장 튜너가 있습니다. 출력으로는 엔진의 소스 코드에 직접 붙여넣을 수 있는 방식으로 생성된 Rust 소스 파일이 있습니다.
입력 파일 예시:
r2qkr2/p1pp1ppp/1pn1pn2/2P5/3Pb3/2N1P3/PP3PPP/R1B1KB1R b KQq - c9 "0-1";
r4rk1/3bppb1/p3q1p1/1p1p3p/2pPn3/P1P1PN1P/1PB1QPPB/1R3RK1 b - - c9 "1/2-1/2";
4Q3/8/8/8/6k1/4K2p/3N4/5q2 b - - c9 "0-1";
r4rk1/1Qpbq1bp/p1n2np1/3p1p2/3P1P2/P1NBPN1P/1P1B2P1/R4RK1 b - - c9 "0-1";
튜너 실행의 예:
tuner ./input/quiet.epd ./output/ true 0.007 0.75 1
- 스케일링 상수 0.007, WDL 비율 0.75를 사용하여 무작위 값부터 시작하여 quiet.epd
에 저장된 위치에 대해 단일 스레드 튜닝을 실행하고 결과를 output
디렉터리
tuner ./input/quiet.epd ./output/ false None 1.0 4
- 엔진에 이미 설정된 값부터 시작하여 quiet.epd
에 저장된 위치에 대해 4개의 스레드로 튜닝을 실행합니다. 튜닝 전에 결정된 스케일링 상수, WDL 비율 1.0 결과를 output
디렉터리에 저장합니다.
버전 1.1.0부터 Inanis에는 제공된 PGN 입력을 기반으로 조용한 위치의 epd 파일을 생성하는 명령도 있습니다.
dataset ./input/games.pgn ./output/quiet.epd 16 250 50 3 0.5
- games.pgn
구문 분석하고 각 게임에서 무작위로 3개의 위치를 취하고 이를 무시하여 새로운 quiet.epd
파일을 생성합니다. 16 미만, 평가 점수가 250보다 크고, 평가 점수와 정지 검색 점수의 차이가 50보다 큰 경우. 평균 게임 단계 0.5는 포지션이 균형을 이룬다는 것을 의미합니다(> 0.5 = 시가에 가까움, < 0.5 = 거의 종가) 전략적 평가 성능 테스트는 EPD 파일에 저장된 위치에 대해 고정 깊이 검색을 수행하는 test
명령을 사용하여 수행할 수 있습니다.
예제 테스트 스위트 파일:
1k2r2r/1bq2p2/pn4p1/3pP3/pbpN1P1p/4QN1B/1P4PP/2RR3K b - - bm Nd7; c0 "Nd7=10, Bc5=8, Bc6=2, Be7=7"; id "STS: Knight Outposts/Repositioning/Centralization.001";
1q2bn2/6pk/2p1pr1p/2Q2p1P/1PP5/5N2/5PP1/4RBK1 w - - bm Ne5; c0 "Ne5=10, Nd4=8, Ra1=6, b5=9"; id "STS: Knight Outposts/Repositioning/Centralization.002";
1r1q1rk1/1b1n1p1p/p2b1np1/3pN3/3P1P2/P1N5/3BB1PP/1R1Q1RK1 b - - bm Ne4; c0 "Ne4=10, Bxa3=6, Nb6=6"; id "STS: Knight Outposts/Repositioning/Centralization.003";
1k2r2r/1bq2p2/pn4p1/3pP3/pbpN1P1p/4QN1B/1P4PP/2RR3K b - - bm Nd7; c0 "Nd7=10, Bc5=8, Bc6=2, Be7=7"; id "STS: Knight Outposts/Repositioning/Centralization.001";
1q2bn2/6pk/2p1pr1p/2Q2p1P/1PP5/5N2/5PP1/4RBK1 w - - bm Ne5; c0 "Ne5=10, Nd4=8, Ra1=6, b5=9"; id "STS: Knight Outposts/Repositioning/Centralization.002";
1r1q1rk1/1b1n1p1p/p2b1np1/3pN3/3P1P2/P1N5/3BB1PP/1R1Q1RK1 b - - bm Ne4; c0 "Ne4=10, Bxa3=6, Nb6=6"; id "STS: Knight Outposts/Repositioning/Centralization.003";
테스트 실행의 예:
testset ./input/STS1.epd 16 64 4
- 64MB 전치 테이블과 4개 스레드를 사용하여 STS1.epd
파일에 저장된 모든 위치에 대해 고정 깊이(이 경우 16) 검색을 실행합니다. 테스트를 성공으로 분류하려면 마지막 반복에서 올바른 최선의 움직임을 반환해야 합니다. 의존성 구축
개발 종속성
외부 라이브러리
Inanis는 애완동물 프로젝트이기 때문에 현재 끌어오기 요청은 허용되지 않습니다. 이는 프로젝트 진행 방식에 따라 향후 변경될 수도 있고 그렇지 않을 수도 있습니다. 하지만 자유롭게 문제나 제안을 해주시면 매우 감사하겠습니다.
아래 나열된 모든 명령은 대화형 모드와 명령줄에서 직접 실행할 수 있습니다(예: inanis.exe perft 5
. [DEV]로 표시된 항목은 엔진이 dev
기능으로 컴파일된 경우에만 사용할 수 있습니다.
=== General ===
benchmark - run test for a set of positions
evaluate [fen] - show score for the position
uci - run Universal Chess Interface
quit - close the application
=== Development ===
[DEV] dataset [pgn] [output] [min_ply] [max_score] [max_diff] [density] - dataset generator
[DEV] magic - generate magic numbers
[DEV] testset [epd] [depth] [ttable_size] [threads_count] - run test of positions
[DEV] tuner [epd] [output] [randomize] [k] [wdl_ratio] [threads_count] - run tuning
=== Perft ===
perft [depth]
perft [depth] fen [fen]
perft [depth] moves [moves]
=== Divided Perft ===
dperft [depth]
dperft [depth] fen [fen]
dperft [depth] moves [moves]
=== Quick Perft ===
qperft [depth] [threads_count] [hashtable_size_mb]
qperft [depth] [threads_count] [hashtable_size_mb] fen [fen]
qperft [depth] [threads_count] [hashtable_size_mb] moves [moves]