关于举行仕相升变成兵规则测试比赛的建议
 
象棋百科全书网 (webmaster@xqbase.com) 200711
 
  中国象棋在增加了仕(士)相(象)升变成兵(卒)的规则后,比赛将更富有趣味性和观赏性。这个规则有以下几个要点:
  一、仕(士)相(象)只能在底线升变;
  二、仕(士)相(象)升变成兵(卒)需要花一步棋,变成的兵(卒)占据原来仕(士)相(象)的位置,下一步棋才能走;
  三、升变是不可逆的,即兵(卒)不能变回仕(士)相(象);
  四、升变后的兵(卒)同其他兵(卒)的走法一样,过河前每步只能前行一格,过河后才能横走;
  五、只有本方兵()少于五个时,仕()()才能升变成兵()
 
  为验证新规则起到的作用,象棋百科全书网进行了电脑模拟仕相升变成兵的测试比赛:
    http://www.xqbase.com/live/promotion_test/
  在20局测试比赛中,有4(13151820)因为升变而使原本和局的棋分出了胜负。
战例一 战例二
战例三 战例四
  为使更广泛地推广新规则,象棋百科全书网计划展开仕相升变成兵规则的电脑象棋联赛测试赛,并寻求各UCCI引擎设计师的支持和积极参加。
 
  象棋巫师、UCCI引擎联赛模拟器以及UCCI引擎示范程序ElephantEye已经为升变规则作了充分的准备,并使UCCI引擎协议扩充以支持仕相升变成兵的规则的选项(参阅《中国象棋通用引擎协议(UCCI协议))。上述三个程序和UCCI引擎协议的改进经验表明,改进UCCI引擎以支持仕相升变成兵的规则并不困难,改进要点如下:
  一、在UCCI引擎解释模块中,增加对“setoption promotion true/false”语句的识别,象棋巫师和模拟器如使用仕相升变成兵的规则,必然会向引擎发送“setoption promotion true”的指令。这样就使得同一版本的引擎可以适应不同的规则。
  二、输出着法时,升变着法的起始格与目标格相同,例如引擎走“仕四变兵”,就输出“bestmove f0f0”;
  三、象棋巫师和模拟器将升变着法被定性为吃子着法,所以在向引擎输送局面信息时,不会在“position fen ... moves ...”的着法列表中包含升变着法,所以引擎没有必要识别诸如“f0f0”这样的着法。
  四、大多数程序的棋盘结构使用棋子数组,并且只给每方兵()预留5个位置,升变时首先检查哪个位置有空位,升变后在该空位上放一个棋子,并将升变的仕()或相()清空。
  五、大多数程序的棋盘结构使用BitRankBitFile技术,升变着法不改变棋盘的任何BitRankBitFile
  六、引擎在修改着法生成器时,可以将升变着法写入吃子的着法生成器中;判断着法合理性的函数也应考虑升变着法。
  七、由于升变着法肯定无法用来躲避将军和交换子力,所以被将军和静态搜索时可跳过升变着法的生成。
  八、子力位置价值表需要考虑升变后的兵()在过河前的某些位置的分数,以鼓励兵()尽快过河;另外仕()()的潜在价值也应有所提高,特别是没有防守压力时仕()()价值不能被过分低估。
  九、判断和棋时,双方都只剩下仕()(),不再成为和棋的判断依据。
  十、支持升变的引擎可以用象棋巫师(3.5+)UCCI引擎联赛模拟器(3.5+)进行测试,并用以上四个战例中的关键局面来测试升变功能是否正常。
 
  UCCI引擎设计师若有意参加升变规则的测试比赛,可填写《电脑象棋联赛报名表》(http://www.xqbase.com/league/register.doc),注名参赛期号为“升变测试赛”,发送给电脑象棋联赛临召集人。
  • 上一篇 电脑象棋联赛规则
  • 下一篇 电脑象棋联赛报名和UCCI引擎登记办法
  • 返 回 象棋百科全书——电脑象棋联赛
  • www.xqbase.com