Math formula for voting system that takes candidate age into account.

41 Views Asked by At

I have the following problem (not exactly but close):
I have a website where people can post their cats. Its called bestcat.com. Everyday people submit cats and people can vote once on their favorite cat. The cat with the most votes wins. But I also would like to make sure that new cats win regularly, so people don't just see the same cat over and over again.
In order to do this I thought I'd create a boost system. People can vote for cats to increase their boost value. The cat with the highest boost wins. But in order to give newer cats a chance of winning, the boost value would be set according to the post time. So a cat posted on day 1 would have a boost value of 0, then get 50 votes and be the first winner. Then day 2 a new cat gets posted and automatically gets a boost value of 100, beating the first cat, and so on. This also makes the database setup easier, since the boostvalue has to be set once, and only ajusted once the cat gets voted for.
Now the problem with this setup is that it works fine if the site is regularly visted by around 50 or so people. But that number may fluctuate. May some periods it has 700 visitors in which case the top cat may stay on top for a week, then drop off to 20 visitors, making the latest cat always the winner by default.
Is there some formula I can use that takes both the cats votes, the posting time and the amount of voters into account?

1

There are 1 best solutions below

2
On BEST ANSWER

Sample approach that you will need to fine tune.

If a cat has won anytime in the last 7 days, on each day's voting you deduct 30% of that day's votes from the cat's votes. So, however many people vote that day, the cat starts 30% in the hole.

This means that every vote the cat gets increases his vote count by $(0.7)$ of a vote, and every vote for some other cat also decreases the famous cat's vote by $(0.3).$

Similarly, if the cat won between 1 week and 2 weeks ago, the penalty is 20%. Between 2 and 3 weeks ago, the penalty is 10%.


If you have more than 1 famous cat being voted on, on a specific day, they both get penalized, as above (e.g. recent winners both get penalized 30% of the vote).


In addition to the above considerations, you can also put a sliding scale on the penalty (e.g. $< 100$ votes, the penalty is 40% instead of 30%).