Around 2006 I was working on an project where I had to find a specific distribution of objects on a surface. In other words, I had to position approximately 200 kubes on the surface in such a way that all the cubes could be seen from a given location. Because I didn’t want to spend the next two weeks moving around boxes, I was looking for a way to automate the process. After some research I found the solution. I had to use a global optimization algorithm which would be able to solve a problem with 400 variables as efficient as possible. Well, sounds easy, doesn’t it? Funnily enough it really was. After some more research I finally implemented a simple variant of the classical multiobjective genetic optimization algorithm. The implementation at the time was done entirely in CHOPS with some help of Python. Apart from being rather slow, the solver did a good job. I really had fun implementing the algorithm and became quite fascinated in optimization in general but unfortunately I had no time to get deeper into this topic. Half a year later I started to work on it again as a little side project in my spare time. Well, 10 years and around 18000 lines of code later it’s still a side project and still far from being finished. Over the time I have implemented the following algorithms in Houdini with varying success:

Single-Objective Optimization Algorithms

- GA Genetic Algorithm
- DE Differential Evolution Algorithm
- SaDE Self-adaptive Differential Evolution Algorithm
- SA Simulated Annealing Algorithm
- PSO Particle Swarm Optimization
- GCPSO Guaranteed Convergence Particle Swarm Optimization
- ABS Artificial Bee Colony Algorithm
- HBA Honeybee Algorithm
- IWD Intelligent Water Drops Algorithm
- FPA Flower Pollination Algorithm
- HS Harmony Search Algorithm
- CS Cuckoo Search Algorithm
- CMAES Covariance Matrix Adaptation Evolution Strategy

Multi-Objective Optimization Algorithms:

- NSGA Classical non-dominated Sorting Genetic Algorithm
- NSGAII Non-dominated Sorting Genetic Algorithm
- ssNSGAII Steady state Non-dominated Sorting Genetic Algorithm
- SPEA2 Strength-based Evolutionary Algorithm
- ISPEA Improved Strenth-based Evolutionary Algorithm
- MOGA Multi-Objective Genetic Algorithm
- PAES Pareto Archived Evolution Strategy
- IPESA2 Improved Pareto Envelope-based Selection Algorithm
- VEGA Vector Evaluated Genetic Algorithm
- GDE3 Generalized Differential Evolution
- MODE Multi-Objective Differential Evolution
- EMOEA e-Dominance-based Multi-Objective Evolutionary Algorithm
- IBEA Indicator-Based Evolutionary Algorithm
- MOEAD Multi-Objective Evolutionary Algorithm with Decomposition
- MOPSO Multi-Objective Particle Swarm Optimization
- SMPSO Speed-Constrained Multi-objective Particle Swarm Optimization
- MOFPA Multi-Objective Flower Pollination Algorithm
- MOSA Multi-Objective Simulated Annealing

Below are some of the results using different algorithms on various test problems. More about it could be found here