Author | Topic |
Bison
|
| |
Post №: 71
Joined: 20.06.09
Rank:
2
|
|
Posted: 19.10.09 12:18. Post subject: IPPOLIT & ROBBOLITO
Предлагаю обсудить особенности устройства Ипполита. Все-таки некаждый день появляются сильнейшие opensource программы.
|
|
Profile
Reply
|
Replys - 251
, page:
1
2
3
4
5
6
7
8
9
10
11
12
13
All
[new only]
|
|
VP
|
| VIP
|
Post №: 688
Joined: 15.07.07
Rank:
11
|
|
Posted: 19.10.09 12:25. Post subject: Bison мы давно тебя ..
|
|
Profile
Reply
|
Bison
|
| |
Post №: 72
Joined: 20.06.09
Rank:
2
|
|
Posted: 19.10.09 12:26. Post subject: Первое впечатление о..
Первое впечатление от кода - очень трудно его разобрать. Не совсем корректные названия типичных переменных только усиливают это впечатление: below вместо alpha, above вместо beta - мелочи по-сравнению с murderer вместо killer. Штук 10 поисковых функций тоже никак не помогают читабельности. Первое новшество, что я заметил - это IID quote: | // IID if (!transpositional_movement && deepness >= 6) { itog = below; if (deepness >= 10) { itog = white_pv (below - deepness, above + deepness, deepness - 8, shah); if (itog > below - deepness) transpositional_movement = (tower_structure + 1)->move; } if (itog > below - deepness) itog = white_pv (below - deepness, above + deepness, deepness - 4, shah); if (itog > below - deepness) transpositional_movement = (tower_structure + 1)->move; } else if (deepness >= 10 && deepness > hash_deepness + 8) { itog = white_pv (below - deepness, above + deepness, deepness - 8, shah); if (itog > below - deepness) transpositional_movement = (tower_structure + 1)->move; if (itog > below - deepness) { itog = white_pv (below - deepness, above + deepness, deepness - 4, shah); if (itog > below - deepness) transpositional_movement = (tower_structure + 1)->move; } } |
| из функции white_pv(). Окно зависит от глубины + функция охватывает очень большие глубины (deepness >= 10). Все это, очевидно, весьма кстати при нахождении тактики.
|
|
Profile
Reply
|
Bison
|
| |
Post №: 73
Joined: 20.06.09
Rank:
2
|
|
Posted: 19.10.09 12:29. Post subject: VP Я думаю, лучше т..
VP Я думаю, лучше там особо не флудить, больно уж тема объемная.
|
|
Profile
Reply
|
VP
|
| VIP
|
Post №: 689
Joined: 15.07.07
Rank:
11
|
|
Posted: 19.10.09 12:34. Post subject: Bison согласен ..
Bison согласен
|
|
Profile
Reply
|
Bison
|
| |
Post №: 74
Joined: 20.06.09
Rank:
2
|
|
Posted: 19.10.09 12:36. Post subject: Немного погонял трет..
Немного погонял третью рыбу против Ипполита, пондерхит получается пока очень высокий (особенно если сравнивать со Stockfish. Rybka 3 32-bit - IPPOLIT 0.080a 20.5 - 24.5 45.56% Rybka 3 32-bit - Stockfish 1.5 JA 32.5 - 12.5 72.22% 53.0 - 37.0 58.89% Пондерхит quote: | Rybka 3 32-bit - IPPOLIT 0.080a 74.57% (827/1109) |
| Для сравнения со Stockfish 1.5 quote: | Rybka 3 32-bit - Stockfish 1.5 JA 52.56% (626/1191) |
|
|
|
Profile
Reply
|
Bison
|
| |
Post №: 75
Joined: 20.06.09
Rank:
2
|
|
Posted: 19.10.09 12:41. Post subject: Программа для расчет..
|
|
Profile
Reply
|
Bison
|
| |
Post №: 76
Joined: 20.06.09
Rank:
2
|
|
Posted: 19.10.09 14:28. Post subject: Для глубокого поиска..
Для глубокого поиска Ипполит имеет на мой (весьма беглый) взгляд самый лучший из opensource движков Futility Pruning. Реализуется он, как я понял, через таблицу increment_maximal[16][4095], своим устройством напоминающую History. Стоит все это дело поизучать поподробнее.
|
|
Profile
Reply
|
|
Posted: 19.10.09 14:55. Post subject: WildCat пишет: Для ..
WildCat пишет: quote: | Для разбора исходников Ипполита лучше создать отдельную ветку. |
| Так она уже создана :) В это ветке их уже разбирают.
|
|
Profile
Reply
|
Bison
|
| |
Post №: 77
Joined: 20.06.09
Rank:
2
|
|
Posted: 19.10.09 15:54. Post subject: Ponder-а в Ипполите ..
Ponder-а в Ипполите точно нет, иначе была бы команда "ponderhit", без нее никуда.
|
|
Profile
Reply
|
Osipov
|
| |
Guest
Joined: 01.01.70
|
|
Posted: 19.10.09 21:50. Post subject: Некоторые сходства с..
Некоторые сходства с Рыбкой 3: 1. Большинство основных функций – парные: для позиций с ходом белых и – зеркальные – для позиций с ходом черных. Как и в Рыбке. 2. Очень похож расчет таблицы материального дисбаланса. Правда, в Рыбке это одна функция, но это не принципиально. 3. Белопольный и чернопольный слоны имеют разный индекс в таблице материала – тоже Рыбка. 4. В оценочной функции за одну операцию складываются два числа opening и endgame, типа так: za -= (((3) << 16) + (10)). Это Рыбка. 5. Отдельный расчет оценки для пешечника. 6. Похожий принцип пересчета истории. Ипполит: int ist = ISTOR[POZ.pl[(((dv) >> 6) & 077)]][((dv) & 077)]; ISTOR[POZ.pl[(((dv) >> 6) & 077)]][((dv) & 077)] = ist + (((0xff00 - ist) * gl) >> 8); Рыбка 3: history = History[quiet_flag][piece][to]; History[quiet_flag][piece][to] = history - ((history * depth) >> 9); В целом, можно считать Ипполит производным от Рыбки 3. Но отличий очень много, и они настолько существенны, что сделать это мог только тот, кто хорошо разбирается в алгоритмах Рыбки. Я уже год изучаю исходники Рыбки, но так радикально поменять её не смог. Скорее всего, это что-то близкое к Рыбке 4 от автора, но потом кто-то поиздевался над кодом. И ещё кое-что интересное. В конце ОФ есть что-то жуткое: if ((ookDIN->FLAG & 128)) { if (za > 0) { if (POZ.dd[enBELsvet]) za -= .. а дальше – длинное многоэтажное матерное выражение из 4000 символов. Не похоже, чтобы это писала человеческая рука. Рука была явно механическая. Похоже, здесь прошёлся какой-то мощный декомпилятор. Кстати, в Рыбке 3 этой ерунды нет.
|
|
Reply
|
immortal223
|
| administrator
|
Post №: 2955
Joined: 14.07.07
Rank:
54
|
|
Posted: 19.10.09 21:58. Post subject: Osipov Юрий больша..
Osipov Юрий большая просьба - отладьте движок, а! только Вы можете это сделать Я от него в полнейшем восторге. Он ненормально силён! Особенно в эндшпиле. Мульти-ПВ привязать бы к нему для анализа это очень надо!!
|
|
Profile
Reply
|
|
Bison
|
| |
Post №: 82
Joined: 20.06.09
Rank:
2
|
|
Posted: 19.10.09 22:22. Post subject: Osipov Юрий, поиск ..
Osipov Юрий, поиск сильно похож на тот, что в Рыбе? Там тоже гора переборных функций? Я, например, до сих пор не докопался, что такого особенного делают функции white_all (), white_exclustion() и white_slide(), что их понадобилось выносить из общего поиска.
|
|
Profile
Reply
|
Osipov
|
| |
Guest
Joined: 01.01.70
|
|
Posted: 19.10.09 22:30. Post subject: Immortal223. Отладк..
Immortal223. Отладка Ипполита и прикручивание Multi PV не заставят себя ждать. Есть много хороших программистов. Ещё интересное наблюдение про Ипполита. Сравнил его скорость с оригинальной Рыбкой и "своей". Мне удалось выжать только 40% прироста скорости по сравнению с оригинальной Рыбкой. Но Ипполит на 100% быстрее Рыбки 3, т.е. вдвое.
|
|
Reply
|
Osipov
|
| |
Guest
Joined: 01.01.70
|
|
Posted: 19.10.09 22:36. Post subject: Юрий, поиск сильно п..
quote: | Юрий, поиск сильно похож на тот, что в Рыбе? Там тоже гора переборных функций? Я, например, до сих пор не докопался, что такого особенного делают функции white_all (), white_exclustion() и white_slide(), что их понадобилось выносить из общего поиска. |
| Я пока ещё не копался в поиске Ипполита. Только посмотрел PV-поиск. Тоже сложное впечатление, как и от всего остального - много похожего на Рыбку 3, но много и отличий. Кстати, сколько функций поиска в Ипполите всего? В Рыбке их 20 - по 10 на white и black. Это не считая корня.
|
|
Reply
|
Bison
|
| |
Post №: 84
Joined: 20.06.09
Rank:
2
|
|
Posted: 19.10.09 22:48. Post subject: Я насчитал 30 (сумма..
Я насчитал 30 (суммарно за оба цвета), это если считать с black_top () и дальше вниз. Как раз на месяц разбора, если в день по функции
|
|
Profile
Reply
|
Bison
|
| |
Post №: 85
Joined: 20.06.09
Rank:
2
|
|
Posted: 19.10.09 22:50. Post subject: Но Ипполит на 100% б..
quote: | Но Ипполит на 100% быстрее Рыбки 3, т.е. вдвое. |
| Удвоение скорости, насколько я помню, дает ~70 пунктов Эло, так что в знаниях он не особо прибавил, правильно?
|
|
Profile
Reply
|
immortal223
|
| administrator
|
Post №: 2959
Joined: 14.07.07
Rank:
54
|
|
Posted: 19.10.09 22:51. Post subject: Osipov пишет: Отлад..
Osipov пишет: quote: | Отладка Ипполита и прикручивание Multi PV не заставят себя ждать. Есть много хороших программистов. |
| Я просто в нереальном экстазе от этого движка. Это просто сказка какая-то! не поверил бы что такое возможно. Такое потрясение испытывал только в декабре 2005 когда рыбка 1.0 Бета появилась. И немного похожее - когда Рыбка 3 вышла!
|
|
Profile
Reply
|
Знатный Читер
|
| |
Post №: 101
Joined: 18.06.08
Rank:
1
|
|
Posted: 19.10.09 22:52. Post subject: Юрий Осипов, скажите..
Юрий Осипов, скажите, пожалуйста, а что вы заканчивали? Очень хочется чувствовать себя так же свободно в программировании. В 2010 собираюсь поступить на заочку в Санкт-Петербургский Политехнический на информационные системы и технологии. На очку уже нет времени.
|
|
Profile
Reply
|
Bison
|
| |
Post №: 86
Joined: 20.06.09
Rank:
2
|
|
Posted: 19.10.09 23:05. Post subject: Как я и думал, Иппол..
Как я и думал, Ипполит уже все изучают (кому надо). quote: | mcostalba wrote: Today, in the main forum, there has been a marathon thread about an (almost sure) Rybka's reverse engineered engine called Ippolit. Out of curiosity I looked at the sources, well the source, it is a single, horrid to read, file. I found an idea I never saw before. When null search fails high we simply return beta, eventually after zugzwang verification search. In this case, before to return, the null value (the result of the null search) is saved in the TT table as a LOWER BOUND type node (as it should be) but with NO associated move (as normally happens only for upper bound nodes). I think the logic makes sense: null search is just a normal search but on an undefined move, on an absolutly dumb move, if we anyhow fail high it makes sense to store we are in a cut-off type node and because we don't have searched any specific move we store MOVE_NONE in the hash table. Does anyone have ever heard of such idea before ? For me it is new, but I am not in this field from a long ago |
| Марко Костальба - это тот, кто сделел Stockfish из Glaurunga
|
|
Profile
Reply
|
immortal223
|
| administrator
|
Post №: 2961
Joined: 14.07.07
Rank:
54
|
|
Posted: 19.10.09 23:15. Post subject: Bison пишет: Марко ..
Bison пишет: quote: | Марко Костальба - это тот, кто сделел Stockfish из Glaurunga |
| ждём добавления +100 от стокфиша 2
|
|
Profile
Reply
|
Replys - 251
, page:
1
2
3
4
5
6
7
8
9
10
11
12
13
All
[new only]
|
|