Здравствуйте, гость | Правила · Помощь |
» Оценка карты играющего при заданном сносе, Определение результата игры для мизера и игры на взятки |
|
||
Ну ладно, уговорил ... Тогда сначала отбираем третью бубну, проносим на ней Т и прорезаем трефу. И перехватывай, не перехватывай ... 5 взяток. Тут мизеряшему надо было перехватывать черву, заходить в 9 и со скорбной рожей говорить: "Две взятки". Все согласятся, т.к. подумают, что 9 бланковые Иначе вистующим придется решать: совать под эту девятку на 2/3 взятки, или отбирать ее и пытаться пихнуть под даму с вариантами на 1/6 взяток. Конечно, 6 оно получше. Но 2 надежнее. Вот такие многовариантные сносы с перехватами весьма трудно обсчитать. Одно дело, когда угадайка имеет место в раскладах без перехватов. Другое - когда с перехватами. Тут уже не два-три варианта сноса надо угадывать, а еще и решать задачу за вистующих: а почему не перехватил? А за играющего - а не перехватить/пропустить ли? Это сообщение отредактировал Pochemuk - 24/04/2018, 16:53 |
||
|
Ну да) Одну конкретную сдачу можно алгоритмизировать (мне кажется, что это не очень сложно) только если есть гарантированный подсад. И играть на него. На максимальный гарантированный подсад, и не идти на угадайки типа 0-5, если есть гарантированная одна. Это же касается и игры на взятки, только здесь уже становится важен контракт. Бывают же расклады, где вистующие могут дать гарантированные 6 взяток или пойти на угадайку 5-7. И если заказано 7, но надо давать гарантированные 6. А если заказаны 6 (вист например полуответственный), надо идти на угадайку 5-7.
А вот в случае угадаек на мизерах типа 0-сколько-то там, нужно, чтобы прога сыграла этот расклад несколько миллионов раз, накопила статистику, и на основе её делала ходы, иногда так, иногда эдак. |
|
По поводу статистики - это к Искусственным Нейронным Сетям. Они и статистику набирают, и обрабатывают ее, и самокорректируются по ней ...
Вот только есть 2 момента применительно к ИНС: 1. ИНС, в основном, применяются с целью распознавания и кластеризации/классификации. Т.е. дают однозначный ответ - жив кот или мертв. Для выработки смешанных стратегий нужно оперировать уже частично с нечеткими рекомендациями - насколько кот жив, насколько мертв, и насколько он собака. Это решаемо, но использует другие более сложные модели ИНС с нелинейной функцией обратного распространения ошибки. Впрочем, судя по тому, что ИНС научили блефовать при игре в лимитный техасский холдем, ничего невозможного нет. 2. Если использовать столь популярный сейчас метод обучения ИНС без учителя, то выработка смешанных стратегий существенно замедлит процесс обучения, т.к. "спарринг-партнером" будет выступать такая же обучаемая ИНС. И она тоже будет подбирать свою смешанную стратегию ловли. В результате, корректировку надо сильно демпфировать, иначе вместо сходимости можем получить колебательную или хаотическую систему, наподобие Отображения Ферхюльста. Поэтому нескольких миллионов будет мало. Нужно будет прогнать этот расклад десятки и сотни миллионов раз. А еще лучше - сыграть несколько миллиардов полных сдач - от торговли до последней взятки. Другую сложность мы уже обсуждали - как заставить "калькулятор" забыть известный снос до момента выполнения критического хода? И чтоб это было без существенного падения производительности ... А без "модели неизвестного сноса" про выработку смешанных стратегий и думать нечего. |
|
С нейросетями, применительно к преф-решателю, неоднозначная ситуация.
Проблем несколько: Во-первых, это точность распознавания. Если перебор вариантов дает точный ответ, то ИНС оперирует приблизительными числами с некоторой погрешностью распознавания. В принципе, для некоторых задач это вполне подходит. Во-вторых, это скорость. Минимальные требования к ИНС это два слоя с 300 нейронами на первом слое. А в реальности, потребуется каскад из таких нейросетей. При использовании обычного процессора время работы будет дольше, чем при переборе вариантов альфа-бета алгоритмом. Чтобы был смысл в применении ИНС нужно в обязательном порядке переходить на спец. аппаратные ускорители, в простейшем случае - на видеокарты. Тогда получим ускорение вычислений минимум в 100 раз с перспективой роста в будущем. Если решатель на А-Б (альфа-бета алгоритме) заточен именно на научное применение и неспешный анализ задач, получение табличных данных, то с помощью ИНС на ускорителе можно уже говорить о создании робота для игры в реальном времени. Пока что совершенно непонятно как подойти к решению задач втемную. А если не получится создать приемлемый вариант на А-Б, то значит и не будет учителя для ИНС и придется обучать нейросеть на алгоритмах без учителя. -------------------- the elephant has you.. |
|
||
Николай! Игра втемную не может быть решена переборными методами из-за большой неопределенности начальных условий. Только статистические рекомендации! Мне вот даже не понятно, можно ли перебором решать более простую задачу: нахождение фиксирующих ходов вистующих при игре на открытых картах, но с неизвестным (многовариантным) сносом. Я тебе уже писал в личной переписке, для интересующихся повторю и здесь: Совместить перебор с альфа-бета отсечениями и поиск оптимальных (фиксирующих) ходов при многовариантном сносе представляется проблематичным. Причина в том, что для такого поиска необходимо на любой глубине перебора удостовериться, что для любого варианта сноса существует ход, приводящий оптимальному результату, т.е. не возникает угадайки. Но в основе перебора с альфа-бета отсечениями лежит следующий механизм: Происходит прекращение анализа хода, как только становится ясным, что он не способен привести к улучшению, по сравнению с рассмотренными ранее ходами. Обратите внимание на то что здесь фигурирует требование "не лучше", а не "хуже". Т.е. идет отсечение по нестрогому неравенству. Это колоссально сокращает дерево переборов, но не позволяет найти все оптимальные ходы, а только один из них. Теперь представим себе, что мы провели анализ какого-либо хода вистующих и обнаружили каким-то способом, что он не является фиксирующим - рано или поздно он приведет к угадайке на 4-5 взяток вистующих. Какую оценку дать этому ходу вистующих? Разумеется не максимальную 5 взяток, а минимальную 4 взятки, показывая, что этот ход может быть (и скорее всего является) не лучшим. Но снизив нижнюю границу оценки хода, мы резко увеличиваем дерево перебора. Дело в том, что для подавляющего большинства спорных позиций результат перебора колеблется как раз в пределах 1 взятки. И снизив нижнюю границу оценки хода на 1 взятку мы тем самым практически выключили механизм отсечений. В результате объем вычислений может возрасти на порядки!!! Разумеется, может так случиться, что первым ходом мы сразу попадем на фиксаж оптимального результата 5 взяток. Но это маловероятно. Тем более, что фиксирующего хода в данном раскладе может и не быть. Таким образом, попытка проанализировать даже простой двухвариантный снос на предмет нахождения фиксирующих ходов увеличивает объем вычислений не в 2 раза, приблизительно, а на 1-2 порядка. Если же число вариантов сноса больше 2-х, то можно смело говорить, что всю мощь альфа-бета отсечений придется благополучно похерить. Что касается обучением без учителя, то таки да ... Других вариантов не вижу. Так и представляю, как сидят 3 мощных суперкомпьютера под управлением четвертого менее мощного сдатчика и самообучаются в игре друг с другом Самое интересное, что при таком самообучении у каждого может проявиться своя манера игры. Ведь |
||
|
Я всё-таки выложу свою последнюю версию, хотя дорабатывать там можно ещё много.
Краткое описание. При запуске программы предлагается сформировать расклад из карт "колоды". При наведении мыши на любую из карт она подсвечивается и по краям её появляются стрелки. Нажав на выбранную, вы переместите карту в нужную руку или в снос (снос = "N"). Из руки в руку, а также из сноса и обратно карты также можно перемещать. Логика формирования расклада: Если на карте сноса нажать "N", она переместится обратно в колоду. Если на карте к.л. руки нажать "N", она переместится в снос, если там меньше 2-х карт; в противном случае в колоду. Больше 10 карт в одну руку не положится, соотв.стрелки будут неактивны. Если полностью сформированы к.-л. 2 руки и снос, третья рука формируется автоматически. Если полностью сформированы 3 руки, снос формируется автоматически. При этом появляется окно с надписью "готово?", а карты сноса становятся неактивными. В этом случае расклад всё равно можно изменить, т.к. на картах всех трёх рук остаётся активна стрелка "N", и если её нажать, то в колоду вернётся как выбранная карта, так и обе карты сноса. Если полностью сформирована рука S и снос (остальные обе руки сформированы не полностью или вообще не сформированы), появляется окно "рассчитать все расклады для S?". Его можно игнорировать, продолжая формировать расклад, но если нажать, начнётся расчёт всех возможных раскладов, которых, как известно, 184756 штук, причём будут рассмотрены первые ходы со всех рук, а также (если первым ходит разыгрывающий) варианты ходов руки разыгрывающего со всех возможных принципиально различных карт (эквивалент первого хода втёмную, после чего вистующие вскрываются). Тут пока не отсекаются "глупые" ходы, типа с туза при чистом мизере, но на самом деле это не сильно замедляет просчёт. По сравнению с обычным просчётом (первый ход строго фиксирован, ходы втёмную не рассматриваются) расширенный просчёт медленнее примерно на ~20--50% в зависимости от структуры руки S. Время такого просчёта, к сожалению, пока довольно большое. От 2-3 минут для простых рук до получаса примерно. В среднем где-то минут 10-15. Счётчик посчитанных раскладов при этом высвечивается в правом верхнем углу, поэтому всегда известно, сколько раскладов посчитано к конкретному времени. Ближе к концу расклады считаются значительно быстрее, чем вначале, т.к. большая часть данных берётся из таблицы, формирующейся в процессе. По завершении просчёта данные в виде списка появляются на рабочей части экрана. (их я собираюсь усовершенствовать, т.е. отражать МО в вистах для различных контрактов, но это потом) Просчёт одиночного расклада начинается, если нажать "готово". Но он всё равно не совсем одиночный. Просчитаются (помимо указанного первого хода и козыря) первые ходы со всех рук и 5 вариантов козырей (включая БК), а результаты будут отражены в таблице (для мизера вариант козыря, конечно, только один - БК). Появится меню, как и в первой версии программы. Можно включить подсветку оптимальных ходов, а также пойти самому вопреки этому и посмотреть, к чему это приведёт. Теперь не обязательно возвращаться к первому ходу, если хочется сформировать новый расклад, это можно сделать из любой глубины розыгрыша текущего. Также в меню предусмотрено и "рассчитать все расклады для S?" (см.выше). Но все расклады считаются только для руки S. Для одиночных раскладов можно выбрать в качестве разыгрывающего любую руку, но она переключится на S, если выбрать этот пункт меню. Кроме этого, таблица активна. Ячейки будут подсвечиваться при наведении мыши, и кликнув по нужной, вы смените козыря и/или первый ход (не формируя новый расклад). Ссылка на прогу: |
|
||
со стрелочками - очень хорошая идея. крайне удобно. спасибо. принимаются ли пожелания по дальнейшему развитию интерфейса? |
||
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
0 Пользователей: