Skip to content

Commit

Permalink
添加中文自述文件
Browse files Browse the repository at this point in the history
  • Loading branch information
Sopel97 committed Aug 31, 2021
1 parent 70a6da0 commit 0dbc50e
Showing 1 changed file with 128 additions and 0 deletions.
128 changes: 128 additions & 0 deletions 自述文件.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
# 胖蒂兹
这是一个**免费** UCI 兼容的国际象棋引擎。它是 [cfish](https://github.com/syzygy1/Cfish) 的一个分支。

感谢 Norman Schidt 和 Albert Sliver 在创建我自己的 Stockfish 叉时提供的灵感。也非常感谢 Robert Houdart 的出色优化想法,总体上使引擎速度提高了近 20%!

该引擎使用 HalfKAv2-2048x2-64-64-1 评估网络,其中包含高达 **4 倍**的 Stockfish 14 知识。它在 Lc0 数据上进行了部分训练,使其具有独特的位置风格,同时仍然保留Stockfish 的战术敏锐度。使用公开可用的数据集 [1](https://drive.google.com/file/d/1VlhnHL8f-20AXhGkILujnNXHwy9T-MQw/view?usp=sharing),[2](https://drive.google.com/file/d/1seGNOqcVdvK_vPNq98j-zV3XPE5zWAeq/view?usp=sharing), [3](https://drive.google.com/file/d/1RFkQES3DpsiJqsOtUshENTzPfFgUmEff/view?usp=sharing)

由于尺寸较大,该版本仅在谷歌驱动器上可用 [此处](https://drive.google.com/drive/folders/1hthWck-5UsXBToDduJ0REB_ZdXvN0r6X?usp=sharing)。它包括适用于所有受支持架构的 Windows 和 Linux 二进制文件以及网络。这是唯一可以找到网络的地方。

## 附加的功能

- 多语言支持
- 无政府状态模式
- `setoption name Anarchy value true`
- 使过路人被迫
- 64 位哈希键
- 减少哈希冲突的数量,并允许更强大的长分析
- 调整换位表的大小尽可能地保留内容
- 持久换位表
- `setoption name PersistentTTMinDepth value 4`(最小 0,最大 255)。存储/加载的最小入口深度。
- `setoption name PersistentTTFileName value filename.ptt`。包含持久化 TT 的文件。对自己没有任何作用。
- `setoption name PersistentTTSerialize`。根据上面的选项序列化当前的换位表。文件被覆盖。
- `setoption name PersistentTTDeserialize`。根据上面的选项反序列化当前的换位表。只有更糟糕的条目才会被替换。

## 编译 Fat Titz
编译 Fat Titz 需要一个可用的 gcc 或 clang 环境。建议使用 [MSYS2](https://www.msys2.org/) 环境在 Windows 上编译 Fat Titz(有关如何设置 MSYS2,请参见下文)。

要编译,请键入:

make target [ARCH=arch] [COMP=compiler] [COMPCC=gcc-4.8] [更多选项]

`src`目录。可以通过键入 `make``make help` 来查看支持的目标、架构和编译器的列表。

如果 `ARCH` 变量未设置或设置为 `auto`,Makefile 将尝试为您的系统确定并使用最佳设置。如果此操作失败并出现错误或给出不令人满意的结果,您应该手动设置所需的架构。支持以下 `ARCH` 值:`x86-86-modern``x86-64-avx2``x86-64-bmi2``x86-64-avx512``x86-64-avx2-vnni``x86-64-bmi2-vnni``x86-64-avx512-vnni`。需要 SSSE3 支持,如果您的 CPU 不支持 SSSE3,请参阅 [此处](https://www.timeanddate.com/)

请注意,专门为您的机器编译的 Fat Titz 二进制文件可能无法在其他(较旧的)机器上运行。如果二进制文件必须在多台机器上运行,请将 `ARCH` 设置为与最旧/最弱机器对应的架构。

更多选项:

<table>
<tr><td><code>pure=yes</code></td><td>仅 NNUE 纯(无混合或经典模式)</td></tr>
<tr><td><code>numa=no</code></td><td>禁用 NUMA 支持</td></tr>
<tr><td><code>lto=yes</code></td><td>编译链接时优化</td></tr>
<tr><td><code>extra=yes</code></td><td>使用额外的优化选项(gcc-7.x 及更高版本)编译</td></tr>
</table>

如果编译失败并显示 `numa.h: No such file or directory``cannot find -lnuma`,请添加 `numa=no`

由于添加了 NNUE 代码,当前使用“extra=yes”启用的优化选项似乎不太有效。

## UCI 设置

#### Anarchy
启用/禁用无政府状态模式。在无政府状态下,en-passant 是强制的。默认禁用

#### PersistentTTMinDepth
控制序列化 TT 条目的最小深度

#### PersistentTTFileName
持久 TT 操作的路径。

#### PersistentTTSerialize
序列化 TT,请参阅“附加功能”了解更多信息。

#### PersistentTTDeserialize
反序列化 TT,请参阅“附加功能”了解更多信息。

#### Analysis Contempt
默认情况下,在分析过程中将蔑视设置为零以确保分析无偏见。将此选项设置为“白色”或“黑色”,以蔑视那一方进行分析。

#### Threads
用于搜索位置的 CPU 线程数。

#### Hash
哈希表的大小(以 MB 为单位)。

#### Clear Hash
清除哈希表。

#### Ponder
让胖蒂兹在对手思考的同时思考下一步的行动。

#### MultiPV
搜索时输出N个最佳行。保留 1 以获得最佳性能。

#### Move Overhead
对网络和 GUI 延迟的补偿(以毫秒为单位)。

#### Slow Mover
增加使 Fat Titz 使用更多时间,减少使 Fat Titz 使用更少时间。

#### SyzygyPath
存储 Syzygy 表库文件的文件夹/目录的路径。多个目录用“;”分隔 在 Windows 上,在基于 Unix 的操作系统上通过“:”。不要在“;”周围使用空格 或者 ”:”。

示例:`C:\tablebases\wdl345;C:\tablebases\wdl6;D:\tablebases\dtz345;D:\tablebases\dtz6`

#### SyzygyProbeDepth
探测位置的最小剩余搜索深度。增加此值以降低探测的积极性。

#### Syzygy50MoveRule
禁用让 Syzygy 表库探测器检测到的 50 个移动规则绘制算作赢或输。这对于 ICCF 通信游戏很有用。

#### SyzygyProbeLimit
将 Syzygy tablebase 探测限制在最多剩下这么多棋子的位置(包括国王和棋子)。

#### SyzygyUseDTM
使用 Syzygy DTM 表库(尚未发布)。

#### BookFile/BestBookMove/BookDepth
控制 PolyGlot 书籍的使用。

#### EvalFile
NNUE 网络文件的名称。

#### Use NNUE
默认情况下,Fat Titz 在 Stockfish 的 Hybrid 模式下使用 NNUE,其中某些位置使用旧的手工评估进行评估。其他模式是 Pure(仅限 NNUE)和 Classical(仅限手工评估)。

#### LargePages
控制哈希表作为大页面 (LP) 的分配。在 Windows 上,如果操作系统缺乏 LP 支持或 LP 没有正确设置,则不会出现此选项。

#### NUMA
此选项仅出现在 NUMA 机器上,即具有两个或更多 CPU 的机器。如果此选项设置为“on”或“all”,Fat Titz 会将其搜索线程分布到所有节点。如果该选项设置为“关闭”,Fat Titz 将忽略机器的 NUMA 架构。在 Linux 上,可以指定运行搜索线程的节点子集(例如,“0-1”或“0,1”将搜索线程限制为节点 0-3 中的节点 0 和 1)。

## 如何设置MSYS2
1.从[MSYS2](https://www.msys2.org/)网站下载并安装MSYS2。
2. 打开 MSYS2 MinGW 64 位终端(例如通过 Windows 开始菜单)。
3. 通过输入`pacman -S mingw-w64-x86_64-toolchain`来安装MinGW 64位工具链。
4. 关闭 MSYS2 MinGW 64 位终端并打开另一个。

0 comments on commit 0dbc50e

Please sign in to comment.