Nah, it’s not my biological genes that can do the reverse engineering jobs; but it’s the artificial ones that I created for the previous Genetic Algorithm experiments. Do you believe there is a machine that can automatically create just about anything you dream of? You want to make some cool computer programs, games, fashion designs, or trading strategies, but you don’t have any ideas on how to do it? Well, today is your lucky day. Your prayer is answered because this Genetic Machine can produce all of those for you. You won’t need to teach it or feed it. Just tell it what you want, click ‘Start Building’, wait twenty four hours, and there you have it, your own piece of invention without any hassles. Just one thing though. The machine, it doesn’t exist. However, there is a less advanced machine that does exist and can create some items on its own. NASA used it to automate the creation of the UHF antennas for Mars Odyssey spacecraft. Well, the machine is just a today’s computer with special genetic software installed. Well, I can’t show the NASA’s special software to you, but I have something similar to show off today. I built a software program using the same concepts and algorithms (Genetic Algorithm and Genetic Programming) that NASA used. I gave it a temporary name ‘Program Tree Evolver’.
For now, Program Tree Evolver doesn’t produce antennas. It can however reverse engineer some data fed into it to recover some hidden formulas, and these formulas can be used to reproduce the same input data. “Okay, you’ve found some formulas, so what’s the big deal?” you says. I can tell you it’s a big deal. If you know the formulas that can reproduce the data that was first fed into the software, you’ll know the process behind everything. Says, you’ve collected historical data of tornados such as the paths of tornados and the geographical pressures. Now you want to find out how the geographical pressure affects tornado’s movement. So then you feed your tornado data into the software, click “Start” and wait until it generates the formula. With such a clear formula in your hand, you’ll understand exactly how the pressures move the tornados, and ultimately you’ll be able to predict tornados, project their destructive paths, develop early warning systems and save lives. Got it yet? Here’s another interesting example. Says, you want to be able to predict the stock prices so that you can earn a living from stock trading. You want study the reasons why the price goes up and why it goes down. You have historical prices of many companies. So, you put that data into the software and wait until it generates the formula. Bingo! The formula tells you the secrets behind stock market movement, and with it, you can easily predict where companies will go to and make decent money from it. To put it briefly, the software allows you to reverse engineer data back into its original formula.
Well, I made a lot of assumptions in the examples above. You can’t always derive some formulas from data, because formulas might not be in there first place, or Genetic Algorithm simply can’t solve it. Moreover, you can’t always have the formulas in such a short duration especially by working in your comfort zone. In reality, you might have to connect many powerful computers in a big grid to form a supercomputer. You’ll have to collect much data, and before you can feed it into the software, you’ll have to code some evaluation procedures so that the software knows which solutions are better or worst. Many times, you’ll have to code data converters and simulators to the purpose. All I’m saying here is that reverse engineering for formulas is possible but much more difficult than you think.
For a short and simple demo, I fed some numbers generated from Excel using a formula. I then exported and fed the results into Program Tree Evolver. I didn’t enclose formula to the program. Let’s see if it can reverse engineer it. Soon enough, it did! It found the correct formula in ten seconds. The formula (P1 * P0) – (P1 / P2) is presented in a binary tree. See it in the screenshot below.