Back in april 2013, I read an article at eliax.com (big thanxs to José Elias for the greatest blog) about a new approach at artificial intelligence based solely on entropy concepts, driven just by thermodinamical laws, that was surprisingly good in making phisyc systems, of any kind, to "behave intelligently": Causal Entropic Forces by Alexander D. Wissner-Gross.
It chatched my attention so I jumped from link to link to link in search of some more insight on it. Reading those links made me understand the idea even before taking a look at the original paper, and when I read the world "Montecarlo", the algorithm popped up in my mind.
So I sat and code a quick and dirty approach to the algoritm in a couple of days, resulting in the first version of the kart simulator. It was very very simple, but the AI managed to drive the kart on track quite impresivley... and I didn't code anythink like "run" or "drive inside the track".
After this first success, I started to really investigate the paper, trying to get down to the formulaes to know more about the correct way to do it, but I was not really prepared to understand it all, really, so I focused on the kart example, trying to make it better by my own.
Eventually, the AI becomes as good at driving this kart as anyone can be, seriously, and small "imperfections" on how the kart is driven use to be my fault, as the simulation code for the kart physics is just a bad "proof of concept" and is not really that realistic, so the AI does it right for the pseudo-realistic simulation I gave to it.
Actually, V0.7 of the algortihm mimic almost 100% of the paper formulaes properly -as far as I can tell- with some simplifications and also with some additions of my own.
So how good this AI can be? Well, basically you can make the AI manage any kind of "thing" you can simulate as long as you let it decide on one or more "free parameters" or degrees of freedom.
It means that, if you have a drone, a lunar rober, a probe to a distant sun, a industrial proccess you want to optimize, a simulation of an ameba... just anything, as long as you let the AI push the "joysticks" and provide a way to simulate how will the system evolve in a small time, the AI will move the joysticks in such a way the drone will fly in a "intelligent way", whatever this means. You don't need to give it a goal, nor instructions on how to drive the drone, just let it play for you.
I think this is such an important step in AI that, in a future, it may become as important as todays neuronal networks are, and who knows, if both approaches are mixed together the right way, we could get magic from them.
So I open up all my findings, thoughts, videos, code and exes so anyone can play with this, invent new ways to apply it, games, industrial optimizations... but sharing findings here so everyone can benefit from it.
Please feel free to download and play with the files, comment on it, ask about anything, share your wildest thoughts, modify or torture the code, convert to other languajes, etc., I will apreciate!