Forchess - форум о заочных шахматах  

Вернуться   Forchess - форум о заочных шахматах > Заочные турниры и партии > Шахматные программы и движки > Турниры и сборки движков

Ответ
 
Опции темы Опции просмотра
Старый 29.01.2018, 20:43   #1
ChessMan
Super Moderator
 
Аватар для ChessMan
 
Регистрация: 04.01.2017
Сообщений: 3,629
Сказал(а) спасибо: 2,879
Поблагодарили 6,463 раз(а) в 2,331 сообщениях
Репутация: 354
По умолчанию Тестирование неофициальных патчей

Предлагаю в этой теме тестировать и обсуждать разные свои и чужие патчи и идеи по улучшению Стокфиша.
ChessMan вне форума   Ответить с цитированием
3 пользователя(ей) сказали cпасибо:
Alexandr_L (22.03.2018), sovaz1997 (29.01.2018), Гудвин (30.01.2018)
Старый 29.01.2018, 21:19   #2
ChessMan
Super Moderator
ТС
 
Аватар для ChessMan
 
Регистрация: 04.01.2017
Сообщений: 3,629
Сказал(а) спасибо: 2,879
Поблагодарили 6,463 раз(а) в 2,331 сообщениях
Репутация: 354
По умолчанию Re: Тестирование неофициальных патчей

Maratka, какие именно исходники Вы сегодня тестировали? Те, что я залил на ГитХаб или свои? Если свои то скиньте их мне ещё раз.
Что-то меня терзают смутные сомнения...

Развернуть для просмотра

Код:
Score of Stockfish_x64_280118_popcnt_730mingw vs Stockfish_x64_290118_SC_pop_730mingw: 
76 - 48 - 217 [0.541]
ELO difference: 28.59 +/- 22.18

348 of 2000 games finished. 10+0.1 20/20
Код:
Score of Stockfish_x64_290118_SC_pop_730mingw vs Stockfish_x64_280118_popcnt_730mingw:
 52 - 62 - 164 [0.482]
ELO difference: -12.50 +/- 26.16

285 of 2000 games finished. 10+0.1 20/20
Stockfish_x64_290118_SC_pop_730mingw -- с дефолтным контемпом 20/20
мастер тоже с дефолтным
[свернуть]


Похоже, этот вариант лучше:

https://github.com/snicolet/Stockfis...587a7e8d9bc389

Последний раз редактировалось ChessMan; 29.01.2018 в 22:10.
ChessMan вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Alexandr_L (22.03.2018)
Старый 29.01.2018, 22:18   #3
Maratka
Эксперт
 
Аватар для Maratka
 
Регистрация: 11.04.2017
Адрес: РФ, Крым, Севастополь.
Сообщений: 11,849
Сказал(а) спасибо: 3,311
Поблагодарили 5,952 раз(а) в 4,245 сообщениях
Репутация: 253
По умолчанию Re: Тестирование неофициальных патчей

Свои.
http://forchess.ru/showpost.php?p=59349&postcount=422
Maratka вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Alexandr_L (22.03.2018)
Старый 29.01.2018, 22:21   #4
Maratka
Эксперт
 
Аватар для Maratka
 
Регистрация: 11.04.2017
Адрес: РФ, Крым, Севастополь.
Сообщений: 11,849
Сказал(а) спасибо: 3,311
Поблагодарили 5,952 раз(а) в 4,245 сообщениях
Репутация: 253
По умолчанию Re: Тестирование неофициальных патчей

Кстати на ГитХаб Стефан его переписал, но как я вижу - просто красоту под общий стиль подвел, алгоритмически там ничего поменяться не должно.

https://github.com/snicolet/Stockfis...587a7e8d9bc389
Maratka вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Alexandr_L (22.03.2018)
Старый 29.01.2018, 22:26   #5
ChessMan
Super Moderator
ТС
 
Аватар для ChessMan
 
Регистрация: 04.01.2017
Сообщений: 3,629
Сказал(а) спасибо: 2,879
Поблагодарили 6,463 раз(а) в 2,331 сообщениях
Репутация: 354
По умолчанию Re: Тестирование неофициальных патчей

Цитата: Сообщение от Maratka
Кстати на ГитХаб Стефан его переписал, но как я вижу - просто красоту под общий стиль подвел, алгоритмически там ничего поменяться не должно.

https://github.com/snicolet/Stockfis...587a7e8d9bc389
Это не красота... уж поверьте мне. То как я переписал Ваш код - это не правильно! Его вариант правильный!

Color us = rootPos.side_to_move();
Time.init(Limits, us, rootPos.game_ply());
TT.new_search();

int x = Options["Contempt for white"] * PawnValueEg / 100; // From centipawns
int y = Options["Contempt for black"] * PawnValueEg / 100; // From centipawns
int contempt = (us == WHITE ? x : y);


Eval::Contempt = (us == WHITE ? make_score(contempt, contempt / 2)
: -make_score(contempt, contempt / 2));
ChessMan вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Alexandr_L (22.03.2018)
Старый 29.01.2018, 22:32   #6
Maratka
Эксперт
 
Аватар для Maratka
 
Регистрация: 11.04.2017
Адрес: РФ, Крым, Севастополь.
Сообщений: 11,849
Сказал(а) спасибо: 3,311
Поблагодарили 5,952 раз(а) в 4,245 сообщениях
Репутация: 253
По умолчанию Re: Тестирование неофициальных патчей

Цитата: Сообщение от ChessMan
https://github.com/snicolet/Stockfis...587a7e8d9bc389
Никакой разницы с точки зрения алгоритма.
Даже бенч совпадает (соберите несколько сборок с разными contempt на базе моего кода и Стефана - все увидите сами).

Но... формально у него чуть быстрее код, т.к. нет проверки:

Код:
bool use_game_mode = (Options["Use game mode"]);
if (use_game_mode == true)
Впрочем, оно и у меня несложно вырезается. Так что предлагю считать, что его код просто красивее (и это действительно так):

У меня нагромождение

Код:
if (us == WHITE)
{
contempt = Options["Contempt for white"] * PawnValueEg / 100;
}
else
{
contempt = Options["Contempt for black"] * PawnValueEg / 100; // From centipawns
У него, лаконичнее, а потому проще и красивее:

Код:
int x = Options["Contempt for White"] * PawnValueEg / 100; // From centipawns
int y = Options["Contempt for Black"] * PawnValueEg / 100; // From centipawns
int contempt = (us == WHITE ? x : y);
______
Но я за красотой не гнался. По сути, это вообще первое, что я написал на C++, кроме "привет мира". ;)
Maratka вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Alexandr_L (22.03.2018)
Старый 29.01.2018, 22:33   #7
Maratka
Эксперт
 
Аватар для Maratka
 
Регистрация: 11.04.2017
Адрес: РФ, Крым, Севастополь.
Сообщений: 11,849
Сказал(а) спасибо: 3,311
Поблагодарили 5,952 раз(а) в 4,245 сообщениях
Репутация: 253
По умолчанию Re: Тестирование неофициальных патчей

Цитата: Сообщение от ChessMan
Это не красота... уж поверьте мне. То как я переписал Ваш код - это не правильно! Его вариант правильный!
Его вариант считает ровно то, что и мой. ;)
Но исходник читается проще.
Maratka вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Alexandr_L (22.03.2018)
Старый 29.01.2018, 22:39   #8
ChessMan
Super Moderator
ТС
 
Аватар для ChessMan
 
Регистрация: 04.01.2017
Сообщений: 3,629
Сказал(а) спасибо: 2,879
Поблагодарили 6,463 раз(а) в 2,331 сообщениях
Репутация: 354
По умолчанию Re: Тестирование неофициальных патчей

Они не совсем одинаковы... Похоже в том коде что я выложил на ГитХаб есть како-то нюанс... он проигрывает Мастеру несмотря на чуть большую скорость и одинаковый бенч. Можете сами проверить.

Я сам пришел к такому выводу и поэтому ещё немного изменил код,



а потом увидел вариант Николета.
Одинаковый бенч не всегда значит что движки одинаковы
ChessMan вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Alexandr_L (22.03.2018)
Старый 29.01.2018, 22:39   #9
Maratka
Эксперт
 
Аватар для Maratka
 
Регистрация: 11.04.2017
Адрес: РФ, Крым, Севастополь.
Сообщений: 11,849
Сказал(а) спасибо: 3,311
Поблагодарили 5,952 раз(а) в 4,245 сообщениях
Репутация: 253
По умолчанию Re: Тестирование неофициальных патчей

_______
Короче, нефиг спорить. Я не настаиваю на авторстве кода. Я настаиваю на авторстве алгоритма "присвоение значения contempt в зависимости от цвета".

И с этим поспорить будет действительно сложно. ;)

_______
Сейчас меня больше интересует тесты, которые там будут крутить, а именно - на какие значения для белых и отдельно для черных в итоге выйдут при матче сам собой, т.е. равным соперником. Ибо при сопернике чуть слабее очевидно, что значение для черных должно быть чуть меньше, чем для белых (например +20/+15), а для сильно слабых можно смело лупить +20, а то и +30 за оба цвета.
Maratka вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Alexandr_L (22.03.2018)
Старый 29.01.2018, 22:43   #10
ChessMan
Super Moderator
ТС
 
Аватар для ChessMan
 
Регистрация: 04.01.2017
Сообщений: 3,629
Сказал(а) спасибо: 2,879
Поблагодарили 6,463 раз(а) в 2,331 сообщениях
Репутация: 354
По умолчанию Re: Тестирование неофициальных патчей

Цитата: Сообщение от Maratka
_______
Короче, нефиг спорить. Я не настаиваю на авторстве кода. Я настаиваю на авторстве алгоритма "присвоение значения contempt в зависимости от цвета".

И с этим поспорить будет действительно сложно. ;)

_______
Сейчас меня больше интересует тесты, которые там будут крутить, а именно - на какие значения для белых и отдельно для черных в итоге выйдут при матче сам собой, т.е. равным соперником. Ибо при сопернике чуть слабее очевидно, что значение для черных должно быть чуть меньше, чем для белых (например +20/+15), а для сильно слабых можно смело лупить +20, а то и +30 за оба цвета.
Вы погодите с тестированием. Если на тест пустят тот вариант, что я выложил то он не пройдёт.
ChessMan вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Alexandr_L (22.03.2018)
Старый 29.01.2018, 22:44   #11
ChessMan
Super Moderator
ТС
 
Аватар для ChessMan
 
Регистрация: 04.01.2017
Сообщений: 3,629
Сказал(а) спасибо: 2,879
Поблагодарили 6,463 раз(а) в 2,331 сообщениях
Репутация: 354
По умолчанию Re: Тестирование неофициальных патчей

На счет авторства: раздельный контемпт они уже обсуждали и даже предлагали код. так что... надо было раньше "репу чесать"
ChessMan вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Alexandr_L (22.03.2018)
Старый 29.01.2018, 22:46   #12
Maratka
Эксперт
 
Аватар для Maratka
 
Регистрация: 11.04.2017
Адрес: РФ, Крым, Севастополь.
Сообщений: 11,849
Сказал(а) спасибо: 3,311
Поблагодарили 5,952 раз(а) в 4,245 сообщениях
Репутация: 253
По умолчанию Re: Тестирование неофициальных патчей

Цитата: Сообщение от ChessMan
Одинаковый бенч не всегда значит что движки одинаковы
Ну там спросите у него, чего гадать? ;)
Или вон сейчас местные гуру подтянутся, да скажут, равноценен ли код с точки зрения алгоритма?

Мои знания С++ говорят, что равнозначен (ибо несложно вынести в консоль отладочное сообщение, и прокрутить бенч).

Например, мой первый вараинт кода (с отладкой) выглядел где-то вот так:

Код:
bool use_game_mode = (Options["Use game mode"]);
  if (use_game_mode == true)

  {
	  if (us == WHITE)
	  {
		  //printf("\n");
		  //printf("My side is white\n");
		  
		  contempt = (Options["Contempt"] + 5) * PawnValueEg / 100; // From centipawns		  
		  /*char str[20];
		  sprintf(str, "%d", contempt);
		  printf("Computed contempt: ");
		  printf(str);
		  printf("\n");	*/	 
	  }
	  else
	  {
		  //printf("\n");
		  //printf("My side is black\n");
		  
		  contempt = (Options["Contempt"] - 25) * PawnValueEg / 100; // From centipawns
		  /*char str[20];
		  sprintf(str, "%d", contempt);
		  printf("Computed contempt: ");
		  printf(str);
		  printf("\n");		*/  
	  }
  }
Соответственно, уберите ремарки, да сравните значение "Computed contempt" (т.е. то, что сейчас считается как ".... = Options["Contempt for White/Black"] * PawnValueEg / 100;"
Maratka вне форума   Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
Alexandr_L (22.03.2018), ChessMan (29.01.2018)
Старый 29.01.2018, 22:50   #13
Maratka
Эксперт
 
Аватар для Maratka
 
Регистрация: 11.04.2017
Адрес: РФ, Крым, Севастополь.
Сообщений: 11,849
Сказал(а) спасибо: 3,311
Поблагодарили 5,952 раз(а) в 4,245 сообщениях
Репутация: 253
По умолчанию Re: Тестирование неофициальных патчей

Цитата: Сообщение от ChessMan
На счет авторства: раздельный контемпт они уже обсуждали и даже предлагали код. так что... надо было раньше "репу чесать"
Не буду спорить, хотя и замечу, что я свою репу чесать начал с год назад. Другое дело, что ломиться с голой идеей, вместо пусть и кривовато написанного, но рабочего кода - это глупо, а потому идею обсудили на Имморателе (тогда он еще был площадкой для обсуждения), и благополучно отложили в нижний ящик: напрячься, и написать код (несколько минут) и проверить его (пара недель) никто не захотел.

В общем широко известный принцип:

Maratka вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Alexandr_L (22.03.2018)
Старый 29.01.2018, 22:50   #14
sovaz1997
Гроссмейстер
 
Аватар для sovaz1997
 
Регистрация: 27.09.2017
Адрес: Москва
Сообщений: 4,142
Сказал(а) спасибо: 2,297
Поблагодарили 2,510 раз(а) в 1,635 сообщениях
Репутация: 92
По умолчанию Re: Тестирование неофициальных патчей

Алгоритмически действительно отличий нет:
Код:
if (us == WHITE)
{
contempt = Options["Contempt for white"] * PawnValueEg / 100;
}
else
{
contempt = Options["Contempt for black"] * PawnValueEg / 100; // From centipawns
Код:
int x = Options["Contempt for White"] * PawnValueEg / 100; // From centipawns
int y = Options["Contempt for Black"] * PawnValueEg / 100; // From centipawns
int contempt = (us == WHITE ? x : y);
Но данный компактный вариант, все-таки, выполняется немного дольше.
sovaz1997 вне форума   Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
Alexandr_L (22.03.2018), Maratka (29.01.2018)
Старый 29.01.2018, 22:57   #15
Maratka
Эксперт
 
Аватар для Maratka
 
Регистрация: 11.04.2017
Адрес: РФ, Крым, Севастополь.
Сообщений: 11,849
Сказал(а) спасибо: 3,311
Поблагодарили 5,952 раз(а) в 4,245 сообщениях
Репутация: 253
По умолчанию Re: Тестирование неофициальных патчей

Цитата: Сообщение от sovaz1997
Но данный компактный вариант, все-таки, выполняется немного дольше.
А "немного дольше" - это теоретически, или Вы посмотрели на что получилось в ASM?
Maratka вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Alexandr_L (22.03.2018)
Старый 29.01.2018, 22:58   #16
ChessMan
Super Moderator
ТС
 
Аватар для ChessMan
 
Регистрация: 04.01.2017
Сообщений: 3,629
Сказал(а) спасибо: 2,879
Поблагодарили 6,463 раз(а) в 2,331 сообщениях
Репутация: 354
По умолчанию Re: Тестирование неофициальных патчей

Цитата: Сообщение от Maratka
Ну там спросите у него, чего гадать? ;)
Или вон сейчас местные гуру подтянутся, да скажут, равноценен ли код с точки зрения алгоритма?

Мои знания С++ говорят, что равнозначен (ибо несложно вынести в консоль отладочное сообщение, и прокрутить бенч).

Например, мой первый вараинт кода (с отладкой) выглядел где-то вот так:

Код:
bool use_game_mode = (Options["Use game mode"]);
  if (use_game_mode == true)

  {
	  if (us == WHITE)
	  {
		  //printf("\n");
		  //printf("My side is white\n");
		  
		  contempt = (Options["Contempt"] + 5) * PawnValueEg / 100; // From centipawns		  
		  /*char str[20];
		  sprintf(str, "%d", contempt);
		  printf("Computed contempt: ");
		  printf(str);
		  printf("\n");	*/	 
	  }
	  else
	  {
		  //printf("\n");
		  //printf("My side is black\n");
		  
		  contempt = (Options["Contempt"] - 25) * PawnValueEg / 100; // From centipawns
		  /*char str[20];
		  sprintf(str, "%d", contempt);
		  printf("Computed contempt: ");
		  printf(str);
		  printf("\n");		*/  
	  }
  }
Соответственно, уберите ремарки, да сравните значение "Computed contempt" (т.е. то, что сейчас считается как ".... = Options["Contempt for White/Black"] * PawnValueEg / 100;"
Мне вот интересно, почему тогда в тесте против мастера "мой" вариант проигрывает, а его идет вровень? С презрением по умолчанию.
ChessMan вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Alexandr_L (22.03.2018)
Старый 29.01.2018, 22:59   #17
ChessMan
Super Moderator
ТС
 
Аватар для ChessMan
 
Регистрация: 04.01.2017
Сообщений: 3,629
Сказал(а) спасибо: 2,879
Поблагодарили 6,463 раз(а) в 2,331 сообщениях
Репутация: 354
По умолчанию Re: Тестирование неофициальных патчей

Score of Stockfish_x64_280118_popcnt_730mingw vs Stockfish_x64_290118_SC_pop_730mingw: 76 - 48 - 217 [0.541]
ELO difference: 28.59 +/- 22.18

348 of 2000 games finished. 10+0.1 20/20

Score of Stockfish_x64_290118_SC_pop_730mingw vs Stockfish_x64_280118_popcnt_730mingw: 52 - 62 - 164 [0.482]
ELO difference: -12.50 +/- 26.16

285 of 2000 games finished. 10+0.1 20/20


Score of Stockfish_x64_290118_SC_1_pop_730mingw vs Stockfish_x64_280118_popcnt_730mingw: 48 - 62 - 145 [0.473]
ELO difference: -19.09 +/- 28.02

262 of 2000 games finished. 20/20
ChessMan вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Alexandr_L (22.03.2018)
Старый 29.01.2018, 23:00   #18
ChessMan
Super Moderator
ТС
 
Аватар для ChessMan
 
Регистрация: 04.01.2017
Сообщений: 3,629
Сказал(а) спасибо: 2,879
Поблагодарили 6,463 раз(а) в 2,331 сообщениях
Репутация: 354
По умолчанию Re: Тестирование неофициальных патчей

Похоже use_game_mode не бесполезно
ChessMan вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Alexandr_L (22.03.2018)
Старый 29.01.2018, 23:01   #19
Maratka
Эксперт
 
Аватар для Maratka
 
Регистрация: 11.04.2017
Адрес: РФ, Крым, Севастополь.
Сообщений: 11,849
Сказал(а) спасибо: 3,311
Поблагодарили 5,952 раз(а) в 4,245 сообщениях
Репутация: 253
По умолчанию Re: Тестирование неофициальных патчей

______
Короче, предлагаю не толочь воду в ступе.

Есть другой патч. Сам написать не могу, но идею даю:
Вознаграждения не требую, и даже на авторство идеи упирать не буду.
Просто хочу, чтобы кто-то написал заготовку для "быстренько протестить", которую можно будет отдать впоследствии на Github.

Кто-нить возьмется? Или тоже отложим на год в нижний ящик стола, покуда я сам не разберусь, как это делать? ;)
Maratka вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Alexandr_L (22.03.2018)
Старый 29.01.2018, 23:03   #20
sovaz1997
Гроссмейстер
 
Аватар для sovaz1997
 
Регистрация: 27.09.2017
Адрес: Москва
Сообщений: 4,142
Сказал(а) спасибо: 2,297
Поблагодарили 2,510 раз(а) в 1,635 сообщениях
Репутация: 92
По умолчанию Re: Тестирование неофициальных патчей

Цитата: Сообщение от Maratka
А "немного дольше" - это теоретически, или Вы посмотрели на что получилось в ASM?
Это теоретически (если только компилятор сам не додумался не создавать переменные, а сразу сравнивать)
sovaz1997 вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Alexandr_L (22.03.2018)
Старый 29.01.2018, 23:04   #21
Maratka
Эксперт
 
Аватар для Maratka
 
Регистрация: 11.04.2017
Адрес: РФ, Крым, Севастополь.
Сообщений: 11,849
Сказал(а) спасибо: 3,311
Поблагодарили 5,952 раз(а) в 4,245 сообщениях
Репутация: 253
По умолчанию Re: Тестирование неофициальных патчей

Цитата: Сообщение от ChessMan
Похоже use_game_mode не бесполезно
В данной реализации - бесполезно.

Я ввел этот переключатель всего лишь для того, чтобы быстро обнулять Contempt при запуске движка для анализа.
Соответственно, в случае если переключатель установлен в "True" - то поведение движка ничем не отличается.
Maratka вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Alexandr_L (22.03.2018)
Старый 29.01.2018, 23:05   #22
Maratka
Эксперт
 
Аватар для Maratka
 
Регистрация: 11.04.2017
Адрес: РФ, Крым, Севастополь.
Сообщений: 11,849
Сказал(а) спасибо: 3,311
Поблагодарили 5,952 раз(а) в 4,245 сообщениях
Репутация: 253
По умолчанию Re: Тестирование неофициальных патчей

Цитата: Сообщение от Maratka
______
Короче, предлагаю не толочь воду в ступе.
Есть другой патч. Сам написать не могу, но идею даю:
Вознаграждения не требую, и даже на авторство идеи упирать не буду.
Просто хочу, чтобы кто-то написал заготовку для "быстренько протестить", которую можно будет отдать впоследствии на Github.
Кто-нить возьмется? Или тоже отложим на год в нижний ящик стола, покуда я сам не разберусь, как это делать? ;)
Итак:

http://forchess.ru/showpost.php?p=59868&postcount=513
Maratka вне форума   Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
Alexandr_L (22.03.2018), sovaz1997 (29.01.2018)
Старый 29.01.2018, 23:05   #23
sovaz1997
Гроссмейстер
 
Аватар для sovaz1997
 
Регистрация: 27.09.2017
Адрес: Москва
Сообщений: 4,142
Сказал(а) спасибо: 2,297
Поблагодарили 2,510 раз(а) в 1,635 сообщениях
Репутация: 92
По умолчанию Re: Тестирование неофициальных патчей

Цитата: Сообщение от Maratka
______
Короче, предлагаю не толочь воду в ступе.

Есть другой патч. Сам написать не могу, но идею даю:

http://forchess.ru/showpost.php?p=59868&postcount=513

Вознаграждения не требую, и даже на авторство идеи упирать не буду.
Просто хочу, чтобы кто-то написал заготовку для "быстренько протестить", которую можно будет отдать впоследствии на Github.

Кто-нить возьмется? Или тоже отложим на год в нижний ящик стола, покуда я сам не разберусь, как это делать? ;)
Можете написать идею, попробуем
sovaz1997 вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Alexandr_L (22.03.2018)
Старый 29.01.2018, 23:11   #24
Maratka
Эксперт
 
Аватар для Maratka
 
Регистрация: 11.04.2017
Адрес: РФ, Крым, Севастополь.
Сообщений: 11,849
Сказал(а) спасибо: 3,311
Поблагодарили 5,952 раз(а) в 4,245 сообщениях
Репутация: 253
По умолчанию Re: Тестирование неофициальных патчей

Цитата: Сообщение от sovaz1997
Можете написать идею, попробуем
Так по ссылке все написано. Если непонятно - ну объясню подробнее..
Maratka вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Alexandr_L (22.03.2018)
Старый 29.01.2018, 23:26   #25
sovaz1997
Гроссмейстер
 
Аватар для sovaz1997
 
Регистрация: 27.09.2017
Адрес: Москва
Сообщений: 4,142
Сказал(а) спасибо: 2,297
Поблагодарили 2,510 раз(а) в 1,635 сообщениях
Репутация: 92
По умолчанию Re: Тестирование неофициальных патчей

Что-то пока не могу найти в коде подсчет материала
sovaz1997 вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Alexandr_L (22.03.2018)
Старый 29.01.2018, 23:36   #26
Maratka
Эксперт
 
Аватар для Maratka
 
Регистрация: 11.04.2017
Адрес: РФ, Крым, Севастополь.
Сообщений: 11,849
Сказал(а) спасибо: 3,311
Поблагодарили 5,952 раз(а) в 4,245 сообщениях
Репутация: 253
По умолчанию Re: Тестирование неофициальных патчей

Ну... подождем... ;)
Maratka вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Alexandr_L (22.03.2018)
Старый 29.01.2018, 23:52   #27
sovaz1997
Гроссмейстер
 
Аватар для sovaz1997
 
Регистрация: 27.09.2017
Адрес: Москва
Сообщений: 4,142
Сказал(а) спасибо: 2,297
Поблагодарили 2,510 раз(а) в 1,635 сообщениях
Репутация: 92
По умолчанию Re: Тестирование неофициальных патчей

Предлагаю добавить такую штуку в функцию int imbalance(int) в material.cpp

Код:
if(pieceCount[Us][QUEEN] - pieceCount[Them][QUEEN] == 1 && (pieceCount[Them][KNIGHT] + pieceCount[Them][BISHOP] - pieceCount[Us][KNIGHT] - pieceCount[Us][BISHOP]) == 3) {
  bonus -= 50;
}
Делает примерно то же самое (можно уточнить бонус по вашим измененным весам). Но это временное решение, чисто для теста.
sovaz1997 вне форума   Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
Alexandr_L (22.03.2018), Maratka (30.01.2018)
Старый 30.01.2018, 00:55   #28
Maratka
Эксперт
 
Аватар для Maratka
 
Регистрация: 11.04.2017
Адрес: РФ, Крым, Севастополь.
Сообщений: 11,849
Сказал(а) спасибо: 3,311
Поблагодарили 5,952 раз(а) в 4,245 сообщениях
Репутация: 253
По умолчанию Re: Тестирование неофициальных патчей

Получилось что-то вроде:

Код:
 const Color Them = (Us == WHITE ? BLACK : WHITE);
    int bonus = 0;

	if (pieceCount[Us][QUEEN] - pieceCount[Them][QUEEN] == 1 && (pieceCount[Them][KNIGHT] + pieceCount[Them][BISHOP] - pieceCount[Us][KNIGHT] - pieceCount[Us][BISHOP]) == 3)
	{
		Value(KnightValueMg) = Value(779);
		Value(KnightValueEg) = Value(863);
		Value(BishopValueMg) = Value(841);
		Value(BishopValueEg) = Value(906);
		Value(QueenValueMg) = Value(2506);
		Value(QueenValueEg) = Value(2626);
	}

	

    // Second-degree polynomial material imbalance, by Tord Romstad
    for (int pt1 = NO_PIECE_TYPE; pt1 <= QUEEN; ++pt1)
Запустил матч оригинального SF, патченного и Komodo. Но ждать долго, т.к. Komodo на коротких контролях вообще никакой... Потому врубил 15 минут на партию.
Maratka вне форума   Ответить с цитированием
3 пользователя(ей) сказали cпасибо:
Alexandr_L (22.03.2018), ChessMan (30.01.2018), sovaz1997 (30.01.2018)
Старый 30.01.2018, 13:09   #29
Maratka
Эксперт
 
Аватар для Maratka
 
Регистрация: 11.04.2017
Адрес: РФ, Крым, Севастополь.
Сообщений: 11,849
Сказал(а) спасибо: 3,311
Поблагодарили 5,952 раз(а) в 4,245 сообщениях
Репутация: 253
По умолчанию Re: Тестирование неофициальных патчей

Все нормально, патч работает!
Счета пока что не скажу (матч который начал вчера пришлось прервать), но уже видно, как идет расчет:




На графике (зеленый) два SF: Мастер и Мастер с патчем.
Движок с патчем оценивает позицию как позицию с гораздо мЕньшим преимуществом белых (навскидку, -30%). IMHO, этого хватит, чтобы в большинстве случаев не проигрывать. Хорошо бы конечно еще учесть, что слоны могут быть разнопольными, но почти уверен, что на это уже есть другая эвристика, которая в этом случае скажет, что ферзь весит все же заметно побОлее. ;)

_________
Вопрос, есть ли смысл еще чуть изменить веса, чтобы патченный движок увидел свое преимущество (Komodo считает, что он выигрывает), и он действительно выигрывает эту партию против SF-Master, или достаточно выйти на стабильную ничью против него?
IMHO, риска немного, т.е. веса фигур будут меняться только если у нас действительно есть большой перекос в материала (три легкие фигуры против ферзя), т.е. образно говоря, ферзя можно хоть в нуль оценить - на 99,99% партий это будет незаметно.
Maratka вне форума   Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
Alexandr_L (22.03.2018), ChessMan (30.01.2018)
Старый 30.01.2018, 13:43   #30
otodranik
Гроссмейстер
 
Аватар для otodranik
 
Регистрация: 25.01.2017
Сообщений: 2,114
Сказал(а) спасибо: 1,261
Поблагодарили 3,271 раз(а) в 1,504 сообщениях
Репутация: 138
По умолчанию Re: Тестирование неофициальных патчей

Цитата: Сообщение от Maratka
Все нормально, патч работает!
Счета пока что не скажу (матч который начал вчера пришлось прервать), но уже видно, как идет расчет:




На графике (зеленый) два SF: Мастер и Мастер с патчем.
Движок с патчем оценивает позицию как позицию с гораздо мЕньшим преимуществом белых (навскидку, -30%). IMHO, этого хватит, чтобы в большинстве случаев не проигрывать. Хорошо бы конечно еще учесть, что слоны могут быть разнопольными, но почти уверен, что на это уже есть другая эвристика, которая в этом случае скажет, что ферзь весит все же заметно побОлее. ;)

_________
Вопрос, есть ли смысл еще чуть изменить веса, чтобы патченный движок увидел свое преимущество (Komodo считает, что он выигрывает), и он действительно выигрывает эту партию против SF-Master, или достаточно выйти на стабильную ничью против него?
IMHO, риска немного, т.е. веса фигур будут меняться только если у нас действительно есть большой перекос в материала (три легкие фигуры против ферзя), т.е. образно говоря, ферзя можно хоть в нуль оценить - на 99,99% партий это будет незаметно.
Пришли мне для теста готовые экзешники.
__________________
AMD Ryzen 7 5700G@3.8GHz
AMD Ryzen 5 2600@3.4GHz
otodranik вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Alexandr_L (22.03.2018)
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 09:45. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
Рейтинг@Mail.ru