Главная » Игры, Теория » Простая оценочная функция

0

Если вы не чувствуете в себе сил, чтобы настроить все сложные позицион­ные факторы, можно воспользоваться простой позиционной оценкой. Пока на доске существует хоть одна пешка, для всех фигур используется следую­щая позиционная оценка для верхних (черных):

int upSt[8][8] = (

{ 1, 2, 3, 4, 5, 6, 7, 8}, { 9,10,11,12,13,14,15,16}, {17,18,19,20,21,22,23,24}, {25,26,27,28,29,30,31,32}, {33,34,35,36,37,38,39, 40}, {41,42,43,44,45,46,47,48}, {4 9,50,51,52,53,54,55,56},

{57,58,59,60,61,62,63,64} };

для нижних: (белых):

int botSt[8] [8] = {

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

Когда нет пешек, для всех фигур обеих сторон используется одна общая оценка с приоритетом центра:

int endGSt[8][8] = {

{ 1,2,3,4, 4, 3, 2, 1}, { 9,10,11,12, 12,11,10, 9}, {17,18,19,20, 20,19,18,17}, {25,26,27,28, 28,27,26,25}, {25,26,27,28, 28,27,26,25}, {17,18,19,20, 20,19,18,17}, { 9,10,11,12, 12,19,18,17}, { 1, 2, 3, 4, 4, 3, 2, 1} } ;

Если кто-то думает, что это шутка, то напрасно. Начиная с глубины пере­бора 8, программа начинает понимать позиционную игру. Получение более точной оценки для некоторых позиционных факторов регулируется гибкой системой выборочных продлений. Жестких, статических приоритетов нет. Все они вычисляемые. Программа должна расширять строки с шахами и до некоторой степени (как правило, в пределах полного перебора) строки с взятиями. После дебюта можно совсем немного расширять строки, в кото­рых расстояние между ферзем противника и нашим королем опасно сокра­щается. Расширяются ходы, когда пешка идет на предпоследнюю горизон­таль. Отдельным образом можно обрабатывать проходные пешки. Вся оцен­ка вычисляется пошагово, т. е. самой оценочной функции нет, и на вычисление практически не тратится времени. Все силы должны быть бро­шены на то, чтобы просчитать как можно глубже. Кроме того, надо доба­вить материальную и позиционную оценку для взятой фигуры противника.

Данный вариант предпочтительнее для тех, кто хочет попробовать свои си­лы в написании первой шахматной программы или является сильным про­граммистом и может сделать эффективную, глубоко считающую программу. За счет различных систем выборочных продлений можно научить програм­му вычислять практически все позиционные факторы, а не прописывать жесткие рамки. Здесь есть масса возможностей для экспериментирования. Особенно интересные варианты можно получить, когда есть список легаль­ных ходов (не теряем материал), а позиционная составляющая вычисляется с помощью статического поиска (неперспективные варианты подрезаются статической оценкой).

Примерная оценка материала для данного варианта:

?    пешка — 1000

?    слон и конь — 3000

?   ладья – 5000

?    ферзь – 9000

Приращение стратегической оценки никогда не сможет сравняться с мате­риальной оценкой. Если нужно научить программу определять жертву фи­гур, это делается другими способами.

Литература:

Корнилов Е. Н.  Программирование шахмат и других логических игр. — СПб.: БХВ-Петербург, 2005. – 272 е.: ил.

По теме:

  • Комментарии