Цитата (KingRing @ 4.2.2020)
в твоём примере действительно просто, но все показано на одном действии, а в покере одним экшеном все не ограничивается.
допустим ты сыграл первое действие рейз, у которого ЕВ -10, а солвер сыграл 0% рейз, тебя вколили. выходит ранаут терна для которого ведется расчёт стратегии. если ты хочешь, чтобы солвер учитывал ЕВ именно этого ранаута, для его стратегии нужно рассчитывать все другие выходы на терн в которых есть его стратегия, это дополнительные расчёты/дополнительное время ожидания (тоже самое для ривера). а в том выходе на терн, который сыграл ты (через рейз на флопе) для солвера не будет стратегии, потому что он так не играет, как тогда ты представляешь применить подобное уравнение "0*0,5+(-5)*0,3+(-10)*0,2=-3,5" на терне?
Если я сыграл рейз, который солвер делает в 0% случаев, то на этом раздача сейчас и заканчивается. В программе есть параметр "Error threshold", и если ты совершил действие реже, чем этот параметр, то вылезет error и раздача будет закончена. Этот параметр не может быть меньше 0,1%, т.к. иначе будут как раз те проблемы, о которых ты пишешь, если солвер так не играет флопе, то и дальше у него не будет стратегии. Так что тут никакой проблемы нет.
Цитата (KingRing @ 4.2.2020)
если ты сформулируешь четкую постановку, какие показатели должны рассчитываться, каким образом, по каким формулам, с разными примерами и желательно с обоснованием для чего это нужно, я это передам разработчикам и думаю мы это внедрим, если получим подтверждение от других пользователей, что это действительно полезные показатели и это реально реализовать (есть архитектура приложения и она безусловно имеет ограничения, которые в первую очередь связаны с тем, чтобы приложение эффективно работало с базовым функционалом).
То что я предлагаю по сложности, да и по форме, практически, то же самое, что и подсчет ev игрока, как он делается сейчас. Давай приведу пример только с коллами и фолдами на 3 улицы. Большее количество опций ничего принципиально не изменит.
Пусть флоп QQQ, терн K, ривер A. У нас XX. Колл нашей руке на флопе 0, фолд -10; колл на терне на K -5, фолд 0; колл на ривере на A -10, фолд 0.
Мы сыграли с нашей рукой колл/колл/колл. Наше ev в программе считается так: 0+(-5)+-10=-15.
Солвер пусть играет на флопе 90% колл, 10% фолд; на терне K 50% колл, 50% фолд; на ривере A 10% колл, 90% фолд.
Тогда его ев, на этом ранауте, будет считаться аналогично нашему: (0*0,9+(-10)*0,1)+((-5)*0,5+0*0,5)+((-10)*0,1+0*0,9)=(-1)+(-2,5)+(-1)=-4,5
Для чего это нужно: Сейчас программа сравнивает решения игрока не с солверной игрой, а с максев эксплойтом солверной игры и наказывает (посредством выводимого лузрейта) тебя, даже если ты вдруг сыграл идеально по солверу. Если я сыграл раздачу в -1bb, солвер в -0,1bb, максэксплойт в 0, то понятно что я ошибся. Если я сыграл раздачу в -1bb, солвер в -0,9bb, максэксплойт в 0, то понятно, что я попал в плохо просчитанный ран. Но сейчас, когда я не могу посмотреть лузрейт солвера, для меня обе раздачи по результату одинаковы.
Плюсом мне, например, интереснее сравнить свои винрейты с солвером, а не с некоторой максев стратегией, которая абсолютно не сбалансирована.
1) Например, я хочу потренировать hu против солвера, но сам использую на префлопе не солверные диапазоны, а свои. Т.е. часть рук у меня посчитано, что я на сб(ip), часть рук, что я на бб(oop). Я ведь прав, что сейчас я не смогу сделать одну такую тренировку, а только 2 разные, одну для сб, другую для бб?
2) Ну мне казалось, что все просто: пусть ев колла 0, ев фолда -5, ев рейза -10. Я сыграл фолд и программа записала мне ев -5. Солвер же сыграл в 50% колл, 30% фолд, 20% рейз, его ев для этого решения 0*0,5+(-5)*0,3+(-10)*0,2=-3,5. Ну и точно также, как наши ошибки, суммируем по каждому решению в раздаче, получаем суммарную ошибку(лузрейт) солвера относительно максев эксплойта по данному ранауту.