Competitions & Artificial Intelligence

Hello my friends

I started this morning with a Vida cappucino, sponsored by a colleague. It’s an unusual start because I don’t typically go out to buy coffee since I tend to make my own. After I had added a little bit of sugar and had my first taste of the rich, creamy goodness, it occurred to me that it quite simply follows the change in routine I had in the last few days.

The next 100K Challenge

Last weekend, I started splitting my time between my new game and the next Entelect R100K Challenge. I typically don’t like to jump between projects but I seem to always end up doing it. I constantly remind myself that when I do, it appears that I don’t finish what I start, yet I’m rather good at going back to finish things eventually. I’m sure that it’s a normal notion for people to think that they go back to finish, even though in reality they don’t or that so much time passes that by the time they do it is almost too late. So I suppose I need to be extra vigilant about that. I made the shift from atStumps to dedicated ‘smaller’ games as a result of the first 100K Challenge so I’m keen to actually enter one of the challenges with a proper entry and not some last minute hack. This year it’s a Pacman challenge, where your bot needs to score more points than the opponent’s bot. I’ll see if I can squeeze it in with recent events, so here’s to hoping.

Not my first last minute entry this year

In spite of my best efforts I always seem to get stuck doing things at the last minute though. I must admit it just seems a lot harder to justify the required time that I need dedicate if the deadline isn’t anywhere near the immediate future. After all, I have a wife and children and they need some of my time too. Earlier this year I entered the Hello World Open and you guessed it, I entered at the last minute. Actually, there was no other way because you had a very short window to enter the competition but I ended up not even using all of that and only actually did something the very last weekend!

[Editorial note: this little bit added because it got dropped somewhere]  The idea was simple, you had to write a bot that had to race against other cars on a ‘slot car’ track. Sounds simple, but my oh my is there a lot to it.

The competition divided the world into 3 regions, namely West, Central and East and as a South African I found myself in the Central region, competing with all of Africa and Europe. To make things really hard, you didn’t know what the qualifying race tracks would look like before hand. In addition, before each race they would randomize the traction of the tires on the track, the weather conditions as well as the engine power of you car. This meant that for every race your car had to learn everything from scratch and you had to do a lot of calculations to keep your car on the race track.

The competition then held qualifying rounds in each region separately. In each region, there would be 4 rounds of races and after each set only a certain number of teams would progress.

Round One, not getting my hopes up

Round one consisted of 856 teams and I ended up in the 181st position with 1 win, 2 second’s a third and a fourth place. Not a bad start and in fact, a better start than I anticipated. I had a bit of a look and of the South African teams, I was the only one I could find who progressed to round 2. I didn’t expect this, I thought I would bow out early. I thought that I would realize that I missed something obvious somewhere and then regret not knowing doing it right in the first place. See what I did there? I sold myself short. I think we all do that, we prepare for the worst simply to be a little detached and to avoid disappointment. We think we please each other by doing it, we don’t. We don’t risk enough and then we ask why we don’t get the results that we want.

Hello World Open Round 1

Hello World Open Round 1

Round Two, rather unexpected

So round two, which I really never planned on seeing, consisted of 203 teams. I thought, WOW, the top 203 teams would surely beat me to a pulp. Embarrass me in new ways that I’ve yet to conjure up. Now don’t take my skepticism wrong, I know I’m a good programmer. Maybe even a great one. But I’m no mathematician. I figure math out, it doesn’t come naturally to me. Like everyone else in the competition, I followed the reddit threads about it fairly closely hoping to learn something, which I never found until it was too late. What I soon discovered though, was that there was a huge amount of math involved. The turning angles, for example, is an under-damped harmonic oscillator. Say what? You try and code a car from start to finish, test it on the race tracks and also figure out math that is completely and utterly over your head. Just too much to do for so little time. My car winged it. Well not quite, my calculations were accurate to about 0.1 but that isn’t nearly enough to compete with the guys who had the calculations spot on.

Hello World Open Velocity and Turn Angle calculations

Hello World Open Mathematical Predictions

So, as I was saying.  Round two consisted of 203 teams and I ended up the 46th position with 1 win, 3 second’s and a last place. I couldn’t believe my eyes, I had made the top 50 for Europe, Middle East and Africa! I was through to the next round!

Hello World Open Round 2

Hello World Open Round 2

Round Three, completely flabbergasted

Round three was fought tooth and nail. It came down to the last race, it was close. I finished 16th with 1 win, 2 second’s and 2 third’s. I was astounded. I would never have thought that I would be able to get this far or that I would finish 16th. It showed me that it is never as clear cut as one might think. The top 12 teams went on to compete in the final round, I had just missed the cut 🙂

Hello World Open Round 3

Hello World Open Round 3