On-line: guests 0. In total there are: 0 [information..]
AuthorTopic
Bison



Post №: 71
Joined: 20.06.09
Rank: 2
link post  Posted: 19.10.09 12:18. Post subject: IPPOLIT & ROBBOLITO


Предлагаю обсудить особенности устройства Ипполита. Все-таки некаждый день появляются сильнейшие opensource программы.

Say thanks!: 1 
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
link post  Posted: 19.10.09 12:25. Post subject: Bison мы давно тебя ..


Bison мы давно тебя ждем здесь http://immortal223.borda.ru/?1-2-0-00000151-000-260-1

Say thanks!: 0 
Profile Reply
Bison



Post №: 72
Joined: 20.06.09
Rank: 2
link post  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). Все это, очевидно, весьма кстати при нахождении тактики.

Say thanks!: 0 
Profile Reply
Bison



Post №: 73
Joined: 20.06.09
Rank: 2
link post  Posted: 19.10.09 12:29. Post subject: VP Я думаю, лучше т..


VP
Я думаю, лучше там особо не флудить, больно уж тема объемная.

Say thanks!: 0 
Profile Reply
VP
VIP


Post №: 689
Joined: 15.07.07
Rank: 11
link post  Posted: 19.10.09 12:34. Post subject: Bison согласен ..


Bison согласен


Say thanks!: 0 
Profile Reply
Bison



Post №: 74
Joined: 20.06.09
Rank: 2
link post  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)




Say thanks!: 1 
Profile Reply
Bison



Post №: 75
Joined: 20.06.09
Rank: 2
link post  Posted: 19.10.09 12:41. Post subject: Программа для расчет..


Программа для расчета пондерхита.
Партии

Say thanks!: 3 
Profile Reply
Bison



Post №: 76
Joined: 20.06.09
Rank: 2
link post  Posted: 19.10.09 14:28. Post subject: Для глубокого поиска..


Для глубокого поиска Ипполит имеет на мой (весьма беглый) взгляд самый лучший из opensource движков Futility Pruning. Реализуется он, как я понял, через таблицу increment_maximal[16][4095], своим устройством напоминающую History. Стоит все это дело поизучать поподробнее.

Say thanks!: 0 
Profile Reply
Renegat23
administrator


Post №: 4545
Joined: 14.07.07
Rank: 25

Awards: Молодец! Спасибо за интересный материал!!!За безудержный оптимизм!;-)
link post  Posted: 19.10.09 14:55. Post subject: WildCat пишет: Для ..


WildCat пишет:

 quote:
Для разбора исходников Ипполита лучше создать отдельную ветку.


Так она уже создана :)
В это ветке их уже разбирают.

Say thanks!: 0 
Profile Reply
Bison



Post №: 77
Joined: 20.06.09
Rank: 2
link post  Posted: 19.10.09 15:54. Post subject: Ponder-а в Ипполите ..


Ponder-а в Ипполите точно нет, иначе была бы команда "ponderhit", без нее никуда.

Say thanks!: 0 
Profile Reply
Osipov



Guest
Joined: 01.01.70
link post  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 этой ерунды нет.


Say thanks!: 3 
Reply
immortal223
administrator


Post №: 2955
Joined: 14.07.07
Rank: 54
link post  Posted: 19.10.09 21:58. Post subject: Osipov Юрий больша..


Osipov

Юрий большая просьба - отладьте движок, а! только Вы можете это сделать
Я от него в полнейшем восторге. Он ненормально силён! Особенно в эндшпиле.
Мульти-ПВ привязать бы к нему для анализа это очень надо!!

Say thanks!: 1 
Profile Reply
Bison



Post №: 82
Joined: 20.06.09
Rank: 2
link post  Posted: 19.10.09 22:22. Post subject: Osipov Юрий, поиск ..


Osipov
Юрий, поиск сильно похож на тот, что в Рыбе? Там тоже гора переборных функций?
Я, например, до сих пор не докопался, что такого особенного делают функции white_all (), white_exclustion() и white_slide(), что их понадобилось выносить из общего поиска.

Say thanks!: 0 
Profile Reply
Osipov



Guest
Joined: 01.01.70
link post  Posted: 19.10.09 22:30. Post subject: Immortal223. Отладк..


Immortal223.

Отладка Ипполита и прикручивание Multi PV не заставят себя ждать. Есть много хороших программистов.

Ещё интересное наблюдение про Ипполита. Сравнил его скорость с оригинальной Рыбкой и "своей".
Мне удалось выжать только 40% прироста скорости по сравнению с оригинальной Рыбкой.
Но Ипполит на 100% быстрее Рыбки 3, т.е. вдвое.


Say thanks!: 2 
Reply
Osipov



Guest
Joined: 01.01.70
link post  Posted: 19.10.09 22:36. Post subject: Юрий, поиск сильно п..



 quote:
Юрий, поиск сильно похож на тот, что в Рыбе? Там тоже гора переборных функций?
Я, например, до сих пор не докопался, что такого особенного делают функции white_all (), white_exclustion() и white_slide(), что их понадобилось выносить из общего поиска.



Я пока ещё не копался в поиске Ипполита. Только посмотрел PV-поиск. Тоже сложное впечатление, как и от всего остального - много похожего на Рыбку 3, но много и отличий.
Кстати, сколько функций поиска в Ипполите всего? В Рыбке их 20 - по 10 на white и black. Это не считая корня.


Say thanks!: 0 
Reply
Bison



Post №: 84
Joined: 20.06.09
Rank: 2
link post  Posted: 19.10.09 22:48. Post subject: Я насчитал 30 (сумма..


Я насчитал 30 (суммарно за оба цвета), это если считать с black_top () и дальше вниз. Как раз на месяц разбора, если в день по функции

Say thanks!: 0 
Profile Reply
Bison



Post №: 85
Joined: 20.06.09
Rank: 2
link post  Posted: 19.10.09 22:50. Post subject: Но Ипполит на 100% б..



 quote:
Но Ипполит на 100% быстрее Рыбки 3, т.е. вдвое.


Удвоение скорости, насколько я помню, дает ~70 пунктов Эло, так что в знаниях он не особо прибавил, правильно?

Say thanks!: 0 
Profile Reply
immortal223
administrator


Post №: 2959
Joined: 14.07.07
Rank: 54
link post  Posted: 19.10.09 22:51. Post subject: Osipov пишет: Отлад..


Osipov пишет:

 quote:
Отладка Ипполита и прикручивание Multi PV не заставят себя ждать. Есть много хороших программистов.



Я просто в нереальном экстазе от этого движка. Это просто сказка какая-то!
не поверил бы что такое возможно.
Такое потрясение испытывал только в декабре 2005 когда рыбка 1.0 Бета появилась. И немного похожее - когда Рыбка 3 вышла!

Say thanks!: 1 
Profile Reply
Знатный Читер



Post №: 101
Joined: 18.06.08
Rank: 1
link post  Posted: 19.10.09 22:52. Post subject: Юрий Осипов, скажите..


Юрий Осипов,
скажите, пожалуйста, а что вы заканчивали? Очень хочется чувствовать себя так же свободно в программировании. В 2010 собираюсь поступить на заочку в Санкт-Петербургский Политехнический на информационные системы и технологии. На очку уже нет времени.

Say thanks!: 0 
Profile Reply
Bison



Post №: 86
Joined: 20.06.09
Rank: 2
link post  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

Say thanks!: 1 
Profile Reply
immortal223
administrator


Post №: 2961
Joined: 14.07.07
Rank: 54
link post  Posted: 19.10.09 23:15. Post subject: Bison пишет: Марко ..


Bison пишет:

 quote:
Марко Костальба - это тот, кто сделел Stockfish из Glaurunga



ждём добавления +100 от стокфиша 2

Say thanks!: 0 
Profile Reply
Replys - 251 , page: 1 2 3 4 5 6 7 8 9 10 11 12 13 All [new only]
Тему читают:
- user online
- user offline
All times are GMT  2 Hours. Hits today: 8
You can: smiles yes, images yes, types no, poll no
avatars yes, links on, premoderation on, edit new post no