TrueSkill in F#
Following the publication of the F# source code for the TrueSkill Through Time paper, we have used the same inference library code to demonstrate how the original TrueSkill algorithm can be coded. In the attached source code, only the program.fs file is different to the TrueSkill through Time blog post and it builds up the factor graph for an arbitrary N-player game with an arbitrary draw probability. Both these numbers can be entered on the command line when running the resulting sample. We tried to make sure to stay as close as possible to the description on page 3 of the TrueSkill technical report.
The attached ZIP file contains the entire source code which should compile without problems with F# 1.9.3.14. You can either load the solution in Visual Studio 2008 or simply run build.bat form the command line - in either case you will end up with a trueskill.exe program.
Update: Following the release of the F# September 2008 CTP we have updated the source code to work with F# 1.9.6.2. Also, we added one of the new features of F#, namely units-of-measure, which makes the TrueSkill update invocation calls now read as follows:
let priorMu = 25.0<SkillPoints>
let priorSigma = priorMu / 3.0
let priorSkills = Array.init noPlayers (fun i -> Gaussian.Create (priorMu, priorSigma))
let (posteriorSkills, logZ) =
NPlayerTrueSkillUpdate (0.5*priorSigma, 0.01*priorSigma, drawProb / 100.0) priorSkills
Note that one can no longer accidentally pass the variance instead of the standard deviation because the former being of type float<SkillPoints^2>. Try yourself!
Update 2: We had some feedback from Andrew Kennedy that we exploited a current "bug" in the units-of-measure code where literals (such as 1.0) can have generic units. We removed the incorrect usages and re-posted the ZIP file.
Update 3: We extended the example to work with draws. Thanks to Chih-Jen Lin for the suggestion!
Ralf Herbrich & Thore Graepel
Comments
Anonymous
January 01, 2003
Some time ago, I speculated that F# should be the lingua-franca of BI . Well, had I done a little research,Anonymous
January 01, 2003
thanksAnonymous
January 01, 2003
Very nice sample program, but it doesn't show how TrueSkill handles team games. Any hope of seeing how this works? The details page says that teams are compared using a sum of the players, but that doesn't show how each of the players are updated after that comparison. Is it just a comparison of each player on the other team after that?Anonymous
June 16, 2008
Hey thanks guys, this is great!Anonymous
July 28, 2008
Is it possible to go up in rank after you lose a match?Anonymous
November 19, 2008
Nick: No. Even in an absolutely lopsided situation where TrueSkill would avoid making the matchup if at all possible, the best you can do is remain at your current ranking. For instance, run a situation where the winning player has 100 mu, and 0.1 sigma, and the losing player has 1 mu and 0.1 sigma. In this case, the system knows pretty much definitively that these two players are a very bad match (0.0% match quality), and the losing player still won't gain anything by losing, even though he lost to a player who was much higher ranked. The same is going to pretty much hold true in a less theoretical situation, where a very good Halo player (rank 50) who has played a lot of games (and therefore has a low sigma) plays against a freshman player (rank 25, sigma 8.333). The lower ranked player will lose very little mu for losing the match, but won't gain any mu. Their sigma will also not decrease very much because the match was so bad.Anonymous
December 10, 2008
<a href='http://wejolly.strefa.pl/talk-shows-20081125.html'>talk shows</a> <a href="http://wejolly.strefa.pl/talk-shows-20081125.html">talk shows</a> [link=http://wejolly.strefa.pl/talk-shows-20081125.html]talk shows[/link]Anonymous
December 10, 2008
<a href='http://enpasel.ifrance.com/1066120529.htm'>ptfe sheet</a> <a href="http://enpasel.ifrance.com/1066120529.htm">ptfe tube</a> [link=http://enpasel.ifrance.com/1066120529.htm]ptfe[/link]Anonymous
December 10, 2008
The comment has been removedAnonymous
December 10, 2008
<a href='http://lachiacn.ifrance.com/page161.html'>wendys nutritional information canada</a> <a href="http://lachiacn.ifrance.com/page161.html">wendys nutritional information canada</a> [link=http://lachiacn.ifrance.com/page161.html]wendys nutritional information canada[/link]Anonymous
December 11, 2008
movie the wendell baker story [URL=http://virosaur.strefa.pl/topic930.htm]movie the wendell baker story[/URL] [url=http://virosaur.strefa.pl/topic930.htm]movie the wendell baker story[/url] [url]http://virosaur.strefa.pl/topic930.htm[/url]Anonymous
December 11, 2008
what other people think [URL=http://sasitkobr.ifrance.com/2008-11-30-what-other-people.html]what do you care what other people think[/URL] [url=http://sasitkobr.ifrance.com/2008-11-30-what-other-people.html]what other people think[/url] [url]http://sasitkobr.ifrance.com/2008-11-30-what-other-people.html[/url]Anonymous
December 11, 2008
<a href='http://timae.strefa.pl/news414.html'>city of abilene employment</a> <a href="http://timae.strefa.pl/news414.html">city of abilene tx</a> [link=http://timae.strefa.pl/news414.html]abilene city jobs[/link]Anonymous
December 11, 2008
<a href='http://lakinkea.strefa.pl/sitemap.htm'>domain</a> <a href="http://lakinkea.strefa.pl/sitemap.htm">webmap</a> [link=http://lakinkea.strefa.pl/sitemap.htm]top[/link]Anonymous
December 11, 2008
<a href='http://lachiacn.ifrance.com/page384.html'>oxycontin crushed</a> <a href="http://lachiacn.ifrance.com/page384.html">oxycontin crushed</a> [link=http://lachiacn.ifrance.com/page384.html]oxycontin crushed[/link]Anonymous
December 11, 2008
winamp registration key generator [URL=http://wejolly.strefa.pl/winamp-registration-20081130.html]winamp registration key generator[/URL] [url=http://wejolly.strefa.pl/winamp-registration-20081130.html]winamp registration key generator[/url] [url]http://wejolly.strefa.pl/winamp-registration-20081130.html[/url]Anonymous
December 12, 2008
The comment has been removedAnonymous
December 12, 2008
<a href='http://kamada.strefa.pl/page1349.html'>cold purple feet from adderall xr</a> <a href="http://kamada.strefa.pl/page1349.html">cold purple feet from adderall xr</a> [link=http://kamada.strefa.pl/page1349.html]cold purple feet from adderall xr[/link]Anonymous
December 12, 2008
top [URL=http://lachiacn.ifrance.com/sitemap.html]webmap[/URL] [url=http://lachiacn.ifrance.com/sitemap.html]site[/url] [url]http://lachiacn.ifrance.com/sitemap.html[/url]Anonymous
December 12, 2008
aid sleep wellbutrin xl [URL=http://virosaur.strefa.pl/topic1507.htm]aid sleep wellbutrin xl[/URL] [url=http://virosaur.strefa.pl/topic1507.htm]aid sleep wellbutrin xl[/url] [url]http://virosaur.strefa.pl/topic1507.htm[/url]Anonymous
December 12, 2008
en language position report [URL=http://ezpascal.strefa.pl/en-language-position.htm]en language position report[/URL] [url=http://ezpascal.strefa.pl/en-language-position.htm]en language position report[/url] [url]http://ezpascal.strefa.pl/en-language-position.htm[/url]Anonymous
December 12, 2008
define plate tectonics [URL=http://tpasrnrfi.ifrance.com/page386.html]plate tectonics activity[/URL] [url=http://tpasrnrfi.ifrance.com/page386.html]continent plate tectonics theory[/url] [url]http://tpasrnrfi.ifrance.com/page386.html[/url]Anonymous
December 13, 2008
<a href='http://clpatric.strefa.pl/oubocfabr-1073.html'>movie of the year 1975</a> <a href="http://clpatric.strefa.pl/oubocfabr-1073.html">movie of the year 1975</a> [link=http://clpatric.strefa.pl/oubocfabr-1073.html]movie of the year 1975[/link]Anonymous
December 13, 2008
<a href='http://hedewayn.strefa.pl/comment-1544.htm'>walhalla sc county</a> <a href="http://hedewayn.strefa.pl/comment-1544.htm">walhalla sc county</a> [link=http://hedewayn.strefa.pl/comment-1544.htm]walhalla sc county[/link]Anonymous
December 13, 2008
<a href='http://lachiacn.ifrance.com/page265.html'>serenity the movie release date</a> <a href="http://lachiacn.ifrance.com/page265.html">serenity the movie release date</a> [link=http://lachiacn.ifrance.com/page265.html]serenity the movie release date[/link]Anonymous
December 13, 2008
<a href='http://miminerv.strefa.pl/20081129-history-of-martin.html'>history of martin luther king</a> <a href="http://miminerv.strefa.pl/20081129-history-of-martin.html">history of martin luther king</a> [link=http://miminerv.strefa.pl/20081129-history-of-martin.html]history of martin luther king[/link]Anonymous
December 14, 2008
page [URL=http://ezpascal.strefa.pl/sitemap.htm]page[/URL] [url=http://ezpascal.strefa.pl/sitemap.htm]webmap[/url] [url]http://ezpascal.strefa.pl/sitemap.htm[/url]Anonymous
December 14, 2008
<a href='http://brqashenv.ifrance.com/news-process-portfolio-2008-11-30.html'>process portfolio management</a> <a href="http://brqashenv.ifrance.com/news-process-portfolio-2008-11-30.html">process portfolio management</a> [link=http://brqashenv.ifrance.com/news-process-portfolio-2008-11-30.html]business governance management portfolio process[/link]Anonymous
December 14, 2008
bikini.dare [URL=http://lachiacn.ifrance.com/page215.html]bikini.dare[/URL] [url=http://lachiacn.ifrance.com/page215.html]bikini.dare[/url] [url]http://lachiacn.ifrance.com/page215.html[/url]Anonymous
December 14, 2008
top [URL=http://brqashenv.ifrance.com/sitemap.html]link[/URL] [url=http://brqashenv.ifrance.com/sitemap.html]index[/url] [url]http://brqashenv.ifrance.com/sitemap.html[/url]Anonymous
December 14, 2008
colorado revised statutes [URL=http://hedewayn.strefa.pl/comment-1914.htm]colorado revised statutes[/URL] [url=http://hedewayn.strefa.pl/comment-1914.htm]colorado revised statutes[/url] [url]http://hedewayn.strefa.pl/comment-1914.htm[/url]Anonymous
December 14, 2008
park audio and video altoona [URL=http://sasitkobr.ifrance.com/2008-11-29-park-audio-and.html]park audio and video altoona[/URL] [url=http://sasitkobr.ifrance.com/2008-11-29-park-audio-and.html]park audio and video altoona[/url] [url]http://sasitkobr.ifrance.com/2008-11-29-park-audio-and.html[/url]Anonymous
December 15, 2008
link [URL=http://clpatric.strefa.pl/sitemap.html]site[/URL] [url=http://clpatric.strefa.pl/sitemap.html]page[/url] [url]http://clpatric.strefa.pl/sitemap.html[/url]Anonymous
December 15, 2008
<a href='http://kamada.strefa.pl/page1969.html'>egon schiele</a> <a href="http://kamada.strefa.pl/page1969.html">egon schiele</a> [link=http://kamada.strefa.pl/page1969.html]egon schiele[/link]Anonymous
December 15, 2008
lowest airfares online [URL=http://clpatric.strefa.pl/cnamonf-615.html]lowest airfares online[/URL] [url=http://clpatric.strefa.pl/cnamonf-615.html]lowest airfares online[/url] [url]http://clpatric.strefa.pl/cnamonf-615.html[/url]Anonymous
December 15, 2008
<a href='http://miminerv.strefa.pl/20081130-film-shorts.html'>film shorts</a> <a href="http://miminerv.strefa.pl/20081130-film-shorts.html">film shorts</a> [link=http://miminerv.strefa.pl/20081130-film-shorts.html]film shorts[/link]Anonymous
December 15, 2008
index [URL=http://lachiacn.ifrance.com/sitemap.html]url[/URL] [url=http://lachiacn.ifrance.com/sitemap.html]http[/url] [url]http://lachiacn.ifrance.com/sitemap.html[/url]Anonymous
January 06, 2009
OMG i'm playing gears 2, I get rank 4 then i played 6 matches, I won all of them and now I'm again rank 3!! mmmm...don't trueskill estimate your skill looking the win/lost matches?? I think not, come on this system can work for many games but not for gears!!Anonymous
January 13, 2011
Some time ago, I speculated that F# should be the lingua-franca of BI . Well, had I done a little research, http//www.2ticketguys.com/Events/Kid-Rock-Tickets.aspxAnonymous
January 13, 2011
Some time ago, I speculated that F# should be the lingua-franca of BI . Well, had I done a little research, http//www.2ticketguys.com/Events/Kid-Rock-Tickets.aspxAnonymous
January 13, 2011
Some time ago, I speculated that F# should be the lingua-franca of BI . Well, had I done a little research, http//www.2ticketguys.com/Events/Kid-Rock-Tickets.aspxAnonymous
March 06, 2012
I don't know whether its the right forum to ask this. But then I don't know where else. I am planning to create a gaming website, and wanted to use Trueskill rating algorithm. But since it is a trademark by Microsoft, am I allowed to do so?Anonymous
April 24, 2012
This code can't be opened in Visual Studio 2010 but this code can: blogs.msdn.com/.../updated-version-of-quot-trueskill-through-time-quot-bayesian-inference-code.aspxAnonymous
November 30, 2015
"I like what you guys are usually up too. Such clever work and coverage! Keep up the wonderful works guys I've added you guys to blogroll. "
If you love gaming for unity games kindly visit….
http://appresk.in/marketplace/> mobile app development