Самообучающаяся шахматная программа

Тема в разделе "Машинное отделение", создана пользователем Вадим63, 3 апр 2018.

  1. TopicStarter Overlay

    Вадим63 Начинающий

    • Начинающий
    Рег.:
    03.04.2018
    Сообщения:
    6
    Симпатии:
    0
    Репутация:
    1
    Оффлайн
    Здравствуйте! Я написал самообучающуюся шахматную программу.
    https://yadi.sk/d/LRwMEwUm3UQod6
    Это ссылка для скачивания программы.
    Последние данные очков репутации:
    НеважноКто: 1 (за усилия в программировании :)) 16 май 2018
  2. TopicStarter Overlay

    Вадим63 Начинающий

    • Начинающий
    Рег.:
    03.04.2018
    Сообщения:
    6
    Симпатии:
    0
    Репутация:
    1
    Оффлайн
    Сразу скажу, что я не профессиональный разработчик компьютерных игр, и поэтому интерфейс программы (например, выйти из программы иногда возможно только через диспетчер задач) и её графика оставляют желать лучшего. Тем не менее, она работает и самообучается.

    Вкратце алгоритм выбора хода:
    1) Перебираем все допустимые правилами игры ходы.
    2) Рассматриваем все получившиеся при этом позиции (с ходом противоположной стороны).
    3) Для этого проверяем, встречалась ли уже эта (именно эта, а не похожая, как две капли воды) позиция в предыдущих партиях.
    3А) Если встречалась, то считываем оценку этой позиции из файла на жестком диске.
    3Б) Если такой позиции ни разу ещё не было, то запускаем оценочную функцию, не позволяющую программе "зевать" фигуры в простых случаях.
    4) После окончания партии корректируем оценки всех позиций, которые встретились в этой партии.

    То есть обучение сводится к ЗАПОМИНАНИЮ встретившихся позиций.

    При этом если одна позиция хоть чуть-чуть отличается от другой, то с точки зрения программы это уже РАЗНЫЕ позиции.
  3. Alexandr_L потомственный интеллигент

    • Участник
    Рег.:
    24.09.2009
    Сообщения:
    1.735
    Симпатии:
    142
    Репутация:
    -2
    Оффлайн
    что за программа?
    --- добавлено: 3 апр 2018 ---
    скрины и описание в студию
  4. TopicStarter Overlay

    Вадим63 Начинающий

    • Начинающий
    Рег.:
    03.04.2018
    Сообщения:
    6
    Симпатии:
    0
    Репутация:
    1
    Оффлайн
    Ожидаемые вопросы и критические замечания:

    1) Насколько полезна Ваша программа для профессиональных шахматистов?

    Абсолютно бесполезна. Программа обучается так медленно, что дойдёт до уровня, который может заинтересовать шахматистов-спортсменов, очень не скоро. Замечу, что в любом коллективе суммарное число гроссмейстеров, мастеров, кандидатов в мастера, перворазрядников и второразрядников гораздо меньше, чем всех остальных любителей шахмат. Надеюсь, что поэтому желающих поиграть с такой программой будет предостаточно.


    2) Показывали ли Вы эту программу кому-нибудь из квалифицированных шахматистов?

    Да. Показал в ближайшем шахматном клубе. Там расставили этюд Рети. Программа нашла решение с восьмой попытки.

    3) Вам самому интересно с ней играть?

    Да. Интересно. Хотя моё мнение вряд ли должно учитываться. Поскольку мне интересно не только с ней играть, а ещё и наблюдать процесс самообучения.


    4) Написать подобную программу не слишком сложно. Наверняка это уже сделал какой-нибудь студент в качестве курсовой работы.

    Ну, может не любой студент, а отличник. И в качестве не курсовой работы, а дипломной. И почему тогда этот студент до сих пор не выложил на просторы Интернета свой шедевр? Ведь теперь молодые люди выкладывают в сеть все свои шаги и достижения.


    5) Любая фирма, занимающаяся изготовлением компьютерных игр (или шахматных программ), сделала бы это лучше.

    Охотно верю. Только вряд ли они этим занимались бы бесплатно.


    6) Почему Вы не использовали в качестве оценочной функции какой-нибудь сильный движок, например, Стокфиш-8?

    Да. Если бы это удалось, то программа была бы значительно лучше. Проблема в том, что я не знаю (не смог найти в сети эту информацию), как можно написанный кем-то движок всунуть в собственную программу. Если кто-то может это сделать, пришлите, пожалуйста, пример программы.


    7) Почему программа, не позволяет взять назад сделанный ход?

    Потому что по правилам шахмат ходы обратно не берут.


    8) Почему Вы используете для записи партии не международную нотацию?

    Программа написана не на продажу, а для собственного использования. Отечественную нотацию воспринимаю лучше.


    9) Насколько сильно играет Ваша программа?

    Вопрос не совсем корректный. Дело в том, что на ранних стадиях использования программы игра идёт с оценочной функцией, а не с результатами самообучения.


    10)Вы не используете в своей программе идеи, связанные с нейронной сетью.

    Да. Не использую. Точнее говоря, программа представляет из себя один большой нейрон. Но это действительно не сеть, где нейроны взаимодействуют друг с другом. Пожалуйста, расскажите мне (желательно не общими словами), как именно использовать нейронную сеть для шахматного программирования. Если смогу Вас понять, то с большим энтузиазмом займусь созданием новой программы.


    11)Умеет ли Ваша программа ставить мат слоном и конём, выигрывать окончание ферзь против ладьи и т.п.?

    Пока не умеет. И если сама научится, то очень не скоро. Дело в правиле, по которому партия признаётся ничьей, если за 50 ходов подряд не было ни одного хода пешкой и ни одного взятия. А 50 ходов слишком мало, чтобы программа нашла верную серию, ведущую к победе.

    12)На каком языке Вы написали эту программу?

    На свободно распространяемом Лазарусе.
  5. Genis2000 Начинающий

    • Начинающий
    Рег.:
    09.02.2017
    Сообщения:
    1
    Симпатии:
    0
    Репутация:
    0
    Оффлайн
    Вадим63, Приветствую, как успехи с программой?
  6. KEV81 Заблокирован

    • Участник
    • Заблокирован
    Рег.:
    06.03.2017
    Сообщения:
    418
    Симпатии:
    106
    Репутация:
    -3
    Нарушения:
    30
    Оффлайн
    Прогресс Лилы подкосил многие начинания...
  7. svoitsl Новичок

    • Новичок
    Рег.:
    05.01.2018
    Сообщения:
    87
    Симпатии:
    12
    Репутация:
    0
    Оффлайн
    Ну сейчас Лила немного застопорилась и другие начинания можно продолжать :)
  8. KEV81 Заблокирован

    • Участник
    • Заблокирован
    Рег.:
    06.03.2017
    Сообщения:
    418
    Симпатии:
    106
    Репутация:
    -3
    Нарушения:
    30
    Оффлайн
    Пока растет.
  9. TopicStarter Overlay

    Вадим63 Начинающий

    • Начинающий
    Рег.:
    03.04.2018
    Сообщения:
    6
    Симпатии:
    0
    Репутация:
    1
    Оффлайн
    Простите, я немного не понял вопрос. Программа написана. Можете скачать её по ссылке. Что именно Вы имеете в виду?
  10. Alex_Lk Новичок

    • Новичок
    Рег.:
    17.06.2011
    Сообщения:
    16
    Симпатии:
    3
    Репутация:
    0
    Оффлайн
    Вадим63, Приветствую

    Если все обстоит так как в первом сообщении то это по моему наивность, уж извините.

    Вы собираетесь помнить все позиции которые сыграли и на их основе корректировать оценочную функцию.
    Этакий ретро-анализ. Давайте прикинем во что это выльется реально. Пусть на каждом ходу у вас по 2 реальных варианта не по 10 и даже не по три а всего по два. К 10 ходу черных это 4 миллиона вариантов.(перестановки ходов сильно картину не изменят) ну доиграть до конца еще ходов по 20-25. Итого 4 млн партий по 50 позиций в каждой (практически все они будут разные. Большие сомнения что на каждую позицию вы тратите меньше 10 байт. Итого 4 млн X 50 X 10. = 2 гагаБайта.
    И это в реальности капля в море.Скорее всего выйдет так что сыграв даже 4 миллиарда партий (кстати а сколько на это уйдет времени ?) обучение будет слабеньким.

    Попробуйте наиграв какое-то число партий выставить свою "прогу" против программки с рейтингом 1700-2000 интересно будет посмотреть результаты.

    Извините не хотел обидеть но написать действительно эффективно обучающуюся программу очень нелегко
    Вот Лила которую написали очень грамотные люди имеющие опыт в этом деле и то отстают от лидеров Stockfish-а и компании более чем на 500 пунктов рейтинга это как 2 разряд и Гроссмейстер.
    sovaz1997 нравится это.
  11. НеважноКто Новичок

    • Новичок
    Рег.:
    30.01.2010
    Сообщения:
    35
    Симпатии:
    18
    Репутация:
    4
    Адрес:
    отсюда
    Оффлайн
    Блицанул с Вашей прогой партейку.
    Хотел проверить, как у неё с "чуйкой" позиции, поэтому просто расставился по-лентяйски, пугал очевидной тактикой и слегка подставлялся.
    Потом стало скучновато, вместо 33. Re7 отдал качество, чтоб было веселее.
    Но проиграть не помогло, ближе к эндшпилю начала "лажать", как все проги со слабой оценкой, на очевидном месте бросил, вот партия:



    Хотел Вас спросить - а почему не делать сразу по UCI, тогда и об интерфейсе думать не надо?
  12. TopicStarter Overlay

    Вадим63 Начинающий

    • Начинающий
    Рег.:
    03.04.2018
    Сообщения:
    6
    Симпатии:
    0
    Репутация:
    1
    Оффлайн
    Просто я не знаю, что такое UCL.
    Не имею информации, как он устроен, чтобы вставлять в свою программу.
  13. KEV81 Заблокирован

    • Участник
    • Заблокирован
    Рег.:
    06.03.2017
    Сообщения:
    418
    Симпатии:
    106
    Репутация:
    -3
    Нарушения:
    30
    Оффлайн
    Пока Роскомнадзор не заблокировал гугл, есть шанс найти в нем все ответы )
  14. TopicStarter Overlay

    Вадим63 Начинающий

    • Начинающий
    Рег.:
    03.04.2018
    Сообщения:
    6
    Симпатии:
    0
    Репутация:
    1
    Оффлайн
    Судя по всему Вы играли ПЕРВУЮ партию. То есть Вашим соперником была оценочная функция. Тогда этот эксперимент никакого отношения к самообучаемости программы не имеет.
    --- добавлено: 21 май 2018, опубликовано: 21 май 2018 ---
    Приветствую!

    А Вы меня нисколько не обидели.
    Я написал программу по "зову сердца", а не из желания защитить на этом докторскую диссертацию или получить какие-то материальные блага. И просто поделился своим результатом с человечеством. Понимаю, что для того, чтобы сделать из моей программы гроссмейстера придётся потратить огромное количество времени и мегабайт. Гроссмейстер СтокФиш-8.существует и без меня. А мне с моим дохлым первым разрядом интересна моя прога. Играя с ней по очереди за белых и за чёрных наблюдаю, как она повторяет мои ходы в дебюте (поскольку первые несколько партий я всё-таки выигрываю). Потом мои дебютные знания заканчиваются и мне становится очень тяжело бороться со своим электронным детищем.
  15. Alex64 Начинающий

    • Начинающий
    Рег.:
    03.06.2018
    Сообщения:
    2
    Симпатии:
    1
    Репутация:
    0
    Оффлайн
    Hi Vadim63! Your chess program is well debated in our forum these days. We recently did there some translation of it to English. I hope you accept my invitation to join us. I am not a Russian speaker, though you will find there many friends you can talk in your native language. My nickname there is "hamster64". I hope you guys do not treat this post as a spam or something else because I put a link to another forum. I do not make promotion to our chess forum (maybe you know it already). I just want to join the efforts to see what we can do to make your program better, since I think it is unique of its kind.

    Please register to our forum (immortalchess.net) and post a reply in this thread:

    http://immortalchess.net/forum/showthread.php?t=37282
  16. Alex64 Начинающий

    • Начинающий
    Рег.:
    03.06.2018
    Сообщения:
    2
    Симпатии:
    1
    Репутация:
    0
    Оффлайн
    Вадим63,
    Привет! Ваша шахматная программа хорошо обсуждается на нашем форуме в наши дни. Недавно мы сделали перевод на английский. Надеюсь, вы примете мое приглашение присоединиться к нам. Я не русский оратор, хотя вы найдете там много друзей, которых вы можете поговорить на своем родном языке. Мое прозвище есть «hamster64». Надеюсь, вы, ребята, не относитесь к этому сообщению как к спаму или чему-то еще, потому что я добавил ссылку на другой форум. Я не продвигаю наш шахматный форум (может быть, вы это уже знаете). Я просто хочу присоединиться к усилиям, чтобы увидеть, что мы можем сделать, чтобы сделать вашу программу лучше, поскольку я думаю, что она уникальна в своем роде.

    Пожалуйста, зарегистрируйтесь на нашем форуме (immortalchess.net) и опубликуйте ответ в этой теме:

    http://immortalchess.net/forum/showthread.php?t=37282
    sovaz1997 нравится это.
  17. hornet Новичок

    • Новичок
    Рег.:
    05.11.2016
    Сообщения:
    86
    Симпатии:
    13
    Репутация:
    1
    Оффлайн
    Вадим, а Вы можете каждый раз после обучения Вашей программы обновлять ссылку на скачивание?
  18. hornet Новичок

    • Новичок
    Рег.:
    05.11.2016
    Сообщения:
    86
    Симпатии:
    13
    Репутация:
    1
    Оффлайн
    И ещё хотелось бы, чтобы в программе можно было переворачивать доску.

Поделиться этой страницей