На форуме: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
Bison



Сообщение: 71
Зарегистрирован: 20.06.09
Репутация: 2
ссылка на сообщение  Отправлено: 19.10.09 12:18. Заголовок: IPPOLIT & ROBBOLITO


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

Спасибо: 1 
Профиль Ответить
Ответов - 251 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 All [только новые]


VP
VIP


Сообщение: 688
Зарегистрирован: 15.07.07
Откуда: Россия , Красноярск
Репутация: 11
ссылка на сообщение  Отправлено: 19.10.09 12:25. Заголовок: Bison мы давно тебя ..


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

Спасибо: 0 
Профиль Ответить
Bison



Сообщение: 72
Зарегистрирован: 20.06.09
Репутация: 2
ссылка на сообщение  Отправлено: 19.10.09 12:26. Заголовок: Первое впечатление о..


Первое впечатление от кода - очень трудно его разобрать. Не совсем корректные названия типичных переменных только усиливают это впечатление: below вместо alpha, above вместо beta - мелочи по-сравнению с murderer вместо killer. Штук 10 поисковых функций тоже никак не помогают читабельности.

Первое новшество, что я заметил - это IID

 цитата:

 
// 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). Все это, очевидно, весьма кстати при нахождении тактики.

Спасибо: 0 
Профиль Ответить
Bison



Сообщение: 73
Зарегистрирован: 20.06.09
Репутация: 2
ссылка на сообщение  Отправлено: 19.10.09 12:29. Заголовок: VP Я думаю, лучше т..


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

Спасибо: 0 
Профиль Ответить
VP
VIP


Сообщение: 689
Зарегистрирован: 15.07.07
Откуда: Россия , Красноярск
Репутация: 11
ссылка на сообщение  Отправлено: 19.10.09 12:34. Заголовок: Bison согласен ..


Bison согласен


Спасибо: 0 
Профиль Ответить
Bison



Сообщение: 74
Зарегистрирован: 20.06.09
Репутация: 2
ссылка на сообщение  Отправлено: 19.10.09 12:36. Заголовок: Немного погонял трет..


Немного погонял третью рыбу против Ипполита, пондерхит получается пока очень высокий (особенно если сравнивать со 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%

Пондерхит

 цитата:
Rybka 3 32-bit - IPPOLIT 0.080a 74.57% (827/1109)


Для сравнения со Stockfish 1.5

 цитата:
Rybka 3 32-bit - Stockfish 1.5 JA 52.56% (626/1191)




Спасибо: 1 
Профиль Ответить
Bison



Сообщение: 75
Зарегистрирован: 20.06.09
Репутация: 2
ссылка на сообщение  Отправлено: 19.10.09 12:41. Заголовок: Программа для расчет..


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

Спасибо: 3 
Профиль Ответить
Bison



Сообщение: 76
Зарегистрирован: 20.06.09
Репутация: 2
ссылка на сообщение  Отправлено: 19.10.09 14:28. Заголовок: Для глубокого поиска..


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

Спасибо: 0 
Профиль Ответить
Renegat23
администратор


Сообщение: 4545
Зарегистрирован: 14.07.07
Репутация: 25

Награды: Молодец! Спасибо за интересный материал!!!За безудержный оптимизм!;-)
ссылка на сообщение  Отправлено: 19.10.09 14:55. Заголовок: WildCat пишет: Для ..


WildCat пишет:

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


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

Спасибо: 0 
Профиль Ответить
Bison



Сообщение: 77
Зарегистрирован: 20.06.09
Репутация: 2
ссылка на сообщение  Отправлено: 19.10.09 15:54. Заголовок: Ponder-а в Ипполите ..


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

Спасибо: 0 
Профиль Ответить
Osipov



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 19.10.09 21:50. Заголовок: Некоторые сходства с..


Некоторые сходства с Рыбкой 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 этой ерунды нет.


Спасибо: 3 
Ответить
immortal223
администратор


Сообщение: 2955
Настроение: зависит от погоды
Зарегистрирован: 14.07.07
Откуда: Hochland , Нью-Васюки Сити
Репутация: 54
ссылка на сообщение  Отправлено: 19.10.09 21:58. Заголовок: Osipov Юрий больша..


Osipov

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

Спасибо: 1 
Профиль Ответить
Bison



Сообщение: 82
Зарегистрирован: 20.06.09
Репутация: 2
ссылка на сообщение  Отправлено: 19.10.09 22:22. Заголовок: Osipov Юрий, поиск ..


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

Спасибо: 0 
Профиль Ответить
Osipov



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 19.10.09 22:30. Заголовок: Immortal223. Отладк..


Immortal223.

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

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


Спасибо: 2 
Ответить
Osipov



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 19.10.09 22:36. Заголовок: Юрий, поиск сильно п..



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



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


Спасибо: 0 
Ответить
Bison



Сообщение: 84
Зарегистрирован: 20.06.09
Репутация: 2
ссылка на сообщение  Отправлено: 19.10.09 22:48. Заголовок: Я насчитал 30 (сумма..


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

Спасибо: 0 
Профиль Ответить
Bison



Сообщение: 85
Зарегистрирован: 20.06.09
Репутация: 2
ссылка на сообщение  Отправлено: 19.10.09 22:50. Заголовок: Но Ипполит на 100% б..



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


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

Спасибо: 0 
Профиль Ответить
immortal223
администратор


Сообщение: 2959
Настроение: зависит от погоды
Зарегистрирован: 14.07.07
Откуда: Hochland , Нью-Васюки Сити
Репутация: 54
ссылка на сообщение  Отправлено: 19.10.09 22:51. Заголовок: Osipov пишет: Отлад..


Osipov пишет:

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



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

Спасибо: 1 
Профиль Ответить
Знатный Читер



Сообщение: 101
Зарегистрирован: 18.06.08
Репутация: 1
ссылка на сообщение  Отправлено: 19.10.09 22:52. Заголовок: Юрий Осипов, скажите..


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

Спасибо: 0 
Профиль Ответить
Bison



Сообщение: 86
Зарегистрирован: 20.06.09
Репутация: 2
ссылка на сообщение  Отправлено: 19.10.09 23:05. Заголовок: Как я и думал, Иппол..


Как я и думал, Ипполит уже все изучают (кому надо).

 цитата:
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

Спасибо: 1 
Профиль Ответить
immortal223
администратор


Сообщение: 2961
Настроение: зависит от погоды
Зарегистрирован: 14.07.07
Откуда: Hochland , Нью-Васюки Сити
Репутация: 54
ссылка на сообщение  Отправлено: 19.10.09 23:15. Заголовок: Bison пишет: Марко ..


Bison пишет:

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



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

Спасибо: 0 
Профиль Ответить
Ответов - 251 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  2 час. Хитов сегодня: 42
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация вкл, правка нет