I look forward to seeing what you have done.ericfarmer said:First, thanks very much to k_c for sharing your changes with me. Although I ended up taking a rather different approach, you (1) motivated me to revisit my resplitting algorithm, and (2) made the key observation that I had missed all this time about how to accurately compute resplits within the "framework" of my CA. (More on this shortly.)
The result is an update that-- I think-- now accurately computes CDZ- or CDP for splitting up to a maximum of 2, 3, or 4 hands. The new version 5.5 is available pre-built for Windows or via Bitbucket, at the two links at the top of this thread.
Also, thanks very much to MGP as well, for your recently available CA that proved very useful in testing. I encountered some interesting discrepancies between my results and those reported elsewhere, including k_c's changes to my code, as well as Cacarulo's tables from the old bjmath.com (http://www.bjmath.com/bjmath/ev/ev.htm (Archive copy)). Your CA was very handy for verifying some test cases, particularly a few very small shoes that I analyzed via brute-force.
k_c, I have not tracked down yet what is the root cause of the differences in your results, but I think I can identify where the issues occur. The problem seems to arise whenever there are more pair cards in the shoe than the maximum number of split hands. For example, splitting 10s for any number of decks, or splitting any pair with two or more decks, appears to generate different results.
(For anyone interested, many years ago I wrote up a rather terse description of how my algorithm now looks, at the link below. The idea was to aggregate the EV in terms of a relatively small number of parameterized EVs, conditioned on removing some number of pair cards and non-pair cards from the shoe. I never bothered to implement this, because it seemed difficult-- within my framework-- to compute the values conditioned on removing unspecified *non-pair* cards. But k_c's recent approach had the key new ingredient: that you can recursively evaluate those conditional EVs, eventually in terms of EVs with only *pair cards* removed, which is more easily do-able in my CA. The math involved is at:
http://sites.google.com/site/erfarmer/downloads/blackjack_split.pdf)
In the meantime I found the cause of the marginal errors in my algorithm. I think you are probably right about where they occur. In one place I had removed one too many pair cards.
I have not used this algorithm in years and when I used it I did not process all up cards at once. That is the hardest part for me in using it with your code because since the split function is recursive it's hard to keep track of what is removed.
I have downloaded and installed tortoiseHg but I still haven't been able to get my Bitbucket account to work. I uploaded my latest changes to my website if anyone wants to see them. These are direct links to download a zip file. At first glance it appears that the split EVs are now right.
(Dead link: http://www.bjstrat.net/Downloads/FarmerBJ_v53_VS2010.zip) _FarmerBJ_v53_VS2010.zip_
(Dead link: http://www.bjstrat.net/Downloads/FarmerBJ_v53_vcpp6.zip) _FarmerBJ_v53_vcpp6.zip_
My main problem right now is that I don't have a lot of time to do these kind of things.