SciELO - Scientific Electronic Library Online

vol.20 issue4Determination of the main geometric factors that influence on cold direct extrusion die wear used for obtaining aluminum alloy profilesConcrete durability with high absorption aggregates author indexsubject indexsearch form
Home Pagealphabetic serial listing  

Services on Demand




Related links

  • Have no similar articlesSimilars in SciELO


Ingeniería, investigación y tecnología

Print version ISSN 1405-7743

Ing. invest. y tecnol. vol.20 n.4 México Oct./Dec. 2019  Epub Nov 15, 2019 


Plane trusses optimization by means of parametric design and genetic algorithms applying visual programming

Optimización de cerchas planas mediante diseño paramétrico y algoritmos genéticos aplicando programación visual

Hugo Félix Begliardo-Olivero1

Matías Bonelli-Hernández2

1Universidad Tecnológica Nacional, Facultad Regional Rafaela, Argentina, Departamento de Ingeniería Civil. E-mail:

2Universidad Tecnológica Nacional, Facultad Regional, Argentina, Departamento de Ingeniería Civil. E-mail:


The optimization of structures is a wished goal, but it is not always achieved in engineering practice, due to either the large additional effort that it demands or the lack of necessary resources to carry it out. Structural engineers usually use batch procedures, consisting of utilizing the software, in which data are input, running the analysis and evaluating the results, along which it is decided whether the design is accepted or modifications must be made, in which case the process is repeated again. The consequence of this is that the final result, normally, will always be improvable. For that reason, the field of optimization has usually been reserved to the academia. The new currents of structural engineering seek optimization by means of parametric design and evolutionary computing. As an additional contribution to the use of these resources, the objective of this work is to present an algorithm developed through visual programming for sizing, shape and topology optimization of plane trusses of the classic Howe, Pratt or Warren typologies, and to highlight the advantages that the use of this resource provides for the professional work of structural engineers, since it allows them to develop their own algorithms without the need of previous knowledge of programming, and to achieve economic and environmental benefits from saving materials. All this configures a clear transfer of the advances of computer technology to professional practice, extending the frontiers of the academic sphere. As an example of application, a truss analyzed by traditional methods, without optimizing, and the same truss optimized with the aforementioned algorithm, are compared.

Keywords: Structural optimization; plane trusses; parametric design; genetic algorithms; visual programming


La optimización de estructuras es un fin anhelado, pero no siempre se concreta en la práctica de la ingeniería, bien sea por el ingente esfuerzo adicional que demanda o por no contarse con los recursos necesarios para llevarlo a cabo. El ingeniero estructural habitualmente utiliza procedimientos tipo lote, consistentes en emplear software donde se ingresan los datos, se ejecuta el análisis y se evalúan los resultados sobre los que se decide si se acepta el diseño o se le deben practicar modificaciones, en cuyo caso el proceso se vuelve a repetir. Consecuencia de ello es que el resultado final, normalmente, será susceptible a mejoras, de allí que el campo de la optimización usualmente ha quedado reservado al ámbito académico. Las nuevas corrientes de la ingeniería estructural procuran la optimización apoyándose en el diseño paramétrico y la computación evolutiva. Como aporte adicional al empleo de estos medios, el objetivo de este trabajo es presentar un algoritmo desarrollado mediante programación visual para la optimización de las secciones, forma y topología de celosías planas de tipologías clásicas, como: Howe, Pratt o Warren. Asimismo, destacar las ventajas que provee el empleo de este recurso para la labor profesional del ingeniero estructural, al permitirle desarrollar sus propios algoritmos sin necesidad de conocimientos previos de programación, y lograr beneficios tanto económicos como medioambientales a partir del ahorro de materiales. Todo ello configura un claro traslado de los avances de la tecnología informática a la práctica profesional, excediendo las fronteras de las aplicaciones académicas. Como ejemplo de aplicación se compara una armadura analizada mediante procedimientos tradicionales, sin optimizar, y la misma armadura optimizada con el algoritmo mencionado.

Descriptores: Optimización estructural; cerchas planas; diseño paramétrico; algoritmos genéticos; programación visual


The goal is the design

In civil construction practice, when projecting a building, the natural way of proceeding is that the architect proposes the forms, and the engineer runs the structural analysis based on those forms that, generally, have a previous structural design of the structure with a certain geometric rigidity. After a first analysis, any necessary modification to the original proposal needs the agreement of the parties in order to continue with the analysis until the project is definitively closed.

This iterative batch process, consisting of running the analysis, evaluating the results and modifying some parameters to finally arrive at an acceptable solution, is used by the majority of structural engineers and, usually, relies on heuristic rules where experience plays an important role (Figure 1a). However, it does not mean that the solution reached is the optimal one, nor that it cannot be improved in terms of the tensional behavior and the economy of the materials.

Figure 1: Flow charts of the design processes of structures (Source: Adapted from Hernández (1993)

The fact is that, normally, engineers do not deal with the structural design as a primary goal (Norris et al., 1977). Instead, they focus on the structural analysis, which would be the final step of the design process, and carry out the calculus as a tool to check the fitness of shapes and dimensions to support the loads (Torroja, 2007).

A correct design of a structure implies its optimization, which means dealing with those methods that allow to choose the best possible solutions changing the transverse sections, geometric shape, topology or the material properties (Dimčić, 2011), (Figure 1b). It is not sufficient, therefore, to satisfy only resistance, stability and shape requirements of such an initial architectural proposal.

A general structural optimization (SO) problem can be defined as the search for the minimization of an objective function (f), under restrictions imposed by the design variables (which can be modified during the optimization process, as e.g. the shape or the material election), the state variables (related with the structural response) and the satisfaction of compatibility and equilibrium equations, which are expressed by means of state equation in linear analysis (Christensen & Klarbring, 2008).

In mathematical terms, a SO problem consists of obtaining those values of the n design variables

x=(x1 , x2  , x3  ,, xn) (1)

that minimize an objective function (weight, cost, etc.)

f(x)=f(x1 , x2  , x3  ,, xn) (2)

or more than one

fx=f1x,f2x,f3x,,fm(x) (3)

under a set of r restrictions

gix1 , x2  , x3  ,, xn0;  i=1,2,,r (4)

that shall be taken into account in order to limit the search space and allow the solution to be feasible.

This requires the service of specific tools. However, since this kind of resources is still scarce and demands its development under an interdisciplinary approach between architects, engineers, and computer scientists (Jones, 2013; Ochsendorf, 2006), traditionally the optimization treatment has been reserved for the academic world.

There are many analysis tools in the market, but scarce ones to achieve good structural forms (Ochsendorf, 2006, 2012). In practice, engineers normally use classic structural analysis software for design purposes (Clune, 2010). However, this does not guarantee optimal solutions, or something close to them. As the structural performance depends on geometry, that focus will lead to structures of low efficiency (Danhaive & Mueller, 2015).

This fact is clearly evident in plane and space trusses, structural types widely used in industrial sheds, sports pavilions, among others, which have a significant incidence in the final construction cost.

In consequence, faced with the query of how to resolve the problem of achieving optimized designs for trusses, with efficiency and economy of materials, new streams of structural engineering seek optimization by means of parametric design and evolutive computing.

Parametric design with visual programming and genetic algorithms: A suitable and promising path

The basis of parametric design comprises a set of digital tools that allow the user to generate geometries on the basis of the definition of a family of initial parameters and the programming of the formal relations between them (Salcedo, 2012).

At present, parametric design software packages operating with visual programming, such as Grasshopper (Robert McNeel & Associates, 2015b), which run inside the geometric modeling software Rhinoceros (Robert McNeel & Associates, 2015c), have paved the way significantly for structural engineers to develop their own algorithms for the modeling and resolution of practical cases of different complexity within their professional expertise.

Visual programming has become a powerful and accessible tool to provide a versatile and simple language that does not require prior programming knowledge to generate the algorithm to solve problematic situations (Danhaive & Mueller, 2015).

The aforementioned software, complemented with structural analysis plug-ins by means of finite elements, and the implementation of evolutionary methods of optimization by means of genetic algorithms (GAs), make it possible to reach structurally efficient shapes with minimization of materials.

The GA optimization technique produces a range of possible optimal solutions, based on objective functions that define the design criteria. Likewise, the parametric design allows the introduction of a significant number of variables, making it possible to evaluate a large number of geometric configurations with the same algorithm. These new computer tools allow the unification of engineering design processes and the achievement of structural shapes, both free and complex, as well as precise and efficient (Maltagliatti, 2016).


The aim of this work is to present an algorithm developed by visual programming, for the optimization of the sections, shape and topology of plane trusses, taking as an example its application to a real structure, and highlighting the advantages that the use of this computer resource provides for the professional work of structural engineers, allowing them to develop their own algorithms without the need of previous knowledge of programming.


Algorithm description

By means of Grasshopper, version 0.9.0076, an algorithm was developed by the authors for the optimization of plane trusses in relation to their own weight, which makes it possible to choose between three typologies: Howe, Pratt or Warren. The boundary conditions (supports, loads), the input parameters (material, section library) and other restraints are introduced from Karamba, version 1.1.0 (Preisinger C. and Bollinger-Grohmann-Schneider ZT GmbH, 2015), a parametric software of structural analysis by finite element method that operates as a Grasshopper plug-in and that, in addition to providing the structural responses, allows the optimization of the sections of each bar through an iterative process of stresses and displacements control.

The optimal distribution of the material in bars structures (topological optimization) is given by the search for the best interconnectivity among its members (Hultman, 2010) so that during the resolution process the removal of some of them takes place (Christensen & Klarbring, 2008). When it lacks control, this type of optimization generally leads to structures of great efficiency but very difficult to materialize. Hence, to achieve a tool that can be applied in professional practice it is necessary to establish design limits. For this reason, the algorithm developed does not generate free form structures but is limited to the indicated typologies (Bonelli & Begliardo, 2016).

Through Galapagos (Robert McNeel & Associates, 2015a), an evolutionary solver by genetic algorithms that operates as an add-on of Grasshopper modifying the design variables within established domains, an initial population of possible solutions (individuals) is created. This is then subjected to selection, crossing and mutation processes, for which an evaluating function is used to determine which individuals are the fittest that will survive and which will be discarded. This evaluator, called fitness, is the weight of the truss. The lower the weight, the greater the aptitude, and vice versa.

Through the repetition of the selection, combination, and mutation process of individuals, new generations evolve towards the individual with the best fitness. When an individual becomes stable during n generations, without the appearance of a better new one, a global optimum or an individual near to it has been obtained, and the process stops. As a consequence of this, the cross-section size of each bar, the shape, and the truss topology (expressed in the gaps number) have been optimized.

The screen image of Figure 2 shows the assembly of the aforementioned software in the algorithm under the Rhinoceros (version 5.0) modeling software environment.

Figure 2 Applied software 

Design variables

The variable parameters constitute the degrees of freedom of the problem that allows for the definition of the structural geometry. A usual way of expressing them has been indicated in (1). Each of them has a domain defined by a maximum value and a minimum value.

Figure 3 defines the variable parameters used in the algorithm, while Figure 4 shows, on the left, its definition in Grasshopper based on sliders that allow variability. On the right, the domain predefined by the user is shown to establish the length of the truss to be optimized, and the adopted value of the clear span.

Figure 3 Design variables 

Figure 4 Design variables in Grasshopper 

Each modification of a variable creates a new structure, and the totality of the combinations establishes the solution set, that is, the search space of the optimal truss.

The objective function

In structural engineering, this function usually describes a minimization problem. In this case, what has been sought is the structure of minimum weight w(x), as it is a decisive factor in its final cost, and it is associated with a lower consumption of material.

Assuming that each i bar has a straight direction and constant cross-sectional area A i in its entire length l i , on the basis of (2), the result is:

f(x)=1w(x) (5)


wx=itAiliγi ;  i=1,2,,t (bars) (6)

γ i being the specific weight of the material, which is usually the same for the entire structure.

Imposed restrictions

In addition to the restrictions imposed by the design variables, the algorithm establishes behavioral limitations on the state variables and the verification of the state equation:

a) Behavioral restrictions: The axial load Pi in each bar i, both in tension and compression, must not exceed the maximum value Pu i that can resist the material, nor suffer from problems of local instability.

PiPui (7)

Pu i is determined by the yield stress Fy i of the material. Assuming that it is unique, then

Pui=Fy.Ai (8)

The deflection δ at any point in the structure must not exceed a predefined δ max value or a value set by regulation

δδmax=Lk (9)

where L is the clear span of the structure and k is the deflection factor which, for trusses, usually takes a value between 200 ≤ k ≤ 300.

b) Equilibrium restrictions: State equation in the linear static analysis must be verified

Ku=P (10)


K =

rigidity matrix of the structure

u =

vector of the unknown nodal displacements

P =

vector of external forces

That is to say, the optimal structure of lower weight will be obtained from the point of view of resistance, and that is the one that allows the maximum use of the material, fulfilling the equilibrium and compatibility conditions given by (10) (Gil & Andreu, 1999).

Applied standards

The algorithm implements argentine standards (INTI-CIRSOC Regulations and specific IRAM Standards), in addition to Karamba's own library of sections. However, the addition of any other regulations is feasible, requiring the introduction of simple modifications.


As an example of application to a real case, a Howe truss of 20 m clear span corresponding to a built industrial shed located in the central region of Argentina (Figure 5) was taken for analysis and comparison. The structural engineer analyzed it as a simply supported beam leaning on two columns.

Figure 5 The analyzed structure 

However, in the building site, the supports were welded to columns, generating boundary conditions that modified the internal forces in truss members. The following are the constructive details:

  • Bars composed of cold-formed C sections (CFCS).

  • Heights: 0.50 m (lateral edge); 1.00 m (central).

  • Loads types: dead load (DL), imposed loads (IL) and wind loads (WL).

  • Idealized supports for analysis: roller support-hinged support (isostatic).

  • Materialization of supports on site: fixed (welded) on columns.

  • Truss´s weight (considering only profiles): 4.473 kN.

Through the application of the developed algorithm, the optimal design (weight minimization) of the truss was sought for the isostatic condition variant applied in the idealized model of the original structure and, additionally, for three more options of external supports, which are indicated in Table 1 as Cases 1 to 4. In all of them, the response was evaluated for the profile classes CFCS and CHS (circular hollow section).

Table 1: Analyzed cases (Howe type) 

Supports Degree of redundancy Profile
Case 1 R-H 0 (Isostatic) CFCS CHS
Case 2 H-H 1 (Hyperstatic) CFCS CHS
Case 3 H-F 2 (Hyperstatic) CFCS CHS
Case 4 F-F 3 (Hyperstatic) CFCS CHS

Notations: R (roller); H (hinged); F (fixed)

CFCS (Cold-formed C section); CHS (circular hollow section)

Case 1 (CFCS) is similar to the idealized model in the constructed structure, and Case 4 (CFCS) is the one that most resembles the one materialized on the building site.

Argentina structural safety regulations were applied (CIRSOC, 2018), considering all combinations of loads prescribed for the region where the structure was built, with the dead weight (D), imposed loads (IL), wind loads (WL), concentrated loads (P) and thermal variation (ΔT). The Argentine Structural Security Regulations, second generation, are based on US codes. In particular, in the area of metallic structures, the rules of the AISC (American Institute of Steel Construction) are applied.

By default, the algorithm uses F-24 steel (equivalent to ASTM A36), although it can be modified. According to the regulations, δ max = L / 300 was adopted for the design.

In relation to the cross-sections, in addition to those included in Karamba, there is a library of steel profiles according to the standards of the Instituto Argentino de Normalización (IRAM, 2018), which makes it possible to include other standards if necessary by means of the addition of a spreadsheet.

On the basis of the clear span of the original truss, Table 2 indicates the numeric domain of the geometrical design variables applied to the algorithm.

Table 2: Parameters domains 

Design variables Mini-mum Maxi-mum Observations
Left end-post height (hi) 0.00 m 1.00 m Floor level minimum distance: 5.50 m
Right end-post height (hd) 0.00 m 1.00 m Floor level minimum distance: 5.50 m
Left edge elevation (Δ a ) 0.00 m 0.00 m See Figure 6
Left top-chord height (Δ 1 ) 0.50 m 3.00 m See Figure 6
Left bottom-chord height (Δ 2 ) -1.00 m 4.00 m Floor level minimum distance: 4.50 m
Maximun height (ht) 0.00 m 4.00 m It is not a variable: ht = hi + Δ1- Δ2
Nº of segments (gaps between vertical bars) 16 24 Purlins support distance: 0.80 m to 1.25 m
Profiles CFCS - CHS According to IRAM (2018)

Figure 6 illustrates the configuration of the geometric domain in which the search space for the best solution was delimited.

Figure 6: The geometric domain of the truss 

Results and discussion

In the runs analyzed, initial populations of 100 or 150 individuals were applied, with stopping criteria determined by the repetition of the most suitable genome for 100 generations, which led to a number comprised between 104 and 501 iterations, depending on the case.

Table 3 shows the results of the four cases analyzed (optimized design variables, weight, and L/ht ratio).

Table 3: Optimal design of the truss: values obtained 

Case 1 Case 2 Case 3 Case 4
Left end-post height (hi) 0.85 0.98 0.90 0.99 0.98 1.00 1.00 0.94
Right end-post height (hd) 0.89 0.97 0.96 0.91 0.93 0.92 1.00 1.00
Left top-chord height (Δ 1 ) 0.50 0.54 1.95 1.93 1.60 1.76 2.08 2.03
Left bottom-chord height (Δ 2 ) -0.96 -1.00 2.03 1.85 1.93 1.70 2.20 2.05
Maximum height (ht) 2.31 2.52 0.82 1.07 1.00 1.06 0.88 0.92
Nº of segments 16 18 18 22 20 22 16 24
Clear span/ maximum height ratio (L/ht) 8.6 7.9 24.4 18.7 20 18.9 22.7 21.7
Weight (kN) 2.744 2.247 2.079 1.545 2.198 1.661 2.231 1.715

Note: Units are in meters (m); Weights in kN (kilonewton)

For the simply supported condition (Case 1), the application of the developed algorithm led to a structural form that adapts to the law of bending moments (Figure 7), a conclusion also observed by Gil & Andreu (1999) for these cases.

Figure 7: Case 1: The final shape of the optimized truss 

Weights indicated in Table 3 refer to the full optimization, bar to bar, which for Case 1 (CFCS) leads to 8 different profiles, meaning a weight reduction close to 39 %. In practice, this presents drawbacks at the moment of constructing the truss, either due to difficulties in the assembly between one bar and the other, or because of the increase in the cost of labor. Normally, in these circumstances, the sections in chords, verticals, and diagonals are homogenized to gain constructive simplification. In this situation, adopting 4 different sections for the CFSC profile (one of them for the top chord, one for the bottom chord, one for both left and right end posts, and the fourth one for the rest of the inside members), for the cited variant that is compared, the reduction will be close to 25 %.

It is observed from the table that, in full optimization, for case 4 (CFCS) the reduction in weight would be 50 %, a fact that warns us about the importance of modeling a structure in the way that it effectively will be built (Bonelli & Begliardo, 2016).

Figure 8 shows schematically, and for comparative purposes, the external shape that the optimized truss takes depending on the type of external supports with which it is modeled. As it can be seen, there is a qualitative leap in the configuration when going from the isostatic case (Figure 8a) to the hyperstatic case since one additional restriction is incorporated (Figure 8b). This external form, substantially, does not change in the remaining two cases (Figures 8c and 8d). Likewise, from Table 3 it appears that the weight decreases significantly in the hyperstatic cases, being Case 2 (hinged-hinged supports) the one which leads to the lighter structure.

Figure 8: Schematics of the geometric shape that the truss takes, according to the kind of supports (Source: Bonelli & Begliardo (2016)

The topological optimization is shown in the number of cavities (16 for Case 1 (CFCS) compared), tending to the minimum possible value within the domain of the variation of the segments, which are pre-defined by the user as a design variable (16-24 according to Table 2). This will happen as long as the cross-sections of the library of available commercial profiles support the tension or compression loads to which the bars will be subject.

It also emerges from the aforementioned table that, in all cases, the use of SCH profiles leads to structures of lower weight than CFCS.

An output of the remarkable results of Karamba, in the framework of the search for sizing optimization, is that makes possible to know the advantages of the material bar to bar, in relation to its resistance capacity, a fact that allows structural engineers to regulate it according to their needs and restrictions.

As a complementary contribution to the information, Bonelli & Begliardo (2016) provide results for the four cases with the Pratt type truss variant.


An algorithm has been developed through visual programming for structural optimization of sizing, shape, and topology of plane trusses based on parametric design and genetic algorithms, with structural analysis resolution by the finite element method.

The field of structural optimization has been long questioned by engineers for its impracticalities in engineering practice (Clune, 2010). In this paper, paraphrasing this author, it has been demonstrated that the proposed resources are relevant and beneficial, and that they provide techniques to explore the design space in an optimal way, leading to structural designs that are feasible and can be built with less material and costs than structures designed by conventional software. Additionally, all this contributes to environmental sustainability, a premise that, as indicated by Ochsendorf (2012), should always be sought in the field of structures.

These resources allow structural engineers to customize algorithms in order to apply them to their current practice without the need for prior programming knowledge, making it possible to transfer advances in computer technology to professional practice and to extend the frontiers of academic applications.


This work is part of Matías Bonelli’s bachelor’s thesis for his civil engineering degree, which was directed by Hugo F. Begliardo and developed in the framework of R&D Project #2298 funded by the National Technological University, Argentina, to which we express our sincere thanks.


Bonelli, M. & Begliardo, H.F. (2016). Optimización de armaduras planas mediante diseño paramétrico y algoritmos genéticos: Efectos de la no correspondencia objeto real-modelo idealizado. Mecánica Computacional, XXXIV, 501-515. Retrieved from ]

Christensen, P. & Klarbring, A. (2008). An Introduction to Structural Optimization. (G.M.L. Gladwell, Ed.), 1st ed. Waterloo (Ontario): Springer Netherlands. [ Links ]

CIRSOC. (2018). Centro de Investigación de los Reglamentos Nacionales de Seguridad ara las Obras Civiles. Retrieved from ]

Clune, R.P. (2010). Explorative Structural Design. Massachusetts Institute of Technology. Retrieved from ]

Danhaive, R.A. & Mueller, C.T. (2015). Combining parametric modeling and interactive optimization for high-performance and creative structural design. In Proceedings of the International Association for Shell and Spatial Structures (IASS) (pp. 1-15). Amsterdam. Retrieved from ]

Dimčić, M. (2011). Structural optimization of grid shells based on genetic algorithms. Universität Stuttgart. [ Links ]

Gil, L. & Andreu, A. (1999). Diseño óptimo de celosías planas con criterios de estado límite último. Revista inrternacional de métodos numéricos para cálculo y diseño en ingeniería, 15, 447-460. [ Links ]

Hernández, S. (1993). Del diseño convencional al diseño óptimo. Posibilidades y variantes. Parte I. Análisis de sensibilidad y optimización local y global. Revista inrternacional de métodos numéricos para cálculo y diseño en ingeniería , 9(1), 91-110. [ Links ]

Hultman, M. (2010). Weight optimization of steel trusses by a genetic algorithm. Size, shape and topology optimization according to Eurocode. Lund University. Retrieved from ]

IRAM. (2018). Instituto Argentino de Normalización y Certificación. Retrieved from ]

Jones, G.P. (2013). Interoperable software for parametric structural analysis and optimization. Massachusetts Institute of Technology. Retrieved from ]

Maltagliatti, I. (2016). Diseño paramétrico de estereo estructuras con optimización de secciones. In U.T.N. F.R.Villa María (Ed.), CYTAL 2016. 7a Jornada de Ciencia y Tecnología (p. 6). Villa María, Argentina: edUTecNe. Retrieved from ]

Norris, C.H., Wilbur, J.B. & Utku, S. (1977). Elementary structural analysis, 3rd.ed. Singapore: Mc Graw-Hill. [ Links ]

Ochsendorf, J. (2006). New tools for structural design. Retrieved from ]

Ochsendorf, J. (2012). Challenges and opportunities for Low-carbon buildings, 37. Retrieved from ]

Preisinger C. & Bollinger-Grohmann-Schneider ZT Gmb H. (2015). Karamba. Retrieved from ]

Robert McNeel & Associates. (2015a). Galapagos. Retrieved from ]

Robert McNeel & Associates. (2015b). Grasshopper. Retrieved from ]

Robert McNeel & Associates. (2015c). Rhinoceros. Retrieved from http://www.rhino3d.comLinks ]

Salcedo-Lagos, P. (2012). Análisis paramétrico de volúmenes arquitectónicos con algoritmos genéticos (Parametric analysis of architectural volumes through genetic algorithms). Hábitat Sustentable, 2 (1), 47-58. [ Links ]

Torroja-Miret, E. (2007). Razón y ser de los tipos estructurales, 3a ed. Madrid: Doce Calles. [ Links ]

Received: March 23, 2018; Accepted: August 27, 2019

Creative Commons License This is an open-access article distributed under the terms of the Creative Commons Attribution License