3.1. Background
Currently, 3D printing gives our products a lot of geometric freedom in comparison with conventional means of manufacturing, but it has been found that, due to fixation, these new advantages are not being exploited as they could be.
On the other hand, we find that interesting studies have been carried out, separately, in the fields of genetic algorithms and 3D morphing, but never relating them to each other.
For this reason, we decided to initiate a new branch of research by joining these series of concepts and techniques and developing them together as a new design and 3D modeling methodology. The aim of this new approach is to detach the designer from the preconceived shapes inherited from culture and conventional means of manufacturing.
3.2. Conceptual Explanation
Currently, conventional 3D morphing processes consist of changing from an initial to a final shape while having a clear mental image of how the latter should be. This means that we are dealing with a linear process between two models we already know. In contrast, the methodology defined in this paper allows, starting from a known initial model, to generate a variable number of suitable solutions. In other words, we are proposing a process of generative conceptual creation which is divergent, and in which the designer, once in possession of a series of results, will just have to top off.
This work presents a new paradigm in 3D modeling techniques, consisting of the creation of different geometric solutions to a problem starting from a series of requirements and stimuli.
In order to implement this process, the working structure of genetic algorithms, as proposed in [
16], is used. In this way, the defined process is a perfect analogy to the genetic evolution of the species of living beings.
Since the methodology proposed combines the evolutionary processes and 3D object modeling, it seems appropriate to term it “evolutive modeling”.
Evolutive modeling consists in the creation, by means of genetic manipulation of geometries in a 3D space, of models capable of representing an object in real life. The conditioning factors that will define the final shape will be, on the one hand, design requirements and, on the other hand, environmental factors.
We start from the volumetric definition of one or several model objects, which will evolve throughout a variable number of generations. During this process, as the different generations follow each other, different changes in the structure of the model objects take place, induced by the environmental factors previously mentioned. Likewise, object models will be filtered each time according to the also previously mentioned design requirements.
In conclusion, the results obtained in this process will be regulated, first, by the design requirements, attending to the functional needs of the product, and second, by the environmental factors, attending to its expected working environment.
3.3. Proposed Methodology
The evolutive modeling process is divided into three stages. In the initial stage, all of the factors that are necessary to obtain suitable results will be determined. The second stage consists of the development of the evolutive process, where different generations of solutions will follow each other according to the posed requirements and factors. In the last stage, once the results are obtained, the designer will turn these into one or more final models by adding any necessary finishing touches.
Strictly speaking, the purely evolutionary aspects will only happen in the first and second stages, but it is important to point out that a postproduction (third stage) is necessary because of the possibility that more than one result is obtained and that these results may not be completely finished.
In order to explain the different elements that contribute to the correct performance of the process, we use the correspondence between concepts from nature and concepts of evolutionary computation, as proposed in [
16]. See
Table 1.
3.3.1. Stage 1: Initial Parameters
The elements that will determine the results at the end of the process are the initial parameters.
In the first place, it will be necessary to establish an initial population of individuals. The first decision to be taken will be if just one or several initial individuals are needed. In case of using just one individual, the evolutionary process will be more resource-consuming, and it will have to be divergent in the first generations. In case of using an initial population of several individuals, the process will be less resource-consuming, but, depending on the degree of their geometric definition, we risk a loss in the level of abstraction of the results. Obviously, another important aspect to bear in mind is the topology of the initial model or models, as they must be suited to undergo different morphological modifications.
We have to determine the design requirements in order to steer the process towards suitable results. At this point, we can include both design specifications taken from the essence of the product, as well as limitations to help the process keep in track towards valid results. The more requirements and limitations applied, the less degree of abstraction obtained.
It is important to establish what the different properties that we want to determine our products are, and, therefore, it is necessary to define their purely intrinsic aspects.
Next, the environmental factors are taken into account. That means including different conditioning elements into the process that represent the situation or scene in which our products will develop their activities or functions during their service life. We help the results to be more suitable for developing their activities in a specific environment or situation.
This way, what we do is to determine the function that the product will carry out and under which conditions. From this point on, models will evolve towards solutions that will fit the imposed requirements and adapt better to the environmental conditions.
Finally, the termination criteria of the process will have to be determined, be it by limiting the number of generations, be it by determining a specific situation in which the process should stop. In the second case, each generation will have to be analyzed and assessed according to the defined parameters.
The key point at this stage will be to find the perfect balance between abstraction and computational workload. Starting from absolute abstraction, which comes to imitating pure genetic evolution, the more requirements and conditioning factors we include, the more guided the process will be, and, as a result, the computational workload needed will be less. In return, the level of abstraction of the process, and, consequently, of the results, will obviously be reduced.
3.3.2. Stage 2: Evolution
This stage focuses on the evolutive development in itself, that is to say, on the genetic algorithm. Depending on different aspects of the evolutive process, we will be able to obtain more or fewer results, and more or less precise.
Once the initial population of individuals, the requirements and the conditioning factors are determined, the following process will be applied to each generation (
Figure 1):
Firstly, with the aim of obtaining a more diverse population than the previous one, three genetic operators (reproduction, crossover and mutation) will be applied to each individual.
These three genetic operators are the ones proposed in [
16]. The reproduction operator consists in maintaining individuals throughout the generations, which is important in order not to lose the good solutions that may have appeared in the first generations, and also to make it easier for the individuals to cluster in the last part of the generative process. Crossover, on the other hand, consists of joining two different individuals in order to generate new ones, which include properties inherited from both predecessors, thus exploring new feasible solutions within a defined frame. Finally, mutation is a unary operator that randomly alters different properties of an individual. This operator initiates new evolutive paths, being the only one capable of diverging from one single element. This is especially important when the initial population of a process is made up of just one individual.
The next step is to filter the current population according to the design requirements—that is, we are controlling the population volume by following the limits established by the designer. So, we do not spend computational resources on solutions that may be discarded later on.
Then, a second filter is applied, in which different environmental conditions are simulated with each individual, assessing its degree of suitability according to the required functionalities. On the grounds of this assessment, those individuals that perform best will continue in the process, while the others will be rejected.
It is important to point out that, in both of the filtering steps explained, the selection process does not need to be binary. This means that individuals, even if they do not completely fulfill the requirements, can be accepted, thus allowing the exploration of other paths with the potential to become a perfectly valid solution.
Finally, once the two filtering steps are finished, we obtain the population, which constitutes the initial population of the following generation.
This sequence can be repeated as many times as needed, but it is important to find the balance between the number of individuals and the diversity of solutions. Therefore, we will have to play with several factors: grades of permissiveness during filtering, maximum and/or minimum number of individuals, grades of randomness, variability of the genetic operators, etc.
The evolutive process aims to be nonlinear along generations. The way forward, in this second stage, is to go through three different blocks of evolution. First is a divergent block, in which the priority is a large and scattered generation of individuals, in order to reach a greater diversity. In the next block, a branching trend is intended, where several groups of similar individuals cluster, forming different branches, each of them with common properties. The last block is intended to stabilize the different branches, each of them constituting a result at the end of the process. This means that the parameters given for the development and filtering of each generation may depend on the progress of the specific evolutive process, and can, therefore, be variable.
3.3.3. Stage 3: Results
The main goal is to obtain a final population with a great diversity of solutions, but in which the individuals are clearly grouped in an evident way. In doing so, we will obtain different results, yet strongly consolidated, due to the fact that the more individuals of the same branch survive, the more solid the solution will be.
In conclusion, at the end of the process, what we get is a series of groups of solutions, each of them constituting a final result in itself.
From this point onward, it is up to the designer to make the most of the obtained results to specify a definite concept and to develop the final product.