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

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

  1. TopicStarter Overlay

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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

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

    На свободно распространяемом Лазарусе.

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