Keywords

1 Introduction

Our goal is to create solid structures (see Fig. 1) that work under certain conditions (forces or imposed displacements), while weight, displacement, and strains are minimized.

To do such, we will apply meta-heuristics with a minimum of assumptions about the problem and its geometry. The evaluation of the structure is done using solid analysis with Finite Element Method [1].

Fig. 1.
figure 1

Bridge structure that support a load using a minimum of material.

Fig. 2.
figure 2

Example of a grid used for topological optimization.

1.1 Topological Optimization

When a topological optimization is applied, a domain can be divided in a grid of elements, each element is a degree of freedom (DOG), Fig. 1 shows an example. A problem with a 2D domain can have thousands of DOG, for a 3D problem the number raises to millions. A strategy to reduce the complexity of the search space is to use binary elements (Fig. 2).

The aim of the method described below is to work with just a few degrees of freedom, following the idea of how bone shape is defined in mammals.

1.2 Bone Shape

The shape of a bone is mostly defined during embryonic development. A study [2] explains that at first the bone has a very basic shape, then it grows and adapts itself to have an almost optimal shape to support loads.

In [2] it is demonstrated that the bone reacts to the force created by the growing muscles. Because of external load forces inside the bone strains are generated. In the bone cells where the strain is bigger the osteoblasts make the concentration of calcium increase, otherwise it is reduced. This procedure makes bones attain a more resistant shape, with a tendency towards an optimal (Fig. 3).

If the muscles, attached to a bone, are paralyzed no strain is generated and a bone will not develop an optimal shape (Fig. 4).

2 Structure Optimization Using Internal Strain

The Finite element method is used to model the structure, it starts with an empty rectangular domain. The measurement used for internal strain is the von Mises stress or equivalent tensile stress.

Some research has been done on creating a simple method that uses internal strains to optimize structures [3].

  • This method does not use binary elements, instead the thickness of elements variates in a continuous way.

  • How thickness will grow or shrink will depend on the von Mises stress inside each element.

  • Optimization is done iteratively.

  • There is not a fitness function.

  • The method works as a cellular automaton.

  • There are only five degrees of freedom to control the optimization process.

Fig. 3.
figure 3

Model of mouse embryonic bone development, image from [2] (with permission).

Fig. 4.
figure 4

Osteoblast distribution is controlled by mechanical load, image from [2] (with permission).

2.1 Cellular Automaton

The rules to control the thickness \(t_{\text{ e }}\) of the element (cell) are simple: The thickness can grow by a factor \(f_{\text {up}}\) or be reduced by a factor \(f_{\text {down}}\).

Let \(\sigma _{\text {vM}}\) the von Mises strain inside the element and \(\sigma _{\text {vM}}^{\text{* }}\) a threshold criteria.

figure a

There are top \(t_{\text {top}}\) and bottom \(t_{\text {bottom}}\) limits for the thickness:

figure b

The evolution process of the cellular automaton depends on five parameters:

  • von Mises threshold \(\sigma _{\text {vM}}^{\text{* }}\).

  • Increase thickness factor \(f_{\text {up}}\).

  • Reduction of thickness factor \(f_{\text {down}}\).

  • Top thickness value \(t_{\text {top}}\).

  • Bottom thickness value \(t_{\text {bottom}}\).

3 Example: Arc

This is piece of steel with two fixed corners that has to support a force applied on a point, see Fig. 5.

Fig. 5.
figure 5

Geometry of the arc problem.

Table 1. Parameters used to obtain a valid structure.

3.1 Successful Arc Structure

For the parameters in Table 1, a successful structure is generated.

The evolution of the cellular automaton is shown in the sequence of images, warmer colors indicate more thickness, cooler colors less thickness. If thickness falls below \(f_{\text {bottom}}\) the element is not shown.

figure c

The final result is shown in Fig. 6.

Table 2. Parameters used to obtain an invalid structure.

3.2 Invalid Arc Structure

The parameters used are in Table 2. In this case the top and bottom limits have been changed. In particular the bottom limit has been increased, with this changes, structure development fails.

Looking at the evolution of the cellular automaton, in both cases success and failure, at early iterations the thickness of the right part of the structure is reduced. In the successful case thickness of this side is increased in the following iterations, until it creates the right part of the structure. If the bottom limit is raised too much the evolution of the right side will be cut too soon, producing an invalid arc structure.

figure d

The final result is shown in Fig. 7.

Fig. 6.
figure 6

Final shape.

Fig. 7.
figure 7

Final shape.

4 Differential Evolution

To search for structures that tend to an optimal shape, a meta-heuristics has to be used. What we have to find are the parameters that improve the structure (in terms of weight, displacement, and internal strain).

The search space will have five dimensions that correspond to the five parameters used to control the cellular automaton.

  • von Mises threshold \(\sigma _{\text {vM}}^{\text{* }}\).

  • Increase thickness factor \(f_{\text {up}}\).

  • Reduction of thickness factor \(f_{\text {down}}\).

  • Top thickness limit \(t_{\text {top}}\).

  • Bottom thickness limit \(t_{\text {bottom}}\).

The search of parameters that produce a good shape is done using differential evolution [4]. The fitness function will measure the weight of the structure w, maximum displacement d and the maximum von Mises in the structure \(\sigma _{\text {vM}}\), we propose a very simple fitness function

$$\begin{aligned} F := w \cdot d \cdot \sigma _{\text {vM}}. \end{aligned}$$

The number of steps of the cellular automaton will be determined heuristically based on some test cases. For our experiments, 100 is the number of steps chosen. Each evaluation of the fitness function will have to complete this amount of steps.

Parameters of the differential evolution will be: population size \(N\sim 64\), crossover probability \( Cr =0.8\), and differential weight \(D=0.5\).

The algorithm of differential evolution is:

figure e
Fig. 8.
figure 8

Diagram of the cluster used to run the optimizer.

4.1 Implementation

The program to run this method was programed in C++ using the MPI (Message Passing Interface) library for communication between computers in a cluster. The finite element library used to solve each iteration of the cellular automaton was FEMTFootnote 1.

The cluster used to test this method has 64 cores (Fig. 8), to maximize the usage, the population size was chosen to be 64. Solution speed was increased by loading all data for the structure on each core, only the elemental matrix is assembled for each step of the cellular automaton.

The solver used was Cholesky factorization for sparse matrices. Reordering of the matrix is done once and only the Cholesky factors are updated, this calculus is done in parallel using OpenMP [5].

For the examples shown the solution of the finite element problem takes approximately 200 ms.

Fig. 9.
figure 9

Geometry of the problem.

The cellular automaton uses 100 iterations, so the calculation of each generation of the differential evolution algorithm takes approx 20 s.

5 Global Optimization Example: Bridge

A steel bar that has two supports on opposite sides, it has to support its own weight and also a force concentrated in the middle (Fig. 9).

The next table shows some the best individual after n evaluations, an its fitness function.

figure f
figure g

The final structure is shown in Fig. 10, the corresponding von Mises is shown in Fig. 11.

Fig. 10.
figure 10

Geometry of the problem.

The parameters for the final structure are:

$$\begin{aligned} \mathbf{x}=\left( \sigma _{\text {vM}}^{\text{* }} = 4.55\times 10^6, f_{\text {up}} = 1.03, f_{\text {down}} = 0.96, f_{\text {top}} = 5, f_{\text {bottom}} = 0.2\right) \end{aligned}$$

The resulting fitness function:

$$\begin{aligned} w=1.03\times 10^5, d_{\text {max}} = 2.79\times 10^{-4}, \sigma _{\text {max}} = 1.06\times 10^7 \end{aligned}$$
$$\begin{aligned} F\left( \mathbf{x}\right) =3.046122\times 10^8. \end{aligned}$$
Fig. 11.
figure 11

Final von Mises.

6 Conclusions

We have presented a bio-inspired method to search for optimal structures under load conditions.

It is interesting to see that in mammals the shape and internal structure of the bone is not codified in the genes. Only some thresholds associated with the behavior of bone cells are codified. With this idea we can reduce an optimization problem with thousands or millions of degrees of freedom (the state of each element in the geometry) to an optimization with just a few degrees of freedom (the parameters used for the cellular automaton).

The evaluation of the fitness functions is expensive because we have to leave the cellular automaton to operate for many steps, we used parallelization in a cluster to overcome this, each core on the cluster evaluates an individual.

Some interesting research can be done in the future, for instance we used a very simple fitness function, a more intelligent selection of this function could be useful to get better and faster results. Also, more complex methods can be used for the optimization, like Estimation of Distribution Algorithms. In the near future we will test this method on 3D structures.