标签: chess

国际象棋优化

好的,所以我一直在为我的国际象棋程序工作一段时间,我开始碰壁了.我已经完成了所有的标准优化(negascout,迭代深化,杀手动作,历史启发式,静态搜索,典当位置评估,一些搜索扩展),我完全没有想法!

我希望尽快让它多线程化,这应该会给我带来很好的性能提升,但除此之外还有其他任何狡猾的技巧吗?我考虑过切换到MDF(f),但我听说这是一个麻烦,并不值得.

我最感兴趣的是某种学习算法,但我不知道是否有人用国际象棋程序有效地完成了这项工作.

那么,切换到一块板有意义吗?我目前正在使用0x88.

algorithm chess artificial-intelligence

20
推荐指数
3
解决办法
5045
查看次数

12个主宰骑士拼图(回溯)

我一直在寻找几个小时,但还没有为这种拼图找到一个完全可行的解决方案.所以我跟主教跟着类似的问题.

我需要做的是以这样的方式在棋盘上放置12个骑士,使得棋盘的所有自由方格都被至少一件攻击.

最终结果应如下所示:

在此输入图像描述

问题是 我的程序只尝试与最后两个部分的不同组合,然后以某种方式崩溃. EDITED

到目前为止我做了什么:

#include <iostream>
using namespace std;
#define N 8

void fillChessBoard(int (&chessBoard)[N][N], int num);
void printChessBoard(int (&chessBoard)[N][N]);
void removeKnight(int (&chessBoard)[N][N], int i, int j);
void placeKnight(int (&chessBoard)[N][N], int i, int j);
bool allSpaceDominated(int (&chessBoard)[N][N]);
bool backtracking(int (&chessBoard)[N][N], int pos);

int main()
{
    int chessBoard[N][N];

    fillChessBoard(chessBoard, 0);
    backtracking(chessBoard, 0);

    return 0;
}

bool backtracking(int (&chessBoard)[N][N], int knightNum)
{
    if(knightNum==12)
    {
        if(allSpaceDominated(chessBoard))
        {
            printChessBoard(chessBoard);
            return true;
        }
        else return false;
    }
    else
    {
        for(int i=0; i<N; …
Run Code Online (Sandbox Code Playgroud)

c++ recursion chess backtracking

18
推荐指数
2
解决办法
1432
查看次数

使用通用国际象棋界面

我打算制作一个与UCI国际象棋引擎接口的程序.我一直在做一些研究,但是在我深入了解它之前,我想获得更多信息.我想知道你们中是否有人可以在UCI引擎和前端程序之间提供一些示例"交换".我并不真正关心实际的接口代码(比如发送/接收命令),这应该很简单.我只想尝试一些小游戏和一些选项的好例子.我目前正在使用鳕鱼引擎,但我希望能够使用多个引擎.

无论如何,我正在寻找一些如何在UCI上玩游戏的例子.

linux chess interface uci

17
推荐指数
1
解决办法
8034
查看次数

如何找到魔术位板?

const int BitTable[64] = {
  63, 30, 3, 32, 25, 41, 22, 33, 15, 50, 42, 13, 11, 53, 19, 34, 61, 29, 2,
  51, 21, 43, 45, 10, 18, 47, 1, 54, 9, 57, 0, 35, 62, 31, 40, 4, 49, 5, 52,
  26, 60, 6, 23, 44, 46, 27, 56, 16, 7, 39, 48, 24, 59, 14, 12, 55, 38, 28,
  58, 20, 37, 17, 36, 8
};

int pop_1st_bit(uint64 *bb) {
  uint64 b = *bb ^ (*bb …
Run Code Online (Sandbox Code Playgroud)

c chess bit-manipulation

17
推荐指数
2
解决办法
865
查看次数

计算机象棋树搜索的最新技术是什么?

我对微小的优化并不感兴趣,因为速度很低.我对alpha-beta搜索最重要的启发式方法感兴趣.而评估功能最重要的组成部分.

我对具有最大(改进/ code_size)比率的算法特别感兴趣.(不是(改进/复杂性)).

谢谢.

PS杀手移动启发式是一个完美的例子 - 易于实现和强大.启发式数据库太复杂了.

algorithm search chess heuristics

15
推荐指数
1
解决办法
3261
查看次数

编写国际象棋AI

我想尝试写下国际象棋AI.有什么我可以在.NET框架上使用(或者甚至可能是在Lua中编写的国际象棋程序),这些东西可以让我编写和测试国际象棋AI而不用担心实际制作国际象棋游戏吗?

chess artificial-intelligence

13
推荐指数
2
解决办法
2万
查看次数

13
推荐指数
2
解决办法
5万
查看次数

国际象棋的统计方法?

阅读Google如何解决翻译问题让我思考.是否有可能通过分析数百万个游戏并确定基于(完全?)统计数据的最佳可能移动来构建强大的国际象棋引擎?有几个这样的国际象棋数据库(是一个拥有450万个游戏的数据库),并且可以使用诸如所涉及的玩家的评级,游戏的年龄等因素来对相同(或镜像或反射)位置的移动进行加权.国际象棋理论改进的因素)等.为什么这不是建立国际象棋引擎的可行方法的任何原因?

algorithm statistics chess machine-learning

12
推荐指数
2
解决办法
1972
查看次数

使用JPanel创建一个Chess板

我有一个简单的棋盘在JPanelGridLayout(8,8)作为布局管理器.

我正在尝试为字段的列名和行号添加面板.

现在我已经创建了另一个面板BorderLayout作为布局管理器,在这个面板中我添加了板BorderLayout.CENTER.旁边的板本身我添加了一个面板GridLayout(0,8)BorderLayout.SOUTH和面板GridLayout(8,0)BorderLayout.WEST.行数完全放在电路板旁边,因为左侧JPanel中的行数与电路板中的行数相匹配,但列名称(A,B,C,D,E,F,G,H)在由于JPanel的原因,板下的JPanel放置不正确BorderLayout.WEST.

如何制作带侧板的合适棋盘以显示场地编号/名称?

我已经尝试将南面板的布局设置为GridLayout(0,9)第一个字段为空,但左面板的宽度不等于电路板中的每个字段,因此这不是一个好的解决方法.

java swing chess layout-manager grid-layout

12
推荐指数
1
解决办法
7万
查看次数

如何将鳕鱼整合到Android应用程序中?

我正在尝试研究如何将鳕鱼(或任何UCI兼容引擎)集成到我的Android应用程序中.

我从这里下载了鳕鱼Android zip: 下载Stockfish引擎.

在zip的Android目录下有两个文件:

  • 鱼干-8- arm64-V8A
  • 鱼干-8- armeabi-V7A

我有两个问题:

  1. 我只需要将这两个文件包含到我的应用程序中(如果是这样,我将它们放在哪里)?我希望这些是预先构建的二进制文件,所以我不需要担心编译自己.
  2. 如何从我的Android Java代码调用这些文件?

谢谢!

java android chess

12
推荐指数
2
解决办法
983
查看次数