本文整理汇总了C++中PositionStruct::Evaluate方法的典型用法代码示例。如果您正苦于以下问题:C++ PositionStruct::Evaluate方法的具体用法?C++ PositionStruct::Evaluate怎么用?C++ PositionStruct::Evaluate使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PositionStruct
的用法示例。
在下文中一共展示了PositionStruct::Evaluate方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Evaluate
// 调整型局面评价函数
inline int Evaluate(const PositionStruct &pos, int vlAlpha, int vlBeta) {
int vl;
vl = Search.bKnowledge ? pos.Evaluate(vlAlpha, vlBeta) : pos.Material();
return vl == pos.DrawValue() ? vl - 1 : vl;
}
示例2: SearchQuiesc
// 静态搜索
int SearchQuiesc ( int alpha, int beta ) {
int mv, vl;
int bvl = - MATE_VALUE;
MoveSortStruct mvsort;
if ( TimeOut() ) { // 超时
return bvl;
}
// 无害裁剪
vl = HarmlessPruning ();
if ( vl > - MATE_VALUE ) {
return vl;
}
// 置换裁剪
vl = QueryValueInHashTableQC ( alpha, beta );
if ( vl > - MATE_VALUE ) {
return vl;
}
// 生成着法
if ( pos.checked ) {
mvsort.InitMove ();
}
else {
bvl = pos.Evaluate ();
if ( bvl >= beta ) {
InsertInfoToHashTableQC ( bvl, MATE_VALUE );
return bvl;
}
if ( bvl > alpha ) {
alpha = bvl;
}
mvsort.InitGoodCapMove ();
}
// 大搜索
while ( (mv = mvsort.NextMove()) != 0 ) {
pos.MakeMove (mv);
vl = - SearchQuiesc ( -beta, -alpha );
pos.UndoMakeMove ();
if ( TimeOut() ) { // 超时
return bvl;
}
if ( vl > bvl ) {
bvl = vl;
if ( bvl >= beta ) {
if ( bvl > - BAN_VALUE && bvl < BAN_VALUE ) {
InsertInfoToHashTableQC ( bvl, MATE_VALUE );
}
return vl;
}
if ( bvl > alpha ) {
alpha = bvl;
}
}
}
// 最后
if ( bvl > - BAN_VALUE && bvl < BAN_VALUE ) {
InsertInfoToHashTableQC ( bvl, bvl );
}
return bvl;
}