Шахматное программирование Chess Programming. Вы уже написали свою шахматную программу? Или только-только приступили к её разработке? Добро пожаловать в данный раздел! Делимся советами, помогаем новичкам в шахматном программировании

Ответ
Опции темы
Непрочитано 31.05.2010, 18:44   #1
WildCat
 
Аватар для WildCat
 
Регистрация: 15.03.2010
Сообщений: 1,712
Сказал(а) спасибо: 3,475
Поблагодарили 5,816 раз(а) в 1,744 сообщениях
Страна:

Награды пользователя:

По умолчанию Мурка / Murka

Решился на написание нового движка, т.к. исходники старого совсем уж страшные.

Пока сделал генератор на вращающихся битбордах и perft для его проверки. Скорость получилась примерно сопоставимой с той, что была в старом движке.

Уже можно скачать исходники и исполнимые файлы: Мурка 1.0. Нужно иметь в виду, что это не движок, а только лишь вычислитель perft для заранее заданных позиций.
Надеюсь наши народные умельцы будут помогать чем смогут.

В глобальных планах хотелось бы выйти где-то на уровень Стрелки, а дальше будет видно.
В ближайших же планах сделать простейшую поддержку UCI/Xboard, простую ОФ (материал, ценность полей), альфа-бету (сортировка: взятия-киллеры-остальные), ФВ с взятиями. Пока вроде все...



Murka 2
Murka 3

Последний раз редактировалось WildCat; 13.07.2013 в 09:21.
WildCat вне форума   Ответить с цитированием
53 пользователя(ей) сказали cпасибо:
Непрочитано 31.05.2010, 18:45   #2
Кевин
 
Аватар для Кевин
 
Регистрация: 14.03.2010
Адрес: Сахалин
Сообщений: 32,422
Сказал(а) спасибо: 45,654
Поблагодарили 91,352 раз(а) в 22,239 сообщениях
Страна:

Награды пользователя:
Действующий чемпион форума 1000 reputation 5000 posts 2 место 1 место 
Всего наград: 6

По умолчанию Re: Мурка

WildCat, удачи! Желаю, чтобы получился отличный движок
Кевин вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Bordgia (13.02.2012)
Непрочитано 31.05.2010, 18:59   #3
Telepat
 
Аватар для Telepat
 
Регистрация: 14.03.2010
Сообщений: 3,288
Сказал(а) спасибо: 3,524
Поблагодарили 7,160 раз(а) в 2,088 сообщениях
Страна:
По умолчанию Re: Мурка

WildCat, а какова цель написания движка?
Telepat вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Bordgia (13.02.2012)
Непрочитано 31.05.2010, 19:04   #4
Noobster
Заблокирован
 
Регистрация: 29.03.2010
Возраст: 29
Сообщений: 1,522
Сказал(а) спасибо: 470
Поблагодарили 1,305 раз(а) в 832 сообщениях
Страна:
По умолчанию Re: Мурка / Murka

Wildcat, если бы ты дописал кусок кода, который бы отвечал за ошибки при лимитировании эло, был бы просто отличный движок для начнающих :3
Noobster вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Bordgia (13.02.2012)
Непрочитано 31.05.2010, 19:09   #5
ThinkingALot
 
Регистрация: 15.03.2010
Сообщений: 1,874
Сказал(а) спасибо: 2,230
Поблагодарили 4,925 раз(а) в 1,366 сообщениях

Награды пользователя:

По умолчанию Re: Мурка / Murka

Движок и дальше будет opensource?
ThinkingALot вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Bordgia (13.02.2012)
Непрочитано 31.05.2010, 19:16   #6
Guardian
 
Аватар для Guardian
 
Регистрация: 11.03.2010
Адрес: Russia
Сообщений: 603
Сказал(а) спасибо: 645
Поблагодарили 1,044 раз(а) в 401 сообщениях
Страна:
По умолчанию Re: Мурка / Murka

WildCat - желаем, чтоба ваша Мурка ела Рыбку, а не наоборот
Guardian вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Bordgia (13.02.2012)
Непрочитано 31.05.2010, 19:16   #7
RVS
 
Аватар для RVS
 
Регистрация: 15.03.2010
Сообщений: 55
Сказал(а) спасибо: 82
Поблагодарили 97 раз(а) в 36 сообщениях
По умолчанию Re: Мурка / Murka

Цитата:
Сообщение от WildCat Посмотреть сообщение
Решился на написание нового движка, т.к. исходники старого совсем уж страшные.
Название движка зачотное. У меня кошку так зовут. Если появится движок с таким именем - придется кошку учить играть!
RVS вне форума   Ответить с цитированием
3 пользователя(ей) сказали cпасибо:
Bordgia (13.02.2012), Regulus (12.11.2011), Tsogo (04.11.2011)
Непрочитано 31.05.2010, 19:23   #8
WildCat
 
Аватар для WildCat
 
Регистрация: 15.03.2010
Сообщений: 1,712
Сказал(а) спасибо: 3,475
Поблагодарили 5,816 раз(а) в 1,744 сообщениях
Страна:

Награды пользователя:

По умолчанию Re: Мурка / Murka

Цитата:
Сообщение от Telepat Посмотреть сообщение
а какова цель написания движка?
Для собственного удовольствия.

Цитата:
Сообщение от Noobster Посмотреть сообщение
который бы отвечал за ошибки при лимитировании эло
Первая версия будет и без лимитирования ну очень слабой. И тактически и стратегически будет часто ошибаться. Зачем еще что-то лимитировать?

Цитата:
Сообщение от ThinkingALot Посмотреть сообщение
Движок и дальше будет opensource?
Скорее всего.

Последний раз редактировалось WildCat; 31.05.2010 в 19:32.
WildCat вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Bordgia (13.02.2012)
Непрочитано 31.05.2010, 19:24   #9
Telepat
 
Аватар для Telepat
 
Регистрация: 14.03.2010
Сообщений: 3,288
Сказал(а) спасибо: 3,524
Поблагодарили 7,160 раз(а) в 2,088 сообщениях
Страна:
По умолчанию Re: Мурка / Murka

WildCat, в движке будут использованы самые современные и прогрессивные приемы и техники шахматного программирования? те же самые, что и в вяленом, рыбке и айвенго?
Telepat вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Bordgia (13.02.2012)
Непрочитано 31.05.2010, 19:36   #10
WildCat
 
Аватар для WildCat
 
Регистрация: 15.03.2010
Сообщений: 1,712
Сказал(а) спасибо: 3,475
Поблагодарили 5,816 раз(а) в 1,744 сообщениях
Страна:

Награды пользователя:

По умолчанию Re: Мурка / Murka

Будет использовано все, что сможет увеличить силушку богатырскую.
Только на уровень элитных движков я все равно особо не расчитываю - не так это просто, как некоторым кажется.
WildCat вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Bordgia (13.02.2012)
Непрочитано 31.05.2010, 19:49   #11
Noobster
Заблокирован
 
Регистрация: 29.03.2010
Возраст: 29
Сообщений: 1,522
Сказал(а) спасибо: 470
Поблагодарили 1,305 раз(а) в 832 сообщениях
Страна:
По умолчанию Re: Мурка / Murka

Старайся, Дикокот :о)
Noobster вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Bordgia (13.02.2012)
Непрочитано 31.05.2010, 19:53   #12
immortal223
Kashchey the Deathless
 
Аватар для immortal223
 
Регистрация: 10.03.2010
Сообщений: 8,323
Сказал(а) спасибо: 11,806
Поблагодарили 39,691 раз(а) в 7,223 сообщениях
Страна:

Награды пользователя:
5000 posts Золотая медаль Орден почета Золотая медаль Звезда верности 
Всего наград: 5

По умолчанию Re: Мурка / Murka

Цитата:
Сообщение от RVS Посмотреть сообщение
Название движка зачотное. У меня кошку так зовут.
Как оригинально ты кошку назвал, однако!
__________________
immortal223 вне форума   Ответить с цитированием
3 пользователя(ей) сказали cпасибо:
Bordgia (13.02.2012), Castiel (22.11.2011), Wdochwydoch (31.05.2010)
Непрочитано 31.05.2010, 20:20   #13
WinPooh
 
Регистрация: 14.03.2010
Сообщений: 175
Сказал(а) спасибо: 5
Поблагодарили 202 раз(а) в 85 сообщениях
По умолчанию Re: Мурка / Murka

Цитата:
Сообщение от WildCat Посмотреть сообщение
Пока сделал генератор на вращающихся битбордах
А почему не на магических? Они же проще и быстрее.
WinPooh вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Bordgia (13.02.2012)
Непрочитано 31.05.2010, 20:56   #14
ChessTerminator
 
Регистрация: 20.03.2010
Сообщений: 175
Сказал(а) спасибо: 427
Поблагодарили 261 раз(а) в 125 сообщениях
Страна:
По умолчанию Re: Мурка / Murka

Кот (или код?) с комментариями на русском!
Это очень хорошо!

Хотелось бы, что бы так было и дальше.

Последний раз редактировалось ChessTerminator; 31.05.2010 в 20:58.
ChessTerminator вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Bordgia (13.02.2012)
Непрочитано 31.05.2010, 21:03   #15
WildCat
 
Аватар для WildCat
 
Регистрация: 15.03.2010
Сообщений: 1,712
Сказал(а) спасибо: 3,475
Поблагодарили 5,816 раз(а) в 1,744 сообщениях
Страна:

Награды пользователя:

По умолчанию Re: Мурка / Murka

Цитата:
Сообщение от WinPooh Посмотреть сообщение
А почему не на магических? Они же проще и быстрее.
Я пока даже не читал про магические. Если кто популярно объяснит теорию, могу попробовать сделать.

Цитата:
Сообщение от ChessTerminator Посмотреть сообщение
Хотелось бы, что бы так было и дальше.
OK.
WildCat вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Bordgia (13.02.2012)
Непрочитано 31.05.2010, 21:05   #16
WinPooh
 
Регистрация: 14.03.2010
Сообщений: 175
Сказал(а) спасибо: 5
Поблагодарили 202 раз(а) в 85 сообщениях
По умолчанию Re: Мурка / Murka

Цитата:
Сообщение от WildCat Посмотреть сообщение
Я пока даже не читал про магические. Если кто популярно объяснит теорию, могу попробовать сделать.
Там всё просто.
http://winpooh-berloga.blogspot.com/...g-post_31.html
ну или исходники Греко

Последний раз редактировалось WinPooh; 31.05.2010 в 21:08.
WinPooh вне форума   Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
Bordgia (13.02.2012), WildCat (31.05.2010)
Непрочитано 31.05.2010, 22:32   #17
jury_osipov
 
Регистрация: 10.05.2010
Возраст: 56
Сообщений: 235
Сказал(а) спасибо: 6
Поблагодарили 1,487 раз(а) в 241 сообщениях
Страна:

Награды пользователя:

По умолчанию Re: Мурка / Murka

Если уж всё в самом начале, то можно еще попробовать добавить к отображению позиции списки фигур (в дополнение к битбордам):

int piece_list[12][16];
Первый индекс - тип фигуры, второй номер фигуры в списке.
В списке храним координаты фигур, в конце списка - число -1.

В make/unmake несколько лишних операций, зато в генераторах ходов и оценке циклы по фигурам получаются эффективнее.
Вместо например:

Bitboard b;
for (b = WhiteKnight; b != 0; b & = b -1) {
square = BSF(b);

имеем:

int *p;
for (p = piece_list[WhiteKnight]; (square = *p) != -1; p++) {

В Гудини это дело добавляет что-то к скорости.
jury_osipov вне форума   Ответить с цитированием
5 пользователя(ей) сказали cпасибо:
Bordgia (13.02.2012), Telepat (31.05.2010), WildCat (31.05.2010), Кевин (01.06.2010), Тянь-Викунтяу (06.01.2013)
Непрочитано 31.05.2010, 22:37   #18
WildCat
 
Аватар для WildCat
 
Регистрация: 15.03.2010
Сообщений: 1,712
Сказал(а) спасибо: 3,475
Поблагодарили 5,816 раз(а) в 1,744 сообщениях
Страна:

Награды пользователя:

По умолчанию Re: Мурка / Murka

Цитата:
Сообщение от jury_osipov Посмотреть сообщение
Если уж всё в самом начале, то можно еще попробовать добавить к отображению позиции списки фигур
Попробую.

Цитата:
Сообщение от jury_osipov Посмотреть сообщение
В Гудини это дело добавляет что-то к скорости.
Уже и исходники Гудини пошли по рукам?
WildCat вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Bordgia (13.02.2012)
Непрочитано 01.06.2010, 09:58   #19
WildCat
 
Аватар для WildCat
 
Регистрация: 15.03.2010
Сообщений: 1,712
Сказал(а) спасибо: 3,475
Поблагодарили 5,816 раз(а) в 1,744 сообщениях
Страна:

Награды пользователя:

По умолчанию Re: Мурка / Murka

Цитата:
Сообщение от jury_osipov Посмотреть сообщение
В make/unmake несколько лишних операций
Этак ведь придется постоянно в цикле находить нужный индекс, чтобы обновить этот список. Что-то мне не кажется, что это будет очень быстро.
WildCat вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Bordgia (13.02.2012)
Непрочитано 01.06.2010, 10:53   #20
ThinkingALot
 
Регистрация: 15.03.2010
Сообщений: 1,874
Сказал(а) спасибо: 2,230
Поблагодарили 4,925 раз(а) в 1,366 сообщениях

Награды пользователя:

По умолчанию Re: Мурка / Murka

Цитата:
Сообщение от jury_osipov Посмотреть сообщение
Если уж всё в самом начале, то можно еще попробовать добавить к отображению позиции списки фигур (в дополнение к битбордам):
int piece_list[12][16];
Первый индекс - тип фигуры, второй номер фигуры в списке.
В списке храним координаты фигур, в конце списка - число -1.
В make/unmake несколько лишних операций, зато в генераторах ходов и оценке циклы по фигурам получаются эффективнее.
Есть какой-нибудь opensource пример быстрого обновления такого списка?
Цитата:
Сообщение от jury_osipov Посмотреть сообщение
Вместо например:
Bitboard b;
for (b = WhiteKnight; b != 0; b & = b -1) {
square = BSF(b);
имеем:
int *p;
for (p = piece_list[WhiteKnight]; (square = *p) != -1; p++) {
В Гудини это дело добавляет что-то к скорости.
Э... за счет чего? И в оценке и в генераторах для разных типов фигур разный код. Как их можно обрабатывать в одном цикле? При этом такой же цикл можно организовать с помощью, например,
for (b = White ^ WhitePawn ^ WhiteKing; b != 0; b &= b -1) { *** }.

Последний раз редактировалось ThinkingALot; 01.06.2010 в 10:56.
ThinkingALot вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Bordgia (13.02.2012)
Ответ

Социальные закладки


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

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

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

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