Optimization by evolutionary algorithms
Optimization is not everything what evolutionary algorithms can. They can also help with classifications, making decisions, designing, ... Every task that can be rewritten as optimization problem can be solved by these algorithms. Few examples:
- You have factory producing many products. Each of the product requires different machines to be produced. You don't have enough machines to produce everything at once. The goal is to make a schedule of what and when should be produced, so in total you get all the products with the shortest time, the lowest cost and the highest quality.
- You have plenty of photos from satellite. It should be translated into computer map and data, so you can easily process all the data, find any objects like road, building, etc.
- You need a special pipe for your engine. The fuel will go through the pipe to give the power to the engine. It is extremely important that the amount of fuel will get to the engine with proper density and at specified time. The algorithm can design the pipe according to your needs.
All of these examples may be rewritten as optimization problem, so evolutionary algorithms will find the answer. These three examples don't show all possibilities. You can much more with this powerful tool.
All right, but how can we know the better way of doing the same? There are two possibilities:
- Hire high level experts in mathematics, physic, economy, etc. - depends on what you want to optimize. They will study your case carefully and they will find the best solution. Probably it will take a lot of time, but you will get the best possible optimization. What if the situation changes? One of the factor in your solution is no longer valid or you need to add new restrictions? Your experts have to start the work over again.
- Use artificial intelligence. Evolutionary algorithms will find the solution for you much faster. You need to invest some time at the beginning to prepare the algorithm according to your individual needs and deploy it into your system to cooperate with your infrastructure. If the conditions change, the algorithm can find new answer almost ad-hoc.
Two differences between experts and artificial intelligence. AI may not find the best solution, but most likely it will find very, very good, close or exact the best solution. Second difference, for some problems experts can't find any solution. It may be impossible to find it from the mathematics point of view. AI will find solution for any problem including these non-mathematics ones.
Something more about evolutionary algorithms.
There are plenty of different types of algorithms:
- Genetic Algorithms - everything has started from these algorithms. They are based on the binary chromosome (solution). The solution (chromosome) is represented by bits 0 or 1. It may looks like 01010101110, then it is translated into solution understandable for you. Usually these algorithms are the fastest and easiest to implement, for example SGA.
- Evolutionary Strategies - the solution is a list of real numbers. The evolution (looking for the best solution) is very different than GA. Here, a maths is crucial as the numbers must evolve. For example ES(1+1), ES(mi, lambda, kappa, ro)
- Estimation of Distribution Algorithms - this is another big family of evolutionary algorithms. Inside this type is many subtypes for different chromosomes (solutions): for binary, for real numbers, etc. EDA is not looking for the best solution. It creates a probabilistic model that can generate the best solutions. Often it is used to solve very complicated and tricky problems. For example: CGA, MIMIC, UMDA, UMDAc, BOA, hBOA.
- Genetic Algorithms for permutation problems - they are the best if you are looking for the best possible order of something. For example you look for the order of places to visit in the city in the most efficient way. Special operators are used for these algorithms, for example: PMX, OX, CS.
- Grammatical Evolution - the algorithm works on some sentence. The sentence may be logical formula, for example "if A1 is true and (not B2 xor C3) then Z22". Mostly, it is used in expert systems, classificators.
Remember. You don't have to use any of existing algorithm. You can create your own based on existing operators or even create your own operator. Sometimes it can give better results like the suit produced individually.