ТАВЛЕИ. О русских шашках. И не только... ПЛЮС - лучшие самообучающиеся программы для игры в шашки

Может быть, кого-то удивит выбор раздела, в котором мы публикуем этот материал (почеиу не "Компьюткрные шашки"?). Но это объясняется просто.

Во-первых, это уже действительно - ИСТОРИЯ. И, во-вторых, - безусловно, НАША! (прим. вебмастера).


Компьютерная программа по русским шашкам PLUS600:

Этапы большого пути  :)


История создания программы "Plus600" насчитывает уже более двух десятилетий. Началось все летом 1981 года, когда тогда еще весьма молодой Григорий Ветрогон, хорошо разбирающийся в шашках (кмс) и ощутимо слабее разбирающийся в программировании, поспорил со своим коллегой по учебе в МГУ Сергеем Старцевым (вашим покорным слугой). Арбитром выступал Сергей Педько.

Предмет спора был таков: необходимо было за две недели написать программу, которая правильно бы осуществляла хода и взятия по правилам русских шашек. Кто знает отличия взятий в русских шашках, тот поймет сложность проблемы в том далеком году. Напомню, до персоналок оставалось еще несколько лет, а программы тогда приходилось набивать на перфокартах. А если вспомнить первую ЭВМ для этой программы - легендарную БЭСМ-4М, то картина станет совсем ясной.

Поскольку мы только что окончили 5-й курс, впереди был только диплом и, следовательно (да простит меня мой научный руководитель), много свободного времени - как личного, так и машинного.

Следующие две недели были для меня и, с тех пор консультирующего меня Сергея Педько, достаточно напряженными. Хотел бы я посмотреть в глаза тому, кто придумал такие правила для взятий?! Этого человека оправдывает только одно - он вряд ли предполагал, что этот алгоритм нужно будет программировать.

Но, как бы там ни было, через две недели пари было выиграно - программа делала ходы по правилам русских шашек. Тут бы и остановиться, но любопытство оказалось сильнее. И мы легко перешли к решению следующей задачи - научить программу ИГРАТЬ (перешли-то легко, а вот решаем эту задачу до сих пор).

В том же 1981 году на БЭСМ-4М удалось получить программу, играющую в русские шашки. С высоты сегодняшних достижений параметры той программы смотрятся весьма скромными - глубина расчета 2-4 полухода, но главной цели мы достигли - программа ИГРАЛА! И, видимо, это была первая программа для русских шашек (поправьте, если я не прав - другой информации у меня нет).

В 1982 году программа была переписана для ЭВМ СМ-4. Тут уже стал возможен нормальный интерфейс взаимодействия с человеком, да и глубину расчета удалось увеличить. Этот год мы приняли как год рождения нашей программы. До 1985 года программа продолжала потихоньку совершенствоваться, а ее авторы - лучше разбираться в теории перебора. Однако, поскольку в 1982 году мы закончили астрономическое отделение физфака МГУ и разъехались кто куда - Григорий Ветрогон в Подмосковье, а Сергей Педько в Харьков, особо серьезных теоретических новинок разработать не удалось (напомню, что электронной почты тогда не было!).

В период с 1985 по 1989 год программа пережила еще один "редизайн" и прописалась на EC-1060. Считать программа стала намного дальше, но особого сопротивления человеку еще оказывать не могла.

С 1989 года программа живет на персоналках. Однако развитие ее, до 1998 года, шло "от случая к случаю" и особыми успехами в игре с людьми она похвастать не могла. Однако у любителей (себя я отношу именно к ним) программа стала стабильно выигрывать.

Среди реализованных идей того времени имеет смысл отметить только "античеловеческий" алгоритм и оценочную функцию. Программа при наличии почти равноценных ходов, выбирала не все время один и тот же ход, что не позволяло человеку нащупать слабинку программы и спокойно ею пользоваться. Что касается оценочной функции, то это - "сердце" нашей программы: можем только сказать, что ее основа осталось до сих пор той же самой.

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

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

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

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

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

В 2001-м году программа приняла участие в компьютерном чемпионате России. Итог - пятое место из шести. Однако, более важен другой итог - были определены направления развития программы. И что более важно, после этого чемпионата были восстановлены наши связи с Григорием Ветрогоном, в лице которого мы опять получили профессионального консультанта.

Были определены следующие задачи:

В 2002-м году программа приняла участие в очередном компьютерном чемпионате России. Выступление было уже гораздо более весомым - третье место из шести, но заставило признать, что первую задачу в полной мере реализовать не удалось. Однако выводы были сделаны правильные и к следующему чемпионату мы подошли во всеоружии. Итак, что же представляли собой "плюсы" "Plus600" на начало 2003 года:

Эти "плюсы" не смогли не сказаться на результате - теперь программа носит гордое звание чемпиона России среди компьютерных программ 2003 года. Не обошла нас своим вниманием и пресса, интересующихся отсылаем к 9-му номеру популярного журнала "GAME.EXE" за 2003 год.

Хотелось бы отметить основную цель, которую мы преследуем, создавая и развивая нашу программу. Это не достижение максимального результата при игре с другими программами или людьми, не максимальная глубина перебора или 100% эффективность использования процессора или оперативной памяти. Нет! Это - создание эффективного и удобного помощника для человека, играющего в шашки.

Для любителя - это просто соперник для приятного времяпрепровождения.

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

К настоящему моменту программа обзавелась еще радом важных преимуществ, это:

Теперь основное направление наших усилий на ближайшее время - это выверка и расширение дебютной базы. Тут очень много задумок и идей, надеемся, их реализация поможет избежать излишней "ничейно-ориентированности" программы.

Сергей СТАРЦЕВ,
автор программы PLUS600
г.Москва, ноябрь, 2003 г.




© 2001-2017 Gr.Vetrogon,   © 2001-2017 TАВЛЕИ,   WebmasterИграть в шашки