Ф О Р У М
01.05.2024
 
Приветствую Вас Гость | RSS Сделать стартовой | Добавить в избранное
Главная страница | Регистрация | Вход
Главная Результаты Шахматы-Блиц Снукер PRO Годовой тур Снукер - 2013 RUSSIAN OPEN 2013 Рождественский кубок 2013 Пул-8 Пул-8 Летний кубок
Форум Регламент Архив Шахматная литература Фотогалерея Разное КВИЗ
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Закачки » Статьи о компьютерных шахматах » Раритет. История моей шахматной программы
Раритет. История моей шахматной программы
alekhinDate: Суббота, 14.02.2009, 04:30:03 | Message # 1
Авторитет
Группа: Чемпион месяца
Сообщения: 1118
Признак жизни: Offline
Мне хочется рассказать вам про необычный шахматный турнир, с которого я только что вернулся. Необычность этого мероприятия заключалась в том, что на этот раз я играл не сам, а привез свою разработку – компьютерную программу, которую перед самым турниром назвал Cyberax, тем самым, соединив увлечение шахмат с моей работой программиста. Это было очень увлекательное зрелище, но прежде чем рассказать о нем, сначала маленькое предисловие.

Компьютерные шахматы как отдельная индустрия.

Понятие «компьютерные шахматы» является ровесником науки кибернетики и ее раздела «искусственный интеллект». Шахматы представляют собой идеальную модель для исследования сложных задач, особенно тех, где требуется перебор вариантов. Один из основателей кибернетики и теории информации — Клод Шеннон — еще в 50-х годах первым сформулировал правила выбора хода на шахматной доске. В анализируемой позиции на определенную глубину перебираются все возможные варианты, и итоговым позициям с помощью целевых функций присваивается численная оценка. Затем минимаксной процедурой осуществляется откат к исходной позиции, происходит ее оценка и указывается лучший, по мнению машины, ход.

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

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

Слабость игры компьютеров заключалась именно в злоупотреблении материалом и невозможности осуществить «абсолютный перебор» вариантов. В шахматных книгах 70–80-х годов можно встретить немалое количество образцово-показательных примеров игры людей с машинами, когда мастер или гроссмейстер выигрывал партию с помощью красивых жертв фигур и пешек. Секрет уже понятен: для человеческого интеллекта, в отличие от искусственного, было очевидным доминирование позиционных факторов над материальными именно в те моменты, когда осуществлялись жертвы материала.

Шли годы, с ростом быстродействия ЭВМ увеличивалась глубина расчета, и одновременно совершенствовались алгоритмы, улучшающие составление функций оценки позиций. И во второй половине 90-х годов компьютеры уже стали успешно соперничать с гроссмейстерами экстра-класса. Эпохальное для «шахматных кибернетиков» событие произошло в мае 1997 года. Созданный корпорацией IBM компьютер Deep Blue в матче из 6 партий победил самого Гарри Каспарова. Компьютер был оснащен специальным шахматным чипом, причем машина просматривала около 200 млн. позиций в секунду. Корпорация IBM для своего проекта привлекла многих гроссмейстеров, использовались последние достижения шахматной теории для создания как можно более совершенных алгоритмов. И вот, как уже отмечалось, в 90-е годы шахматные программы для настольных ПК стали теснить специализированные компьютеры.

С каждым месяцем сила шахматных программ и мощность компьютеров неумолимо увеличивается, опережая даже самые смелые предположения оптимистов. Еще лет 12–15 назад рассуждения на тему «Когда машина сможет обыгрывать гроссмейстера?» в основном сводились к вопросу «А способна ли она это сделать в принципе?». И если ответ «Сможет» все же удавалось получить, то время оценивалось в промежутке 15–25 лет. Действительность же опровергла и эти прогнозы. Все случилось гораздо быстрее! Уже в середине 90-х обнаружилось, что синтез «игровая программа + компьютер» способен состязаться с гроссмейстером.

Сейчас стало очевидным, что в противоборстве с безликой машиной человечество обречено, ведь электронный разум прямым перебором способен обыграть гения. Причем многие программы на персональном компьютере играют все сильнее и сильнее. А что будет еще через пять лет? Как-то прочитал интервью одного гроссмейстера, который на этот вопрос в запале ответил: «Мобильник в кармане будет играть сильнее, вот что! А серьезные машины нас вообще за людей считать не будут!». Мы сейчас переживаем тот переходный период, когда машина начинает регулярно обыгрывать представителей рода человеческого. Похоже, осталось совсем немного времени до того момента, как программы станут регулярно побеждать чемпионов мира homo sapiens.

Так, собственно, и закончилась «гонка» по совершенствованию шахматной силы компьютеров. Очевидно, что дальше машины будут играть все сильнее и сильнее. И не за горами, похоже, то время, когда их превосходство над человеком ни у кого не вызовет сомнений.

Любительские шахматные программы

Итак, с ростом производительности ЭВМ, компьютерные шахматы получили новый стимул развития. Если раньше сильно играть могла только специализированная ЭВМ, так как обычные процессоры не справлялись о огромными вычислительными объемами, то теперь хорошую программу можно создать на обычной персональной ЭВМ, что убедительно доказали разработчики нынешних чемпионов мира Deep Fritz, Chessmaster, Shredder. И других суперпрограмм. Ну а раз так, то теперь фактически каждый владелец персонального компьютера, знающий основы программирования, мог попробовать создать подобную программу.

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

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

История моей шахматной программы

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

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

Есть у меня один хороший знакомый, бывший мой земляк, который сейчас живет в Штатах. Однажды, мирно беседуя со мной по ICQ где-то после Нового года, он так, между прочим, сообщает мне, что фирма IBM летом устраивает турнир любительских шахматных программ с целью популяризации компьютерных шахмат. Мы с ним разговорились, и он рассказал некоторые подробности всего этого. Сама фирма IBM кроме выпуска персональных компьютеров, которые занимают 90% рынка, славится не только этим. В частности, нашумевших шахматный монстр Deep Blue, который свалил Каспарова, разработка компании IBM. И вот организаторам пришла в голову мысль провести такой турнир, чтобы дать шанс не только монстрам бизнеса компьютерных шахмат, но и простым программистам проявить себя в турнире, организацию которого и расходы она брала на себя.

Все, конечно, очень красиво выглядело: вряд ли конечно фирма будет тратить деньги просто так неизвестно на что: быть может, она ищет таким образом талантливых программеров для привлечения их на работу, а может быть ищет интересные шахматные разработки с последующей их покупкой… Не знаю, но одно то, что участнику ничего не надо было платить за организацию турнира, и что фирма IBM готова принять 200 программ для участия, это соблазняло. Как минимум, ты ничего не терял.

Взвесив все «за» и «против» я решил попытать счастье, тем более что мой приятель готов был помочь с регистрацией моей программы на турнире. Кстати, контора, где он работал, серьезно подошла к этому, и они всем отделом написали программу, которую собирались не просто отправить на турнир, но и рассчитывали занять на нем приличное место.

В общем, с января месяца я стал готовить программу к турниру: почти полностью переписал ее ядро, исправил множество ошибок, накопал дебютных книжек, стравливал ее играть с другими программами и знакомыми мастерами для практики…. Проделал немалую работу, и к маю месяцу она была готова к бою.

На моем любимом сайте www.pig.ru , где я играю, я часто играл своей программой в последнее время и, убедившись, что она может играть с мастерами, я послал ее своему знакомому почтой, с тем, чтобы он смог выставить ее на турнир. Однако перед самым концом мая я выбил себе маленький отпуск, и решил воспользоваться шансом, чтобы самому поехать в Сакраменто как разработчику программы, чтобы лично видеть все происходящее. И вот 31 мая по местному времени самолет приземляется в Сакраменто…

Турнирная атмосфера

Чтобы представить себе турнир, вы должны проникнуться атмосферой его. Надо сказать, что фирма IBM подготовилась к нему замечательно. Актовый зал, в котором находились разработчики программ участниц соревнований, а также почетные гости, был роскошным: это огромный зал на более чем 500 мест, который был всегда заполнен до отказа, с огромным табло как в кинозале, где можно было видеть партии всех программ одновременно. Кроме того, к услугам каждого был маленький терминал, где всегда можно было видеть текущую турнирную таблицу и партии именно той программы, которая тебе была нужна. Рядом находилось бюро регистрации, где нужно было заполнить документы, чтобы твою программу приняли на турнир, причем писать можно было на любом языке, который ты знаешь, ибо программа-регистратор знала 84 языка мира и давала анкеты на любом языке, в том числе и на русском.

Сам же игровой зал был полностью автоматизирован. Туда не пускали никого из людей – там все было автоматически. Как только программа проходила регистрацию, за ней закреплялся терминал, на который она записывалась, а дальше «судья» соревнований, коим был назначен знаменитый Deep Blue автоматически сажал твою программу за стол, фиксировал результаты и прочее. Естественно, чтобы такое было возможно, твоя программа должна была иметь специальный протокол связи, которым я свое детище снабдил перед турниром, иначе бы она не прошла регистрацию.

Мне, как и всем разработчикам, пришлось при регистрации пообщаться со знаменитым Deep Blue, который после выигрыша у Каспарова так и не играл более с серьезными соперниками, и даже ходили слухи, что он демонтирован. Однако нет – он жив и работает, и был уполномочен провести этот турнир от регистрации и обработки анкет до самого его конца. Что ж, этому 32 процессорному шкафу, который занимает место как хороший холодильник, пришлось выдержать испытание, с которым он справился с честью. Ну а после регистрации всех программ ждал турнир, а всех гостей и разработчиков – актовый зал, где они нервно и томительно наблюдали за тем, как его детище ведет борьбу за победу.

Состав участников и регламент турнира

Пожалуй, несколько слов стоит сказать о программах, что собирались в очных поединках разыграть звание сильнейшей и о регламенте турнира

Как я сказал ранее, изначально в бой вступили 200 программ из самых разных стран. Пожалуй, всех их можно разделить на 3 большие группы: в первую группу (порядка 35-40 программ) входили так называемые коллективные творения-монстры, которые создавались либо крупными кафедрами ведущих университетов всего мира, таких как Оксфорд, Гарвард, Сорбонна, Пенсильванский университет, Нью-Йорская академия, ведущие универы Китая, Малайзии, Сингапура итд, итп…, либо крупными конторами, которые занимаются компьютерными разработками, и решили попробовать себя и здесь, выделив своих программистов на это мероприятие. Одной из таких программ была и программа моего знакомого, чья контора привлекла на это целый отдел системного программирования, в том числе и его самого.

Понятное дело, что с таким подходом организация, будь то универ или кто-либо, рассчитывали на то, что их труды окупятся, если уж не деньгами, то по крайней мере именем и результатов, и они для своего проекта привлекали специалистов, консультантов в виде хороших шахматных мастеров, которые им за деньги вправляли мозги и учили их программы тактике игре. Словом, они создавали свои программы так, как создаются профессиональные программы типа того же Deep Blue или Fritz с той лишь разницей, что эти организации не жили за счет этой программы, зарабатывая на ней деньги, и она не имела рейтинга ФИДЕ.. А так разница между ими и проф. программами была очень прозрачна. Но, однако, букве закона они не противоречили, и их до турнира допустили… собственно, никто не мешал и тебе привлекать для написания программы консультантов…Но снова все упирается в деньги… и опять это все лирика.

Во вторую группу программ, которых было порядка 25-30 входили программы, которые были написаны ведущими программистами ведущих компаний таких как Microsoft, IBM, Borland, и других… Хотя тут имело место индивидуальное творчество, однако учитывая класс этих программистов, можно предположить, что плохое они не привезут и смогут конкурировать с коллективными монстрами на равных.

Наконец, третья группа, это разработки частников типа меня, которых никто не знает. В мире много хороших программистов, наверное им и дала шанс фирма IBM своим турниром показать себя. Их программы были темными лошадками, и их на турнире было более 100. Мало кто, честно говоря, верил, что они способны свалить программы из первой или второй группы, но как знать, темные лошадки есть темные лошадки.

Теперь несколько слов о регламенте турнира:

Итак, турнир должен был по регламенту пройти с 3 по 9 июня, и каждый день был расписан судьей по минутам.

В первый день (3 июня) все 200 программ вступали в борьбу. Чтобы турнир не затягивался очень надолго, играли они не каждая с каждой, а по Швейцарской системе 64 тура по 3 мин на партию каждому. Таким образом, на партию выделялось 6 минут и еще 4 минуты давалось судье, чтобы внести результаты в таблицу и сформировать новые пары для игры. То есть каждая новая партия начиналась строго через 10 минут, и таким образом, на первый тур отводилось 640 минут, то есть почти 11 часов. По окончании первого игрового дня должны были определиться 64 лучшие программы, которые продолжат борьбу далее во втором круге.

Второй круг (4 июня) тоже длился 1 день, но уже участников останется только 64, и они снова по Швейцарской системе будут играть 32 тура со временем 5+3. Таким образом, на партию давалось максимум 15 минут и еще 5 судье для вынесения результатов, то есть теперь каждая новая партия начиналась строго через 20 минут, и если какая-то пара закончила раньше, то она ждала других, а игровой день снова был запланирован на 640 минут. Следует отметить, что результаты первого круга учитывались, то есть очки, которые твоя программа набрала в первом игровом дне против тех программ, которые вышли во второй круг, потом суммировались к очкам, набранным во втором круге.

В третий круг (5 июня- начало 6 июня) выходили уже 20 программ, которые играли 16 туров по той же Швейцарской системе с контролем 15 минут + 5сек. Этого времени хватало уже для более детального обдумывания, и каждый новый тур начинался через 40 минут. При этом опять же довольно сложно учитывались очки, которые набрали программ в игре между собой в двух первых турах.

Четвертый круг начинался по регламенту 6 июня и длился до середины 7 июня. Здесь 10 программ, которые вышли из всех переделок, играли 8 туров по Швейцарке с контролем времени 30 минут + 5 секунд. И снова очки учитывались

Наконец, в пятый и последний круг выходили 5 программ, которые уже в игре по 1 час друг с другом по 2 партии выявляли победителя. Регламентом было запланировано для этого 7, 8 и даже начало 9 числа, если нужно. Хотя само 9 число было днем конца турнира, и служило лишь запасным для выявления победителя и призеров в случае ничьи… Но там своя сложная система… я ее и сам толком не понял.

Вот так все хитро было закручено.. а теперь сам турнир.

Турнир

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

3 июня в 10 часов утра по местному, и в 9 вечера по Московскому времени, все собрались в актовом зале.. воцарилась тишина, все разработчики и гости следили за огромным табло, на котором было видно все 100 досок, на которых разворачивалось блиц сражение.

Все 11 часов никто почти не вставал с мест, так как партии были скоротечны. Напряжение было огромным, и огромно было волнение. Все те, кто видел меня на пиге, видели как я нервничаю, ибо в прямом эфире я выходил в инет и сообщал результаты в чат. Я очень волновался, как студент на первой сессии.. очень не хотелось приезжать в Штаты просто так.. теперь хотелось большего… Вот сейчас пишу, и волнения этих минут не покидают меня… я как снова переживаю это…..

Дым рассеялся через 11 часов, и на его фоне были видны улыбки 64 счастливчиков, и 136 неудачников, чьи программы покинули турнир после первого игрового дня. После этот был грандиозный банкет в ресторане, где победители первого дня щедро проставлялись на радостях, даже угощая проигравших…

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

Из 64 программ только 11 были представлены программами «третьей группы», все же остальные были вышиблены представителями первой и второй, которые не потеряли почти ни одного своего представителя. Что касается моего настроения, то оно было и счастливым, и обреченным одновременно. С одной стороны, моя программа показала блестящий результат: из 64 партий она выиграла 31, 22 сыграла вничью и 11 проиграла. С таки результатам она поделила 21-30 места, что с лихвой гарантировало ей место в 64 лучших. Однако, от лидеров, которые набрали по 45-54 победы, она отстала очень значительно, и коэффициент игр м ними у меня был отрицателен. Не могу, конечно, сказать, что я выехал на ламерах, но из моих 31 побед 22 было над теми, кто не прошел во второй круг, и из 11 поражений – 8 я потерпел от «топ-программ». Так что шансов пробиться в третий круг у меня почти не было. Оставалось только надеяться, что 5 минут я сыграю лучше, чем 3 минуты.

Однако, такие надежды были и у лидеров, и 5 минут они играли сильнее, чем 3 минуты, и бедная моя программа не выдержала такой натиск С одной стороны, я к этому был готов, а с другой все-таки немного обидно. Но аппетит приходит во время еды.. Если до начала турнира я мечтал попасть в число 50 лучших, то итоговый дележ 31-37 места в итоге показался мне малым… но потом я все-таки успокоился.

Что ж, турнир для меня закончен, и я возвращаюсь домой.. смотреть на игру других нет смысла, да и дорого тут торчать, да и работы много. Я возвращаюсь с чувством выполненного долга от хорошо проделанной работы. Все-таки 31 среди 200 – не так уж плохо, и уж точно среди программ 3 группы моя даже очень ничего смотрелась. Друзья моя – до встречи в моем родном Питере.. до встречи в России!

Источник


Шахматы учат быть обьективным.(А.Алехин)
 
Форум » Закачки » Статьи о компьютерных шахматах » Раритет. История моей шахматной программы
  • Страница 1 из 1
  • 1
Поиск:


Copyright MyCorp © 2024