Форум » » Что нельзя объяснить шахматной программе? » Ответить

Что нельзя объяснить шахматной программе?

PozitiFF_Chess: Остались ли еще какие-то чисто человеческие привилегии, которые нельзя было бы объяснить программе с помощью алгоритмов? И если да - то почему этого сделать нельзя? Или можно поставить вопрос по-другому: какими чисто шахматными законами обычно пренебрегают разработчики с целью оптимизации своего кода и усиления игры шахматной программы?

Ответов - 94, стр: 1 2 3 4 5 All

Кевин: PozitiFF_Chess пишет: И почем нынче траффик в 5 килобайт в США? ))) Ну, скажем, не 5 килобайт, а поболее, и не в США. Да и тариф у меня 700 метров в месяц, а за превышение - рубля полтора за метр. Но это уже оффтоп

WildCat: Кевин Откуда: USA, Racoon City

Кевин: WildCat пишет: Откуда: USA, Racoon City Ну, так это ж шутка! Или я - полицейский офицер, работающий в RPD и хотящий поступить в S.T.A.R.S и сбежавший из города зомби - Раккун Сити?


PozitiFF_Chess: До меня только сейчас дошло, что это шутка..

unknow: PozitiFF_Chess пишет: Ну играют черные Кж5 и Ке4+ своими двумя нулевыми ходами... Какую дельту ставить? ) 6rk/4q2n/p1p1p1pP/PpPpPpP1/1P1P1P2/3N2K1/3Q4/7R b - - 0 60 Здесь черные слабейшая сторона - это они пропускают ходы и дают белым время на разрушение крепости - если у белых получилось - крепости нет.

Кевин: [chess]8/6k1/8/6KP/5p2/5B2/7P/8 b - - 0 56[/chess] 8/6k1/8/6KP/5p2/5B2/7P/8 b - - 0 56 Как вам такая позиция: Рыбка с пятифгурками (!!) даёт тут +7 оценку, Игорёк же всё правильно оценивал. Стандартная ничья при слоне не цвета превращения. Вот сама партия: [Event "Capitalists vs Rajlich 4!, Блиц:3'"] [Site "USER-GZ7TNXNACM"] [Date "2010.01.11"] [Round "1"] [White "Rybka 3"] [Black "Igorrit MP verzione 0.086v6 x"] [Result "1/2-1/2"] [ECO "B33"] [Annotator "0.35;0.32"] [PlyCount "136"] [TimeControl "180"] {} 1. e4 {B 0} c5 {B 0} 2. Nf3 {B 0} Nc6 {B 0} 3. d4 {B 0} cxd4 {B 0} 4. Nxd4 {B 0} Nf6 {B 0} 5. Nc3 {B 0} e5 {B 0} 6. Ndb5 {B 0} d6 {B 0} 7. Bg5 {B 0} a6 {B 0} 8. Na3 {B 0} b5 {B 0} 9. Bxf6 {B 0} gxf6 {B 0} 10. Nd5 {B 0} f5 {B 0} 11. Bd3 {B 0} Be6 {B 0} 12. O-O {B 0} Bxd5 {B 0} 13. exd5 {B 0} Ne7 {B 0 Оба Последний ход в книге} 14. Nxb5 {0.35/13 3} Bg7 {0.32/19 5} 15. Nc3 {0.47/14 2} e4 {0.28/19 4} 16. Be2 {0.41/14 2 (Bc4)} Qa5 {0.32/17 3} 17. Rb1 {0.41/13 1 (Qd2)} Bxc3 {0.16/ 17 8} 18. bxc3 {0.39/14 6} Qxc3 {0.20/19 23} 19. Rb7 {0.41/14 6} Rg8 {0.20/18 14} 20. g3 {0.41/13 24 (Rb3)} Kf8 {0.08/16 5 (Rg7)} 21. Qc1 {0.26/11 2} Rg6 { 0.04/15 1} 22. Rd1 {0.52/12 3} Rc8 {0.09/16 3 (h6)} 23. Bxa6 {0.54/13 5} Rc5 { 0.23/17 2} 24. Rb5 {0.61/13 2} h5 {0.16/17 1} 25. Rxc5 {0.49/13 3} Qxc5 {0.16/ 15 0} 26. c4 {0.52/14 10} h4 {0.19/17 3} 27. Kf1 {0.52/14 16} Qa7 {0.32/17 4 (h:g3)} 28. Bb5 {0.77/12 2} Qxa2 {0.67/17 7 (h:g3)} 29. Qa1 {0.85/13 1} Qxa1 { 0.67/15 0} 30. Rxa1 {0.85/12 0} Ng8 {0.80/18 5} 31. gxh4 {0.87/13 1} Rh6 {0.96/ 18 2 (f4)} 32. Ra8+ {1.08/14 2} Kg7 {0.96/16 0} 33. Rd8 {1.00/14 1} f4 {1.32/ 20 12} 34. c5 {1.00/14 1} dxc5 {1.32/19 0} 35. d6 {1.26/15 5} Nf6 {1.32/21 3 (f3)} 36. Re8 {1.42/14 4 (d7)} f3 {0.59/18 3} 37. Ke1 {1.42/14 1} c4 {0.64/17 1 (N:e8)} 38. d7 {1.53/14 1 (h3)} Nxd7 {0.47/18 1} 39. Bxd7 {1.53/15 11} Rb6 { 0.47/17 0} 40. Bf5 {1.53/12 0 (R:e4)} Rb1+ {0.39/15 1 (c3)} 41. Kd2 {1.84/11 0} Rb2+ {0.39/14 0} 42. Ke3 {1.98/13 1 (Kc3)} Re2+ {0.40/17 1} 43. Kf4 {2.10/14 1 (Kd4)} Rxf2 {0.36/14 0} 44. Rxe4 {2.10/12 0} Re2 {0.34/17 0 (R:h2)} 45. Kxf3 { 3.86/13 1 (R:c4)} Rxe4 {0.05/19 2 (R:h2)} 46. Kxe4 {4.44/14 2 (B:e4)} c3 {0.05/ 19 0 (Kh6)} 47. Kd3 {5.14/14 2} c2 {0.05/20 1 (Kf6)} 48. Kxc2 {5.29/14 1} Kf6 { 0.05/21 0} 49. Be4 {5.38/13 1} Kg7 {0.05/21 1} 50. Kd3 {5.33/13 2 (Bg2)} f5 { 0.05/20 4 (Kh8)} 51. Bf3 {6.11/11 1 (Bg2)} Kh7 {0.05/20 2 (Kf6)} 52. Ke3 {6.76/ 12 1 (Ke2)} f4+ {0.05/24 1 (Kg6)} 53. Ke4 {6.93/13 1 (Kd4)} Kg6 {0.05/24 1} 54. h5+ {6.93/12 1 (Kd4)} Kh7 {0.05/23 1 (Kg7)} 55. Kf5 {7.08/13 1 (Kd5)} Kg7 {0. 05/22 1 (Kh6)} 56. Kg5 {7.08/12 1 (h6+)} Kh8 {0.05/22 1} 57. Kg6 {7.07/12 2 (Kh6)} Kg8 {0.05/22 1} 58. h6 {6.95/11 1} Kh8 {0.05/21 0} 59. h3 {6.89/12 1 (Kf5)} Kg8 {0.05/23 1} 60. Bc6 {7.08/9 1} f3 {0.05/23 0 (Kh8)} 61. Bd5+ {7.01/ 10 3 (Bb5)} Kh8 {0.05/25 1} 62. Bc4 {6.98/12 1 (B:f3)} f2 {0.05/26 0} 63. h4 { 7.00/12 1 (Bd3)} f1=Q {0.05/26 0} 64. Bxf1 {0.00/29 0} Kg8 {0.00/0 0} 65. Kh5 { 0.00/0 0} Kh8 {0.00/0 0} 66. Bh3 {0.00/0 0} Kg8 {0.00/0 0} 67. Bg2 {0.00/0 0} Kh7 {0.00/0 0} 68. Bd5 {0.00/0 0} Kh8 {0.00/0 0 Согласился на ни~~ьo^} 1/2-1/2 Была у меня такая позиция, где Рыбка (правда, без таблиц) давала больше десяти баллов. Если не забуду - поищу как-нибудь.

PozitiFF_Chess: unknow пишет: Здесь черные слабейшая сторона - это они пропускают ходы и дают белым время на разрушение крепости - если у белых получилось - крепости нет. Почему не получится, когда целых два хода можно делать? Достаточно забрать любую черную пешку и отпрыгнуть фигурой обратно - будет выиграно. А если ваш алгоритм не учитывает взятия, то тогда сложно представить в каком случае он будет полезен.. Тут действительно простая ничейная стойка.

WildCat: Кевин Была у меня такая позиция, где Рыбка (правда, без таблиц) давала больше десяти баллов. [chess]7k/8/8/8/2B5/1B1B4/B1B1B2P/KB1B1B2 b[/chess] 7k/8/8/8/2B5/1B1B4/B1B1B2P/KB1B1B2 b - - Рыбка почти +12 дает.

immortal223: WildCat пишет: Рыбка почти +12 дает. Шреддера ей не переплюнуть. +37 Кто больше? Хиаркс - позорник, небольшой перевес чёрным даёт -0.07 Самый умный - вяленый 1.5.1 - тот вообще с ошибкой вылетел сразу, чтоб не позориться очевидно потому что в начале +115 пытался давать

WildCat: [chess]QQQRRBn1/PPPPP1P1/8/8/3K1k2/8/8/8 w[/chess] QQQRRBn1/PPPPP1P1/8/8/3K1k2/8/8/8 w - - Рыбка выдала +53.56 и от стыда упала (в обморок). Робка нагло дает +56.20 и не падает.

Ramzes II: WildCat пишет: QQQRRBn1/PPPPP1P1/8/8/3K1k2/8/8/8 w - - Рыбка выдала +53.56 и от стыда упала (в обморок). Робка нагло дает +56.20 и не падает. У меня в этой позиции вот такой бред выдает...

WildCat: Хиаркс вообще пригрозил, что белым мат в 513 ходов и анализировать такую фигню отказался. Глаурунг 2.2 на 21 глубине выдал 0.00 !!! До этого было +67. Стокфиш 1.6s: +68, только на глубине 41 оценка начала падать.

unknow: PozitiFF_Chess пишет: А если ваш алгоритм не учитывает взятия, то тогда сложно представить в каком случае он будет полезен.. Про взятия сразу было сказано - прерывание. Как вариант - при соскоке уйти на форсированный вариант чтобы рассчитать их до конца. Другой соскок - продолжить на текущей глубине ограничив себя на этом полуходе - без простых перемещений, только взятия и шахи. Но это кажется хуже - почти простой нулевой.

PozitiFF_Chess: unknow пишет: Как вариант - при соскоке уйти на форсированный вариант чтобы рассчитать их до конца. Другой соскок - продолжить на текущей глубине ограничив себя на этом полуходе - без простых перемещений, только взятия и шахи. Понятно. Просто я не сразу понял, что значит "прерывание"... Теперь я не понял, что такое "соскок" , но в принципе не так важно. Идея ясна. А как часто эту функцию вызывать? Насколько это замедлит работу движка?

unknow: PozitiFF_Chess пишет: А как часто эту функцию вызывать? Насколько это замедлит работу движка? По идее наоборот должен увеличить - это ведь сокращение. Одинарный нулевой вызовается в cut-node если текущая оценка >= beta и если она подтверждается, то ветка подсекается с возвратом оценки наверх. Двойной же для определения крепости предлагаю вызывать так же до рассмотрения своих ходов, но когда оценка меньше beta на дельту и если возврат получается лучше, то подсекать. А возвращенная оценка будет лучше, ведь если пробник отработал до конца, то вернется половинный минус, или противник полезет на взятия в настоящей крепости, тогда вообще улучшение. Условия для вызова могут влючать блокирование всех пешек, это даже обязательно, и еще что-нибудь для материала - типа осталось всего половина от всех фигур, еще открытых вертикалей не больше одной. Как оно вообще может работать пока неизвестно. Побольше про двойной нулевой вообще, но для другой цели есть: http://www.stmintz.com/ccc/index.php?id=179604

PozitiFF_Chess: unknow пишет: По идее наоборот должен увеличить - это ведь сокращение Ну... Крепости встречаются в практической партии так редко, что вряд ли увеличит. unknow пишет: Условия для вызова могут влючать блокирование всех пешек, это даже обязательно, и еще что-нибудь для материала - типа осталось всего половина от всех фигур, еще открытых вертикалей не больше одной Ну это ведь тоже надо проверять.. Опять же - потеря времени. Мне кажется, что для игровой программы эта фишка лишняя. Вот другое дело - для аналитического движка. Можно даже опционально в настройках поставить "крепость". Если ВКЛ - то программа будет вызывать эту функцию, если ВЫКЛ, то игнорировать.

Кевин: WildCat пишет: 7k/8/8/8/2B5/1B1B4/B1B1B2P/KB1B1B2 b - - Рыбка почти +12 дает. И все другие приведённые позиции - известные по типу позиции, в которых движки абсолютно тупят. А я говорил о другой: об одном пешечнике (4 их, вроде, на доске), где Рыбка абсолютно неправильно оценивает без таблиц.

unknow: PozitiFF_Chess пишет: Ну это ведь тоже надо проверять.. Опять же - потеря времени. Это всегда уже вычислено. В кеше пешечной структуры и в кеше материала. Крепости встречаются в практической партии так редко, что вряд ли увеличит Глобально для движка конечно нет. Но для данного класса позиций наверняка. И потом практичекая итоговая партия и то что там внутри считает движок - большая разница. Он стольно барахла перелопачивает, и лучше ему немножко помочь в определенных позициях.

PozitiFF_Chess: unknow пишет: Это всегда уже вычислено. В кеше пешечной структуры и в кеше материала. Ааа. Ну если только так... Далек я от шахматного программирования, конечно :) Но ведь неспроста сильнейшие движки не понимают, что такое "крепость". Значит-таки все это скорее минус, чем плюс. Или я не прав?

unknow: PozitiFF_Chess пишет: Но ведь неспроста сильнейшие движки не понимают, что такое "крепость". Значит-таки все это скорее минус, чем плюс. Минус - то что они крепость не понимают? Непонятно про минус. Эволюция движков все-таки существует. Не этот, так другой прунинг наконец поможет движку правильно обсчитать крепость.



полная версия страницы