Octopus is a plug-in for Grasshopper that extends the functionality of Galapagos by introducing multiple fitness values (multi-objective) to the optimization process. It is based on the SPEA-2 multi-objective evolutionary algorithm, of which more information can be found here.

In order to test Octopus, let us consider a simple benchmark with 2 contrasting objective functions, related to concrete shells. A NURBS surface, defined by 9 control points, has been constrained at the 4 corners and subdivided into a 10×10 mesh. Gravity load and a uniform distributed load have been applied, and the structural model has been analysed with Karamba. Exception made for the 4 corners, the Z coordinates of the control points have been used as the design variables of the problem. Lightness and stiffness have been used as the contrasting fitness functions.

In this case, the final result cannot be considered as a single individual, because the multi-objective optimisation is producing a set of solutionswhich fit both the initial requirements. This group is generally called Trade-off or Pareto front. For more detailed information, please refer to DEB, Multi-Objective Optimization using evolutionary Algorithms.

The optimal solutions for the 2 separated fitness functions are well known and it is represented in the figure below. The planar configuration is the lightest, while the dome is the stiffest. Other screenshots from the pareto-front and from the remaining dominated solutions are also shown below.

The benchmark for this test is a reproduction of one of the problems studied to develop a conference proceeding (by Tomas Mendez Echenagucia, Alberto Pugnale and Mario Sassone), which will be presented at the ICSA 2013 in Portugal. In that paper, the NSGA-II algorithm used has been developed by Tomas Mendez Echenagucia and Mario Sassone.