Рендомные шахматы
|
Lois |
Опубликовано 09-07-2013 10:19
|
Мастер ФИДЕ
Сообщений: 477
Зарегистрирован: 08.07.13
|
Рендомные шахматы
Я разработал идею рендомных шахмат. Суть её в том, что фигуры делают случайные ходы, случайно выбранными фигурами и превращения пешек в другие фигуры также случайное.
Пользуясь этой идеей можно создавать крайне интересные шахматные задачи.
Вот программа, которая решает некоторые виды задач
Вот exe для Win32,
http://yadi.sk/d/rbZ4G9G_6S94A
randomchess.exe FEN TESTSCOUNT [--print-moves]
FEN — начальная позиция (внимание, конь — S, не N)
TESTSCOUNT — количество партий
--print-moves — распечатывать ходы, опционально
Пуск — Выполнить — cmd.exe
cd C:\randomchess\
randomchess.exe rsbqkbsr/pppppppp/8/8/8/8/PPPPPPPP/RSBQKBSR 1 —print-moves
Формат FEN можно скопировать вот здесь
http://www.chessvideos.tv/chess-diagram-generator.php
Предельная задача
4k3/8/8/1pBp1p1p/1PbP3P/5P2/8/4K3
Программа даёт статистические данные, сколько будет матов с той и другой стороны, сколько патов, учитывает случаи, когда остаётся только 2 короля и учитывает только 970 ходов без взятия фигур.
Я придумал как с помощью этой статистики вычислить какой надо делать ход в реальных партиях, то есть речь идёт о компьютерных шахматах.
Вот описание идеи
Делается ход каждой фигурой в данном позиции ( любой возможный ход ) и полностью с помощью рендома проигрывается вся партия скажем 1000 раз. И определяется соотношение количества матов. Выбирается ход у которого такое соотношение наибольшее. Правда там есть ещё варианты, скажем когда при любом ходе количество матов всегда меньше, чем со стороны противника. Тогда надо брать паты( а в некоторых случаях маты или выбирать случайным образом пат или мат).
Задача для решения- надо вычислить какой будет у этой программы шахматный рейтинг.
Также надо составить математическое решение задачи при разных вариантах, когда выгоднее сравнивать паты, а не маты, а может как-то одновременно решать эту проблему и с патами и с матами. Цель увеличение рейтинга шахматного программы. |
|
|
|
Zunkor |
Опубликовано 09-07-2013 10:35
|
СУПЕРАДМИНИСТРАТОР
Сообщений: 7873
Зарегистрирован: 07.10.08
|
Lois написал:
Делается ход каждой фигурой в данном позиции ( любой возможный ход ) и полностью с помощью рендома проигрывается вся партия скажем 1000 раз. И определяется соотношение количества матов. Выбирается ход у которого такое соотношение наибольшее.
1_1
Это Юмор? Lois, вы представляете сколько надо сыграть партий, если "Делается ход каждой фигурой в данном позиции ( любой возможный ход ) и полностью с помощью рендома проигрывается вся партия"?
1000 партий и, даже, 10000 партий явно мало, чтобы ориентироваться по соотношению количества матов.
Не надо изобретать "велосипед". Этот метод уже давно применяется в комп. шахматах.
В 2006 году вышла рандомизированная "Рыбка".
Рандомизированная Рыбка отслеживает все предыдущие партии, и не повторяет сыгранные варианты. Таким образом поединок между двумя рандо-Рыбками с течением времени сможет охватить большой объём вариантов, возникающих из заданного положения.
- Можно увеличить или уменьшить диапазон рассматриваемых альтернатив путём изменения заданной границы в файле rybka.config (например 10 изменить на 8 и т.п.)
- Можно за один раз протестировать множество позиций, если записать их предварительно их в файл .pgn. Обратите внимание на то, чтобы число партий охватывало все позиции.
- Можно сразить между собой простую Рыбку и рандо-Рыбку. Простая Рыбка, конечно же, будет выбирать только наилучший ход, в то время как рандо-Рыбка будет менять свою игру, для того, чтобы охватить все варианты.
Изменил(а) Zunkor, 09-07-2013 10:54 |
|
|
|
Zunkor |
Опубликовано 09-07-2013 11:11
|
СУПЕРАДМИНИСТРАТОР
Сообщений: 7873
Зарегистрирован: 07.10.08
|
Lois написал:
Правда там есть ещё варианты, скажем когда при любом ходе количество матов всегда меньше, чем со стороны противника. Тогда надо брать паты( а в некоторых случаях маты или выбирать случайным образом пат или мат).
Это, по моему, тоже самое, что подбрасывать монету. |
|
|
|
Lois |
Опубликовано 09-07-2013 11:54
|
Мастер ФИДЕ
Сообщений: 477
Зарегистрирован: 08.07.13
|
Zunkor написал:
Lois написал:
Правда там есть ещё варианты, скажем когда при любом ходе количество матов всегда меньше, чем со стороны противника. Тогда надо брать паты( а в некоторых случаях маты или выбирать случайным образом пат или мат).
Это, по моему, тоже самое, что подбрасывать монету.
Вот это я и хочу выяснить. Главное, что есть критерий оценки хода. Сейчас я ставлю опыты, чтобы оценить хоть как-то идею. Самое тяжёлое пока что- это время вычисления. Я дал фору ферзя и сейчас проигрывается 10 000 партий, уже больше часа. Осталось ещё 7000 партий. Но мне кажется этот недостаток устраним, если это делать не одним рендомом, а в 10 потоков , ну или 20. В общем это должен решать специалист.
Хотя я сейчас проверил загрузку процессора- показывает 100 процентов. Наверное на более мощном компе вычисления будут быстрее. Но всё же основная цель на данном этапе- проверить ценность идеи. Если Эло будет маленьким, то конечно плохо. Хотя вообще шахматы странная игра. Может моя прога будет делать ходы смешные- это тоже ценно, а может ещё что-то... .
Я отпишусь позже по статистике, когда поставлю нужные опыты. |
|
|
|
Icy |
Опубликовано 09-07-2013 13:27
|
КМС
Сообщений: 205
Зарегистрирован: 01.07.13
|
Lois, добрый день.
Суть её в том, что фигуры делают случайные ходы, случайно выбранными фигурами и превращения пешек в другие фигуры также случайное.
Но правила шахматные выполняются - рокировки, взятия на проходе etc?
Самое тяжёлое пока что- это время вычисления. Я дал фору ферзя и сейчас проигрывается 10 000 партий, уже больше часа. Осталось ещё 7000 партий.
Не совсем поняла, что с контролем времени. Играется 10k партий в некой одной позиции - для обнаружения перспективного хода? Или играется 10k партий, каждый ход в которых определяется на основе случайного разыгрывания N партий?
Чем эта идея отличается от розыгрыша Монте-Карло в оболочке Фрица? |
|
|
|
Lois |
Опубликовано 09-07-2013 13:36
|
Мастер ФИДЕ
Сообщений: 477
Зарегистрирован: 08.07.13
|
Icy написал:
Lois, добрый день.
Суть её в том, что фигуры делают случайные ходы, случайно выбранными фигурами и превращения пешек в другие фигуры также случайное.
Но правила шахматные выполняются - рокировки, взятия на проходе etc?
Самое тяжёлое пока что- это время вычисления. Я дал фору ферзя и сейчас проигрывается 10 000 партий, уже больше часа. Осталось ещё 7000 партий.
Не совсем поняла, что с контролем времени. Играется 10k партий в некой одной позиции - для обнаружения перспективного хода? Или играется 10k партий, каждый ход в которых определяется на основе случайного разыгрывания N партий?
Чем эта идея отличается от розыгрыша Монте-Карло в оболочке Фрица?
Играется 10 000 в одной позиции для обнаружения перспективного хода.
Проигрывается полностью партия до мата или пата или съедения всех фигур. О сходной идее в Фрице ничего не знаю. Знаю только про Рыбку, но там игра не идёт до мата, а у меня мат единственный критерий оценки силы хода ( ну ещё есть пат и ничья). |
|
|
|
Icy |
Опубликовано 09-07-2013 13:47
|
КМС
Сообщений: 205
Зарегистрирован: 01.07.13
|
Не очень понятно, почему на разыгрывание трёх тысяч партий ушёл час, ведь вместо оценочной функции у вас рандом. Может быть, можно оптимизировать представление доски и генератор ходов?
Планируете ли вы создание полноценного UCI-движка на основе своих идей? |
|
|
|
Zunkor |
Опубликовано 09-07-2013 13:56
|
СУПЕРАДМИНИСТРАТОР
Сообщений: 7873
Зарегистрирован: 07.10.08
|
Lois написал:
Играется 10 000 в одной позиции для обнаружения перспективного хода.
Проигрывается полностью партия до мата или пата или съедения всех фигур.
Если в каждой позиции, при проигрывании партии, делается любой возможный ход, партии получаются наитупейшие, и 10000 партий для определения оптимального хода явно мало. |
|
|
|
Lois |
Опубликовано 09-07-2013 13:59
|
Мастер ФИДЕ
Сообщений: 477
Зарегистрирован: 08.07.13
|
Icy написал:
Не очень понятно, почему на разыгрывание трёх тысяч партий ушёл час, ведь вместо оценочной функции у вас рандом. Может быть, можно оптимизировать представление доски и генератор ходов?
Планируете ли вы создание полноценного UCI-движка на основе своих идей?
Программу писал не я, автор проги сказал, что у него там рендомайзер его собственной конструкции и что он работает не очень быстро. Зато я думаю он более правильный. Это очень важно при подсчёте статистики. Доски никакой нет. Есть только программа, которую всё это просчитывает и выдаёт конечный результат. Ну ещё может выдавать записи партий по запросу.
Я пока остановился на том пункте, что надо убедится, что идея интересная. А так, если будет создана полноценная программа, то будет весьма приятно.
Сейчас я получил письмо от организаторов чемпионата шахматных программ.
Thank you for your enquiry about the ICGA Chess tournaments and Computer Olympiad.
We are always interested to welcome new programs to our events, but unfortunately the closing date for entries has already passed for this year's events.
Only if one of the other programs withdraws before the championship would we be able to consider your program for a place this year.
In the meantime, please send us some more information about your program. For example, what do you estimate to be its playing strength? And has it competed in any tournaments with other programs and/or with human players, and if so please send us a link so we can see the results. |
|
|
|
Lois |
Опубликовано 09-07-2013 14:05
|
Мастер ФИДЕ
Сообщений: 477
Зарегистрирован: 08.07.13
|
Zunkor написал:
Lois написал:
Играется 10 000 в одной позиции для обнаружения перспективного хода.
Проигрывается полностью партия до мата или пата или съедения всех фигур.
Если в каждой позиции, при проигрывании партии, делается любой возможный ход, партии получаются наитупейшие, и 10000 партий для определения оптимального хода явно мало.
Вы видно не так понимаете. Скажем делается ход пешкой a2-a4 и играются рендомные партии. Определяется отношение матов белых к чёрным и делается вывод выгодный это ход или нет. |
|
|
|
Zunkor |
Опубликовано 09-07-2013 14:08
|
СУПЕРАДМИНИСТРАТОР
Сообщений: 7873
Зарегистрирован: 07.10.08
|
Lois написал:
Вы видно не так понимаете. Скажем делается ход пешкой a2-a4 и играются рендомные партии. Определяется отношение матов белых к чёрным и делается вывод выгодный это ход или нет.
Когда играются рендомные партии, после каждого сделанного хода делается любой возможный ход?
Напишите текст партии, тогда сразу будет понятно.
Изменил(а) Zunkor, 09-07-2013 14:18 |
|
|
|
PozitiFF_Chess |
Опубликовано 09-07-2013 14:55
|
Мастер ФИДЕ
Сообщений: 341
Зарегистрирован: 18.06.13
|
Зункор, идея Лоиса в том, чтобы оценить позицию с помощью соотношения матов после N случайно разыгранных до мата партий. Насколько я это понял.
Допустим, после хода а4 соотношение матов 515 против 485 в пользу белых
А после хода е4 соотношение матов 520 против 480 в пользу белых.
Следовательно, ход е4 сильнее, чем а4.
Идея оригинальная, по меньшей мере. Но как-то слишком упрощенная. Автор идеи вот уже и сам додумывает костыли к ней.
скажем когда при любом ходе количество матов всегда меньше, чем со стороны противника. Тогда надо брать паты( а в некоторых случаях маты или выбирать случайным образом пат или мат).
Здесь, похоже, автор зашел в какой-то тупик и пытается придумать из него выход.
Хотя, в общем, прикольно. Так, навскидку, сложно придумать простую позицию, которая опровергает идею. Но, думаю, что основная проблема здесь будет в скорости и представительности выборки. 1000 случайных партий - это сущий пшик, по сравнению с реальным их количеством. Какая-то доля процента. 10^-9 или еще меньше. И дать гарантию, что эти 1000 партий нам дадут реальное соотношение силы ходов А и Б - думаю, нельзя.
Изменил(а) PozitiFF_Chess, 09-07-2013 14:56 |
|
|
|
PozitiFF_Chess |
Опубликовано 09-07-2013 15:08
|
Мастер ФИДЕ
Сообщений: 341
Зарегистрирован: 18.06.13
|
Не очень понятно, почему на разыгрывание трёх тысяч партий ушёл час, ведь вместо оценочной функции у вас рандом.
Да, но случайным образом поставить мат - дело не из простых Думаю, в этом там и загвоздка. Партия до мата может играться куда дольше. Если бы просто определенное число ходов - то это одно. Но тут именно до мата. То есть там партии десятки тысяч ходов, вероятно, длятся. А может и миллионы.
Изменил(а) PozitiFF_Chess, 09-07-2013 15:09 |
|
|
|
Icy |
Опубликовано 09-07-2013 15:19
|
КМС
Сообщений: 205
Зарегистрирован: 01.07.13
|
Программу писал не я, автор проги сказал, что у него там рендомайзер его собственной конструкции и что он работает не очень быстро. Зато я думаю он более правильный. Это очень важно при подсчёте статистики. Доски никакой нет. Есть только программа, которую всё это просчитывает и выдаёт конечный результат. Ну ещё может выдавать записи партий по запросу.
Т. е., некий человек написал эту программу и дал её вам? Вы можете что-то сами менять в коде и собирать экзешник?
Как это доски нет? А как ходы делаются и играются партии? Есть определённое представление шахматной доски в программе - так вот вариантов представлений много, вообще говоря.
Коллега Борщов попросил задать вопрос: почему вы получали ответ от организаторов, если вы не автор? |
|
|
|
Lois |
Опубликовано 09-07-2013 15:28
|
Мастер ФИДЕ
Сообщений: 477
Зарегистрирован: 08.07.13
|
Автор разработки я. Просто я не программист, один хороший человек написал. А вообще вопросы подобные больше похожи на допросы. Не очень это красиво, тем более спрашивать от чьего-то имени.
1. e3 g7 2. g4 b5 3. Bg1 e6 4. Rf1 e5 5. a3 Rg8 6. b4 c5 7. f3 f6 8. d4 Rf8 9. dxc5 g6 10. Bh2 Ke7 11. c6 Hf7 12. Rh1 f5 13. f4 Qd8 14. Qd4 Qb6 15. gxf d5 16. c7 e4 17. Re1 a5 18. Qxh8 Rg8 19. f6 Rg7 20. Bg1 Hxf6 21. Rf2 Hf5 22. Ka2 Kf6 23. Bd2 Qxe3 24. cxb8=R Qxe1 25. Qh7 Rxh7 26. Rd8 Ra6 27. f5 Rc6 28. Bg5 i97 29. Bf4 Bf7 30. Bg3 Rxc2 31. Rxc2 a4 32. Rd7 Kg8 33. Rc8 Kg7? 34. Rc7 g5 35. Rxf7 Kh6 36. Bc5 Qb1 37. Kxb1 Rg7 38. Ka2 e3 39. Rf8 Rf7 40. Rd8 Rg7 41. Bf4 e2 42. Rg8 gxf4 43. Rb8 Rh7 44. Bb6 Kh5 45. h4 Rf7 46. Rf8 Rb7 47. Rg6 Rxb6 48. Rg8 e1=Q 49. Rh8 bit 49 moues
В общем я сложными методами снял запись и пришлось много исправлять, так как я использовал прогу различения символов. Я не понял что там программист натворил, но в этой проге делаются какие-то нереальные ходы типа 3 и 4 ходов. Такого не может быть.
Я закончил проверять прогу при снятии ферзя с доски ( фора), получилось соотношение матов чёрным к белым 0.4054529 и число патов чёрных к белым 0.3459787
В общем совершенно ясно, что статистика очень чётко работает.
Одна партия разыгрывается в течении 1.8 секунды. То есть на 10 000 партий уходит 4 часа.
Если кто-то захочет, может проверить скорость на своём компе. Это тоже важно узнать, как зависит время партии от мощности компа.
Следующий опыт, который я хочу поставить сыграть 10000 нормальных партий без снятия фигур и узнать есть ли у белых преимущество.
Изменил(а) Lois, 09-07-2013 15:55 |
|
|
|
Icy |
Опубликовано 09-07-2013 15:40
|
КМС
Сообщений: 205
Зарегистрирован: 01.07.13
|
Коллега не может написать сам по административным причинам, попросил задать вопрос меня.
Поясните, пожалуйста, ходы
2. 94b5
10. Bh2 He?
и
19. £6 Rg7
с позиций шахматной нотации. |
|
|
|
PozitiFF_Chess |
Опубликовано 09-07-2013 15:48
|
Мастер ФИДЕ
Сообщений: 341
Зарегистрирован: 18.06.13
|
Ну, человек же сказал, что он не программист.
Однажды мышкам надоело бояться и они пришли
к мудрому Филину: «Мудрый филин, помоги советом. Все нас обижают.
Мы не хотим больше этого! Что нам делать?»
Филин, подумав: «А вы станьте ежиками. У ежиков иголки, их никто не трогает.»
Мышки, обрадованные побежали домой,
но потом вернулись: «А как же нам стать ёжиками? Мы не знаем и не умеем.»
Филин: «Ребята, вы меня ерундой не грузите. Я стратег, а не тактик!»
А Вы грузите его, Icy... )
Изменил(а) PozitiFF_Chess, 09-07-2013 15:48 |
|
|
|
Lois |
Опубликовано 09-07-2013 15:57
|
Мастер ФИДЕ
Сообщений: 477
Зарегистрирован: 08.07.13
|
Icy написал:
Коллега не может написать сам по административным причинам, попросил задать вопрос меня.
Поясните, пожалуйста, ходы
2. 94b5
10. Bh2 He?
и
19. £6 Rg7
с позиций шахматной нотации.
Я исправил ошибки. Посмотрите исправленный пост, но там ОЧЕНЬ большие проблемы другого порядка. Впрочем меня это уже обнадёжило
Это значит, что я на верном пути. |
|
|
|
PozitiFF_Chess |
Опубликовано 09-07-2013 15:57
|
Мастер ФИДЕ
Сообщений: 341
Зарегистрирован: 18.06.13
|
Одна партия разыгрывается в течении 1.8 секунды. То есть на 10 000 партий уходит 4 часа.
То есть на оценку одного хода будет уходить 4 часа. На оценку 20 ходов - 80 часов машинного времени?
Не многовато ли? |
|
|
|
Icy |
Опубликовано 09-07-2013 16:13
|
КМС
Сообщений: 205
Зарегистрирован: 01.07.13
|
1. e3 g7 2. g4 b5 3. Bg1 e6
Проблема в том, что слон на g1 пойти не мог. Видимо, генератор ходов написан неверно. |
|
|