In our office, we regularly enjoy some rounds of foosball / table football after work. I have put together a small java program that generates random 2vs2 lineups from the available players and stores the match results in a database afterwards.
The current prediction of the outcome uses a simple average of all previous match results from the 4 involved players. This gives a very rough estimation, but I'd like to replace it with something more sophisticated, taking into account things like:
What would be the best algorithm to predict the game outcome as accurately as possible?
Someone suggested using a neural network for this, which sounds quite interesting... but I do not have enough knowledge on the topic to say if that could work, and I also suspect it might take too many games to be reasonably trained.
EDIT:
Had to take a longer break from this due to some project deadlines. To make the question more specific:
Given the following mysql table containing all matches played so far:
table match_result
match_id int pk
match_start datetime
duration int (match length in seconds)
blue_defense int fk to table player
blue_attack int fk to table player
red_defense int fk to table player
red_attack int fk to table player
score_blue int
score_red int
How would you write a function predictResult(blueDef, blueAtk, redDef, redAtk) {...}
to estimate the outcome as closely as possible, executing any sql, doing calculations or using external libraries?
Play For Free To successfully join a Predictor contest, you need to enter what you think the scores will be for the 6 matches on offer. If you get the scores 100% correct, you stand the chance to win N50 million. Pro tip: You need to predict what you think the score will be at the end of 90 minutes.
Use the TrueSkill algorithm, it is very good at this. I've implemented it for foosball and chess and it works very well. Coworkers have told me that it's almost too good at this.
For complete details on how it works as well as a link to my implementation, see my "Computing Your Skill" blog post.
Why use a neuralnet? Use statistics, probably the correlation between each player would be good measure.
Just to start let's gather some information: For a given player we need:
A good attacker will rack up points. A good defender will prevents points from being scored.
The real info will be from a good attacker playing against a good defender.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With