Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus...

150
Universidade de Aveiro Departamento de Engenharia Mecanica 2019 Isaac Bastos Correia Reis Optimization of Layer Configurations for Ballistic Impact on Light-Weight Armour Plates Otimizac ¸˜ ao da Configurac ¸˜ ao de Camadas para Protec ¸˜ oes Bal´ ısticas de Baixo Peso

Transcript of Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus...

Page 1: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

Universidade de Aveiro Departamento de Engenharia Mecanica2019

Isaac BastosCorreia Reis

Optimization of Layer Configurations for BallisticImpact on Light-Weight Armour Plates

Otimizacao da Configuracao de Camadas paraProtecoes Balısticas de Baixo Peso

Page 2: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao
Page 3: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

Universidade de Aveiro Departamento de Engenharia Mecanica2019

Isaac BastosCorreia Reis

Optimization of Layer Configurations for BallisticImpact on Light-Weight Armour Plates

Otimizacao da Configuracao de Camadas paraProtecoes Balısticas de Baixo Peso

Dissertacao apresentada a Universidade de Aveiro para cumprimentodos requisitos necessarios a obtencao do grau de Mestre em Engen-haria Mecanica, realizada sob orientacao cientıfica de Joao AlexandreDias de Oliveira, Professor Auxiliar e de Filipe Teixeira-Dias, Readerdo School of Engineering da The University of Edinburgh (United King-dom).

Esta dissertacao teve o apoio dos

projetos UID/EMS/00481/2019-FCT -

FCT - Fundacao para a Ciencia e a

Tecnologia; e

CENTRO-01-0145-FEDER-022083 -

Programa Operacional Regional do

Centro (Centro2020), atraves do

Portugal 2020 e do Fundo Europeu de

Desenvolvimento Regional

Page 4: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao
Page 5: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

o juri / the jury

presidente / president Prof. Doutor Antonio Gil D’Orey de Andrade CamposProfessor Auxiliar, Universidade de Aveiro

Doutor Joao Filipe Moreira CaseiroInvestigador, CENTIMFE - Centro Tecnologico da Industria de Moldes, Ferra-mentas Especiais e Plasticos

Prof. Doutor Joao Alexandre Dias de OliveiraProfessor Auxiliar, Universidade de Aveiro (orientador)

Page 6: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao
Page 7: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

agradecimentos /acknowledgements

Ao Professor Doutor Joao Alexandre Dias de Oliveira que foi o principalmentor deste projeto e cuja orientacao e disponibilidade consistente aolongo do semestre tornaram-se essenciais e imprescindıveis. Tambempela motivacao e o gosto pela otimizacao transmitido.

Ao Professor Doutor Filipe Teixeira-Dias pelo apoio dado sempreque necessario ao longo do semestre.

A todos os meus amigos que, de uma forma ou outra, influencia-ram o meu percurso academico. Sem eles a conclusao desta etapade 5 anos nao teria sido carregada de tao bons momentos e de tantasaprendizagens.

Um enorme agradecimento a minha famılia que sempre me apoiarame continuarao a apoiar a todos os nıveis e sem eles seria impossıvelcompletar esta jornada.

Por ultimo, a todos aqueles que influenciaram o meu percursoacademico e, mais importante, o meu desenvolvimento pessoal.

Page 8: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao
Page 9: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

keywords Ballistic Impact, Abaqus Python API, Design Optimization, Genetic Algorithm,Particle Swarm Optimization, Simulated Annealing, Multi-objective Optimiza-tion

abstract The broad field of engineering is facing a paradigm shift where advancedoptimization methods and techniques are more often used to solve complexproblems. Most of these problems either require the analysis of a largeamount of data or the solving of complex calculations, or even both. Thisdissertation aims to develop an understanding of non-linear optimizationalgorithms applied to a complex engineering design problem: a multi-layerplate under a ballistic impact.

To solve a complex design engineering problem, the most efficient wayis to combine non-linear optimization algorithms with a software capable ofsimulating the model and event. Accordingly, the first part of this documentfocuses on developing a Python script of the simulation model system usingAbaqus API. The usage of an Abaqus Python script to simulate the eventallows to generate specific variables and post-processing outputs essentialto its posterior integration with optimization algorithms. Nevertheless, thedevelopment of a model that simulates a ballistic impact is complex and,thus, a sounding understanding on the physics and mechanics behind suchan event are properly discussed. These insights are then used to validatethe dynamic response and equilibrium of the simulated model. Furthermore,several modeling strategies are considered and analyzed throughout the firstpart of this document.

The second part of this dissertation aims to acquire a comprehensiveunderstanding of three optimization algorithms: Particle Swarm Optimization(PSO), Genetic Algorithm (GA) and Simulated Annealing (SA). The perfor-mance and efficiency of each algorithm, as well as numerous programmingand optimization strategies, are tested in four different benchmarks. Eachbenchmark increases in complexity regarding its precedent and they all usethe Abaqus Python script previously developed.

This dissertation culminates in a multi-objective optimization procedurethat uses the most efficient algorithm out of the three algorithms testedin the previous benchmarks. This multi-objective procedure uses everysingle-objective formulation, variables and constraints from the previousbenchmarks which results in a highly non-linear problem. The results fromthis complex optimization problem are analyzed using and discussed.

Page 10: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao
Page 11: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

palavras-chave Impacto Balıstico, Abaqus Python API, Otimizacao de Projeto, AlgoritmoGenetico (GA), Otimizacao por Enxame de Partıculas (PSO), RecozimentoSimulado (SA), Otimizacao Multi-Objetivo

resumo O amplo ramo da engenharia enfrenta uma mudanca de paradigma, na qualmetodos e tecnicas avancados de otimizacao sao cada vez mais usadospara resolver problemas complexos. A maioria desses problemas requera analise de uma grande quantidade de dados ou requer a resolucao decalculos complexos, ou ate mesmo ambos. Esta dissertacao tem comoobjetivo desenvolver um estudo compreensivo de algoritmos de otimizacao,aplicados a um problema complexo de projeto de engenharia: uma placacom multiplas camada sob um impacto balıstico.

Para resolver um problema complexo de engenharia de projeto, a formamais eficiente consiste em combinar algoritmos de otimizacao nao-linearcom um software capaz de simular o modelo e o evento. Assim, a primeiraparte deste documento e focada no desenvolvimento de um codigo emPython do modelo de simulacao atraves da API do Abaqus. O uso de umcodigo Python para simular o evento permite gerar variaveis especıficas eresultados de pos-processamento que sao essenciais para sua posteriorintegracao com algoritmos de otimizacao. No entanto, o desenvolvimento deum modelo que simule um impacto balıstico e complexo e, portanto, umacompreensao intrınseca sobre a fısica e a mecanica de tal evento e discutidoadequadamente. Esses conhecimentos adquiridos sao posteriormenteusados para validar a resposta dinamica e o equilıbrio do modelo simulado.Alem disso, varias estrategias de modelagem sao consideradas e analisadasao longo da primeira parte deste documento.

A segunda parte desta dissertacao visa adquirir uma compreensaoabrangente de tres algoritmos de otimizacao nao-lineares: otimizacaopor enxame de partıculas (PSO), algoritmo genetico (GA) e recozedurasimulada (SA). O desempenho e a eficiencia de cada algoritmo, bem comonumerosas estrategias de programacao e otimizacao, sao testados emquatro benchmarks. Cada benchmark aumenta em complexidade em relacaoao seu precedente e todos usam o codigo Python do modelo em Abaquspreviamente desenvolvido.

Esta dissertacao culmina num processo de otimizacao multi-objetivoque utiliza o algoritmo mais eficiente dos tres algoritmos testados nosbenchmarks anteriores. Este procedimento multi-objetivo utiliza todasas formulacoes, variaveis e restricoes das formulacoes dos benchmarksanteriores, o que resulta num problema altamente nao linear. Os resultadosdesse complexo problema de otimizacao sao analisados e discutidos.

Page 12: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao
Page 13: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

Contents

1 Introduction and Background 11.1 Armour Materials and Structures . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Optimization Studies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.3 Objectives and Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.4 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.5 Dissertation Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2 Physics of Wave Propagation 5

3 Model Discussion and Validation 93.1 Abaqus Scripting and Python Programming . . . . . . . . . . . . . . . . . . . 93.2 Model Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3.2.1 Impact Region Analysis . . . . . . . . . . . . . . . . . . . . . . . . . 123.2.2 Boundary Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.2.3 Mesh Convergence . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193.2.4 Symmetry Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . 223.2.5 Dynamic Response of the System . . . . . . . . . . . . . . . . . . . . 253.2.6 Elastic Wave Velocity Analysis . . . . . . . . . . . . . . . . . . . . . 253.2.7 Contact Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.2.8 Configuration Study . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

3.3 Interlayer Parameters Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . 333.4 Base Model Script Final Remarks . . . . . . . . . . . . . . . . . . . . . . . . 36

4 Optimization Introduction and General Concepts 374.1 Fundamentals of Optimization . . . . . . . . . . . . . . . . . . . . . . . . . . 37

4.1.1 Standard Mathematical Formulation . . . . . . . . . . . . . . . . . . . 374.1.2 Exterior Penalty Function Method . . . . . . . . . . . . . . . . . . . . 37

4.2 Non-Linear optimization Algorithms . . . . . . . . . . . . . . . . . . . . . . . 384.2.1 Genetic Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384.2.2 Particle Swarm Optimization . . . . . . . . . . . . . . . . . . . . . . . 424.2.3 Simulated Annealing . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

5 Implementation and Methodologies 475.1 Benchmark I (Continuous Variable — Minimize weight subject to stress constraint) 48

5.1.1 Benchmark I — PSO . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

i

Page 14: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

5.1.2 Benchmark I — GA . . . . . . . . . . . . . . . . . . . . . . . . . . . 515.1.3 Benchmark I — SA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545.1.4 Benchmark I — Summary . . . . . . . . . . . . . . . . . . . . . . . . 57

5.2 Benchmark II (Continuous Variable — Minimize the rear stress subject to weightconstraint) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585.2.1 Benchmark II — PSO . . . . . . . . . . . . . . . . . . . . . . . . . . 595.2.2 Benchmark II — GA . . . . . . . . . . . . . . . . . . . . . . . . . . . 615.2.3 Benchmark II — SA . . . . . . . . . . . . . . . . . . . . . . . . . . . 635.2.4 Benchmark II — Summary . . . . . . . . . . . . . . . . . . . . . . . . 64

5.3 Benchmark III (Discrete Variable — Minimize weight subject to stress constraint) 645.3.1 Benchmark III — PSO . . . . . . . . . . . . . . . . . . . . . . . . . . 665.3.2 Benchmark III — GA . . . . . . . . . . . . . . . . . . . . . . . . . . 685.3.3 Benchmark III — SA . . . . . . . . . . . . . . . . . . . . . . . . . . . 705.3.4 Benchmark III — Summary . . . . . . . . . . . . . . . . . . . . . . . 72

5.4 Benchmark IV (Discrete Variable — Minimize the rear stress subject to weightconstraint) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725.4.1 Benchmark IV — PSO . . . . . . . . . . . . . . . . . . . . . . . . . . 725.4.2 Benchmark IV — GA . . . . . . . . . . . . . . . . . . . . . . . . . . 745.4.3 Benchmark IV — SA . . . . . . . . . . . . . . . . . . . . . . . . . . . 765.4.4 Benchmark IV — Summary . . . . . . . . . . . . . . . . . . . . . . . 77

5.5 Alternative Approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

6 Multi-Objective Optimization 816.1 Fundamentals and Methodologies . . . . . . . . . . . . . . . . . . . . . . . . 816.2 Pareto Optimality and Utopia Point Concept . . . . . . . . . . . . . . . . . . . 826.3 Formulation and Strategies . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

6.3.1 Normalization of the Objective Functions . . . . . . . . . . . . . . . . 836.3.2 PSO Strategies and Operational Parameters . . . . . . . . . . . . . . . 84

6.4 Results and Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

7 Final Remarks 897.1 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 897.2 Further Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

Bibliography 90

A Multi-objective Optimization Python Code 95

B Additional Graphics 113B.1 Benchmark I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

B.1.1 PSO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113B.1.2 GA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114B.1.3 SA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

B.2 Benchmark II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116B.2.1 PSO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116B.2.2 GA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

ii

Page 15: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

B.2.3 SA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119B.3 Benchmark III . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

B.3.1 PSO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121B.3.2 GA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122B.3.3 SA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

B.4 Benchmark IV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125B.4.1 PSO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125B.4.2 GA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125B.4.3 SA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

B.5 Alternative approach to the benchmark III . . . . . . . . . . . . . . . . . . . . 127

iii

Page 16: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

.

Page intentionally left blank.

Page 17: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

List of Tables

3.1 Results from the 3 boundary condition scenarios. . . . . . . . . . . . . . . . . 173.2 Evaluated variables in each step of the mesh optimization. . . . . . . . . . . . 203.3 Results of a full sized model and a quarter model simulation. . . . . . . . . . . 233.4 Comparison between the velocity obtained from the simulation and from the

theoretical formulation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273.5 Description of each plate configuration scenario. . . . . . . . . . . . . . . . . . 313.6 Transmission ratio between layers for each configuration. . . . . . . . . . . . . 333.7 Mechanical properties for each interlayer studied. . . . . . . . . . . . . . . . . 333.8 Comparison of the accuracy of results and the computational cost between the

original and the optimized model. . . . . . . . . . . . . . . . . . . . . . . . . 36

5.1 PSO operational parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . 495.2 Genetic algorithm operational parameters for benchmark one. . . . . . . . . . . 515.3 Simulated Annealing operational parameters. . . . . . . . . . . . . . . . . . . 545.4 Benchmark I final resutls. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585.5 Benchmark I final results after running five times for each algorithm. . . . . . . 585.6 Benchmark II final resutls. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645.7 Material’s database and correspondent indices. . . . . . . . . . . . . . . . . . . 655.8 PSO operational parameters for Benchmark III. . . . . . . . . . . . . . . . . . 665.9 Genetic algorithm operational parameters for benchmark four. . . . . . . . . . 685.10 Simulated Annealing operational parameters for benchmark three. . . . . . . . 705.11 Final results of benchmark number three. . . . . . . . . . . . . . . . . . . . . 725.12 Final results of benchmark number four. . . . . . . . . . . . . . . . . . . . . . 77

6.1 Normalization parameters used for the multi-objective optimization. . . . . . . 846.2 PSO operational parameters used in the multi-objective optimization problem. . 856.3 Final results obtained from the multi-objective optimization for each weight y. . 87

v

Page 18: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

.

Page intentionally left blank.

Page 19: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

List of Figures

2.1 Transmission and reflection of an elastic wave at an interface. . . . . . . . . . . 6

3.1 Flowchart of how Abaqus scripting interface interacts with Abaqus Kernel. [Inc2004] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

3.2 Model of the ballistic system. a) configuration nomenclature; b) ballistic impactmodel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3.3 Front and rear impact region sets. . . . . . . . . . . . . . . . . . . . . . . . . . 123.4 a) Stress from all nodes at the front impact region (graph extracted from Abaqus)

and b) average stress at every time increment using a Python script. . . . . . . . 133.5 a) Stress from all nodes at the rear impact region (graph extracted from Abaqus)

and b) average stress at every time increment using a Python script. . . . . . . . 143.6 Total force due to contact pressure at every time increment. . . . . . . . . . . . 153.7 Three boundary condition studies: (a) plate clamped by the side surfaces of the

plate, (b) plate pinned at the side edges of the rear surface of the plate, (c) plateclamped at the rear surface of the plate. . . . . . . . . . . . . . . . . . . . . . 16

3.8 Evolution of σz from all nodes at the rear surface for a) boundary condition case1, b) boundary condition case 2 and c) boundary condition case 3. . . . . . . . 18

3.9 Number of elements against the time required to complete the simulation andthe peak stress at the rear surface for case 1; the parameters chosen are markedwith the dashed line. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.10 Number of elements against the time required to complete the simulation andthe peak stress at the rear surface for case 2; the parameters chosen are markedwith the dashed line. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.11 Details of the mesh. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223.12 Front view of the full plate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233.13 Stress from all nodes of the rear surface of the plate: a) full model; b) quarter

model. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.14 Identification of the nodes previously selected at the plate’s mesh. . . . . . . . 273.15 Displacement against time for each node being analyzed. . . . . . . . . . . . . 273.16 Distance between each node against the instant when they suffered the first wave

impact. Calculation of the slope which represents the wave velocity. . . . . . . 283.17 Snapshots of the elastic wave propagation and interference. . . . . . . . . . . . 283.18 a) Contact type 1. b) Contact type 2. c) Contact type 3. d) Contact type 4. . . . 303.19 Graph combining the four contact type results. . . . . . . . . . . . . . . . . . . 313.20 Effect of the base model material configuration on the rear stress. . . . . . . . . 323.21 Impedance of Aluminium and Steel. . . . . . . . . . . . . . . . . . . . . . . . 323.22 Impedance of the materials used as interlayer. . . . . . . . . . . . . . . . . . . 33

vii

Page 20: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

3.23 Parameters variation: (a) Effect of interlayer thickness on the peak stress at therear impact region of the plate using four different materials for the interlayer;(b) Effect of the projectile velocity when the interlayer is made of nylon or cork. 35

3.24 Dimensions of the optimized base model. . . . . . . . . . . . . . . . . . . . . 36

4.1 Roulette wheel process for selection of designs for new generation [Arora 2012]. 404.2 Single-point crossover illustration. . . . . . . . . . . . . . . . . . . . . . . . . 404.3 Double-point crossover illustration. . . . . . . . . . . . . . . . . . . . . . . . 40

5.1 Flowchart of the optimization process. . . . . . . . . . . . . . . . . . . . . . . 475.2 Weight evolution, for the PSO in Benchmark I. . . . . . . . . . . . . . . . . . 505.3 Evolution of the best, worst and mean values of the objective function with the

number of iterations, for the PSO in Benchmark I. . . . . . . . . . . . . . . . . 505.4 Evolution of the best, worst and mean values of the objective function without

penalization against the number of iterations, for the PSO in Benchmark I. . . . 505.5 Comparison of the solution at each evaluation without penalization with the

overall best solution at each iteration, for the PSO in Benchmark I. . . . . . . . 515.6 Weight evolution for the GA in Benchmark I. . . . . . . . . . . . . . . . . . . 525.7 Evolution of the best, worst and mean solutions of the objective function with

penalization against the number of iterations, for the GA in Benchmark I. . . . 535.8 Evolution of the best, worst and mean solutions of the objective function without

penalization against the number of iterations, for the GA in Benchmark I. . . . 535.9 Comparison of the solution at each evaluation without penalization with the

overall best solution at each iteration, for the GA in Benchmark I. . . . . . . . 545.10 Weight evolution, for the SA in Benchmark I. . . . . . . . . . . . . . . . . . . 555.11 Evolution of the best, worst and mean values of the objective function with pe-

nalization against the number of iterations, for the SA in Benchmark I. . . . . . 565.12 Evolution of the best, worst and mean values of the objective function without

penalization against the number of iterations, for the SA in Benchmark I. . . . . 565.13 Comparison of the solution at each evaluation without penalization with the

overall best solution at each iteration, for the SA in Benchmark I. . . . . . . . . 575.14 Evolution of the best, worst and mean values of the objective function against

the number of iterations, for the PSO in Benchmark II. . . . . . . . . . . . . . 595.15 Comparison of the solution at each evaluation without penalization with the

overall best solution at each iteration, for the PSO in Benchmark II. . . . . . . 605.16 Comparison of the position at each evaluation with the overall best position at

each iteration, for the PSO in Benchmark II. . . . . . . . . . . . . . . . . . . . 605.17 Evolution of the best, worst and mean values of the objective function against

the number of iterations, for the GA in Benchmark II. . . . . . . . . . . . . . . 615.18 Comparison of the solution at each evaluation without penalization with the

overall best solution at each iteration, for the GA in Benchmark II. . . . . . . . 625.19 Comparison of the position at each evaluation with the overall best position at

each iteration, for the GA in Benchmark II. . . . . . . . . . . . . . . . . . . . 625.20 Stress evolution, for the SA in Benchmark II. . . . . . . . . . . . . . . . . . . 635.21 Evolution of the best, worst and mean values of the objective function against

the number of iterations, for the SA in Benchmark II. . . . . . . . . . . . . . . 64

viii

Page 21: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

5.22 Evolution of the best, worst and mean values of the objective function with thenumber of iterations, for the PSO in Benchmark III. . . . . . . . . . . . . . . . 67

5.23 Comparison of the solution at each evaluation without penalization with theoverall best solution at each iteration, for the PSO in Benchmark III. . . . . . . 67

5.24 Combination of materials’ indexes for the PSO in Benchmark III. . . . . . . . . 685.25 Evolution of the best, worst and mean values of the objective function against

the number of iterations, for the GA in Benchmark III. . . . . . . . . . . . . . 695.26 Comparison of the solution at each evaluation without penalization with the

overall best solution at each iteration, for the GA in Benchmark III. . . . . . . . 695.27 Combination of materials’ indexes for the GA in Benchmark III. . . . . . . . . 705.28 Comparison of the solution at each evaluation without penalization with the

overall best solution at each iteration, for the SA in Benchmark III. . . . . . . . 715.29 Combination of materials’ indexes for the SA in Benchmark III. . . . . . . . . 715.30 Evolution of the best, worst and mean values of the objective function against

the number of iterations, for the PSO in Benchmark IV. . . . . . . . . . . . . . 735.31 Comparison of the solution at each evaluation without penalization with the

overall best solution at each iteration. for the PSO in Benchmark IV. . . . . . . 735.32 Combination of materials’ indexes for the PSO in Benchmark IV. . . . . . . . 745.33 Evolution of the best, worst and mean values of the objective function against

the number of iterations, for the GA in Benchmark IV. . . . . . . . . . . . . . 745.34 Comparison of the solution at each evaluation without penalization with the

overall best solution at each iteration, for the GA in Benchmark IV. . . . . . . 755.35 Combination of materials’ indexes for the GA in Benchmark IV. . . . . . . . . 755.36 Stress evolution, for the SA in Benchmark IV. . . . . . . . . . . . . . . . . . . 765.37 Evolution of the best, worst and mean values of the objective function against

the number of iterations, for the SA in Benchmark IV. . . . . . . . . . . . . . . 765.38 Combination of materials’ indexes for the SA in Benchmark IV. . . . . . . . . 775.39 Weight evolution for the alternative approach to the Benchmark III. . . . . . . . 795.40 Comparison of the solution at each evaluation without penalization with the

overall best solution at each iteration, for the alternative approach to the Bench-mark III. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

5.41 Combination of materials’ indexes for the alternative approach to the BenchmarkIII. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

6.1 Pareto curve of the multi-objective optimization. . . . . . . . . . . . . . . . . . 866.2 Results obtained from the multi-objective optimization when weight y = 0. . . 866.3 Results obtained from the multi-objective optimization when weight y = 0.5. . 876.4 Results obtained from the multi-objective optimization when weight y = 1. . . 88

B.1 Thickness evolution for the PSO in benchmark I. . . . . . . . . . . . . . . . . 113B.2 Comparison of the position at each evaluation with the overall best position at

each iteration, for the PSO in benchmark I. . . . . . . . . . . . . . . . . . . . 114B.3 Thickness evolution for the GA in benchmark I. . . . . . . . . . . . . . . . . . 114B.4 Comparison of the position at each evaluation with the overall best position at

each iteration, for the GA in benchmark I. . . . . . . . . . . . . . . . . . . . . 115B.5 Thickness evolution for the SA in benchmark I. . . . . . . . . . . . . . . . . . 115

ix

Page 22: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

B.6 Comparison of the position at each evaluation with the overall best position ateach iteration, for the SA in benchmark I. . . . . . . . . . . . . . . . . . . . . 116

B.7 Stress evolution for the PSO in benchmark II. . . . . . . . . . . . . . . . . . . 116B.8 Evolution of the best, worst and mean values of the objective function without

penalization against the number of iterations, for the PSO in benchmark II. . . . 117B.9 Thickness evolution, for the PSO in benchmark II. . . . . . . . . . . . . . . . . 117B.10 Rear stress evolution for the GA in benchmark II. . . . . . . . . . . . . . . . . 118B.11 Evolution of the best, worst and mean values of the objective function without

penalization against the number of iterations, for the GA in benchmark II. . . . 118B.12 Thickness evolution for the GA in benchmark II. . . . . . . . . . . . . . . . . 119B.13 Evolution of the best, worst and mean values of the objective function without

penalization against the number of iterations, for the SA in benchmark II. . . . 119B.14 Comparison of the solution at each evaluation with the overall best position at

each iteration, for the SA in benchmark II. . . . . . . . . . . . . . . . . . . . . 120B.15 Thickness evolution, for the SA in benchmark II. . . . . . . . . . . . . . . . . 120B.16 Comparison of the position at each evaluation with the overall best position at

each iteration, for the SA in benchmark II. . . . . . . . . . . . . . . . . . . . . 121B.17 Weight evolution for the PSO in benchmark III. . . . . . . . . . . . . . . . . . 121B.18 Evolution of the best, worst and mean values of the objective function without

penalization against the number of iterations, for the PSO in benchmark III. . . 122B.19 Weight evolution for the GA in benchmark III. . . . . . . . . . . . . . . . . . . 122B.20 Evolution of the best, worst and mean values of the objective function without

penalization against the number of iterations, for the GA in benchmark III. . . . 123B.21 Weight evolution for the SA in benchmark III. . . . . . . . . . . . . . . . . . . 123B.22 Evolution of the best, worst and mean values of the objective function against

the number of iterations, for the SA in benchmark III. . . . . . . . . . . . . . . 124B.23 Evolution of the best, worst and mean values of the objective function without

penalization against the number of iterations, for the SA in benchmark III. . . . 124B.24 Rear stress evolution for the PSO in benchmark IV. . . . . . . . . . . . . . . . 125B.25 Evolution of the best, worst and mean values of the objective function without

penalization against the number of iterations, for the PSO in benchmark IV. . . 125B.26 Rear stress evolution for the GA in benchmark IV. . . . . . . . . . . . . . . . 126B.27 Evolution of the best, worst and mean values of the objective function without

penalization against the number of iterations, for the GA in benchmark IV. . . . 126B.28 Evolution of the best, worst and mean values of the objective function without

penalization against the number of iterations, for the SA in benchmark IV. . . . 127B.29 Comparison of the solution at each evaluation without penalization with the

overall best solution at each iteration, for the SA in benchmark IV. . . . . . . . 127B.30 Evolution of the best, worst and mean values of the objective function against

the number of iterations, for the alternative approach to the benchmark III. . . . 128B.31 Evolution of the best, worst and mean values of the objective function without

penalization against the number of iterations, for the alternative approach to thebenchmark III. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

x

Page 23: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

Chapter 1

Introduction and Background

The field of armour systems, and in particular armour plates, whether for defence or protectivesystems, is facing a paradigm shift. If the focus, until approximately 30 years ago, was primar-ily to build armour systems that could withstand determined impact loads, now the focus has amulti-objective stand point. Not only it is necessary to fulfill ballistic impact or blast require-ments but it is also necessary to fulfill optimal design requirements often related to productioncosts and the weight of the structure. Although the need and demand for such lightweight ar-mour systems is increasing at a noticeable pace, there are yet limited literature and progressrelated with weight and/or cost optimization in such structures. Besides, most of the improve-ments are experimentally determined, relying in an empirical and intuitive perspective. Thus,conclusions are locally optimal and specific to the test circumstances. There are several reasonsthat one can point for the lack of progress in the wider context of impact optimization such asthe computational cost associated with optimization studies and user experience in modellingballistic impacts, as suggested by [Chen 2001]. The prevailing reason for this high complexityis that most impact events have a nonlinear and transient nature.

1.1 Armour Materials and Structures

A prevalent need for a continuous research on lightweight armour systems had emerged sincecenturies ago. However, the application of metals had prevailed on most armour structures untilthe 1960s. Although it is possible to name four materials (steel, aluminum, magnesium andtitanium) that are practical and functional as contenders for armour applications, only steel andaluminum are currently used in a wide scale due to raw material costs and ability to be workedand welded. These two metals have been widely used as they are good all-rounders, offeringreasonable hardness with good ductility and toughness [Hazell 2015]. Although their usage asprotective systems is becoming obsolete as there are light-weight non-metallic options availablesuch as ceramics and high-strength fibers, it still is likely that metals will be carried on for sometime. This is due to developments in porous or micro-architecture structures resulting in promis-ing designs such as cermets (hybrid armour systems made of a ceramic-metal combination).

In 1992, one of the first trials [Hetherington 1992] has been carried to prove that a two-layerdesign combining ceramic with aluminum presents reasonable mechanic properties while beinglighter than a single layer metal plate. Since then, a two-layer design configuration has beenwidely used for modern armour structures. The principle in this design is to have a front platemade of a hard and high-purity ceramic, while the rear plate is made of a ductile material such

1

Page 24: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

2 1.Introduction and Background

as metal or polymer. The front plate made of a hard material will attenuate the concentratedpressure on the rear plate by distributing it along the horizontal plane while the ductile rear platewill absorb the remaining kinetic energy of the projectile [Wilkins 1978]. Besides, there is areduction of wave propagation (and damage) velocity.

Hybrid materials are combinations of two or more materials assembled in such ways as tohave attributes not offered by either one alone [Ashby 2005]. Most often, hybrid materials areobtained by filling the gaps present within it’s volume with other materials. However, they canalso be sandwich structures, foams and more. Hybrid material’s enhanced properties are be-coming better understood and one example is the usage of ceramic inclusions to cause projectiledeflection, self-sealing of the hole and forced shear localization [Gu and Nesterenko 2007].

High-performance fibres (woven fabrics) make use of the high tensile strength of the fibres(∼ 2−3 GPa) and their low densities (∼ 1000−1500 kgm3). Because they have reasonablestrains to failure (∼ 3% − 6%) and they have excellent energy absorbing abilities (depicted bythe area under the stress-strain curve) [Hazell 2015].

1.2 Optimization Studies

Despite an increasing demand in lightweight armour structures, there is still little literature andprogress in this field. The authors [Park et al. 2005] made one of the first experiments regardingthe design optimization of a multi-layered plate under ballistic impact by numerical simulation.The goal of this study was to find the minimum weight of the target plate by adjusting its layer’sthicknesses while being able to withstand a high velocity impact without allowing penetrationand while retaining a specific volume. For the simulations, NET2D (a Lagrangian explicit timeintegration finite element code developed by two of the authors) was used. The Johnson-Cookconstitutive model was implemented due to the high-strain-rate plastic deformations involved.It was verified that the objective to minimize strain energy in order to maximize the strength ofthe target can also be expressed by minimizing the average temperature or average equivalentplastic strain (EQPS). As such, two case studies were presented. The first where the objec-tive was to minimize the average temperature, and the second were the objective-function wasto minimize the EQPS. The restrictions for both cases were identical, concerning about layerthicknesses and limiting the maximum EQPS at the critical element. At the end, both objective-functions presented similar results. The optimization algorithm used was a Response SurfaceMethod (RSM). The optimal results from the optimization algorithms were in conformity withthe results from the NET2D code. Although being one of the first studies on the field of structureoptimization in transient events, it is evident the need and the potential for future work: the ma-terial properties need proper validation and the optimization algorithm is not the most accurateand had only two variables.

Authors [Yong et al. 2008] presented a study on the application of genetic algorithms foroptimizing composites against impact loadings. Two optimization scenarios were presented, alow velocity impact of a slender laminated strip and a high velocity impact of a rectangular plateby a spherical impactor. The goal was to minimize the peak deflection in the plate under impactand to minimize the penetration velocity or maximize the rebound velocity, respectively. Thevariables in both cases were the ply angle configurations, but it is worth noting that in the for-mer scenario the ideal stacking sequence was known, which was 0° for all plies. Thus, the lowvelocity case study worked as a benchmark for the algorithm techniques used. A genetic al-gorithm coupled to a commercial finite-element package, LS DYNA, was adopted to perform

Isaac Reis Master Dissertation

Page 25: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

1.Introduction and Background 3

the impact analysis. A comparison with a commercial optimization package that included opti-mization methods such as the Monte Carlo and Neural Network techniques, LS OPT, was alsomade. For the low velocity benchmark, both Monte Carlo and Neural Network techniques re-sults were particularly good. It was verified that the Monte Carlo method performed better forsmaller test sets while the neural network had better results for larger sets. The genetic algorithmadopted performed better results for the high velocity scenario where the search space is largerand non-linear. A study carried by the same author [Yong et al. 2010], focused on applyingthe same genetic algorithm coupled to LS DYNA to optimise hybrid multilayered plates subjectto ballistic impacts. In this study, low cost but sufficiently accurate models were generated sothey could be later used by the optimization algorithm to generate new hybrid offsprings. Thegoal was to minimize weight and design costs from a selection of isotropic metals, polymers andorthotropic fibre-reinforced laminates. Both the number of plies and their material’s mechanicalproperties were variable while maintaining their thickness constant. Experimental validation ofthe optimal designs identified were successfully carried out using a single stage gas gun. Nev-ertheless, the authors are clear that further work needs to be done with sufficient computationalhardware and using finer meshes, equations of state and sophisticated material models so thathybrid systems can be identified from a wide range of materials, designs and threads.

1.3 Objectives and Scope

The aim of this dissertation is to develop an understanding of non linear optimization algorithmsapplied to a complex engineering design problem: a multi-layer plate under a ballistic impact.Furthermore, this dissertation can be divided into three interdependent objectives:

1. Develop a sound understanding of the physics and mechanics involved in a transient eventsuch as that of a ballistic impact on a multi-layer plate. These insights can be used inAbaqus Python scripting to construct and validate a proper simulation model of such eventand, ultimately, prepare this script to be fully integrated in future optimization algorithms.

2. Acquire a comprehensive knowledge on three metaheuristic algorithms: Particle SwarmOptimization (PSO), Genetic Algorithm (GA) and Simulated Annealing (SA). Evaluatethe performance of each algorithm in four different benchmarks that gradually increasein complexity. These benchmarks are intended to test not only the algorithms, but theirintegration with the Python simulation model built previously. Accordingly, different pro-gramming strategies, algorithm parameters, problem formulations and constraints are tobe discussed.

3. Perform a multi-objective optimization using the most efficient algorithm selected fromthe previous benchamrks. This final optimization procedure is intended to minimize theweight of the multi-layer plate and, also, minimize the stress at the rear side of the plate.This multi-objective problem uses advanced techniques and methods such as the normal-ization of each single-function and the weighted sum method. Besides, it integrates bothcontinuos and discrete variables.

1.4 Motivation

The objectives for this dissertation completely fulfill four major branches of the mechanicalengineering field which involves programming, optimization, structural and simulation skills.

Isaac Reis Master Dissertation

Page 26: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

4 1.Introduction and Background

In a paradigm shift where many engineers are facing more and more problems that requirethe analysis of large amounts of data, skills on metaheuristic optimization algorithms may becrucial. Besides, such skills are a door open to an emerging field of machine learning, whichbasic concepts are just an extension of what optimization algorithms are intrinsically aimed todo. Furthermore, this dissertation was selected with the ambition of developing a thoroughunderstanding of optimization algorithms and consolidate programming and simulation skills.

1.5 Dissertation Structure

This document is structured into 8 different chapters, that are organized as follows:

• Chapter 1: Introduction and framework on the filed of design optimization, ballistic im-pacts and armour materials and structures. The objectives and motivation for this disser-tation are set;

• Chapter 2: Introductory concepts on the physics and mechanics of wave propagation;

• Chapter 3: Incremental building of a generic Abaqus Python script model of the sys-tem. Development of variables of study. Validation of the model in terms of its dynamicresponse integrity and wave velocity;

• Chapter 4: General concepts on the fundamentals of engineering optimization; Introduc-tion and general concepts of three metaheuristic algorithms;

• Chapter 5: Development of four optimization benchmarks that aimed test the three al-gorithms, different problem formulation, constraints, variables of study and programmingstrategies. The previously generated Abaqus Python script is integrated in the optimiza-tion formulations and, thus, also tested. At the end, the overall most efficient algorithm isselected;

• Chapter 6: Implementation of a multi-objective optimization procedure using the se-lected algorithm from the previous benchmarks. A proper Pareto’s curve is generated andexplained;

• Chapter 7: Final remarks, which include the major conclusions of this dissertation andproposals of future work on this field.

Isaac Reis Master Dissertation

Page 27: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

Chapter 2

Physics of Wave Propagation

As one of the major objectives of this dissertation implies the study, development and analysis ofballistic model designs (which imply a projectile impact upon a target), the sound understandingof how waves propagate and behave through such system is required. For the scope of thischapter, it is important to note that the majority of the concepts here presented were basedon [Hazell 2015].

Stress waves arise every time there is contact between a moving object and a stationaryobject. Such waves will propagate from the point of impact and move into the projectile andtarget simultaneously [Zukas and Scheffler 2001]. On low velocity collision scenarios, the waveis expected to be elastic in nature. By increasing the projectile’s velocity, the resultant wavecan be inelastic. Nevertheless, this dissertation will mainly focus on impacts that result only inelastic waves.

The phenomenon of wave propagation is nothing more than the manifestation of a syn-chronous movement of the object’s constitutive particles as they are affected by the wave andthrough every direction starting from the impact region. The velocity uP by which these parti-cles move when affected by the wave depends on the object materials’ mechanical properties,namely its elastic modulus, E, and density, ρ0, can be stated as

uP =σ√ρ0E

, (2.1)

where σ is the stress induced by the impact. It is important to note, though, that particles locatedat free edges will have twice this velocity due to the phenomena of rarefaction.

A ballistic impact model is essentially composed of a target and an impactor and, both ofthese objects are simultaneously affected by a wave that emanates through them after the impact,as explained before. However, this wave velocity, c0, will vary according to the material instudy. For an elastic wave travelling in a bounded medium, such as a bullet, its wave velocitycorresponds to

c0 =

√E

ρ0. (2.2)

For an elastic wave travelling within the target (semi-infinite medium), its velocity will beslightly higher than the value calculated in 2.2 and will be function of the Poisson’s ratio, ν, as

5

Page 28: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

6 2.Physics of Wave Propagation

well as the Young’s modulus and density and it is calculated as

c0 =

√E(1− ν)

ρ0(1 + ν)(1− 2ν). (2.3)

The transmission of an elastic wave is influenced by the composition of its medium. Forinstance, in a target composed by two or more layers of different materials, when an elastic waveof intensity σI arrives at those layers’ interfaces there will be a portion that will be transmittedσT into the next layer whilst a portion will be reflected σR back. This event, which is depicted inFigure 2.1 is of a great importance for further studies in this dissertation as the target modeledin every simulation will be composed of three layers. The proportion of the elastic wave whichis reflected and transmitted is directly dependent on the relative mechanical impedance of thematerials. The elastic impedance, which has units of kg/m2s, is

Z =√Eρ0 = ρ0c0. (2.4)

Figure 2.1: Transmission and reflection of an elastic wave at an interface.

The interface between two materials A and B is at a state of equilibrium if

σI = σT + σR, (2.5)

where the subscripts I, T and R stand for the incident, transmitted and reflected wave, respec-tively. The continuity at the interface can be stated as

uI = uT + uR, (2.6)

where u represent the particle velocity. Ultimately, from equations 2.5 and 2.6, it is possible toderive equations 2.7 and 2.8. These equations are intended to measure the intensity of stress thatis transmitted and reflected and they essentially depend on each individual material impedance,as

σT

σI= 2

( √EBρB√

EAρA +√EBρB

), (2.7)

Isaac Reis Master Dissertation

Page 29: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

2.Physics of Wave Propagation 7

σR

σI= 2

(√EBρB −

√EAρA√

EAρA +√EBρB

). (2.8)

From equations 2.7 and 2.8 the transmitted wave will always be positive (compressive)whilst the reflected wave can either be positive or negative (compressive or tensile, respectively)depending on the properties of the materials. If material B has a lower impedance than materialA, the reflected wave has a tensile nature whilst if the material B has a higher impedance thanmaterial A, the reflected wave will be compressive. If a plate isn’t backed by anything (materialB is air), the stress wave is completely reflected back.

Isaac Reis Master Dissertation

Page 30: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

.

Page intentionally left blank.

Page 31: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

Chapter 3

Model Discussion and Validation

This chapter aims to develop and validate a fully operational Python script for a ballistic simu-lation model to be later integrated in optimization algorithms (Chapters 5 and 6). In order to doso, a thorough analysis and testing of different methods and criteria will be discussed throughoutthis chapter.

As a means of improving the time required for the simulation procedures and to automaterepetitive tasks, a parametrization approach was adopted whenever possible. Parametric studiesallow to generate, execute and gather results of multiple analyses that differ only in the valuesof some of the parameters used in place of input quantities [Simulia 2014].

3.1 Abaqus Scripting and Python Programming

The Abaqus scripting interface, which is an extension of the Python object-oriented program-ming language, is an application programming interface (API) [Inc 2004]. This scripting in-terface, which are Python scripts, are intrinsically powerful and dynamic as they can be usedto create and modify a model, submit a job and read and write from an output database. Ulti-mately, the Abaqus scripting interface is a crucial tool not only to develop parametric studies butalso to create scripts that can be integrated in other program subroutines, such an optimizationalgorithm (Chapters 5 and 6). The Abaqus scripting interface also allows to bypass the Abaqusgraphic user interface (GUI) and comunicate directly with the kernel. Figure 3.1 illustrates howAbaqus scripting interface interacts with Abaqus’ Kernel.

Besides being the standard programming language used in the Abaqus scripting interfaceand, thus, used to build every simulation model present in this dissertation, Python was also thechosen language to program the optimization algorithms in both chapters 5 and 6. Python isan open-source programming language designed to help programmers write clear and logicalprograms [Altom and Chapman 1999]. It is an interpreted programming language, dynamicallytyped and supports multiple paradigms, including procedural, object-oriented and functionalprogramming. It is also supported in multiple operating systems, which led to a continuouslygrowing global community.

9

Page 32: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

10 3.Model Discussion and Validation

Figure 3.1: Flowchart of how Abaqus scripting interface interacts with Abaqus Kernel. [Inc2004]

Isaac Reis Master Dissertation

Page 33: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

3.Model Discussion and Validation 11

3.2 Model Design

The geometry and dimensions of the ballistic system that are consistently used throughout thisdissertation, consist of a three layer plate and a cylindrical projectile which adopted nomencla-ture is illustrated in Figure 3.2a. This model geometry and dimensions arise as a starting pointfrom a previous study on the field of ballistic impacts [Pittman 2017] and in the context of apartnership between the University of Aveiro and the University of Edinburgh. This study wasconducted using LS Dyna as a software to simulate the ballistic impact system and some of it’sresults and conclusions will be used as a standpoint for comparison and further developmentthroughout this chapter.

(a)

(b)

Figure 3.2: Model of the ballistic system. a) configuration nomenclature; b) ballistic impactmodel.

Figure 3.2 depict a quarter of the ballistic model system, which symmetry will be conve-

Isaac Reis Master Dissertation

Page 34: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

12 3.Model Discussion and Validation

niently validated in Section 3.2.4. The projectile was modeled as a rigid body and, as Abaqusdoes not allow the assignment of a material to a rigid body, a point of inertia correspondent to0.147025 kg was generated and assigned to the projectile.

As noticeable in Figures 3.2, each layer of the plate is divided into several partitions. Thesepartitions are larger, in area, as they are more distant from the impact region. In fact, at the impactregion itself, it was created a partition that has the exact same area as the projectile’s base. Suchpartitions were programmed into the Python script of the model for several purposes: being ableto optimize the mesh density of the plate, as explained in Section 3.2.3, and to generate outputsat specific important areas of plate, as elucidated in Section 3.2.1.

3.2.1 Impact Region Analysis

This section is intended to validate two variables of study generated and calculated using AbaqusPython scripting. These variables will be constantly used throughout this dissertation, withspecial emphasis in optimization procedures. Accordingly, it is imperative to have a soundunderstanding on the principles used to generate these outputs.

As every simulation model is created using Abaqus Python scripting, it is possible to takeadvantage of Abaqus parametric input which allows greater flexibility in building and manip-ulating models [Simulia 2014]. Accordingly, when programming the script for this model, theplate was set in such way that every one of its layers automatically has a specified number offeatures assigned, such as sets, surfaces and partitions. These features are independent of thenumber of layers a plate may be programmed to have. So if a plate has 4 layers, each one hasassigned features. An example of a design feature that is programmed in every layer is a geo-metric set at the front impact region and another at the rear impact region as illustrated in Figure3.3. The creation of such sets is important, as they can be used to generate specific outputs, suchas the average stress within that set’s area. Besides, they were created due to the necessity ofhaving reliable and good quality variables of study that can be applied, for example, in futureoptimization problems as in Chapter 5. As such, these sets will, essentially, be used as a meansto generate two important study variables: the peak stress from the average of all nodes at theimpact region set and the total force due to contact.

Figure 3.3: Front and rear impact region sets.

Isaac Reis Master Dissertation

Page 35: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

3.Model Discussion and Validation 13

Peak stress from the average of all nodes at the impact region set

Graphs from Figures 3.4 and 3.5 illustrate the process of averaging the stress, σz, of all nodeswithin the impact region at every time increment for both the front and rear impact region sets,respectively.

After executing the simulation in Abaqus, the data related with the σz of every node withinboth the front and rear impact regions is stored in predefined variables in the Python script thatare then used to calculate the average at every time instant. The ultimate interest in doing so isto obtain the maximum average stress at the impact region. This process allows the generationof a useful and reliable criteria variable, although not being a direct output form the simulation.

(a)

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

·10−4

−1.5

−1

−0.5

0

·108

Time [s]

Stre

ss[P

a]

Stress at the front IR

(b)

Figure 3.4: a) Stress from all nodes at the front impact region (graph extracted from Abaqus)and b) average stress at every time increment using a Python script.

Isaac Reis Master Dissertation

Page 36: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

14 3.Model Discussion and Validation

(a)

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

·10−4

−6

−4

−2

0

2·107

Time [s]

Stre

ss[P

a]

Stress at the rear IR

(b)

Figure 3.5: a) Stress from all nodes at the rear impact region (graph extracted from Abaqus) andb) average stress at every time increment using a Python script.

Isaac Reis Master Dissertation

Page 37: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

3.Model Discussion and Validation 15

Total Force due to Contact

Since the impact region’s set corresponds to the area of contact between the projectile and thefront surface of the plate, it can also be used to generate the total force due to contact pressureat every instant, as is depicted in figure 3.6. This generated output is used in Section 3.2.5 tocalculate and validate the system’s equilibrium and dynamic response.

From graph 3.6, it is perceptible that the impact occurs at ∼ 3 µs, leading to a gradual in-crease of the contact force until it reaches its maximum value of 22.1 KN, at∼ 20 µs. This pointof maximum contact force corresponds to the instant at which the projectile changes directionto its opposite due to the elastic effect of the plate. At ∼ 36 µs, the projectile ceases its contactwith the plate.

0 1 2 3 4 5 6 7 8

·10−5

0

0.5

1

1.5

2

2.5·104

Time [s]

Forc

e[N

]

Contact Force

Figure 3.6: Total force due to contact pressure at every time increment.

3.2.2 Boundary Conditions

Besides the usage of symmetry boundary conditions (that will be validated in Section 3.2.4)and a predefined projectile velocity, it was also established a boundary condition regarding howthe plate is supported. Accordingly, three different scenarios for this boundary condition werestudied: the first where the plate is clamped by the side surfaces of the plate (Figure 3.7a), thesecond where the plate is only pinned at the side edges of the rear surface of the plate (Figure3.7b) and the third where the plate is clamped at the rear surface of the plate (Figure 3.7c).

From Figure 3.8 it is possible to compare the stress at the rear surface of the plate at eachtime increment for each one of the three scenarios studied. From this analysis, the graph fromFigure 3.8c (third scenario) depicts a more uniform behaviour comparatively to the other twographs. Table 3.1 presents the results obtained for each scenario and it is perceptible that bothscenarios one and two have very close values for the stress at the front and bottom impact regionand, also, the contact force. These results do not seem congruent with graphs 3.8a and 3.8b atthe first sight. However, the results are correct as they only refer to the average stress calculatedat the impact region.

It is indisputable that the boundary condition where the plate is clamped at the rear surfacepresent more uniform results throughout the entire impact time period. This may be explained

Isaac Reis Master Dissertation

Page 38: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

16 3.Model Discussion and Validation

(a)

(b)

(c)

Figure 3.7: Three boundary condition studies: (a) plate clamped by the side surfaces of the plate,(b) plate pinned at the side edges of the rear surface of the plate, (c) plate clamped at the rearsurface of the plate.

Isaac Reis Master Dissertation

Page 39: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

3.Model Discussion and Validation 17

as the particular configuration of this boundary condition minimizes the propagation of wavesthroughout the OX and OY axis. Accordingly, waves propagating in the OZ direction suffersignificantly less interference when comparing to the results from the other boundary conditions.Thus, these results are more reliable either for interpretation or to measure the average peakstress at the impact region as explained in Section 3.2.1 or even to perform a mesh study as inSection 3.2.3. Furthermore, this boundary condition was elected to be implemented in furthersimulations throughout this dissertation.

Table 3.1: Results from the 3 boundary condition scenarios.

Boundary Condition ScenarioMax. σz [MPa]Front Impact Region

Max. σz [MPa]Rear Impact Region

Contact Force [N]

1. Encastered at the sides 29.024 0.4885 10800.852. Pinned 29.025 0.4885 10800.63. Encastered at the rear surface 62.158 44.384 22068.03

Isaac Reis Master Dissertation

Page 40: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

18 3.Model Discussion and Validation

(a)

(b)

(c)

Figure 3.8: Evolution of σz from all nodes at the rear surface for a) boundary condition case 1,b) boundary condition case 2 and c) boundary condition case 3.

Isaac Reis Master Dissertation

Page 41: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

3.Model Discussion and Validation 19

3.2.3 Mesh Convergence

The mesh configuration has a direct correlation with the quality of the results being measuredand with the computational cost of each simulation. As the main purpose of this chapter is tocreate and validate a generic model script to be integrated in non-linear optimization algorithmsthat require hundreds of simulations, it is mandatory to find an optimal mesh size that requiresthe shortest time possible to run without compromising the results.

During the ballistic impact phenomenon, there are stress waves that propagate throughoutthe plate’s horizontal plane (transverse waves) and through the thickness direction (longitudinalwaves). Section 3.2.6 goes into more detail about the propagation of elastic waves and how itis strictly related with the mesh quality. Thus, this mesh convergence study was divided intotwo major steps: convergence study along the plate’s horizontal plane and a convergence studythrough the plate’s thickness direction. The decisive criterion in both cases was the peak stressmeasured at the rear plate’s impact region (explained in Section 3.2.1). For the purpose ofthis study, the model was a plate of only one layer. The element type used was a eight-nodebrick element with reduced integration (C3D8R) and with hourglass control for the plate. Theprojectile, as a rigid body, uses a four-node bi-linear rigid quadrilateral (R3D4).

Mesh Convergence Through the Horizontal Plane of the Plate

In this first mesh study, the mesh size of each partition of the plate varied while keeping themesh size through the thickness direction always constant and equal to 3 mm. Hence, a para-metric study was performed, where the mesh size in each partition varied within the interval:[0.05, 0.001] m, divided in 11 increments.

Table 3.2 presents not only the average peak stress at the rear surface of the plate but alsothe final velocity of the projectile and its acceleration, and the average peak stress at the frontsurface. Furthermore, it is perceptible an identical convergence ratio for each one of those resultas the mesh density increases. Moreover, although not being a direct output from the simulationas explained in chapter 3.2.1, it is legitimate to use the average peak stress at the rear impactregion as the criteria for choosing the best mesh configuration.

The graph in Figure 3.9 illustrates the evolution of the average peak stress at the plate’s rearimpact region and the time required to complete the simulation as the number of elements of theplate increases. As shown in the graph, the time required to perform the simulation increasesslightly more that ten times (∼ ×10) from 80304 to 564604 elements while having an increaseof ∼ ×1.15 in the peak stress at the rear impact region. For that reason, it is reasonable to chosethe mesh configuration that resulted in a total number of elements of 80304 (as marked in dashedlines in Figure 3.9) to be integrated in future simulations. It is important to note, though, thatthis choice also takes into consideration future optimization procedures where the mesh densityplays an important role for the computational cost of the model.

Isaac Reis Master Dissertation

Page 42: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

20 3.Model Discussion and Validation

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6

·105

2

3

4

5·107

Number of Elements

Stre

ss[P

a]

0

200

400

600

800

1,000

1,200

Tim

e[s

]

Rear Peak StressExecution Time

Figure 3.9: Number of elements against the time required to complete the simulation and thepeak stress at the rear surface for case 1; the parameters chosen are marked with the dashed line.

Table 3.2: Evaluated variables in each step of the mesh optimization.

StepNo.

ElementsFinal projectile vel.

[m/s]acceleration

[m/s2]

max. σzat front Imp. Region

[Pa]

max. σzat rear Imp. Region

[Pa]

run time[s]

1 2128 -1.4142 -94818.7216 53565663.57 38863771.87 39.192 5120 -1.4104 -94880.0602 60870498.80 39627614.36 39.453 11350 -1.4138 -90992.7863 59642913.13 38680990.07 40.294 27885 -1.4167 -95154.8419 60002882.43 40075827.26 43.165 34164 -1.4153 -91244.8496 60296438.85 40368236.26 55.416 47008 -1.4127 -94930.1962 60462640.23 41294198.13 77.387 61488 -1.4133 -95110.4932 60924852.43 41390959.97 89.638 80304 -1.4134 -95030.9502 60761544.75 41025602.84 108.249 129640 -1.4093 -94882.9273 60569767.40 42470707.77 237.7910 266120 -1.4122 -95028.9499 62651536.78 45119206.56 457.5311 564604 -1.4100 -94918.3998 63673923.88 47164009.64 1130.97

Isaac Reis Master Dissertation

Page 43: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

3.Model Discussion and Validation 21

Mesh Convergence Through the Plate’s Thickness Direction

The second study intends to optimize the mesh density along the thickness direction of the platewhile maintaining the mesh density at the plate’s surface constant. For this reason, the meshresults obtained from the previous study are used and kept constant throughout the current meshstudy.

Following the same reasoning as in the previous study, the mesh size along the thicknessof the plate varied in the given interval: [0.01, 0.0001], divided by 11 increments. As shown ingraph 3.10, the time required to execute the simulation increases significantly (∼ ×3.7) from26880 to 77500 elements while the average peak stress at the rear impact region only increases∼ ×1.024. Thus, the mesh configuration parameters that resulted in a number of 26880 elements(as marked in dashed lines in Figure 3.10) will be used in further simulations.

0 1 2 3 4 5 6 7 8 9

·104

2

3

4

5·107

Number of Elements

Stre

ss[P

a]

0

50

100

150

200

Tim

e[s

]

Rear Peak StressExecution Time

Figure 3.10: Number of elements against the time required to complete the simulation and thepeak stress at the rear surface for case 2; the parameters chosen are marked with the dashed line.

Mesh Optimization Results

The mesh configuration results are graphically illustrated in figure 3.11. This mesh is structuredand the number of elements intentionally increases as the distance to the impact region decreases.By doing that, the total number of elements can be drastically reduced while not compromisingstress propagation, especially thought the z direction (thickness direction). Hence, the mini-mum execution time can be guaranteed allowing a better performance of the simulation modelwhen integration in future optimization procedures. Nevertheless, as every simulation in thisdissertation is made using Python scripts, these parameters can be easily replaced if necessary.

Isaac Reis Master Dissertation

Page 44: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

22 3.Model Discussion and Validation

Figure 3.11: Details of the mesh.

3.2.4 Symmetry Validation

The use of symmetry boundary conditions can drastically reduce computing time and data stor-age space. Accordingly, only one quarter models were built and used for the scope of thisdissertation, as suggested in Chapter 3.2.

To validate the use of symmetries in the model, two identical simulations were replicated: afull size model (Figure 3.12) and a quarter size model (Figure 3.11). The evaluation criteria wasthe average peak stress at the rear and front impact region, the final velocity of the projectile,maximum contact force and the resultant stress. The resultant stress is calculated as follows

Rs =Fc

AcN, (3.1)

where Rs is the resultant force, Fc the maximum contact force and Ac is the area of contact. Acomparison of the stress measured at the rear impact region of the plate using both full and quar-ter sized models is illustrated in Figure 3.18. Table 3.3 depicts the results from both simulationsand it is perceptible that the percentage difference is under 1% in every parameter evaluatedexcept for the stress at the front impact region which is 2.3%. Besides, there was a decreaseof ∼ 68.9% in execution time when using the quarter sized model. Thus, for the purpose ofthis dissertation, a quarter model of the system is arguably validated as equivalent to the wholemodel.

Isaac Reis Master Dissertation

Page 45: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

3.Model Discussion and Validation 23

Figure 3.12: Front view of the full plate.

Table 3.3: Results of a full sized model and a quarter model simulation.

Whole model A quarter of the model Deviation [%]Peak σz at Rear Imp. Region [Pa] 45245582.23 45517851.77 0.6018Peak σz at Front Imp. Region [Pa] 64204347.27 62726039.52 2.3025Final Velocity [m/s] -1.415 -1.412 0.2279Maximum Contact Force [N] 88636 4 ×22102 0.2572Resultant Stress [Pa] 70352969 70533921 0.2572Execution Time [s] 275.19 85.40 68.9669

Isaac Reis Master Dissertation

Page 46: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

24 3.Model Discussion and Validation

(a)

(b)

Figure 3.13: Stress from all nodes of the rear surface of the plate: a) full model; b) quartermodel.

Isaac Reis Master Dissertation

Page 47: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

3.Model Discussion and Validation 25

3.2.5 Dynamic Response of the System

When modeling and simulating transient events it is important to verify and validate the dynamicforces in the system. Hence, the following method was followed:

1. Contact force analysis

A comparison was made between the force calculated due to the acceleration induced in theprojectile and the average contact force from Figure 3.6 during the contact period. Thus, theacceleration of the projectile during the contact period can be calculated as

a =

∣∣∣∣vf − vi

tf − ti

∣∣∣∣ = ∣∣∣∣ −1.41− 1.5

3.61× 10−5 − 3.38× 10−6

∣∣∣∣ = 88 993.59m s−2, (3.2)

where a is the acceleration, v is the velocity, t is the time instant and the subscripts f and icorrespond to the final and initial instants, respectively.

Knowing the mass of the projectile, calculating the force induced during the contact periodis straight forward, as

F = m× a = 0.147025× 88993.59 = 13 084.28N, (3.3)

where F is the force in Newton and m is the mass of the projectile in kilograms. Comparingthe results from Equation 3.3 to the values from Figure 3.6, which resulted in an average forceduring the contact period of 13074.83 N, the final deviation is only of 0.072%. Accordingly, thecontact force of the interaction between the projectile and the plate is approved.

2. Resultant Stress Analysis

From the resultant force in Equation 3.3 and knowing the contact area between the projectileand the plate, it is possible to calculate the resultant stress from Equation 3.1 as:

Rs =Fc

Ac=

13084.28

(π × 0.022)/4= 41.65MPa. (3.4)

The average stress from the impact region (Figure 3.4b) during the contact period is 37.07MPa. Comparing with the result from Equation 3.4, the deviation is ∼ 11.63%. This deviationcan be considered tolerable since the graph from Figure 3.4b itself, is already the result ofa process of averaging as explained in Chapter 3.2.1. Thus, two processes of averaging areconducted in order to obtain the above result of 37.07 MPa.

3.2.6 Elastic Wave Velocity Analysis

An important component of this dissertation involves calculations and analyses related with themechanics of wave propagation in a transient event. Consequently, a proper validation of thisphenomena in Abaqus was carried out. To ensure that the elastic wave is measured with enoughresolution and that the results are accurate, three rules must be followed [Graff 1991]:

1. Time increment size should be low enough to capture the smallest natural period of inter-est;

2. Element size should be small enough to capture wave length;

Isaac Reis Master Dissertation

Page 48: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

26 3.Model Discussion and Validation

3. Element size should not be so small that in one increment, the wave crosses the element.

It is important to note that, for the scope of this analysis, a plate made of a generic aluminiumalloy (E= 70GPa, υ= 0.33, ρ = 2700 kgm−3) was used. Furthermore, it is possible to calculatethe theoretical elastic wave speed at the plate by applying Equation 2.3, which results is c=6197.824 m/s. Thus, its impulse wavelength Iw can be calculated as [Graff 1991]:

Iw = 2× c× dt = 2× 6197.824× 2.0× 10−6 = 2.48× 10−2m, (3.5)

where c is the theoretical wave speed. Therefore, a mesh size of h = 1 × 10−3 m was used inthe simulation model as it is more than enough to capture the propagation of the elastic wave(h < Iw).

The critical time increment T can be calculated as:

T =h

c=

1× 10−3

6197.824= 1.61× 10−7s. (3.6)

Accordingly, a maximum time increment of 1.0 × 10−7 s was used for the scope of thisstudy. Finally, by using a small time increment (T = 1.0×10−7) s and a sufficiently small meshsize (h = 1× 10−3 m), the Courant–Friedrichs–Lewy condition (CFL condition) is met in orderto maintain the accuracy of solutions [Gnedin et al. 2018, Plesek et al. 2012].

Having defined the required size of the mesh and the maximum step increment, it is nownecessary to perform the simulation such that the necessary output is generated and identified.The adopted method to calculate and validate the elastic wave velocity is enumerated as follows:

1. Chose the plane where the elastic wave will be evaluated;

2. Identify and select a path of nodes that follow the same direction and are in the previouslydefined plane;

3. Calculate the linear distance between each selected node;

4. After completing the simulation, obtain the time instant by which each previously selectednode was hit by the elastic wave;

5. Calculate the slope between the selected nodes and compare the results with the theoreticalformulation in Equation 2.3.

Following the method explained above, three nodes were selected as shown in figure 3.14.After completing the simulation, a graph of the displacement in the OX direction against timewas generated for each node (Figure 3.15), allowing to get the very first instant when each nodesuffered a displacement (which is the equivalent to the instant where each respective node suf-fered the first elastic wave impact). Having the distance between each node and their respectivetime attached, it was then possible to calculate the slope between nodes which corresponds to theelastic wave velocity. As can be seen in the graph from Figure 3.16, the calculated slope, 6133.6m/s, is very close to the theoretical value which is 6197.82 m/s (Equation 2.3). The deviation isclose to 1% as shown in Table 3.4.

Figure 3.17 clearly depicts how elastic waves propagate through the horizontal plane of theplate. It starts with a snapshot close to the instant of the impact at 54 µs and it shows how wavesdisperse in same proportion in both OX and OY directions. At instants t = 92 µs waves arealready being reflected thought the length of the plate due to its short distance to the impact. Att = 98 µs is shown reflection through the plate’s width and after t = 128 µs reflected waves arestarting to interfere with one another.

Isaac Reis Master Dissertation

Page 49: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

3.Model Discussion and Validation 27

Figure 3.14: Identification of the nodes previously selected at the plate’s mesh.

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

·10−4

−0.5

0

0.5

1·10−7

P1 P2 P3

Time [s]

Dis

plac

emen

t[m

]

P1P2P3

Figure 3.15: Displacement against time for each node being analyzed.

Table 3.4: Comparison between the velocity obtained from the simulation and from the theoret-ical formulation.

Slope [m/s] Theoretical Value [m/s] Deviation [%]6133.6 6197.824 1.04

Isaac Reis Master Dissertation

Page 50: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

28 3.Model Discussion and Validation

1.6 1.8 2 2.2 2.4 2.6 2.8 3 3.2 3.4 3.6 3.8 4 4.2 4.4

·10−5

0

5 · 10−2

0.1

0.15

0.2

0.25

Time [s]

Dis

tanc

e[m

]

y = 6133.6x - 0.0342

Figure 3.16: Distance between each node against the instant when they suffered the first waveimpact. Calculation of the slope which represents the wave velocity.

Figure 3.17: Snapshots of the elastic wave propagation and interference.

Isaac Reis Master Dissertation

Page 51: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

3.Model Discussion and Validation 29

3.2.7 Contact Type

When simulating events that involve contact and interaction between different bodies, a propercontact interaction model must be defined according to the particular features that characterizethe event to be modeled. Abaqus provides two different algorithms for modeling contacts [Inc2004]:

• 1. General contact

– This algorithm allows the contact definition between many or all regions of a modelwith a single interaction. It typically includes all type of bodies in the model, the sur-face definition is automatic and, besides, it has very few restrictions on the surfacesinvolved. The contact constraint is the penalty method. General contact algorithm ismore suited to models with multiple components and complex topology.

• 2. Contact pair

– This algorithm requires the specification of each of the individual surface pairs thatcan interact with one another. It has more restrictions on the types of surfaces in-volved and has two types of contact constraint: kinematic compliance and penaltymethod. Penalty method is more appropriate for interactions in which at least one ofthe bodies is rigid and, as such, it was chosen when using the contact pair algorithm.

For the purpose of this study, a plate of three layers was modeled and four contact typescenarios were studied:

– Case 1:

A general contact interaction algorithm was used in the model.

– Case 2:

A contact pair algorithm (surface to surface) was used between the projectile and thefront surface of the plate and also between layers.

– Case 3:

A contact pair algorithm (surface to surface) was used between the projectile and thefront surface. A Tie constraint 1 was used between each layer.

– Case 4:

A general contact interaction algorithm was used in the model. A Tie constraint wasused between each layer.

1A tie constraint ties two separate surfaces together so that there is no relative motion between them.

Isaac Reis Master Dissertation

Page 52: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

30 3.Model Discussion and Validation

Results analysis

In case 1 and case 2, the same simulation model is used except for the contact algorithm. Thesame applies for cases 3 and 4 except that the model here used has a tie constraint betweenlayers. The purpose was to begin by using a general model and then compare the results with amore specific one. As depicted in figure 3.18, the stress at the rear surface of the plate followedthe same behavior between contact types 1 and 2 and between contact types 3 and 4. The samebehaviour is illustrated in graph from Figure 3.19 when comparing the average peak stress at therear impact region for all cases.

The contact types 3 and 4 slightly outperformed contact types 1 and 2 in terms of executiontime. This may be explained due to the usage of a tie constraint algorithm in the former cases,which is less broaden than the latter cases’ algorithms in terms of applicability and, thus, resultsin less computational processing. Because the main focus of this chapter is to create a simulationmodel to be implemented in optimization studies, it is of best interest to opt for a model thatrequires the less computational processing whenever justifiable. Thus, because contact 2 do notallow abaqus to calculate the total force due to contact pressure at the impact region (as explainedin chapter 3.2.1), the contact type number 3 will be constantly used in further simulations.

(a) (b)

(c) (d)

Figure 3.18: a) Contact type 1. b) Contact type 2. c) Contact type 3. d) Contact type 4.

Isaac Reis Master Dissertation

Page 53: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

3.Model Discussion and Validation 31

1 2 3 4

1.3

1.4

1.5

1.6

1.7

·107

1.66 · 107 1.67 · 107

1.43 · 107 1.45 · 107

Contact Type

Peak

Stre

ss[P

a]

Figure 3.19: Graph combining the four contact type results.

3.2.8 Configuration Study

A configuration study of the model was carried in order to find the critical combination thatwould result in the highest peak stress at the rear surface. Hence, only two layers were modeledin this study, the front and bottom layers. The purpose of this study is to find a controlledconfiguration for the front and bottom layers so that further studies on interlayer parameters(as in Section 3.3) may be also controlled and, thus, lead to reliable conclusions. Ultimately,the base model that results from this study will be useful to begin testing different non linearoptimization algorithms as the number of variables can be reduced to only properties related withthe interlayer, such as its mechanical properties or thickness. In order to begin this configurationtest, four scenarios were considered as shown in Table 3.5:

Configuration Front Layer Rear LayerAA Aluminium AluminiumAS Aluminium SteelSA Steel AluminiumSS Steel Steel

Table 3.5: Description of each plate configuration scenario.

As illustrated in the graph from Figure 3.20, the configuration that culminates in the highestor critical stress at the rear surface is when both the front and rear layer have steel mechanicalproperties attached. Figure 3.21 shows the impedance of both aluminium and steel materi-als. These values were calculated using Equation 2.4 and it is evident that steel has a largerimpedance comparing with that of aluminium. These results are expected as steel has a muchlarger Young’s module and density than aluminium. The transmission ratio σT

σI(from Equation

2.7) was calculated for every configuration and is presented in Table 3.6. The transmission ratiois equal to one when the front and rear layers are made of the same material, resulting in a totalcontinuity of stress between both layers. Configuration AS has a transmission ratio above one,which means that the stress wave is amplified at the interface. However, this amplification was

Isaac Reis Master Dissertation

Page 54: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

32 3.Model Discussion and Validation

AA AS SA SS

0

1

2

3

4

5·108

1.99 · 1082.72 · 108

2.23 · 108

4.53 · 108

Configuration

Peak

Stre

ss[P

a]

Figure 3.20: Effect of the base model material configuration on the rear stress.

not enough to result in a rear stress superior to the one measured in configuration SS.This study leads to conclude that configuration SS resulted in the larger stress at the rear

impact region. However, configuration AS was chosen to be adopted as the base configurationfor the front and rear layers in next section.

Aluminium Steel

0

1

2

3

4

·107

1.37 · 107

3.96 · 107

Material

Impe

danc

e[k

g/m2.s

]

Figure 3.21: Impedance of Aluminium and Steel.

Isaac Reis Master Dissertation

Page 55: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

3.Model Discussion and Validation 33

Configuration Transmission RatioAA 1AS 1.4848SA 0.5151SS 1

Table 3.6: Transmission ratio between layers for each configuration.

3.3 Interlayer Parameters Analysis

Thus far, the script model has been validated in terms of its mechanical and physical integrity.However, this section aims to start testing the behaviour of certain parameters. These studies areimportant regarding the optimization procedures that will be described further on this document.

For the scope of this study, a parametric study was carried in order to speed up the studyand, also, to test the Python model script thus far developed. As such, to begin with simpletests, three different parameters were varied: the interlayer thickness, the interlayer material andthe projectile velocity. The material’s mechanical properties used as the interlayer are shown inTable 3.7. The graph in Figure 3.22 depicts the impedance for each of the materials in Table 3.7.It is evident the contrast in these values between the different materials.

Table 3.7: Mechanical properties for each interlayer studied.

Material Elastic Modulus, MPa Density, kg m−3 Yield Strength, MPa Poisson’s RatioNylon-6 3000 1140 82 0.35EPDM 2.5 960 16.8 0.499Cork 9000 293 1 0.3Aluminium Foam 103.08 410 1.24 0.05

Nylon-6 EPDM Cork Aluminium Foam

0

0.5

1

1.5

2·106

1.85 · 106

48,989.79

1.62 · 106

2.06 · 105

Material

Impe

danc

e[k

g/m2.s

]

Figure 3.22: Impedance of the materials used as interlayer.

The graph from Figure 3.23a displays the correlation between the peak stress at the rearimpact region of the plate, for four different interlayer materials and a constant projectile velocity

Isaac Reis Master Dissertation

Page 56: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

34 3.Model Discussion and Validation

vp = 20 m/s. As stated by [Luo et al. 2011], the interlayer thickness is one of the dominantfactors that dictates the propagation of stress. Besides, these authors concluded that the thicknessof the layer in which the stress wave propagates is directly proportional to the delay in the arrivalof stress at the rear side of that layer. In fact, by analyzing graph in Figure 3.23a, it is verifiedthat the stress decreases as the interlayer thickness increases, regardless of the material tested.However, this relation is not strictly linear. From all the materials tested, it is perceptible thatthe interlayer’s material that resulted in a lower peak stress at the rear impact region of the platefor all the thicknesses tested was aluminium foam. In fact, this material presented a significantlyoverall lower stress comparing to the other materials. This result is not intuitive because EPDMhas a lower impedance, which would result in a higher impedance mismatch at the interfaceand higher impedance mismatches lead to a more effective stress attenuation [Hazell 2015].However, the cellular structure of aluminium (low density) played an important role in this test.Thus, it is possible to conclude that the impedance mismatch between layers is not sufficient toensure effective stress attenuation. Different variables, such as the materials internal structure(which reflects in its density) and Poisson’s ratio are also important to consider.

The graph from Figure 3.23b depicts the effect that the projectile velocity has on the peakstress measured at the rear impact region of the plate. These results suggest that the increase inthe projectile’s velocity leads to a linear increase on the stress, regardless on the material testedas interlayer. It is important to note, though, that plasticity at the interlayer started appearingafter vp = 10 m/s for Nylon and vp = 5 m/s for cork.

Isaac Reis Master Dissertation

Page 57: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

3.Model Discussion and Validation 35

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5

·10−2

0

0.5

1

1.5

·108

Thickness [m]

Peak

Stre

ss[P

a]

NylonEPDMCork

Aluminium Foam

(a)

0 5 10 15 20 25 30 35 40 45 50 550

1

2

3·108

Projectile Velocity [m/s]

Peak

Stre

ss[P

a]

NylonCork

(b)

Figure 3.23: Parameters variation: (a) Effect of interlayer thickness on the peak stress at therear impact region of the plate using four different materials for the interlayer; (b) Effect of theprojectile velocity when the interlayer is made of nylon or cork.

Isaac Reis Master Dissertation

Page 58: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

36 3.Model Discussion and Validation

3.4 Base Model Script Final Remarks

Thus far, an analysis and validation of the ballistic simulation model has been conducted re-garding the paradigm of the mechanics and physics of impacts. Nevertheless, the design ofthis simulation model must also be oriented towards the standpoint of optimization procedures,either in its Python programming strand or in the computational cost associated with the simula-tion model. Thus, by analyzing the current model, it becomes evident that there is potential forimprovement. Accordingly, a study was made in order to find a new base model that would beless computational expensive while not compromising the quality of the results being studied.This final dimensions of the plate are shown in figure 3.24.

Table 3.8 depicts a drastic reduction in computational cost while maintaining the accuracy ofthe outputs comparing with the original plate. Accordingly, the final base model here presentedwill be integrated and adapted in optimization algorithm studies throughout this dissertation.

Table 3.8: Comparison of the accuracy of results and the computational cost between the originaland the optimized model.

σz [Mpa]Front Imp. Region

σz [Mpa]Rear Imp. Region

No. ElementsExecutionTime [s]

ODB FileSize [Gb]

Original Model 42.7262 47.8515 61117 87.126 2.246Optimized Model 42.5372 49.0678 32137 59.854 1.182Deviation [%] 0.44 2.54 47.41 31.30 47.37

Figure 3.24: Dimensions of the optimized base model.

Isaac Reis Master Dissertation

Page 59: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

Chapter 4

Optimization Introduction andGeneral Concepts

4.1 Fundamentals of Optimization

At any stage of the development of an engineering system, whether if at its primordial designor its construction and posterior maintenance, engineers have to take several decisions. Thesedecisions always converge into one ultimate goal, which is to either minimize the effort requiredor maximize the desired benefit [Rao 2009]. Therefore, the field of optimization is present inevery engineering system, from the design of aircraft and aerospace structures to the design ofwater resources systems or inventory control and logistics.

As [Arora 2012] suggested, the proper definition and formulation of a problem takes roughly50 percent of the total effort to solve it. Accordingly, it is imperative to have a grounded under-standing of the procedures to properly formulate an optimization problem because the optimumsolution will be only as good as the formulation.

4.1.1 Standard Mathematical Formulation

The formal mathematical statement of an optimization or problem can be expressed as [A.Andrade-Campos et al. 2015]

minimize f(x), (4.1)

subject to gj(x) ≤ 0, j = 1, 2, . . . ,m,

hk(x) = 0, k = 1, 2, . . . , l,

xmini ≤ xi ≤ xmax

i , i = 1, 2, . . . , n,

where f(x) is the objective function, g(x) are m inequality constraints , h(x) are l equalityconstraints and x are n project variables within the lower and upper boundaries.

4.1.2 Exterior Penalty Function Method

The Exterior Penalty Function Method (EPFM) is an approach to replace an originally con-strained optimization problem by a series of unconstrained problems whose solutions ideally

37

Page 60: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

38 4.Optimization Introduction and General Concepts

converge to the solution of the original constrained problem. Accordingly, the general optimiza-tion problem in equation 4.1 can be converted to an unconstrained problem by adding a term,called a penalty function (P), to the objective function [A.Andrade-Campos et al. 2015]

minimize F (x, rh, rg) = f(x) + P (x, rh, rg), (4.2)

xmini ≤ xi ≤ xmax

i , i = 1, 2, . . . , n,

where rh and rg are constant penalty parameters and F stands for the augmented objectivefunction. The penalty function P is stated as

P (x, rh, rg) = rh

l∑k=1

[hk(x)]γ

+ rg

m∑j=1

[max{0; gj(x)}

(4.3)

where γ and β and positive penalty constants. The penalty function is nonzero when the con-straints are violated and is zero in the region where constraints are not violated.

4.2 Non-Linear optimization Algorithms

This chapter aims to introduce three non-linear optimization algorithms: Genetic Algorithm(GA), Particle Swarm Optimization (PSO) and the Simulated Annealing Algorithm. Further-more, their intrinsic and distinct methodologies and operational parameters will be discussed aswell as a pseudo-code for each algorithm.

4.2.1 Genetic Algorithm

A genetic algorithm is a metaheuristic (relies on probabilistic techniques) based on natural se-lection, the process that drives biological evolution. It was originally introduced, as stated byMitchell [Mitchell 1998], by John Holland in 1960 (based on the concept of Darwin’s theory ofevolution) and further developed by his student David E. Goldberg in 1989 [Sadeghi et al. 2014].

Being one branch of a wider class designated by evolutionary algorithms [Car 2014], ge-netic algorithms imply the definition of an initial population of individual feasible solutions. Itthen relies on operators such as mutation, crossover and selection to improve the individual’ssolution at each generation. Due to its powerful and efficient operators, this algorithm can beused to solve a broad variety of optimization problems including highly nonlinear, stochasticand nondifferentiable problems. This versatility lead to its frequent implementation in designand engineering optimization problems as referred in Section 1.2.

Methodology and Formulation

A genetic algorithm consists of an iterative process where a given population of candidate solu-tions (traditionally referred as individuals) to an optimization problem is evolved toward bettersolutions. Each individual has a specific set of properties attached (its chromosomes) and theyare typically encoded in a binary array as strings of zeros and ones. This unique character-istic makes each individual vulnerable to changes in their chromosome whether it is throughcrossover with another individual or through a process of mutation. Each individual’s chromo-some is then decoded and tested by a fitness function [Mitchell 2013]. The fittest individuals,

Isaac Reis Master Dissertation

Page 61: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

4.Optimization Introduction and General Concepts 39

which represent the best solutions to the optimization problem, ensure their legacy in furthergenerations and have a higher probability of being selected for crossover.

As Jenna Carr suggested [Car 2014], the common denominator in every genetic algorithmcan be listed as follow:

– A fitness function for optimization;

– A population of chromosomes;

– Selection of which chromosomes will reproduce;

– Crossover to produce the next generation of chromosomes;

– Random mutation of chromosomes in the new generation.

As explained in the Algorithm 1, the genetic algorithm initiates by generating a populationof individuals, PK (at the first generation, K = 0), with random chromosomes attached. Af-terwards, each individual’s fitness to the optimization problem is evaluated. At this point, eachindividual has a set of two intrinsic properties: their chromosome and their fitness value. Thisentitlement allows the population to be sorted from the better to the worst solution which is usedto associate a probability of selection to each individual by a specific genetic operator known asroulette wheel selection. If Fi is the fitness value of each design set (population), its probabilityof being selected is

pi =Fi

Q; Q =

N∑j=1

Fj (4.4)

where N is number of individuals in the population. It is seen that the selection process isbiased toward more fit members (higher Fi) of the current population. This selection processis illustrated by the roulette wheel in Figure 4.1. This wheel has Np segments to cover theentire population, with the size of the ith segment proportional to the probability Pi. A randomnumber, w, between zero and one is then generated and the wheel is rotated clockwise with itsrotation proportional to the random number w. In the example from Figure 4.1, the individualnumber two was selected to the next generation. Although the roulette wheel selection methodis frequently used, there are arguably better alternatives [Blickle and Thiele 1996] to the roulettewheel selection such as the stochastic universal sampling [Back 1996] or tournament selection.

Isaac Reis Master Dissertation

Page 62: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

40 4.Optimization Introduction and General Concepts

Figure 4.1: Roulette wheel process for selection of designs for new generation [Arora 2012].

Being the two parents accordingly selected from the population, a process of recombina-tion of genetic information (also know as crossover) is performed resulting in a generation ofnew offspring (generation K + 1). Traditionally, there are three different ways to perform thecrossover:

1. Single-point crossover:In this method, a random point is picked in both parents’ chromosomes. The information,bits, to the right of that point are swapped between the two parents’ chromosomes. Theresults are two offspring that carry genetic information from both parents, Figure 4.2.

Figure 4.2: Single-point crossover illustration.

2. Double-point crossover:This method is similar to the single-point crossover with the exception that two points arepicked instead of one. The bits between those two points are swapped between the twoparents’ chromosomes as depicted in Figure 4.3.

Figure 4.3: Double-point crossover illustration.

3. Uniform crossover:

Isaac Reis Master Dissertation

Page 63: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

4.Optimization Introduction and General Concepts 41

In uniform crossover, the offspring has a collection of random bits from both parents’chromosomes.

The roulette wheel method can be used to chose one of the above methods to perform thecrossover. Once the offspring is generated, it is vulnerable to be mutated according to the previ-ously defined probability of mutation. This genetic operator works by randomly changing one ormore bits in an individual chromosome, ensuring genetic diversity among the population. In theoptimization problem paradigm, this leads to a higher chance of escaping from a local optimum.

Finally, this newborn generation (K + 1) is evaluated and the fittest individuals are stored.The selection, crossover and mutation operators are repeated in an iterative process until a stop-ping criterion is triggered. The stopping criterion is previously defined and can a maximumnumber of generations, a maximum processing time or a fittest solution stagnation for more thanγ generations.

Algorithm 1: Genetic Algorithm Pseudo-code

1 GA (npop, gen, f obj, p c, p m)Input : Size npop of the Population

Size gen of generationsFitness Function, fit funcProbability of Crossover, p cProbability of Mutation, p m

Output: Y2

// Initialisation

3 K = 0 . Generation 0

4 Pk = population of npop randomly generated solutions (individuals)// Evaluate Pk

5 Compute fitness(i) for each i ∈ Pk6

// Loop while stopping criterion is not triggered

7 while stopping criterion do// Create Generation K + 1:

8 Select the best solutions in Pk and save them in Pk+1

// Crossover

9 Usage of Roulette Wheel method to select parents10 Execute crossover using single point, double point or uniform crossover

// Mutation

11 Select p m x npop members of Pk+1

12 Invert a randomly selected bit in each// Evaluate PK+1

13 Compute fitness(i) for each i ∈ Pk+1

14 Y = best solution// Increment

15 K = K + 1

16 end17 return Y . Best Solution

Isaac Reis Master Dissertation

Page 64: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

42 4.Optimization Introduction and General Concepts

4.2.2 Particle Swarm Optimization

The particle swarm optimization (PSO) was originally introduced by Kennedy, Eberhart and Shi[Kennedy and Eberhart 1995, Shi and Eberhart 1998a] and it was initially intended to simulatesocial behaviour. Nevertheless, it was when this algorithm was simplified [Shi and Eberhart1998a] that its optimization performance and abilities became evident. PSO is intended to mimicthe movement and behaviour of organisms such as birds, fish or insects by what is described asswarm intelligence [Kennedy and Eberhart 2001].

Although PSO belongs to the same broad filed of evolutionary algorithms as the geneticalgorithm, there are some evident differences [Zhang et al. 2015]:

– The concept of population of feasible solutions adopted in the GA is traditionally denotedby swarm in the PSO;

– In PSO, instead of renewing the population on each generation as verified in GAs, there isan iterative updating of each particle’s position and velocity towards better solutions.

– In PSO there are no operators such us crossover and mutation but rather, there is theconcept of cognitive and social learning [Kennedy and Mendes 2002].

Methodology and Formulation

Following the reasoning presented in the Algorithm 2, the PSO initializes by generating a swarmof n individual particles. As suggested by [Shi and Eberhart 1998a], each particle i ∈ {1, . . . , n}is entitled with a random position vector within the search domain xki ∈ S and a random velocityvector vki . The initial position (first iteration, k = 0) for each particle is stated as

xk=0i = bmin + r(bmax − bmin), (4.5)

where r is a constant within the range [0,1], bmin and bmax represent the lower and upper boundsof the design variable search domain, respectively. The initial velocity v0i follows a similarapproach, with

vk=0i = U(−|bmax − bmin|, |bmax − bmin|), (4.6)

whereU stands for a random value within the uniformly distributed range (−|bmax−bmin|, |bmax−bmin|). Afterwards, each particle i is evaluated by the objective function and their respectivevelocity vk+1

i is updated according to

vki ← ωvk−1i + φprp(p

k−1i − xk−1

i ) + φgrg(gk−1 − xk−1

i ), (4.7)

where ω is a specific PSO parameters titled inertia weight and φp and φg are, respectively,the cognitive and the social parameters. The cognitive parameter p represents the best currentposition of the particle and g stands for the global best current position (social parameter). rpand rg are constants within the range [0,1]. Subsequently, the new position xk+1

i is updatedaccording to the current position xki and the recently updated velocity vk+1

i :

xk−1i + vki . (4.8)

Isaac Reis Master Dissertation

Page 65: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

4.Optimization Introduction and General Concepts 43

Algorithm 2: Particle Swarm optimization Pseudo-code

1 PSO (n, φp, φg)Input : Number n of particles

Acceleration parameters, φp and φgLower and upper boundaries of the search space, (bmin, bmax)Objective function, f

Output: Y2

// Initialisation

3 for each particle i = {1, . . . , n} do4 r ∼ U(0, 1)

5 xk=0i = bmin + r(bmax − bmin) . Initialise the particle’s position

6 pi ← xi . Initialise the particle’s best known position

7 if f(pi) < f(g) then8 g← pi . update the swarm’s best known position

9 vk=0i = U(−|bmax − bmin|, |bmax − bmin|) . Initialise the particle’s

velocity

10 end11 end

// Loop while stopping criterion is not triggered

12 while stopping criterion do13 k = k + 1 . Increment iteration

14 for each particle |bmax − bmin| = 1, . . . , n do15 for each dimension d = 1, . . . , n do16 rp, rg ∼ U(0, 1) . Pick random numbers

17 V ki ← ωV k−1

i + φprg(pk−1i − xk−1

i ) + φgrg(gk−1 − xk−1

i ) . Update the

particle’s velocity

18 xki ← xk−1i + vki . Update the particle’s position

19 if f(xi) < f(pi) then20 pi ← xi . Update the particle’s best known position

21 if f(pi) < f(g) then22 g ← pi . Update the swarm’s best known position

23 end24 end25 end26 end27 end28 return f(g) . Best Solution

Isaac Reis Master Dissertation

Page 66: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

44 4.Optimization Introduction and General Concepts

4.2.3 Simulated Annealing

The Simulated Annealing (SA) is a metaheuristic to approximate the global optimum of a givenfunction and it belongs to the same ample field of evolutionary algorithms as the PSO and GAalgorithms.

As the name suggests, the inspiration for this algorithm comes from annealing in metallurgy,which is a technique of controlled heating and cooling of a material in order to increase the sizeof its crystals (minimum energy crystalline structure) and to reduce their defects. As Khachatu-ryan suggested in [Khachaturyan et al. 1979] and [Khachaturyan et al. 1981], the procedure ofannealing can be simulated with the purpose to find an approximation of a global minimum fora function with a large number of variables.

Methodology and Formulation

The concept of slow cooling implemented in the SA algorithm corresponds to a gradual decreaseof the probability of accepting worst solutions as the search domain is explored. This notion ofaccepting worst solutions is part of the intrinsic nature of the SA algorithm and is a fundamentalproperty of metaheuristics as it allows a more broad search of the global optimum solution and,ultimately, avoids local minima.

As demonstrated in Algorithm 3, the optimization process starts by initializing a randomposition xcurr for the variable within the upper and lower boundaries U(blow, bup). Then, themain iterative loop starts and a neighbour position xprop is defined based of the current positionxcurr and a constant k that defines the maximum distance the neighbour can be from the currentposition. The quality of these two positions is evaluated and, if the neighbour corresponds toa better solution, the algorithm moves towards it by replacing the current with the neighbourposition and solution. If the neighbour solution is worst than the current one, it may still beaccepted depending on the acceptance probability stated as

P =

[exp

{C(xprop)− C(xbest)

Tcurr

}]−1

, (4.9)

where T and C stands the temperature and the objective function solution, respectively andthe subscripts prop and best correspond to the current proposed solution and the best solution,respectively. If the acceptance probability P is lower than Random(0, 1), the neighbour solutionis accepted, even though it may correspond to a worst solution. The last step of each iteration isto update the current temperature Tcurr, which decreases depending on the cooling parameter α.As the temperature decreases, so does the probability of acceptance P . This results in a lowerprobability of accepting worst solutions as the number of iterations increases.

Isaac Reis Master Dissertation

Page 67: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

4.Optimization Introduction and General Concepts 45

Algorithm 3: Simulated Annealing Pseudo-code

1 SA (n, T, iter max), kInput : Size n of feasible solutions

Temperature operator TLower and upper boundaries of the search space, (blow, bupObjective function, Cmaximum numbem or iteration, itermaxconstant to make moves smaller, k

Output: C(xbest)2

// Initialization

3 xcurr ∼ U(blow, bup) . Initialise a random position

4 xbest ← xcurr5 for i = 1 to itermax do6 xprop ← NeighbourConfig(xcurr, k) . Propose some neighbour

configuration

7 if C(xprop) ≤ C(xcurr) then8 xcurr ← xprop9 if C(xprop) ≤ C(xbest) then

10 xbest ← xcurr11 end

12 else if[

exp{C(xprop−C(xbest)

Tcurr

}]−1

> Random(0, 1) then

13 xcurr ← xprop14 end15 Tcurr ← Tcurr × α . Update temperature, which decreases every iteration

16 end17 return C(xbest) . Best Solution

Isaac Reis Master Dissertation

Page 68: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

.

Page intentionally left blank.

Page 69: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

Chapter 5

Implementation and Methodologies

The aim of this Chapter is to thoroughly and incrementally study the performance of the threeoptimization algorithms discussed in Chapter 4.2. This study is divided in 4 benchmarks, eachone increasing in complexity. The purpose is to study the behaviour of different design variableswhen subject to different optimization algorithms, objective functions and constraints, usingdifferent strategies and algorithm parameters. At the end of each benchmark, a proper ranking ofthe 3 optimization algorithms is made in terms of their efficiency and performance. The overallbest algorithm is selected to perform a multi-objective optimization (Chapter 6) combining everyvariable of study, objective function, constraints and strategies that will be discussed throughoutthis chapter.

Due to the high complexity and computational cost involved, every optimization problemwill be solved using a workstation provided by the department of mechanical engineering ofthe University of Aveiro. This workstation has an Intel® Xeon® Processor E5-2643 v4 @ 3.40GHz, 256 GB of Ram and 12 logical processors. It is important to note that every requiredsimulation procedure is previously programmed to take advantage of Abaqus parallelization anduse 8 CPUs to run [Inc 2004]. This parallel execution in Abaqus/Explicit significantly reducesthe run time. Nevertheless, several hours are required to solve a single optimization problem.Figure 5.1 illustrates the overall flowchart of one optimization process.

Figure 5.1: Flowchart of the optimization process.

47

Page 70: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

48 5.Implementation and Methodologies

5.1 Benchmark I (Continuous Variable — Minimize weight subjectto stress constraint)

For this first benchmark, the interlayer thickness, which has a continuous nature, will be evalu-ated by the three optimization algorithms. The objective is to minimize the objective function,f(tint, rg), which is the sum of the plate’s weight function, W (tint), with the penalty function,P (tint, rg). The design variable is the interlayer thickness, tint, which search domain is set within[1× 10−3, 50× 10−3] m. The constraint is the maximum stress, σz, max, at the rear surface. Thecompact formulation for this benchmark is stated as

minimize f(tint, rg, β) =W (tint) + P (tint, rg, β), (5.1)

subject to tint, min ≤ tint ≤ tint, max,

g(x) = σz − σz, max ≤ 0 (5.2)

where,

W (tint) = L×B [tfrontρfront + tintρint + trearρrear] (5.3)

= 0.072[0.025(ρfront + ρrear) + tintρint

]= 0.072[0.025(2700 + 7850) + tint(1140)],

L and B are the length and breadth of each layer, respectively. ρ stands for the material’sdensity. A penalty function, as explained in Section 4.1.2, with rg = 2 and β = 2 was imple-mented in order to penalize the objective function every time the measured peak stress σz, maxat the rear impact region (3.2.1) would surpass a maximum of σz, max = 50 MPa. Thus, onlyfeasible solutions are taken into account.

For the scope of this benchmark, the front, middle and rear plate were made of aluminium,nylon-6 and steel, respectively (Table 5.7). The projectile velocity was also constant and equalto 5 m/s.

Strategies Adopted

The variable tint studied in this benchmark is continuous and limited to a search domain within[1, 50]× 10−3 m. However, this variable will be scaled to a search domain between [0, 1] whileintegrated in the optimization algorithms. When the optimization algorithm needs to evaluatethe objective function which requires a simulation procedure in Abaqus, the input variable tintcan be easily converted to its original scale:

Tint =[((tint, max − 1)tint) + 1

]× 10−3, (5.4)

where Tint is the interlayer thickness that will be used by Abaqus and tmax = 50 mm. Thisstrategy, although not needed to be implemented in this benchmark due to its simple nature, willbe used in further multi-objective optimization procedures (Chapter 6) which will combine bothcontinuous and discrete variables. Besides, each variable will have its own search domain thatmay vary in scale from the other variables. As such, this strategy will be implemented in thefollowing four benchmarks for testing purposes.

Isaac Reis Master Dissertation

Page 71: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

5.Implementation and Methodologies 49

In order to improve the data visualization, some graphs in this chapter have normalizedcurves. The normalization method adopted, called simple feature scaling [Grus ], uses the firstfeasible solution obtained, f0, as a reference. The next feasible solutions are divided by thisreference value. Accordingly, the mathematical expression is as

fnorm =fi

f0, (5.5)

where fnorm is the normalized solution.

5.1.1 Benchmark I — PSO

The underlying structure of the PSO algorithm, including its operational parameters, was ex-plained in Section 4.2.2. However, such parameters are subjective to each particular optimiza-tion problem, as suggested in [Shi and Eberhart 1999]. Thus, the parameters used for this firstbenchmark are represented in Table 5.1 and are based on studies were the behaviour of theseparameters were evaluated [Eberhart and Shi 2000, Perez and Behdinan 2007, Shi and Eberhart1998b] and through empirical adjustments.

Table 5.1: PSO operational parameters.

No. Particles No. Iterations ω φp φg v0i15 30 0.5 1 2 random(-1,1)×0.2

The graph from Figure 5.2 illustrates the evolution of the objective function as the number ofiterations increases. Immediately after the first iteration, the PSO converges to a solution whichis only ∼ 0.0011% different from the final and optimal solution 1 of 40.186907 kg. In orderto better understand the algorithm underlying evolutionary structure, it has also been taken intoconsideration the average and worst solution of each population at every iteration as illustratedin the graph from Figure 5.3. From this graph analysis, which results are normalized, it becomesperceptible that it represents a stochastic but also evolutionary algorithm for several reasons:

– During the first iterations, it is noticeable a decent discrepancy between the best, averageand worst solutions of a population. This is due to the random positions and velocitiesattributed to the initial individuals, highlighting its stochastic nature;

– However, due to social and cognitive parameters, the particles tend to evolve their posi-tions. This is illustrated by the steadly convergence of both the average and worst solutionsinto the best global solution as the number of iterations increases.

The graph from Figure 5.4 follows the same reasoning as the graph 5.3 but without takinginto account the penalty effect for both the average and worst solutions. From both graphscomparison, it immediately stands out a noticeable difference at the OY axis magnitude, havinglower proportions in the latter graph. Besides, the average curve happens to be lower thanthe overall best solution at the iteration number 3 where, on the other hand, this exact pointrepresents a maximum peak for the average curve in the former graph. This event confirms apenalization of particle positions that, although leading to an apparent better overall solution,does not respect the previously defined constraints.

1In reality, no metaheuristic can guarantee a global optimum solution [Luke 2013] and thus, this solution mightsimply be a local optimum.

Isaac Reis Master Dissertation

Page 72: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

50 5.Implementation and Methodologies

0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 3040.1865

40.187

40.1875

Number of iterations

Wei

ght[

kg]

Weight Evolution

Figure 5.2: Weight evolution, for the PSO in Benchmark I.

0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30

1

2

3

Number of iterations

Nor

mal

ized

wei

ght

Best resutlsWorst Resutls

Average

Figure 5.3: Evolution of the best, worst and mean values of the objective function with thenumber of iterations, for the PSO in Benchmark I.

0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30

1

1.1

Number of iterations

Nor

mal

ized

wei

ght

Best resutlsWorst Resutls

Average

Figure 5.4: Evolution of the best, worst and mean values of the objective function withoutpenalization against the number of iterations, for the PSO in Benchmark I.

Isaac Reis Master Dissertation

Page 73: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

5.Implementation and Methodologies 51

The graph from Figure 5.5 aims to delineate the evolution of each particle position towardsbetter positions that culminate in solutions that steadily converge to the overall best solution asthe number of evaluations increases. The initial solutions are intentionally dispersed to cover themaximum amount of the searching space. Such exploratory strategy decreases the possibility ofconverging to a local optimum. Nevertheless, if parameters such as the number of particles arenot high enough, the objective function is likely to converge to a local optimum due to a lackof initial exploration. Besides, due its stochastic nature, the results of several attempts using thesame PSO parameters may differ even if only a slight percentage as will be later discussed andconluded from Table 5.5.

0 50 100 150 200 250 300 350 400 450

40

42

44

46

48

Evaluation

Wei

ght[

kg]

Evaluation (without penalization)Iteration

Figure 5.5: Comparison of the solution at each evaluation without penalization with the overallbest solution at each iteration, for the PSO in Benchmark I.

The interlayer thickness evolution, which is shown in Appendix B, evolves at the same paceand follows the same proportion as the objective function evolution (Figure B.1). Besides, it isperceptible an initial variable domain exploration (Figure 5.5). Hence, the interlayer thicknessevolves from both the upper and lower boundary conditions limits and continuously convergesto the overall best position.

5.1.2 Benchmark I — GA

In Chapter 4.2.1, a description of the intrinsic operational parameters that the genetic algorithmrequires have been conducted. Nevertheless, because of their subjective and empirical nature,their choice must be grounded. As such, the genetic operators adopted in this first benchmark,represented in Table 5.2, were based on the literature [Yong et al. 2008] [Chakraborty and Dutta2013, Chen 2001, Yong et al. 2010] and also empirically adjusted.

Table 5.2: Genetic algorithm operational parameters for benchmark one.

Population Number Number of Individuals Crossover Percentage Mutation Percentage Chromosomes Length20 30 80% 20% 32

The graph from Figure 5.6 illustrates the objective function evolution as the number of iter-ation increases. It is noticeable that the major paradigm shift occur between iteration number 18

Isaac Reis Master Dissertation

Page 74: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

52 5.Implementation and Methodologies

and 21, corresponding to an evolution of ∼ 0.03% towards the final overall best solution.Following the same premise as in the previous section, both Figures 5.7 and 5.8 illustrate the

objective function evolution by analysing and comparing the curves of the average, worst andbest solution of each evaluation. Besides, it also intends to emphasize the penalty influence bycomparing the former graph, where both the average and worst solution curves are penalized, tothe latter graph where those same two curves are not penalized. From both graph analysis, it isnoticeable a decent slope of both the average and worst solutions curves towards the overall bestsolution. However, comparing with the results from the PSO algorithm in the previous section,it is perceptible a slower rate of convergence to the overall best solution in the GA algorithm.Likewise, despite the clear rate of convergence, the two curves in discussion are relatively distantto the overall best solution throughout the number of iterations.

From the analysis of Figure 5.9, the underlying structure of the GA and how it evolvesthroughout each evaluation becomes straightforward. The final solution and the rate at whichthe objective function converges to that optimum are heavily dependent on the first individual’sgenome. Thus, the number of generations required to converge to the optimum solution andthe optimum solution itself may significantly diverge every time the GA algorithm is tested.Being part of the same broad field of evolutionary algorithms as the PSO, it is observable aninefficiency in evolving from the initial stochastic solutions to the final optimum solution. Suchimpotency may be related with the genetic parameters used for this specific benchmark and notwith the intrinsic algorithm itself.

The interlayer thickness behaviour though the number of iterations is identical to the objec-tive function. As such, for further analysis, their respective graphs can be found in the AppendixB.

0 5 10 15 20 25 30 35

40.195

40.2

40.205

40.21

Number of iterations

Wei

ght[

kg]

Weight Evolution

Figure 5.6: Weight evolution for the GA in Benchmark I.

Isaac Reis Master Dissertation

Page 75: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

5.Implementation and Methodologies 53

0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30

1

1.1

1.2

1.3

Number of iterations

Nor

mal

ized

wei

ght

Best resutlsWorst Resutls

Average

Figure 5.7: Evolution of the best, worst and mean solutions of the objective function with penal-ization against the number of iterations, for the GA in Benchmark I.

0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30

1

1.1

1.2

Number of iterations

Nor

mal

ized

wei

ght

Best resutlsWorst Resutls

Average

Figure 5.8: Evolution of the best, worst and mean solutions of the objective function withoutpenalization against the number of iterations, for the GA in Benchmark I.

Isaac Reis Master Dissertation

Page 76: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

54 5.Implementation and Methodologies

0 100 200 300 400 500 600 700 800 900

40

42

44

46

48

Evaluation

Wei

ght[

kg]

Evaluation (without penalization)Iteration

Figure 5.9: Comparison of the solution at each evaluation without penalization with the overallbest solution at each iteration, for the GA in Benchmark I.

5.1.3 Benchmark I — SA

Although belonging to the same field of evolutionary algorithms as the GA and PSO, the SAalgorithm has a peculiar search strategy as explained in Section 4.2.3. The main operationalparameter, the temperature, controls the progression of the objective function. Such parameterdepends on the cooling factor, which directly influences how quickly the objective function startsconverging. If this parameter is low, it may lead to a premature convergence that results in a localoptimum. On the other hand, if the cooling parameter is too high, the algorithm will need moretime to converge to the optimum solution and, thus, it becomes more computational expensivedecreasing the SA performance.

Based on the literature [Nourani and Andresen 1998,Peprah et al. 2017,Youssef et al. 2001],the parameters used in this benchmark for the SA algorithm are represented in Table 5.3.

Table 5.3: Simulated Annealing operational parameters.

Number of IterationsNo. of evaluationsper Iteration

T α kstep

40 10 1000 0.65 0.1

From the objective function evolution illustrated in Figure 5.10, it is perceptible a distinctevolution strategy when comparing to the more linear results from the PSO and GA. The objec-tive functions suggests to be evolving to continuously worst solutions until the iteration num-ber 13, after which it starts progressively decreasing and ultimately converging to the optimalsolution at the iteration number 19. This peculiar search strategy is intrinsic to SA as it is pro-grammed to behave in this manner. As the temperature is still high enough, there is a correlatedprobability (due to the specific SA formula discussed in Section 4.2.3) to accept the current eval-uated solution even if that solution is worst than the previous one. As the temperature decreases(due to the cooling parameter α), such acceptance probability also decreases resulting in theacceptance of new solutions that must be better than the previous one.

In order to grasp and better interpret the influence of the temperature parameter, Figure 5.11illustrates the evolution of best, average and worst solution of each iteration and, besides, it

Isaac Reis Master Dissertation

Page 77: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

5.Implementation and Methodologies 55

complements by adding the curve of the temperature evolution. It stands out that after iterationnumber 17, the average and worst curve increase drastically. This happens at the same timethe temperature curve reaches the sufficiently low enough threshold 2 that allows the SA for-mulation to diminish the probability of accepting worst solutions. As from this point on the SAalgorithm will only accept better solutions, the position of each evaluation will steadily approachthe optimum position. Because the optimum position leads to a solution that is at the bare limitof being penalized, the chance of the algorithm generating a position that surpasses this limitis significantly high. Accordingly, the result is an immediately rising of the worst and averagecurve as soon as the temperatur reaches a certain threshold. The graph from Figure 5.12 aims todemonstrate how the average and worst solutions curve evolves without accounting with the pe-nalization. As expected, after the temperature curve reaches the threshold previously discussed,both the average and the worst solution curves approach the optimum solution. Occasionally,the average curve might even be inferior to the overall best solution curve which is due to nottaking penalization into account.

The graph in figure 5.13, which compares the result of every evaluation with the best solutionof each iteration, is crucial to complement the premises discussed above. As it is noticeable, eachevaluation is always within a certain range of the objective function as the number of iterationsincreases. Such phenomenon is explained because the kstep parameter controls the maximum andminimum range that the new position can exceed the previous position. It is, thus, evident thatthe results obtained from the SA algorithm do not intrinsically evolve towards a better solutionbased on a legacy of previous solution as it happens in the GA and PSO. Furthermore, it ispossible to conclude that, although the SA is considered an evolutionary algorithm, it is definitelymore stochastic than the PSO and GA. The design variable (interlayer thickness) behaviourthroughout the number of iterations follows the same contour as the objective function. As such,their graphs are shown in Appendix B.

0 5 10 15 20 25 30 35 4040

42

44

46

48

Number of iterations

Wei

ght[

kg]

Weight Evolution

Figure 5.10: Weight evolution, for the SA in Benchmark I.

2This threshold is set at T < 1.

Isaac Reis Master Dissertation

Page 78: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

56 5.Implementation and Methodologies

0 5 10 15 20 25 30 35 400

1

2.0001

3.0002

Number of iterations

Nor

mal

ized

wei

ght

Best resutlsWorst Resutls

AverageTemperature

Figure 5.11: Evolution of the best, worst and mean values of the objective function with penal-ization against the number of iterations, for the SA in Benchmark I.

0 5 10 15 20 25 30 35 400.9

0.9999

1.0999

1.1998

Number of iterations

Nor

mal

ized

wei

ght

Best resutlsWorst Resutls

AverageTemperature

Figure 5.12: Evolution of the best, worst and mean values of the objective function withoutpenalization against the number of iterations, for the SA in Benchmark I.

Isaac Reis Master Dissertation

Page 79: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

5.Implementation and Methodologies 57

0 50 100 150 200 250 300 350 400

40

42

44

46

48

Evaluation

Wei

ght[

kg]

Evaluation (without penalization)Iteration

Figure 5.13: Comparison of the solution at each evaluation without penalization with the overallbest solution at each iteration, for the SA in Benchmark I.

5.1.4 Benchmark I — Summary

An explanation of how each algorithm and its operational parameters evolved during the opti-mization process of this first benchmark was carried in the previous sections. Nevertheless, aproper study of their overall performance is of foremost importance.

Table 5.4 illustrates a comparison of the output of each one of the algorithms. Althoughthe election of the overall best algorithm for this benchmark is not immediate, after a carefulanalysis it becomes clear that the algorithm with the best performance in this first benchmarkis the PSO. From the three algorithms in study, it was the one that culminated in the lowerweight and interlayer thickness of 40.18691 kg and 0.00365 m, respectively. The SA reacheda local optimum in only 188 evaluations. However, at only iteration number 2 (15 evaluations)the PSO had already a better solution than the final SA solution, corresponding to 40.187359kg. The results from the GA correspond to the second best solution and the better averageand standard deviation. However, such results are relative because the PSO had a considerablebad first iteration (corresponding to 41.194223 kg) and without taking into account only thatfirst iteration, the average and standard deviation drops to values inferior to those of the GA,correspondeing to 40.187257 kg and 0.000135652, respectively.

In order to investigate how much does the stochastic nature of each algorithm affects thefinal results, this benchmark was executed five times. Table 5.5 displays the results for each oneof the five executions and for each algorithm. It is verified that, for every execution, the resultsfrom the PSO algorithm were always the lowest in comparison with the other two algorithms.Hence, the PSO was arguably the most efficient algorithm in this benchmark.

Isaac Reis Master Dissertation

Page 80: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

58 5.Implementation and Methodologies

Table 5.4: Benchmark I final resutls.

B.I PSO B.I GA B.I SABest Solution [kg] 40.18691 40.19316 40.19709Average [kg] 40.22198 40.20398 44.49111Standard Deviation 0.183737 0.005402 2.464782Best Variable [m] 0.00365 0.003688 0.00371Evaluations until best solution 428 807 188

Table 5.5: Benchmark I final results after running five times for each algorithm.

No. of runs PSO GA SA1 40.186896 40.193157 40.197092 40.186907 40.201195 40.192903 40.186896 40.266657 40.189234 40.186932 40.265890 40.203055 40.186897 40.260264 40.18873Average [kg] 40.1869 40.2374 40.1942

5.2 Benchmark II (Continuous Variable — Minimize the rear stresssubject to weight constraint)

The objective function, f(tint, rg), of this second benchmark is to minimize the rear stress,S(tint), of the plate. The design variable, similarly to the previous benchmark, is the interlayerthickness tint with the same limit constraints [1×10−3, 50×10−3] m. The compact formulationis

minimize f(tint, rg, β) = S(t) + P (t, rg, β), (5.6)

subject to tmin ≤ t ≤ tmax,

g(x) = w − wmax ≤ 0

The plate maximum allowed weight is of wmax = 40 kg. Accordingly, rg = 1 × 106

and β = 2 where the parameters used in the penalty function. It is important to note that theresults from S(tint) are obtained as a black box model3. For the scope of this benchmark, thefront, middle and rear plate were made of aluminium, nylon-6 and steel, respectively (Table5.7). Likewise the previous benchmark, the limits of the optimization variable were convertedto a new domain within [0, 1]. Following the same reasoning, when the algorithm requires thevariable to be converted to its original domain, Equation 5.5 is applied.

This benchmark is crucial to understand how efficiently the algorithms in study can be im-plemented with an objective function that deals with outputs of high magnitude (back stress) atthe same time that it is correlated with a penalty function which inputs are of a considerablylower magnitude (weight).

3A black box model is a system that can be viewed in terms of inputs and outputs without completely knowingits internal working. In this case, the black box system is Abaqus.

Isaac Reis Master Dissertation

Page 81: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

5.Implementation and Methodologies 59

5.2.1 Benchmark II — PSO

As this benchmark does not differ substantially from the previous one, the PSO operationalparameters are not to be changed and can be found in Section 5.1. As depicted in Figure 5.14, itis noticeable a penalization at the solution of the first iteration. Such occurrence affected the best,average and worst curves at the first iteration, exhibiting exaggerated solutions. Subsequently,the algorithm is able to escape the penalization zone right at the second iteration. Afterwards,the best solution rapidly converges into the final optimum and both the average and worst curvesfollow that tendency. Figure 5.15 complements the understanding on the objective functionevolution by displaying the results of every evaluation. As expected, the results of the evaluationsfrom the first iteration are systematically bellow the final objective function optimum. Thisconfirms the exaggerated values represented in the above graph for the first iteration.

From the analysis of the interlayer thickness evolution, which graph is illustrated in figure5.16, it becomes clearly justified the reason why the objective function solution at the first it-eration is penalized. The position of each particle was randomly attributed within the range[1 × 10−3, 50 × 10−3]. Nevertheless, because the optimal solution is dislocated close to thelower limit due to the penalization function, the results from the first iteration were conditioned.Besides, because the difference between the average and worst solution of the first iterationwas so exaggerated (although not visible in Figure 5.14, the difference is higher than 400%),the updated velocity for the second iteration became also exaggerated as a response. As a re-sult, the succeeding evaluations were pushed towards the lower limit of the interlayer thickness.However, the particles manage to quickly convege into overall best position.

0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30

0.4

0.5

0.6

Number of iterations

Nor

mal

ized

stre

ss

Best resutlsWorst Resutls

Average

Figure 5.14: Evolution of the best, worst and mean values of the objective function against thenumber of iterations, for the PSO in Benchmark II.

Isaac Reis Master Dissertation

Page 82: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

60 5.Implementation and Methodologies

0 50 100 150 200 250 300 350 400 450

0.5

1

1.5

·108

Evaluation

Rea

rstr

ess

[Pa]

Evaluation(without penalization)Iteration

Figure 5.15: Comparison of the solution at each evaluation without penalization with the overallbest solution at each iteration, for the PSO in Benchmark II.

0 50 100 150 200 250 300 350 400 4500

0.02

0.04

Evaluation

Thi

ckne

ss[m

]

IterationEvaluation

Figure 5.16: Comparison of the position at each evaluation with the overall best position at eachiteration, for the PSO in Benchmark II.

Isaac Reis Master Dissertation

Page 83: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

5.Implementation and Methodologies 61

5.2.2 Benchmark II — GA

For the scope of this benchmark, the genetic parameters used are identical to those of the firstbenchmark and are illustrated in Section 5.2.

From both Figures 5.17 and 5.18 analysis, it is possible to formulate a proper understandingon how the GA behaves under the current benchmark. From the former Figure, it is noticeablea decent rate of convergence of the average and worst curves onto the best solution curve. How-ever, the downside is that, until close to half of the total number of iterations, both the averageand worst curves present exaggerated results. The reason for such behaviour is a considerablyhigh number of penalized individuals during this interval of iterations. From the latter graph it isnoticeable that, throughout the majority of iterations, the solutions of each individual (which arenot penalized for comparison purposes) are heavily located below the objective function curve.All those individuals are eventually penalized, conditioning the average and worst solutions ateach iteration.

Comparing with how PSO evolved, and as expected due to a similar pattern in the previousbenchmark, the GA continues to suffer from a difficulty in stepping towards the optimal solu-tion. Figure 5.19, which illustrates how the interlayer thickness evolves, confirms a considerablyslower rate of movement of each individual towards a better position when comparing with thePSO.

0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30

0

200

400

600

Number of iterations

Nor

mal

ized

stre

ss

Best resutlsWorst Resutls

Average

Figure 5.17: Evolution of the best, worst and mean values of the objective function against thenumber of iterations, for the GA in Benchmark II.

Isaac Reis Master Dissertation

Page 84: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

62 5.Implementation and Methodologies

0 50 100 150 200 250 300 350 400 450 500 550 600

0.5

1

1.5

·108

Evaluation

Rea

rStr

ess

[Pa]

Evaluation (without penalization)Iteration

Figure 5.18: Comparison of the solution at each evaluation without penalization with the overallbest solution at each iteration, for the GA in Benchmark II.

0 50 100 150 200 250 300 350 400 450 500 550 6000

0.02

0.04

Evaluation

Thi

ckne

ss[m

]

IterationEvaluation

Figure 5.19: Comparison of the position at each evaluation with the overall best position at eachiteration, for the GA in Benchmark II.

Isaac Reis Master Dissertation

Page 85: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

5.Implementation and Methodologies 63

5.2.3 Benchmark II — SA

Because there aren’t significant changes in this benchmark formulation, the SA parameters arekept the same as in the previous benchmark and can be found in table 5.3. Both Figures 5.20and 5.21 complement each other regarding the objective function analysis. The former Figuredisplays a continuous and gradual curve leaning towards the optimum solution. After iterationnumber 25, it stops updating into a better solution completely. That precise iteration is in syn-chronicity with the moment when the temperature curve reaches a value close to zero as seen inthe latter graph. The average and worst curves behave non-linearly throughout the number ofiterations, even after the temperature reaches values close to zero, contradicting the effect dis-cussed in the previous benchmark. This may be explained because the position that leads to theoptimal solution is very close to the position that leads to a penalized solution. Thus, the kstepparameter (which controls the movement of the position at each evaluation) may be too largeresulting in a frequent surpassing of the penalization threshold.

The evolution of the interlayer thickness as the number of iterations increases follows thesame contours of the objective function evolution as can be seen in Appendix B. It is importantto note that, as in the previous benchmark, the results from each evaluation are always withina limited range from the results of each iteration. Such phenomena is the direct result of thecombination of two SA parameters: kstep (which limits the exploratory range) and the temper-ature (which steers the direction of the objective function). These graphs can also be found inAppendix B.

0 5 10 15 20 25 30 35 40

6.4

6.6

6.8

7

7.2

·107

Number of iterations

Rea

rstr

ess

[Pa]

Stress Evolution

Figure 5.20: Stress evolution, for the SA in Benchmark II.

Isaac Reis Master Dissertation

Page 86: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

64 5.Implementation and Methodologies

0 5 10 15 20 25 30 35 400

1

2

3

Number of iterations

Best resutlsWorst Resutls

AverageTemperature

Figure 5.21: Evolution of the best, worst and mean values of the objective function against thenumber of iterations, for the SA in Benchmark II.

5.2.4 Benchmark II — Summary

As shown in Table 5.6, the PSO completed this benchmark with the best final solution, aver-age, standard deviation and final position. The SA algorithm found a local minimum, althoughhigher than that of the PSO, at the evaluation number 243. However, the SA performance, asdiscussed in 5.2.3, demonstrated a low level of accuracy as the nature of this algorithm reliessignificantly in random parameters. For that reason, and similarly to the first benchmark, thePSO demonstrated to be the more efficient algorithm.

Table 5.6: Benchmark II final resutls.

B.II PSO B.II GA B.II SABest Solution [MPa] 63.392584 63.486055 64.433575Average [MPa] 67.489943 85.609726 72.319194Standard Deviation MPa 18.564183 32.971243 41.626055Best Variable [m] 0.0025 0.002497 0.00247Evaluations until best solution 434 526 243

5.3 Benchmark III (Discrete Variable — Minimize weight subjectto stress constraint)

The third benchmark is intended to test how the algorithms perform when the variable of studyhas a discrete nature. Hence, the objective is to minimize the total weight of the plate, similarlyto the first benchmark, while varying the material properties of each layer. As such, the variablesof study correspond to the indices of a matrix (database) that contains the mechanical propertiesof 9 materials as shown in Table 5.7 [Pittman 2017, Mat2019]. It is important to note that thereason why the indexation starts from zero is due to the nature of Python language.

Initially, this benchmark was projected to only vary the mechanical properties of the inter-layer using a database of 6 materials. However, such conditions represent only 6 possibilities.

Isaac Reis Master Dissertation

Page 87: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

5.Implementation and Methodologies 65

It was decided, then, to also vary the top and rear layer’s mechanical properties leading to atotal of 120 permutations. The algorithms would still converge to the optimum solution after asmall number of evaluations. Thus, the number of materials in the database was increased to9. Those final conditions, which are implemented in this benchmark, result in a total number of504 permutations.

Table 5.7: Material’s database and correspondent indices.

MaterialDensity,[kg m−3]

Elastic Modulus,[MPa]

Poisson’s RatioYield Strength,[MPa]

0 Aluminium 2700 70× 103 0.33 2761 Nylon-6 1140 3× 103 0.35 822 Steel 7850 200× 103 0.25 3503 EPDM 960 2.5 0.499 16.84 Cork 293 9× 103 0.3 15 Aluminium Foam 410 103.08 0.05 1.246 Polycarbonate 1300 1.8× 103 0.3182 637 Epoxy 1540 3.5× 103 0.33 158 Titanium Ti-6Al-4V 4430 113.8× 103 0.342 880

The current optimization benchmark takes form

minimize f(x, rg, β) =W (x) + P (x, rg, β), (5.7)

subject to xi ∈ {0, 1, . . . , a}, i = {front,middle, rear},g(x) = σz − σz,max ≤ 0. (5.8)

where,

W (x) = L×B [tfrontρfront + tintρint + trearρrear] (5.9)

= 0.072[0.025(ρfront + ρrear) + 0.002× ρint

](5.10)

From Table 5.7, the total number of materials tested is nine and, thus, the total number ofPython indexes is a = 8. A penalty function, as explained in Section 4.1.2, with rg = 2 andβ = 2 was implemented in order to penalize the objective function every time the measured peakstress σz,max at the rear impact region (3.2.1) would surpass a maximum of σz,max = 5 MPa.

Strategies Adopted

The variables xi studied in this benchmark are discrete and limited to a search domain within{0, 1, . . . , 8}. However, these variables will be converted into continuous variables with a searchdomain between [0, 1]. When the objective function needs to communicate with Abaqus in orderto perform the evaluation procedure, these variables can easily be converted into its discretecorrespondent value as represented in Equation 5.11.

qi = round(xi × a), (5.11)

Isaac Reis Master Dissertation

Page 88: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

66 5.Implementation and Methodologies

where qi is a vector containing the mechanical properties’ index of each layer and a = 8 . Thisstrategy, likewise the strategies used in the previous two benchmarks, will be useful when per-forming multi-objective optimizations (Chapter 6). Accordingly, variables of different natures(continuous and discrete) and with different boundary conditions can be uniformed. This pro-cess allows them to be easily combined together in an optimization algorithm. It is important tonote, though, that this strategy has some flaws which will be discussed in Section 5.5 as well asproposed improved strategy.

Preceding to the algorithms’ analysis, it is of foremost importance to emphasize that besidesthe variables in this benchmark being discrete, they also do not follow any particular order in thedatabase presented in 5.7.

5.3.1 Benchmark III — PSO

As the variables of study are discrete, the PSO operational parameters were adapted as shownin Table 5.8. The initial velocity v0i of each particle was increased as well as their weight ω inorder to guarantee enough inertia to move from a potential local minima.

Table 5.8: PSO operational parameters for Benchmark III.

No. Particles No. Iterations ω φp φg v0i15 20 0.7 1 2 random(-1,1)×0.8

From Figure 5.22 and 5.23, it is clear a fast convergence rate from the objective function.In fact, it converged to the final optimum solution right at the second iteration. In the formergraph that tendency is also followed by the average and worst curves. In the later graph it isalso noticeable a pattern of convergence of each particles’ solution throughout the number ofevaluations. However, the rate of convergence here discussed is not so perceptive as it is in theprevious two benchmarks. That is the direct cause of a highly non-linear problem and the natureof the variables.

As shown in Figure 5.24, the material properties of the three layers converge immediatelyat the second iteration. The result is the index number 4 for the three layers, which correspondsto cork. Although in an optimization paradigm the PSO performed well, in an engineeringparadigm this results is not satisfactory and demonstrates a premature choice and implementa-tion of constraints. As such, this problem will be reformulated in Section 5.5 and a constraintrelated with the projectile displacement will be added, as well as an explanation. Accordingly,this benchmark will not suffer changes (in this section) as it intended to primarily focus in thevalidation of the three algorithms.

Isaac Reis Master Dissertation

Page 89: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

5.Implementation and Methodologies 67

0 2 4 6 8 10 12 14 16 18 20

100

101

102

103

104

105

Number of iterations

Nor

mal

ized

wei

ght(

loga

rith

mic

scal

e)

Best resutlsWorst Resutls

Average

Figure 5.22: Evolution of the best, worst and mean values of the objective function with thenumber of iterations, for the PSO in Benchmark III.

0 20 40 60 80 100 120 140 160 180 200 220 240 260 280 3000

20

40

Number of evaluations.

Wei

ght[

kg]

Evaluation (without penalization)Iteration

Figure 5.23: Comparison of the solution at each evaluation without penalization with the overallbest solution at each iteration, for the PSO in Benchmark III.

Isaac Reis Master Dissertation

Page 90: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

68 5.Implementation and Methodologies

0 2 4 6 8 10 12 14 16 18 200

2

4

6

Number of iterations

Mat

eria

lind

ex

Front layer mat. indiceInterlayer mat. indiceRear layer mat. indice

Figure 5.24: Combination of materials’ indexes for the PSO in Benchmark III.

5.3.2 Benchmark III — GA

As the number of variables increased from one to three, so did the chromosome length. Suchstrategy assures a maintenance of the GA performance. The genetic operators used in this bench-mark are illustrated in Table 5.9.

Table 5.9: Genetic algorithm operational parameters for benchmark four.

Population Number Number of Individuals Crossover Percentage Mutation Percentage Chromosomes Length20 30 80% 20% 64

As shown in graph 5.25, the objective function and both the average and worst solutionsconverge at a decent rate towards the optimum solution. However, as demonstrated by graph5.18, until roughly evaluation number 300, the individual’s solutions are denser at an intervalof solutions slightly higher than the optimum solution. Only after evaluation number 350, it isclear a movement of the individuals towards the final optimum solution. This rate of evolution,is synchronous with the iteration at which it is verified a convergence towards the final position,as illustrated in graph 5.27. The final position is the as the PSO’s, which is a plate fully made ofcork.

Isaac Reis Master Dissertation

Page 91: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

5.Implementation and Methodologies 69

0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30

100

101

102

103

104

105

Number of iterations

Nor

mal

ized

wei

ght(

loga

rith

mic

scal

e)

Best resutlsWorst Resutls

Average

Figure 5.25: Evolution of the best, worst and mean values of the objective function against thenumber of iterations, for the GA in Benchmark III.

0 50 100 150 200 250 300 350 400 450 500 550 6000

10

20

30

40

Number of evaluations

Wei

ght[

kg]

Evaluation (without penalization)Iteration

Figure 5.26: Comparison of the solution at each evaluation without penalization with the overallbest solution at each iteration, for the GA in Benchmark III.

Isaac Reis Master Dissertation

Page 92: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

70 5.Implementation and Methodologies

0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 302

3

4

5

6

Number of iterations

Mat

eria

lind

ex

Front layer mat. indiceInterlayer mat. indiceRear layer mat. indice

Figure 5.27: Combination of materials’ indexes for the GA in Benchmark III.

5.3.3 Benchmark III — SA

The operation parameters used in this case are essentially the same as in the previous bench-marks, with the exception of the cooling parameter α, as presented in Table 5.10. This parameterwas decreased due to the excessive number of evaluations it needed in order to converge.

Table 5.10: Simulated Annealing operational parameters for benchmark three.

No. of IterationsNo. of evaluationsper Iteration

T αStepkstep

40 10 1000 0.55 0.1

Similarly to how SA behaved in the previous benchmarks, it is noticeable a high rate of ran-domness in each evaluation as presented in Figure 5.28. Nevertheless, the objective function hasa decent slope towards the final optimal solution, ceasing any improvement as the temperaturereaches values close to zero. Such pattern is not new as it was discussed in previous bench-marks. The material’s indexes for each layer appear to have a random evolution until they allfinally converge at the same time as shwon in Figure 5.29. The final solution is the same as theprevious algorithms.

Isaac Reis Master Dissertation

Page 93: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

5.Implementation and Methodologies 71

0 20 40 60 80 100 120 140 160 180 200 2200

10

20

30

40

Number of evaluations.

Wei

ght[

kg]

Evaluation (without penalization)IterationTemperature

Figure 5.28: Comparison of the solution at each evaluation without penalization with the overallbest solution at each iteration, for the SA in Benchmark III.

0 2 4 6 8 10 12 14 16 18 20 220

2

4

6

8

Number of iterations

Mat

eria

lind

ex

Front layer mat. indiceInterlayer mat. indiceRear layer mat. indice

Figure 5.29: Combination of materials’ indexes for the SA in Benchmark III.

Isaac Reis Master Dissertation

Page 94: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

72 5.Implementation and Methodologies

5.3.4 Benchmark III — Summary

As presented in Table 5.11, all three algorithms reached the same combination of design vari-ables. As such, the only means for comparison must be how efficiently they reached to thatoptimum solution. The PSO algorithm has the lowest average, standard deviation and, by far,the number of evaluations needed to find the best solution. Thus, the PSO algorithm was themost efficient out of the three algorithms.

Table 5.11: Final results of benchmark number three.

B.III PSO B.III GA B.III SABest Solution [kg] 2.2854 2.2854 2.2854Average [kg] 2.3465 2.5311 7.7129Standard Deviation 0.2592 0.3036 6.3928Final Indexes [4,4,4] [4,4,4] [4,4,4]Evaluations until best solution 21 291 135

5.4 Benchmark IV (Discrete Variable — Minimize the rear stresssubject to weight constraint)

The aim of the fourth and final benchmark is to compare the algorithms’ efficiency when requiredto minimize the rear stress at the rear impact region, similarly to the second benchmark, but usingthe same discrete variables, materials’ mechanical properties and strategies as in the previousbenchmark. Therefore, the formulation for this benchmark is as follows:

minimize f(x, rg, β) = S(x) + P (x, rg, β), (5.12)

subject to xi ∈ {0, 1, . . . , a}, i = {front,middle, rear},g(x) = w − wmax ≤ 0. (5.13)

5.4.1 Benchmark IV — PSO

Similarly to the performance of the PSO in the previous benchmarks, the average and worstsolutions of each iteration tend to converge onto the optimal solution at a fast rate, as shownin Figure 5.30. Figure 5.31 demonstrates the gradual movement of each individual towards theoptimum solution. The variables’ evolution throughout the number of iterations follows thesame pattern and entirely stop converging after iteration number six, as shown in Figure 5.32.

Isaac Reis Master Dissertation

Page 95: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

5.Implementation and Methodologies 73

0 2 4 6 8 10 12 14 16 18 200

1

2

3

4·106

Number of iterations

Nor

mal

ized

stre

ss

Best resutlsWorst Resutls

Average

Figure 5.30: Evolution of the best, worst and mean values of the objective function against thenumber of iterations, for the PSO in Benchmark IV.

0 20 40 60 80 100 120 140 160 180 200 220 240 260 280 300 320

1

2

3

4·106

Number of evaluations.

Rea

rstr

ess

[Pa]

Evaluation (without penalization)Iteration

Figure 5.31: Comparison of the solution at each evaluation without penalization with the overallbest solution at each iteration. for the PSO in Benchmark IV.

Isaac Reis Master Dissertation

Page 96: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

74 5.Implementation and Methodologies

0 2 4 6 8 10 12 14 16 18 20

4

6

8

Number of iterations

Mat

eria

lind

ex

Front layer mat. indiceInterlayer mat. indiceRear layer mat. indice

Figure 5.32: Combination of materials’ indexes for the PSO in Benchmark IV.

5.4.2 Benchmark IV — GA

As shown in Figures 5.33 and 5.34, the objective function did not change throughout all iter-ations. However, it is noticeable a slope of convergence of both the average and worst curvestowards the optimum as illustrated in the former Figure. The latter Figure confirms a movementof each individual’s solution towards the best solution. From Figure 5.35 it possible to verifythat the optimal solution did not change since the very first iteration. It is perceptible that theGA found a local optimum and could not escape it, probably due to the high non linearity ofthe conditions set for this benchmark or a poor choice of genetic parameters. Besides, this localminimum was not great and it will be discussed in Section 5.4.4.

0 2 4 6 8 10 12 14 16 18 200

0.5

1

1.5·106

Number of iterations

Nor

mal

ized

stre

ss

Best resutlsWorst Resutls

Average

Figure 5.33: Evolution of the best, worst and mean values of the objective function against thenumber of iterations, for the GA in Benchmark IV.

Isaac Reis Master Dissertation

Page 97: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

5.Implementation and Methodologies 75

0 50 100 150 200 250 300 350 400 4500

1

2

·107

Number of evaluations.

Rea

rstr

ess

[Pa]

Evaluation (without penalization)Iteration

Figure 5.34: Comparison of the solution at each evaluation without penalization with the overallbest solution at each iteration, for the GA in Benchmark IV.

0 2 4 6 8 10 12 14 16 18 203

4

5

6

Number of iterations

Indi

ce

Front layer mat. indiceInterlayer mat. indiceRear layer mat. indice

Figure 5.35: Combination of materials’ indexes for the GA in Benchmark IV.

Isaac Reis Master Dissertation

Page 98: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

76 5.Implementation and Methodologies

5.4.3 Benchmark IV — SA

Figure 5.36 depicts the objective function evolution, which is constant until iteration number 11where it moves towards a better solution and finally stays constant again until the last iteration.Similarly to what happened in benchmarks two, the average and worst solutions of each iterationdid not follow any particular rate of convergence towards the optimal solution. As explainedbefore, such behaviour is the direct effect of a lack of intrinsic evolutionary parameters in the SAalgorithm. As illustrated in Figure 5.38, the otimization variables position mirror the objectivefunction behaviour, which concur with the temperature curve reaching low values.

0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 300.6

0.8

1

1.2·106

Number of iterations

Rea

rstr

ess

[Pa]

Stress Evolution

Figure 5.36: Stress evolution, for the SA in Benchmark IV.

0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 300

2

4

·106

Number of iterations

Nor

mal

ized

stre

ss

Best resutlsWorst Resutls

Average

Figure 5.37: Evolution of the best, worst and mean values of the objective function against thenumber of iterations, for the SA in Benchmark IV.

Isaac Reis Master Dissertation

Page 99: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

5.Implementation and Methodologies 77

0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 300

2

4

6

8

Number of iterations

Mat

eria

lind

ice

Front layer mat. indiceInterlayer mat. indiceRear layer mat. indice

Temperature

Figure 5.38: Combination of materials’ indexes for the SA in Benchmark IV.

5.4.4 Benchmark IV — Summary

As presented in table 5.12, the algorithm that resulted in the optimal layer combination (with thelowest stress at the rear impact region) lowest stress at the rear impact region of the plate was thePSO. Besides, it also has had the lowest average and the second lowest number of evaluationsrequired to find the optimal solution. The resultant combination of materials were aluminiumfoam as the top and rear layer and titanium as the interlayer.

The GA, besides having the worst solution and average out of the three algorithms, couldnot manage to escape the local optimum where it got caught. Its final configuration was a front,middle and rear layer made of, respectively, nylon, cork and aluminium foam. The SA has hadthe second best solution and average and it corresponded to a final configuration of aluminiumfoam as the front and rear layer and aluminium as the interlayer.

Under the above circumstances, the algorithm the culminated in the best overall performancewas the PSO.

Table 5.12: Final results of benchmark number four.

B.IV PSO B.IV GA B.IV SABest Evaluation [Pa] 640657.5691 986006.602 716679.511Average [Pa] 734298.7146 986006.602 842247.4266Standard Deviation 168602.5592 ∼ 0 165028.5726Final Indixes [5,8,5] [1,4,5] [5,0,5]Evaluations until best solution 84 8 120

5.5 Alternative Approach

The previous benchmarks served as a means to conduct an analysis of the three algorithms testedand, ultimately, elect the most efficient and dynamic one and aimed to do so in both optimizationand engineering paradigms. Nevertheless, the main focus was to primarily test and train differ-ent algorithm programming strategies and different problem formulations in order to perform

Isaac Reis Master Dissertation

Page 100: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

78 5.Implementation and Methodologies

the multi-objective optimization in Chapter 6. Consequently, the results from each benchamrkwere analyzed by emphasizing the paradigm of optimization performance rather than its engi-neering integrity. The most evident example is the benchmark three e Section 5.3 where all threealgorithms pointed to the same optimal solution, a plate entirely made of cork. According toits initial formulation and constraints, the three algorithms found, indeed, the global minimumof the problem. However, from an engineering standpoint, a plate entirely made of cork doesnot make much sense especially regarding the field of ballistic impacts, even only concerningimpacts in the elastic regime. The reason why every algorithm pointed to such solution wasbecause cork has a low yield strength and density as shown in Table 5.7. The low yield strengthresulted in a premature material plastification and, as a consequence, a major part of the impactenergy is absorbed in this processes resulting in a lower average stress at the rear surface ofthe plate. As such, during the optimization process, the rear stress is never penalized. Besides,cork has the lowest density of all materials tested which resulted in being the best solution forminimizing the plate weight. In order to counteract such premature solutions (from an engineer-ing standpoint) in future optimizations, a new constraint was elaborated that penalizes solutionswhere the projectile maximum displacement surpasses a predefined threshold. By limiting theprojectile’s maximum displacement, the algorithm has an indirect control over solutions thatpoint to materials that entered the plastic regime.

In order to perform a proper validation, the PSO algorithm will be used in a new version ofthe benchmark three, formulated as

minimize f(x, rg, β, rh, γ) =W (x) + P (x, rg, β, rh, γ), (5.14)

subject to xi ∈ {0, 1, . . . , a}, i = {front,middle, rear},g(x) = σz − σz,max ≤ 0, (5.15)

hk(x) = uz − uz,max ≤ 0, (5.16)

where,

W (x) = L×B [tfrontρfront + tintρint + trearρrear] (5.17)

= 0.072[0.025(ρfront + ρrear) + 0.002× ρint

](5.18)

and u and σ represent the projectile displacement and stress at the rear surface, respectively.The penalty function parameters used, which are explained in Section 4.1.2, are rg = 2, β = 2,rh = 1 × 106, γ = 2, σz,max = 10 MPa and uz,max = 1.5 × 10−4 m. The PSO operationalparameters used for the scope of this optimization process are the same as in benchmark threeand are shown in Table 5.8.

Equation 5.11, which was used in benchmarks 3 and 4 to convert the variables of study backinto their discrete nature, is mathematically inefficient as it has a lower probability of selectingvalues at one of the two extremes of the variable domain (which in this case are 0 and 8).Therefore, this formulation was improved and is stated as follows:

qi = int[xi(a+ 0.9(9))

]. (5.19)

Equation 5.19 ensures an uniform probability distribution within the set {0, 1, . . . , a}, the outputof the operator int() is the integer of its content. For instance, if its content is 8.9(9) the outputwill be 8.

Isaac Reis Master Dissertation

Page 101: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

5.Implementation and Methodologies 79

As shown in Figure 5.39, the objective function converges to the final optimal solution afteriteration number 9. In Figure 5.40 the particles evolve towards the better solution starting fromsolutions at the upper and lower extremes. Comparing with the same graph in benchmark three5.23, which particles start converging only from the upper extremity, it is possible to concludethat such evolution difference is caused by the new constraint applied. This happens becausethe displacement constraint (Equation 5.16) counteracts, per say, the stress constraint (Equation5.15): if the stress reaches a low value, it will typically indicate that there is a large displace-ment and, most likely, plasticity occurred. Whereas in benchmark three a low stress would beunconditionally great, here is not because the penalty function is indirectly triggered when thathappens. Thus, because the penalty function is now activated at both upper and lower extremes,the PSO will have particles with velocities pointing to the upper limit and particles with veloc-ities pointing to the lower limit of the domain. This results in a more uniform distribution ofparticles throughout the search domain.

The final solution is constituted of a front layer made of titanium whereas the middle andrear layers are made of cork, as illustrated in Figure 5.41. This solution has a correspondentprojectile displacement of 0.78× 10−4 m, which is significantly below the predefined limit.

0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30

18

18.5

19

19.5

Number of iterations

Wei

ght[

kg]

Weight Evolution

Figure 5.39: Weight evolution for the alternative approach to the Benchmark III.

Isaac Reis Master Dissertation

Page 102: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

80 5.Implementation and Methodologies

0 50 100 150 200 250 300 350 400

10

20

30

40

Number of evaluations.

Wei

ght[

kg]

Evaluation (without penalization)Iteration

Figure 5.40: Comparison of the solution at each evaluation without penalization with the overallbest solution at each iteration, for the alternative approach to the Benchmark III.

0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 302

4

6

8

Number of iterations

Mat

eria

lind

ex

Front layer mat. indiceInterlayer mat. indiceRear layer mat. indice

Figure 5.41: Combination of materials’ indexes for the alternative approach to the BenchmarkIII.

Isaac Reis Master Dissertation

Page 103: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

Chapter 6

Multi-Objective Optimization

While Chapter 3 was fundamental on developing and validating a Python script of the ballisticmodel, Chapter 5 was imperative in integrating, testing and validating that model with three dif-ferent optimization algorithms and several different optimization formulations and constraints.Nonetheless, only single-objective optimization problems have been studied thus far. This chap-ter aims to incorporate the knowledge developed in those previous chapters in one final optimiza-tion and in a multi-objective paradigm. For the scope of the multi-objective optimization furtherstudied in this chapter, the PSO will be used as it was arguably the most efficient algorithmtested in Chapter 5.

6.1 Fundamentals and Methodologies

A multi-objective optimization, as the name suggests, consists on the procedure of simultaneosoptimization of multiple objective functions. Mathematically, the problem with multiple objec-tives or criteria can be stated as [Arora 2012]

minimize f(x) = [f1(x), f2(x), . . . , fc(x)], (6.1)

subject to gj(x) ≤ 0, j = 1, 2, . . . ,m,

hk(x) = 0, k = 1, 2, . . . , l,

xmini ≤ xi ≤ xmax

i , i = 1, 2, . . . , n,

where c is the number of objective functions, f(x) is a m-dimensional vector of objective func-tions and x is a vector containing the design variables. g(x) are m inequality constraints , h(x)are l equality constraints and x are n project variables within the lower and upper boundaries.

Optimization problems with a single-objective function may have several different local op-tima but, ultimately, only one global optimum. Whereas in a multi-objective optimization, theproblem is intrinsically more complex and generally leads to a set of feasible solutions. In fact, asingle optimum point x∗ seldom corresponds to the minimization of every objective function si-multaneously as it would create a conflit between the several criteria. Therefore, these problemsare commonly reconstructed into problems with a single objective function by linearly combin-ing its individual functions [A.Andrade-Campos et al. 2015]. This method is commonly knowas the weighted sum method [Arora 2012] and is defined as

81

Page 104: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

82 6.Multi-Objective Optimization

minimize f(x) = y1f1(x) + y2f2(x) + · · ·+ ycfc(x), (6.2)

subject to gj(x) ≤ 0, j = 1, 2, . . . ,m,

hk(x) = 0, k = 1, 2, . . . , l,

xmini ≤ xi ≤ xmax

i , i = 1, 2, . . . , n,

where the weights yi are yi ≥ 0 and∑yi = 1. The weights are subjective to the operator

experience.

6.2 Pareto Optimality and Utopia Point Concept

As explained before, a typical single function optimization procedure involves determining a setof stationary positions, identify the local maximum or minimum, and possibly find the globaloptimum [Arora 2012]. Comparatively, the process of finding a solution for a multi-objectiveoptimization has a more complex and non-linear essence. For example, a certain position A maycorrespond to the minimum solution of function f1(x) and position B to the minimum solutionof f2(x), but to find a position C that would minimize both f1(x) and f2(x) is not clear, evenif each individual optimization problem is simple. Accordingly, the concept of global optimumfor multiple functions is not clear as they may have opposing characteristics: what decreases thevalue of one function may increase the value of another.

As stated in [Arora 2012] and [A.Andrade-Campos et al. 2015], the standard solution con-cept in defining solutions for multi-objective optimizations is that of Pareto optimality. Thisconcept appeared initially in studies of Vilfredo Pareto [Pareto et al. 2014] in the domain ofeconomics where he refers the simultaneos utility of different economic agents. Accordingly,he states the impossibility of, in equilibrium points, increasing the utility of one agent withoutdecreasing that of another. In the multi-objective optimization field, this concepts can be definedas [Arora 2012]

A point x∗ in the feasible design space is Pareto optimal if and only if there doesnot exist another point x in the set S such that f(x) ≤ f(x∗) with at least onefi(x) < fi(x

∗).

The utopia point f◦ (Equation 6.3), on the other hand, is a unique point in the criteria spacewhich is obtained by minimizing each individual objective function. Each minimization resultsin a point within the design space and a corresponding value for the ojective function. Nev-ertheless, this point typically exists only in the criterion space and not in the variable space aseach individual minimization seldom leads to the same point in this space [A.Andrade-Camposet al. 2015].

f◦ = min{fi(x)|for all x in the search domain

}, i = 1 to c. (6.3)

6.3 Formulation and Strategies

The multi-objective optimization problem in this chapter is a combination of every individualsingle-objective optimization problem studied in Chapter 5. Therefore, its compact formulationcan be defined as follows:

Isaac Reis Master Dissertation

Page 105: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

6.Multi-Objective Optimization 83

minimize f(x) = (y)f1(x) + (1− y)f2(x), (6.4)

subject to xi ∈ {0, 1, . . . , a}, i = {front,middle, rear},tmin ≤ t ≤ tmax,

g(x) = σz − σz,max ≤ 0, (6.5)

h(x) =W −Wmax ≤ 0, (6.6)

d(x) = uz − uz,max ≤ 0. (6.7)

where t is the interlayer thickness within the interval [1, 25]× 10−3, xi corresponds to the layer’material index from Table 5.7. x is a vector containing the four design variables, x = [xi, t]..g(x) is the constraint function related with the maximum stress at the rear impact region, h(x)is the plate’s weight constraint function and d(x) is the projectile’s displacement constraint. Forthe scope of this multi-objective-optimization, five weights were used, y ∈ {0, 0.25, 0.5, 0.75, 1}, corresponding to five different and individual runs of the multi-objective function.

The single-objective function f1 aims to minimize the weight of the plate and f2 the rearstress of the same plate:

f1(x) =W (x) + P1(x, rg, β, rh, γ), (6.8)

f2(x) = S(x) + P2(x, rg, β, rh, γ). (6.9)

Both f1 and f2 have a correspondent penalty function assigned, P1 and P2:

P1(x, rg, β, rf, γ) = rg

[max

{0, g(x)

}]β+ rd

[max

{0, d(x)

}]γ, (6.10)

P2(x, rh, β, rf, γ) = rh

[max

{0, h(x)

}]β+ rd

[max

{0, d(x)

}]γ. (6.11)

For the scope of the penalization parameters used, the maximum weight is Wmax = 30 kg, themaximum admissible rear stress is σz,max = 40 MPa and the maximum admissible projectiledisplacement is uz,max = 1.5 × 10−4 m. For the penalty functions described in Equations 6.10and 6.11, the following parameters were used: rg = rh = rd = 10, β = γ = 3.

6.3.1 Normalization of the Objective Functions

The most time consuming task was the elaboration of a proper normalization strategy. Be-fore finding the correct literature about the normalization technique for multi-objective opti-mizations that lead to the Equation 6.12, the optimization process was initially programmedto normalize both f1 and f2 using the first iteration’s results. By doing this, for each weighty ∈ {0, 0.25, 0.5, 0.75, 1}, the PSO was using different normalization references. Besides, be-cause the PSO is stochastic, the initial normalization references could be significantly differentbetween runs. For example, for y = 0.5, if the PSO would find the global optimal result sincethe first iteration, the following iterations would result in values equal or close to one after per-form the normalization of f1 and f2. Whilst for y = 0.75, if the PSO would start with a very baditeration’s result, the following iterations would certainly result in values under one, even if thePSO converges to a local minimum instead of a global minimum like it did in y = 0.5. Essen-tially, this normalization strategy lead to a lack of relativity between each weight y. The result

Isaac Reis Master Dissertation

Page 106: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

84 6.Multi-Objective Optimization

would be a completely non linear Pareto’s curve. After some research, [Arora 2012] gave someimportant insights on how to normalize multi-objective functions. The multi-objective functionin Equation 6.4 combines two different single-objective functions. The first, f1 (Equation 6.8),has the objective of minimizing the weight of the plate whilst the second, f2 (Equation 6.9), hasthe objective of minimizing the stress at the rear side of the plate. From an immediate analysis,it is clear that both functions f1 and f2 have different units and significantly different ordersof magnitude which makes their comparison difficult. Thus, it is necessary to transform bothsingle-objective functions such that they have similar orders of magnitude. [Arora 2012] arguedthat the most robust approach to normalize the objective function is

fnormq =

fq(x)− f◦qfmaxq − f◦q

, q = {1, 2}, (6.12)

where f◦q is the utopia point and fmaxq is the maximum or worst point for function q. For both

functions f1 and f2, neither the utopia nor the maximum points are known or, at least, not im-mediate to obtain. Thus, one approach to determine these points is by minimizing each functionindividually. This can easily be done by minimizing the multi-objective function in Equation6.4 with the weight y = 1 in order to only minimize f1 by neglecting f2. The same procedurecan be applied to find the utopia point of f2 if the weight is y = 0. Depending on the accuracyof fmax

q and f◦q , fnormq typically has values between 0 and 1. By following the method explained

above, the normalization parameters to be used for the scope of the multi-objective optimizationare defined in Table 6.1.

Table 6.1: Normalization parameters used for the multi-objective optimization.

f1 [kg] f2 [MPa]f◦1 fmax

1 f◦2 fmax2

11 22 1.2 8

6.3.2 PSO Strategies and Operational Parameters

As realized from Chapter 5, the operational parameters used in the PSO algorithm only variedaccording to the nature of the study variables of the optimization problems. The parameters usedin the first two benchmarks (Table 5.1) differ from the ones used in the last two benchmarks(Table 5.8) as in the former case the variable of study is continuous and linear and in the lattercase the variables are discrete. As a result, the PSO algorithm used in the current multi-objectiveproblem was adapted in such way that it differentiates the nature of each variable of study andassigns different parameters according to it. By doing this, the PSO performance verified inChapter 5 is ensured and is independent of the number and nature of the variables of study. Theoperational parameters used for the current multi-objective problem are depicted in Table 6.2,where the subscripts ωc and ωd are the PSO weight parameters used in the case of a continuous ordiscrete variable, respectively. The parameters v0i,c and v0i,d correspond to the assigned particleinitial velocity for a continuous or discrete variable, respectively.

As a result of the variable’s uniformization techniques tested in each benchamrk of, the PSOalgorithm used in the current multi-objective optimization will follow the same reasoning. Inorder to efficiently work with variables of different types and different orders of magnitude atthe same time, they are all converted into continuous variables within [0, 1]. When the PSO

Isaac Reis Master Dissertation

Page 107: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

6.Multi-Objective Optimization 85

Table 6.2: PSO operational parameters used in the multi-objective optimization problem.

No. Prticles No. Iterations ωc ωd φp φg v0i,c v0i,d15 30 0.5 0.7 1 2 random(-1,1)×0.2 random(-1,1)×0.8

needs to evaluate the objective functions and, thus, call Abaqus, these variables are transformedinto their original nature while maintaining the correct value to be tested. Accordingly, Equation5.5 is used when the variable to be transformed is originally continuous and Equation 5.19 isused when the variable is originally discrete.

6.4 Results and Analysis

As explained before, the results obtained from a multi-objective optimization are intrinsicallymore complex and, thus, require a more meticulous approach than the results from a typicalsingle-objective optimization. In order to obtain results, the multi-objective optimization processconsisted in five consecutive and individual runs, in which the weight y from Equation 6.4 wouldassume a different value, (y ∈ {0, 0.25, 0.5, 0.75, 1}), for each run.

Figure 6.1 depicts a two-dimensional Pareto curve obtained by plotting the optimum resultsof f1 and f2 for every weight y. From Equation 6.4, when y = 0, the global objective functionneglects the contribution of f1 and only considers the results from f2. In the graph, this pointcorresponds to the highest possible value for f1, which is 1.5705, and the lowest value for f2,0.0073. As y increases and gets closer to one, the opposite is verified: the results from f2 areexpected to gradually increase as the results from f1 decrease. Finally, when y = 1, the globalobjective function neglects the effect of f2, which rises to its maximum value in the Paretocurve whilst f1 is minimized. Table 6.3 illustrates the results obtained from the multi-objectiveoptimization procedure for each of the weights. It is noticeable, as expected, that the globalobjective function optimum results, f , is lower at the extremes (y=0 and y=1).

Typically, a multi-objective optimization has an infinite number of solutions. Therefore, thePareto’s curve illustrated in Figure 6.1 is the ultimate solution for such problem as it indicatesa region that contains all the optimal solutions. This region is known as the Pareto optimalregion [A.Andrade-Campos et al. 2015] and, in the graph, corresponds to the region within theutopia line and the Pareto’s curve itself.

In order to complement the analysis to the final results thus far discussed, Figures 6.2, 6.3and 6.4 illustrate the evolution of the global objective function (f , f1 and f2) for y = 0, y = 0.5and y = 1, respectively. When y = 0, it is noticeable (Figure 6.2) that the f2 curve completelyoverlaps the objective function, f . This is expected because, from Equation 6.4, f1 ends upnot influencing the final result. As a consequence, f1 has consistently large values throughoutthe optimization process. Besides, because f1 is correlated with the minimization of the plate’sweight, this optimization process (y = 0) resulted in the largest plate’s weight and interlayerthickness from all the different weights, y, as shown in Table 6.3. When y = 0.5 (Figure 6.3),it is perceptible that the global objective function, f , is consistently in-between the two singleobjective functions f1 and f2. This is expected as both single obective functions now have thesame influence in the global objective function. Table 6.3 confirms this tendency as the finalvalues for the plate’s weight, rear stress and projectile displacement are between the the lowestand largest values as well. When y = 1, Equation 6.4 neglects the influence of f2 on the globalobjective function f . Thus, from Figure 6.4 it is perceptible that the f1 curve totally overlaps the

Isaac Reis Master Dissertation

Page 108: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

86 6.Multi-Objective Optimization

global objective function, as expected. Whereas, in the other hand, f2 assumes the largest valuesin the whole optimization procedure. Table 6.3 confirms the largest value for the rear stress andthe lowest plate’s weight when y = 1.

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.80

0.5

1

f1

f2

Pareto Frontier CurveUtopia Line

Figure 6.1: Pareto curve of the multi-objective optimization.

0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30

10−2

10−1

100

Number of iterations

Nor

mal

ized

valu

es(l

ogar

ithm

icsc

ale)

ff1f2

Figure 6.2: Results obtained from the multi-objective optimization when weight y = 0.

Isaac Reis Master Dissertation

Page 109: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

6.Multi-Objective Optimization 87

Table 6.3: Final results obtained from the multi-objective optimization for each weight y.

f 0.0027Material Index,

[xfront, xmiddle, xrear][0,8,5]

W[kg]

20.57

y = 0 f1 0.87 Design Variables Constraintsσz

[MPa]1.22

f2 0.0027Thickness, t

[m]0.0134

uz[mm]

0.057

f 0.1856Material Index,

[xfront, xmiddle, xrear][8,4,5]

W[kg]

18.194

y = 0.25 f1 0.654 Design Variables Constraintsσz

[MPa]1.40

f2 0.0294Thickness, t

[m]0.001

uz[mm]

0.096

f 0.0564Material Index,

[xfront, xmiddle, xrear][0,4,5]

W[kg]

11.71

y = 0.5 f1 0.0642 Design Variables Constraintsσz

[MPa]1.53

f2 0.0486Thickness, t

[m]0.001

uz[mm]

0.143

f 0.0849Material Index,

[xfront, xmiddle, xrear][0,0,5]

W[kg]

12.07

y = 0.75 f1 0.097 Design Variables Constraintsσz

[MPa]1.53

f2 0.0485Thickness, t

[m]0.001

uz[mm]

0.135

f 0.0243Material Index,

[xfront, xmiddle, xrear][0,4,4]

W[kg]

11.27

y = 1 f1 0.0243 Design Variables Constraintsσz

[MPa]7.91

f2 0.9877Thickness, t

[m]0.001

uz[mm]

0.113

0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30

10−2

10−1

100

101

102

Number of iterations

Nor

mal

ized

valu

es(l

ogar

ithm

icsc

ale)

ff1f2

Figure 6.3: Results obtained from the multi-objective optimization when weight y = 0.5.

Isaac Reis Master Dissertation

Page 110: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

88 6.Multi-Objective Optimization

0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30

10−1

100

101

Number of iterations

Nor

mal

ized

valu

es(l

ogar

ithm

icsc

ale)

ff1f2

Figure 6.4: Results obtained from the multi-objective optimization when weight y = 1.

Isaac Reis Master Dissertation

Page 111: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

Chapter 7

Final Remarks

7.1 Conclusion

As explained at the beginning of this dissertation, the objectives could essentially be divided intothree main stages: develop an understanding on the physics and mechanics of ballistic impactsand validate an Abaqus Python script of the ballistic simulation model, acquire knowledge onthree metaheuristic algorithms and different optimization and programming strategies throughfour benchmarks and, finally, perform a multi-objective optimization using all the accumulatedinsights obtained thus far.

Chapter 3 was imperative in the development of this dissertation as it was the foundationof two important bases: the theoretical understanding of the mechanics and physics of tran-sient events such as ballistic impacts, and the first usage of Abaqus Python scripting and designparametrization techniques. Moreover, it was important to analyse and validate possible vari-ables of study to be implemented in future optimization procedures. An example is the impactregion analysis in Section 3.2.1 where it was generated a script that calculates the average stressat the impact region of the plate from all nodes within that region. This script was later used inoptimization problems that required the evaluation of the stress at the rear of the plate.

While developing the model script, several simulation related topics were discussed, suchas the type of boundary conditions to be implemented, the usage of symmetry conditions and,also, a mesh convergence study was carried. One of the paradigms was to generate the lesscomputational expensive model script possible whilst maintaining the physics and mechanicintegrity of the system. Therefore, a proper validation of the dynamic response of the system waselaborated in Section 3.2.5 and, furthermore, a validation of the elastic wave velocity analysisthat is generated upon the impact was also carried in Section 3.2.6.

In Chapter 4.2, three metaheuristic algorithms were introduced: Particle Swarm Optimiza-tion (PSO), Genetic Algorithm (GA) and Simulated Annealing (SA). Specific criteria of eachalgorithm were discussed, such as their formulation, methodology and operational parameters.

Chapter 5 is arguably one of the most important chapter of this dissertation. Four differentbenchmarks are formulated and programmed in Python for each one of the three algorithms andthey all use the Python script developed in Chapter 2 at some point as a means of obtainingvalues to evaluate their objective function. Each subsequent benchmark increases in complexityand different formulation, constraints and programming strategies are tested. At the end of thischapter, the PSO algorithm was the most efficient and the one that presented a better overallperformance of the three algorithms tested.

89

Page 112: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

90 7.Final Remarks

Chapter 6 is the culmination of every insight developed throughout the precedent Chap-ters and it was the one that demanded more effort due to its high levels of complexity on itsproblem formulation, programming strategies and analysis of results. The final results for thismulti-objective optimization procedure resulted in a region of admissible results, called Pareto’soptimal region.

It is possible to conclude that all the optimization procedures conducted in this dissertation(including the algorithms, methods and strategies chosen) presented overall good results, regard-ing the optimization paradigm itself. They all presented optimal solutions that were the resultof successive evolving evaluations towards better results. Nevertheless, one of the major goalsfor this dissertation was that of the analysis of the obtained results’ nature in a ballistic impactstandpoint. For this analysis, the results obtained from the multi-objective optimization will betaken into consideration. More precisely, the results obtained when y = 0.5, as it considers bothsingle objective functions in the same proportion. As shown in Table 6.3, the results for y = 0.5are a plate with an interlayer thickness of 1 mm and where the front, middle and rear layers aremade of aluminium, cork and aluminium foam, respectively. [Azevedo 2012] conducted a study(both experimental and with a simulation software) where it analyzed the performance of sand-wich plates where the front and rear layers where made of aluminium and the interlayer made ofcork. This model successfully achieved the study purposes as it performed well under ballisticimpacts. Although the conclusions from [Azevedo 2012] are a good indicator to validate theresults obtained in this dissertation, there are parameters that need to be taken into considerationsuch as the fact that this paper only focused on elastic regime and, thus, the projectile’s velocitymaintained low values.

7.2 Further Work

This dissertation can be used as a starting point for different explorations on the field designoptimization, programming and simulation, such as the usage of the material on this dissertationto go further on the analysis of ballistic (transient) events. For instance, generate a Python scriptmodel of a ballistic impact with penetration. Perform the same optimization procedures andcompare the results. The results would be more realistic than the ones from this dissertation asit would be considering plastification effects. This dissertation only considers ballistic impactsat the elastic regime. Besides, other design variables could be studied in order to increase thesystem complexity.

Isaac Reis Master Dissertation

Page 113: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

Bibliography

[A.Andrade-Campos et al. 2015] A.Andrade-Campos, J. Dias-de-Oliveira and J. Pinho-da-Cruz. Otimizacao Nao-Linear em Engenharia. ETEP, 2015.

[Altom and Chapman 1999] T. Altom and M. Chapman. Programming with Python. PrimaTech’s Linux series. Prima Tech, University of Michigan, 1999.

[Arora 2012] S. Arora. Introduction to Optimum Design. Academic Press, 2012.

[Ashby 2005] M. F. Ashby. Hybrids to fill holes in material property space. PhilosophicalMagazine, 85:3235–3257, 2005.

[Azevedo 2012] A. V. F. Azevedo. Desempenho balıstico de sistemas de protecao com nucleosde MAC. Master’s thesis, University of Aveiro, Portugal, 2012.

[Back 1996] T. Back. Evolutionary Algorithms in Theory and Practice: Evolution Strategies,Evolutionary Programming, Genetic Algorithms. Oxford University Press, Inc., New York,NY, USA, 1996.

[Blickle and Thiele 1996] T. Blickle and L. Thiele. A Comparison of Selection Schemes Usedin Evolutionary Algorithms. Evolutionary Computation, 4(4):361–394, 12 1996.

[Car 2014] J. Car. An Introduction to Genetic Algorithms. Artificial Life, 3(1):63–65, 2014.

[Chakraborty and Dutta 2013] D Chakraborty and A Dutta. Optimization of FRP compositesagainst impact induced failure using island model parallel genetic algorithm. CompositesScience and Technology, 65(2005):2003–2013, 2013.

[Chen 2001] S. Y. Chen. An approach for impact structure optimization using the robust geneticalgorithm. Finite Elements in Analysis and Design, 37(5):431–446, 2001.

[Eberhart and Shi 2000] R. C. Eberhart and Y. Shi. Comparing inertia weights and constrictionfactors in particle swarm optimization. In Proceedings of the 2000 Congress on Evolution-ary Computation, CEC 2000, Vol. 1, pp. 84–88, 2000.

[Gnedin et al. 2018] N. Y. Gnedin, V. A. Semenov and A. V. Kravtsov. Enforcing the Courant–Friedrichs–Lewy condition in explicitly conservative local time stepping schemes. Journalof Computational Physics, 359:93–105, 2018.

[Graff 1991] K. F. Graff. Book: Wave Motion in Elastic Solids. Dover Publications Inc., NewYork, United States, new editio edition, 1991.

[Grus ] J. Grus. 2015-Data Science from Scratch.

91

Page 114: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

92 BIBLIOGRAPHY

[Gu and Nesterenko 2007] Y. Gu and V. F. Nesterenko. Design and ballistic testing of Ti-6Al-4V matrix composites. Journal of Composite Materials, 41(19):2313–2323, 2007.

[Hazell 2015] P. J. Hazell. Materials, Theory, and Design. CRC Press, 1st edition, 2015.

[Hetherington 1992] J. G. Hetherington. The optimization of two component composite ar-mours. International Journal of Impact Engineering, 12(3):409–414, 1992.

[Inc 2004] Abaqus Inc. ABAQUS: scripting user’s manual. Abaqus, 6.5 edition, 2004.

[Kennedy and Eberhart 1995] James Kennedy and Russell Eberhart. Particle Swarm Optimiza-tion James. IEEE international conference on neural networks,, pp. 1942–1948, 1995.

[Kennedy and Eberhart 2001] J. Kennedy and R. C. Eberhart. Swarm Intelligence. MorganKaufmann Publishers Inc., San Francisco, CA, USA, 2001.

[Kennedy and Mendes 2002] J. Kennedy and R. Mendes. Population structure and particleswarm performance. In Proceedings of the 2002 Congress on Evolutionary Computation.CEC’02 (Cat. No. 02TH8600), Vol. 2, pp. 1671–1676. IEEE, 2002.

[Khachaturyan et al. 1979] A. Khachaturyan, S. Semenovskaya and B. Vainstein. Statistical-thermodynamic approach to determination of structure amplitude phases. Soviet physics,crystallography, 24(5):519–524, 1979.

[Khachaturyan et al. 1981] A. Khachaturyan, S. Semenovsovskaya and B. Vainshtein. The ther-modynamic approach to the structure analysis of crystals. Acta Crystallographica SectionA: Crystal Physics, Diffraction, Theoretical and General Crystallography, 37(5):742–754,1981.

[Luke 2013] Sean Luke. Essentials of Metaheuristics. Lulu, second edition, 2013. Availablefor free at http://cs.gmu.edu/∼sean/book/metaheuristics/.

[Luo et al. 2011] Xiaobo Luo, Amjad J. Aref and Gary F. Dargush. Optimal Design of BundledLayered Elastic Stress Wave Attenuators. Journal of Computing in Civil Engineering,26(3):387–395, 2011.

[Mat2019] Online Materials Information Resource, 2019.

[Mitchell 1998] M. Mitchell. An Introduction to Genetic Algorithms. MIT Press, Cambridge,MA, USA, 1998.

[Mitchell 2013] M. Mitchell. Genetic algorithms: An overview. Complexity, 1(1):31–39, 2013.

[Nourani and Andresen 1998] Y. Nourani and B. Andresen. A comparison of simulated anneal-ing cooling strategies. 1998.

[Pareto et al. 2014] V. Pareto, A. Montesano, A. Zanni, L. Bruni, J. S. Chipman and M. McLure.Manual of Political Economy: A Variorum Translation and Critical Edition. OUP Oxford,2014.

[Park et al. 2005] M. Park, J. Yoo and D. T. Chung. An optimization of a multi-layered plateunder ballistic impact. International Journal of Solids and Structures, 42(1):123–137,2005.

Isaac Reis Master Dissertation

Page 115: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

BIBLIOGRAPHY 93

[Peprah et al. 2017] A. K. Peprah, S. K. Appiah and S. K. Amponsah. An Optimal Cool-ing Schedule Using a Simulated Annealing Based Approach. Applied Mathematics,8(08):1195, 2017.

[Perez and Behdinan 2007] R. E. Perez and K. Behdinan. Particle swarm optimization in struc-tural design. In Swarm Intelligence, Focus on Ant and Particle Swarm Optimization. Inte-chOpen, 2007.

[Pittman 2017] S. Pittman. Layered Armour Systems : the Influence of a Material’s Propertieson its Ability to be an Effective Interlayer. The University of Edinburgh, 2017.

[Plesek et al. 2012] J. Plesek, R. Kolman and D. Gabriel. Estimation of the critical time stepfor explicit integration. Engineering mechanics, pp. 1001–1010, 2012.

[Rao 2009] S. Rao. Engineering optimization: theory and practice. John Wiley & Sons, 2009.

[Sadeghi et al. 2014] Javad Sadeghi, Saeid Sadeghi and Seyed Taghi Akhavan Niaki. Optimiz-ing a hybrid vendor-managed inventory and transportation problem with fuzzy demand:An improved particle swarm optimization algorithm. Information Sciences, 272:126–144,2014.

[Shi and Eberhart 1998a] Y. Shi and R. Eberhart. A modified particle swarm optimizer. In 1998IEEE international conference on evolutionary computation proceedings. IEEE worldcongress on computational intelligence (Cat. No. 98TH8360), pp. 69–73. IEEE, 1998.

[Shi and Eberhart 1998b] Y. Shi and R. C. Eberhart. Parameter Selection in Particle SwarmOptimization. In Proceedings of the 7th International Conference on Evolutionary Pro-gramming VII, EP ’98, pp. 591–600, London, UK, 1998. Springer-Verlag.

[Shi and Eberhart 1999] Y. Shi and R. C. Eberhart. Empirical study of particle swarm optimiza-tion. Proceedings of the 1999 Congress on Evolutionary Computation, 3(February):1945–1950, 1999.

[Simulia 2014] Dassault Systemes Simulia. Abaqus 6.14 / Analysis User’s Guide. ABAQUS6.14 Analysis User’s Guide, I:862, 2014.

[Wilkins 1978] Mark L. Wilkins. Mechanics of penetration and perforation. International Jour-nal of Engineering Science, 16(11):793–807, 1978.

[Yong et al. 2008] M. Yong, B. G. Falzon and L. Iannucci. On the application of genetic algo-rithms for optimising composites against impact loading. International Journal of ImpactEngineering, 35(11):1293–1302, 2008.

[Yong et al. 2010] M. Yong, L. Iannucci and B. G. Falzon. Efficient modelling and optimisationof hybrid multilayered plates subject to ballistic impact. International Journal of ImpactEngineering, 37(6):605–624, 2010.

[Youssef et al. 2001] H. Youssef, S. M. Sait and H. Adiche. Evolutionary algorithms, simulatedannealing and tabu search: A comparative study. Engineering Applications of ArtificialIntelligence, 14(2):167–181, 2001.

Isaac Reis Master Dissertation

Page 116: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

94 BIBLIOGRAPHY

[Zhang et al. 2015] Y. Zhang, S. Wang and G. Ji. A Comprehensive Survey on Particle SwarmOptimization Algorithm and Its Applications. Mathematical Problems in Engineering,2015:1–38, 2015.

[Zukas and Scheffler 2001] J. A. Zukas and D. R. Scheffler. Impact effects in multilayeredplates. International Journal of Solids and Structures, 38(19):3321–3328, 2001.

Isaac Reis Master Dissertation

Page 117: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

Appendix A

Multi-objective Optimization PythonCode

This appemdix is intended to illustrate the full Python code used in the multi-objective opti-mization in Chapter 6. The other optimization procedures (as the ones developed in Chapter 5)follow the same reasoning, only changing the algorithm used, some programming strategies andthe problem’s formulations. Besides, this code also uses the Abaqus Python script developed inChapter 3.

Two Python files are shown in this attachment, one referring to the PSO routine and the otherto the Abaqus simulation script of the system. In order to run this multi-objective procedure,the following command must be run in the Abaqus commnad line: abaqus cae -noGUIPSO multi obj.py. It is important to note, though, that the Python files must be in theAbaqus work directory.

1 # File Name: PSO_multi_obj.py -----------------------------------------------------+2 # ----------------------------------------------------------------------------+3 #4 # Isaac Reis5 # [email protected] # Master's Dissertation7 # MSc in Mechanical Engineer8 # University of Aveiro9 #

10 # ----------------------------------------------------------------------------+11 '''12 Description:13 This file contains a Particle Swarm Optimization algorithm14 adapted to a multi-objective design optimization that requires15 the usage of an Abaqus Python script16 '''17

18 # IMPORT PACKAGES19 from __future__ import division20 import random21 import math22 import numpy as np23 import time24

25 # Import Abaqus Python Script of the ballistic model26 from Abaqus_Python_Script import simulation_Abaqus27

28 class Particle:29 def __init__(self,x0):30 self.position_i=[] # particle position

95

Page 118: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

96 A.Multi-objective Optimization Python Code

31 self.velocity_i=[] # particle velocity32 self.pos_best_i=[] # best position individual33 self.Fobj_best_i=-1 # best f_obj individual34 self.f1_best_i=-135 self.f2_best_i=-136 self.Fobj_i=-1 # f_obj individual37 self.f1_i=-1 # f1 individual38 self.f2_i=-1 # f2 individual39 self.F1_i=-1 # f1 individual40 self.F2_i=-1 # f2 individual41 self.P1_i=-1 # f1 individual42 self.P2_i=-1 # f2 individual43

44 for i in range(0,num_dimensions):45 if (i==3):46 #== Initial velocity for the continuous variable (thickness)47 self.velocity_i.append(random.uniform(-1,1)*0.2)48 else:49 #== Initial velocity for the discrete variables (materials)50 self.velocity_i.append(random.uniform(-1,1)*0.8)51

52 self.position_i.append(random.uniform(0,1))53

54 # evaluate current fitness55 def evaluate(self,ObjectiveFunction):56 output_obj= ObjectiveFunction(self.position_i)57 self.Fobj_i = output_obj[6]58 self.f1_i = output_obj[0]59 self.f2_i = output_obj[1]60

61 self.F1_i = output_obj[4]62 self.F2_i = output_obj[5]63

64 self.P1_i = output_obj[2]65 self.P2_i = output_obj[3]66

67

68 # check to see if the current position is an individual best69 if self.Fobj_i<self.Fobj_best_i or self.Fobj_best_i==-1:70 self.pos_best_i=self.position_i[:]71

72 self.Fobj_best_i=self.Fobj_i73 self.f1_best_i= self.f1_i74 self.f2_best_i= self.f2_i75 self.F1_best_i= self.F1_i76 self.F2_best_i= self.F2_i77 self.P1_best_i= self.P1_i78 self.P2_best_i= self.P2_i79

80

81 # update new particle velocity82 def update_velocity(self,pos_best_g):83 w_c=0.5 # weight for continuous variable84 w_d=0.7 # weight for discrete variable85 c1=1 # cognative constant86 c2=2 # social constant87

88 for i in range(0,num_dimensions):89 r1=random.random()90 r2=random.random()91

92 vel_cognitive=c1*r1*(self.pos_best_i[i]-self.position_i[i])93 vel_social=c2*r2*(pos_best_g[i]-self.position_i[i])94

95 if (i==3):96 self.velocity_i[i]=w_c*self.velocity_i[i]+\97 vel_cognitive+vel_social

Isaac Reis Master Dissertation

Page 119: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

A.Multi-objective Optimization Python Code 97

98 else:99 self.velocity_i[i]=w_d*self.velocity_i[i]+\

100 vel_cognitive+vel_social101

102 # update the particle position based off new velocity updates103 def update_position(self,bounds):104 for i in range(0,num_dimensions):105 self.position_i[i]=self.position_i[i]+self.velocity_i[i]106

107 # adjust maximum position if necessary108 if self.position_i[i]>bounds[i][1]:109 self.position_i[i]=bounds[i][1]110

111 # adjust minimum position if neseccary112 if self.position_i[i]<bounds[i][0]:113 self.position_i[i]=bounds[i][0]114

115

116 # PENALTY FUNCTION ----------------------------------------------------------------+117

118 def penalty_norm(g): # Penalty to use when dealing with normalized values119 r = 10120 B = 3121 P = (r*max(0,g))**B122 return P123

124

125

126 # OBJECTIVE FUNCTION ---------------------------------------------------------+127 def costfunc(parameters):128 # F1 -> minimizes Weight129 # F2 -> minimizes Stress130

131 # Parameters of reference to perform the normalization132 weight_utopia= 11133 weight_worst= 22134 stress_utopia= 1.2e6135 stress_worst= 8e6136

137 # Constraint Parameters138 Max_Weight= 30 # Maximum Weight139 Max_Stress= 40e6 # Maximum Stress140 Max_Displ= 1.5e-4 # Maximum Projectile Displacement141

142

143 # Calling abaqus to simulate and generate output144 Output= simulation_Abaqus(parameters)145

146 # Calculate the penalization147 weight= 0.5*0.3*0.025*(Output['Material Density Top'] + \148 Output['Material Density Bot']) + \149 0.5*0.3*Output['Interlayer Thickness']*\150 (Output['Material Density Int'])151

152 g= (Output['max IR Rear'] - Max_Stress)*(1/(Max_Stress))153 h= (weight - Max_Weight)*(1/Max_Weight)154 j= (Output['Maximum Displacement'] - Max_Displ)*(1/(Max_Displ))155 P1 = penalty_norm(g) + penalty_norm(j)156 P2 = penalty_norm(h) + penalty_norm(j)157

158 # Normalize f1 and f2 and159 f1= (weight-weight_utopia)/(weight_worst- weight_utopia)160 f2= (Output['max IR Rear']- stress_utopia)/ (stress_worst - stress_utopia)161 # Add the penalty, P1 and P2, to both f1 and f2162 F1= f1 + P1163 F2= f2 + P2164

Isaac Reis Master Dissertation

Page 120: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

98 A.Multi-objective Optimization Python Code

165 # Global Objective Function166 F_obj = (k)*F1 + (1-k)*F2167

168 # Print the result for this evaluation169 k_str= str(k)170 with open("Results_Each_Iteration_PSO_k"+k_str+".txt","a+") as variable_file:171 variable_file.write('%.4f,%.4f,%.6f,%d,%d,%d,%.4f,%.4f,%.4f,%.4f,%.4f,\172 %.4f\n'%(Output['max IR Rear'],weight,Output['Maximum Displacement'],173 Output['Material Indice Top'],Output['Material Indice Int'],174 Output['Material Indice Bot'], Output['Interlayer Thickness'],175 F1, P1, F2, P2, F_obj))176

177 # Array containing the necessary output178 Output=[f1, f2, P1, P2, F1, F2,F_obj]179

180 return Output181

182

183

184 def PrintResults(i,maxiter, best_Fobj_history, best_F1_history, best_F2_history,185 best_P1_history,best_P2_history, best_position_history,186 count_time_end, k):187 k_str= str(k)188 with open("Results_PSO_k"+ k_str +".txt", "w") as variable_file:189 variable_file.write(' Analise de resultados apos \190 correr o algoritmo de otimizacao no Abaqus\n')191 variable_file.write('-------Avaliacao numero %d/%d\192 --------\n'% (i+1,maxiter))193

194 variable_file.write('Evaluation, Best solution, Best F1,\195 Best F2, P1, P2,Indice_1, Indice_2, Indice_3, Thickness,\196 Time per evaluation\n')197 for j in range(maxiter):198 variable_file.write('%d,%.4f,%.4f,%.4f,%.4f,%.4f,%d,%d,%d,\199 %.4f,%.4f\n'% (j+1,best_Fobj_history[j],best_F1_history[j],200 best_F2_history[j], best_P1_history[j],best_P2_history[j],201 int(round(best_position_history[j][0]*8)),202 int(round(best_position_history[j][1]*8)),203 int(round(best_position_history[j][2]*8)),204 ((best_position_history[j][3]*24)+1)*1e-3,205 count_time_end[j]))206

207

208

209 #======================================================================210 #======================================================================211 #======================================================================212 #--- MAIN ------------------------------------------------------------+213

214 class PSO():215 def __init__(self, ObjectiveFunction, k, x0, bounds,216 num_particles, maxiter, verbose=False):217 k_str= str(k)218 with open("Results_Each_Iteration_PSO_k"+ k_str +".txt",219 "w+") as variable_file:220 variable_file.write(' Results from Abaqus\n')221 variable_file.write('Stress, weight, max displ, inice_1,\222 inice_2, inice_3,thickness, F1, P1, F2, P2, fobj\n')223

224 global num_dimensions225

226 num_dimensions=len(x0)227 Fobj_best_g=-1 # best F_obj for group228 f1_best_g= -1229 f2_best_g= -1230 F1_best_g=-1 # best F1 for group (includes P1)231 F2_best_g=-1 # best F2 for group (includes P2)

Isaac Reis Master Dissertation

Page 121: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

A.Multi-objective Optimization Python Code 99

232 P1_best_g = -1233 P2_best_g = -1234 pos_best_g=[] # best position for group235

236 # establish the swarm237 swarm=[]238 for i in range(0,num_particles):239 swarm.append(Particle(x0))240

241 # begin optimization loop242 best_Fobj_history= np.zeros(maxiter)243 best_F1_history= np.zeros(maxiter)244 best_F2_history= np.zeros(maxiter)245 best_P1_history= np.zeros(maxiter)246 best_P2_history= np.zeros(maxiter)247 best_position_history= np.zeros([maxiter,4])248 count_time_end= np.zeros(maxiter)249

250

251 i=0252 while i<maxiter:253 count_time_start= time.time()254

255 # cycle through particles in swarm and evaluate fitness256 for j in range(0,num_particles):257 swarm[j].evaluate(ObjectiveFunction)258

259 # determine if current particle is the best (globally)260 if swarm[j].Fobj_i<Fobj_best_g or Fobj_best_g==-1:261 pos_best_g=list(swarm[j].position_i)262 Fobj_best_g=float(swarm[j].Fobj_i)263 f1_best_g= float(swarm[j].f1_i)264 f2_best_g= float(swarm[j].f2_i)265 F1_best_g= float(swarm[j].F1_i)266 F2_best_g= float(swarm[j].F2_i)267 P1_best_g= float(swarm[j].P1_i)268 P2_best_g= float(swarm[j].P2_i)269

270 # cycle through swarm and update velocities and position271 for j in range(0,num_particles):272 swarm[j].update_velocity(pos_best_g)273 swarm[j].update_position(bounds)274

275

276 best_Fobj_history[i]= Fobj_best_g277 best_F1_history[i]= F1_best_g278 best_F2_history[i]= F2_best_g279 best_P1_history[i]= P1_best_g280 best_P2_history[i]= P2_best_g281

282 best_position_history[i]= pos_best_g283

284 count_time_end[i]= time.time() - count_time_start285 PrintResults(i,maxiter, best_Fobj_history, best_F1_history,\286 best_F2_history, best_P1_history, best_P2_history,\287 best_position_history, count_time_end, k)288 i+=1289

290 # print final results291 print("\nFINAL SOLUTION:")292 print(pos_best_g)293 print(Fobj_best_g)294

295 if __name__ == "__PSO__":296 main()297

298

Isaac Reis Master Dissertation

Page 122: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

100 A.Multi-objective Optimization Python Code

299 #--- RUN ----------------------------------------------------------------------+300

301 #initial starting location [material_front_layer,302 # material_interlayer, material_rear_layer, Thickness]303 #### this variables are scaled between [0,1] and, thus, continous304 initial=[0.18, 0.18, 0.18, 0.18]305 # input bounds [(x1_min,x1_max),(x2_min,x2_max)...]306 bounds=[(0,1), (0,1), (0,1), (0,1)]307

308 # weights of the multi objective function309 Multi_Obj_Weights= [0, 0.25, 0.5, 0.75, 1]310

311 for k in Multi_Obj_Weights:312 PSO(costfunc, k, initial, bounds, num_particles=15, maxiter=30, verbose=True)313

314 #--- END ----------------------------------------------------------------------+

1 # File Name: Abaqus_Python_Script.py -----------------------------------------+2 # ----------------------------------------------------------------------------+3 #4 # Isaac Reis5 # [email protected] # Master's Dissertation7 # MSc in Mechanical Engineer8 # University of Aveiro9 #

10 # ----------------------------------------------------------------------------+11 '''12 Description:13 This file contains a Python model of Ballistic impact system.14 '''15 # IMPORT PACKAGES16 from __future__ import division17 import random18 import math19 import numpy as np20 import time21

22 # IMPORT ABAQUS PACKAGES23 from part import *24 from material import *25 from section import *26 from assembly import *27 from step import *28 from interaction import *29 from load import *30 from mesh import *31 from optimization import *32 from job import *33 from sketch import *34 from visualization import *35 from connectorBehavior import *36

37

38 def simulation_Abaqus(parameters):39

40 #======Material's Mechanical Properties Database============41 Material= [[2700, 70000000000.0, 0.33, 276e6], # Aluminium42 [1140,3000e6, 0.35, 82e6], # Nylon-643 [7850.0,200000000000.0, 0.25, 350e6], # Steel44 [960, 2.5e6, 0.499, 16.8e6], # EPDM45 [293, 9000e6, 0.3, 1e6], # Cork46 [410, 103.08e6, 0.05, 1.24e6], # Aluminium Foam47 [1300, 1.8e9, 0.3182, 63e6], # Polycarbonate48 [1540, 3.5e9, 0.33, 15e6], # Epoxy49 [4430, 113.8e9, 0.342, 880e6]] # Titanium Ti-6Al-4V50

Isaac Reis Master Dissertation

Page 123: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

A.Multi-objective Optimization Python Code 101

51 # Variables of Study52 ### Convertion into their original scale and nature53 interlayer_thickness= ((parameters[3]*24)+1)*1e-354 material_top_ind= int(round(parameters[0]*8))55 material_int_ind= int(round(parameters[1]*8))56 material_bot_ind= int(round(parameters[2]*8))57 material_top= Material[material_top_ind]58 material_int= Material[material_int_ind]59 material_bot= Material[material_bot_ind]60

61

62 Time_period= 150e-0663 number_intervals= 8064

65 # Mesh Parameters used66 mesh_param= [0.006,0.002,0.001]67 mesh_param_projectile= 0.00168 # Projective Velocity69 Bullet_velocity= 570

71 # Initialization of Output Dictionary72 final_val= {'final velocity':None,'Acceleration':None,73 'S3 max Top':None,'S3 max Rear':None, 'Exec Time':None}74

75 start_time_simulation = time.time()76

77 #==================================================================78 #=============== Generate Top Plate ===============================79 #==================================================================80 mdb.models['Model-1'].ConstrainedSketch(name='__profile__', sheetSize=0.25)81 mdb.models['Model-1'].sketches['__profile__'].sketchOptions.setValues(82 decimalPlaces=3)83 mdb.models['Model-1'].sketches['__profile__'].rectangle(point1=(0.0, 0.0),84 point2=(0.07, 0.07))85 mdb.models['Model-1'].Part(dimensionality=THREE_D, name='Plate_TOP', type=86 DEFORMABLE_BODY)87 mdb.models['Model-1'].parts['Plate_TOP'].BaseSolidExtrude(depth=0.025, sketch=88 mdb.models['Model-1'].sketches['__profile__'])89 del mdb.models['Model-1'].sketches['__profile__']90

91 #==================================================================92 #============== Generate Partitions =================================93 #==================================================================94 mdb.models['Model-1'].ConstrainedSketch(gridSpacing=0.004, name='__profile__',95 sheetSize=0.197, transform=96 mdb.models['Model-1'].parts['Plate_TOP'].MakeSketchTransform(97 sketchPlane=mdb.models['Model-1'].parts['Plate_TOP'].faces[5],98 sketchPlaneSide=SIDE1,99 sketchUpEdge=mdb.models['Model-1'].parts['Plate_TOP'].edges[2],

100 sketchOrientation=RIGHT, origin=(0.035, 0.035, 0.0)))101 mdb.models['Model-1'].sketches['__profile__'].sketchOptions.setValues(102 decimalPlaces=3)103 mdb.models['Model-1'].parts['Plate_TOP'].projectReferencesOntoSketch(filter=104 COPLANAR_EDGES, sketch=mdb.models['Model-1'].sketches['__profile__'])105 mdb.models['Model-1'].sketches['__profile__'].rectangle(point1=(0.035, -0.035),106 point2=(0.03, -0.03))107 mdb.models['Model-1'].sketches['__profile__'].ArcByCenterEnds(center=(0.035,108 -0.035), direction=CLOCKWISE, point1=(0.015, -0.035), point2=(0.035,109 -0.015))110 mdb.models['Model-1'].sketches['__profile__'].rectangle(point1=(-0.004, 0.004),111 point2=(0.035, -0.035))112 mdb.models['Model-1'].sketches['__profile__'].Line(point1=(-0.035, 0.035),113 point2=(0.03, -0.03))114 mdb.models['Model-1'].parts['Plate_TOP'].PartitionFaceBySketch(faces=115 mdb.models['Model-1'].parts['Plate_TOP'].faces.getSequenceFromMask((116 '[#20 ]', ), ), sketch=mdb.models['Model-1'].sketches['__profile__'],117 sketchUpEdge=mdb.models['Model-1'].parts['Plate_TOP'].edges[2])

Isaac Reis Master Dissertation

Page 124: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

102 A.Multi-objective Optimization Python Code

118 del mdb.models['Model-1'].sketches['__profile__']119 mdb.models['Model-1'].parts['Plate_TOP'].PartitionCellByExtrudeEdge(cells=120 mdb.models['Model-1'].parts['Plate_TOP'].cells.getSequenceFromMask((121 '[#1 ]', ), ), edges=(mdb.models['Model-1'].parts['Plate_TOP'].edges[0],122 mdb.models['Model-1'].parts['Plate_TOP'].edges[3]), line=123 mdb.models['Model-1'].parts['Plate_TOP'].edges[19], sense=FORWARD)124 mdb.models['Model-1'].parts['Plate_TOP'].PartitionCellByExtrudeEdge(cells=125 mdb.models['Model-1'].parts['Plate_TOP'].cells.getSequenceFromMask((126 '[#2 ]', ), ), edges=(mdb.models['Model-1'].parts['Plate_TOP'].edges[19],127 mdb.models['Model-1'].parts['Plate_TOP'].edges[20]), line=128 mdb.models['Model-1'].parts['Plate_TOP'].edges[15], sense=FORWARD)129 mdb.models['Model-1'].parts['Plate_TOP'].PartitionCellByExtrudeEdge(cells=130 mdb.models['Model-1'].parts['Plate_TOP'].cells.getSequenceFromMask((131 '[#4 ]', ), ), edges=(mdb.models['Model-1'].parts['Plate_TOP'].edges[27],132 mdb.models['Model-1'].parts['Plate_TOP'].edges[29]), line=133 mdb.models['Model-1'].parts['Plate_TOP'].edges[22], sense=FORWARD)134 mdb.models['Model-1'].parts['Plate_TOP'].PartitionCellByExtrudeEdge(cells=135 mdb.models['Model-1'].parts['Plate_TOP'].cells.getSequenceFromMask((136 '[#8 ]', ), ), edges=(mdb.models['Model-1'].\137 parts['Plate_TOP'].edges[38], )138 , line=mdb.models['Model-1'].parts['Plate_TOP'].edges[32], sense=FORWARD)139 mdb.models['Model-1'].parts['Plate_TOP'].PartitionCellByExtrudeEdge(cells=140 mdb.models['Model-1'].parts['Plate_TOP'].cells.getSequenceFromMask((141 '[#10 ]', ), ), edges=(mdb.models['Model-1'].parts['Plate_TOP'].edges[38],142 ), line=mdb.models['Model-1'].parts['Plate_TOP'].edges[35], sense=FORWARD)143 mdb.models['Model-1'].parts['Plate_TOP'].PartitionCellByExtrudeEdge(cells=144 mdb.models['Model-1'].parts['Plate_TOP'].cells.getSequenceFromMask((145 '[#1 ]', ), ), edges=(mdb.models['Model-1'].\146 parts['Plate_TOP'].edges[42], )147 , line=mdb.models['Model-1'].parts['Plate_TOP'].edges[40], sense=FORWARD)148

149 #==================================================================150 #============== Generate Sets ans Surfaces =================================151 #==================================================================152 mdb.models['Model-1'].parts['Plate_TOP'].Set(faces=153 mdb.models['Model-1'].parts['Plate_TOP'].faces.getSequenceFromMask((154 '[#800444a4 ]', ), ), name='BOT_SURF')155 mdb.models['Model-1'].parts['Plate_TOP'].Set(faces=156 mdb.models['Model-1'].parts['Plate_TOP'].faces.getSequenceFromMask((157 '[#44400 ]', ), ), name='IMPACT_REGION_BOT')158 mdb.models['Model-1'].parts['Plate_TOP'].Set(edges=159 mdb.models['Model-1'].parts['Plate_TOP'].edges.getSequenceFromMask((160 '[#200000 #830 ]', ), ), name='PINNED_Y')161 mdb.models['Model-1'].parts['Plate_TOP'].Set(edges=162 mdb.models['Model-1'].parts['Plate_TOP'].edges.getSequenceFromMask((163 '[#18010 #400 ]', ), ), name='PINNED_X')164 mdb.models['Model-1'].parts['Plate_TOP'].Set(faces=165 mdb.models['Model-1'].parts['Plate_TOP'].faces.getSequenceFromMask((166 '[#7e00000 #1 ]', ), ), name='TOP_SURF')167 mdb.models['Model-1'].parts['Plate_TOP'].Set(faces=168 mdb.models['Model-1'].parts['Plate_TOP'].faces.getSequenceFromMask((169 '[#e00000 ]', ), ), name='IMPACT_REGION_TOP')170 mdb.models['Model-1'].parts['Plate_TOP'].Set(cells=171 mdb.models['Model-1'].parts['Plate_TOP'].cells.getSequenceFromMask((172 '[#7f ]', ), ), name='Cell_Whole_Plate')173 mdb.models['Model-1'].parts['Plate_TOP'].Set(edges=174 mdb.models['Model-1'].parts['Plate_TOP'].edges.getSequenceFromMask((175 '[#a000 #bc10 ]', ), ), name='Set_For_Mesh_at_IR')176 mdb.models['Model-1'].parts['Plate_TOP'].Set(edges=177 mdb.models['Model-1'].parts['Plate_TOP'].edges.getSequenceFromMask((178 '[#22045022 #4101 ]', ), ), name='Set_For_Mesh_at_thickness')179 mdb.models['Model-1'].parts['Plate_TOP'].Set(faces=180 mdb.models['Model-1'].parts['Plate_TOP'].faces.getSequenceFromMask((181 '[#8100012 ]', ), ), name='X_SYMM')182 mdb.models['Model-1'].parts['Plate_TOP'].Set(faces=183 mdb.models['Model-1'].parts['Plate_TOP'].faces.getSequenceFromMask((184 '[#20000000 ]', ), ), name='ENCASTRE_X')

Isaac Reis Master Dissertation

Page 125: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

A.Multi-objective Optimization Python Code 103

185 mdb.models['Model-1'].parts['Plate_TOP'].Set(faces=186 mdb.models['Model-1'].parts['Plate_TOP'].faces.getSequenceFromMask((187 '[#10000000 ]', ), ), name='ENCASTRE_Y')188 mdb.models['Model-1'].parts['Plate_TOP'].Set(faces=189 mdb.models['Model-1'].parts['Plate_TOP'].faces.getSequenceFromMask((190 '[#40088800 ]', ), ), name='Y_SYMM')191 mdb.models['Model-1'].parts['Plate_TOP'].Surface(name='SURF_TOP', side1Faces=192 mdb.models['Model-1'].parts['Plate_TOP'].faces.getSequenceFromMask((193 '[#7e00000 #1 ]', ), ))194 mdb.models['Model-1'].parts['Plate_TOP'].Surface(name='SURF_CONTACT',195 side1Faces=196 mdb.models['Model-1'].parts['Plate_TOP'].faces.getSequenceFromMask((197 '[#e00000 ]', ), ))198 mdb.models['Model-1'].parts['Plate_TOP'].Surface(name='SURF_BOT', side1Faces=199 mdb.models['Model-1'].parts['Plate_TOP'].faces.getSequenceFromMask((200 '[#800444a4 ]', ), ))201

202 edges_IR= '[#a000 #bc10 ]'203 edges_thickness= '[#22045022 #4101 ]'204 cell_plate= '[#7f ]'205

206 #==================================================================207 #============== Generate the Other Two Plates =====================208 #==================================================================209 mdb.models['Model-1'].Part(name='Plate_INTERLAYER', objectToCopy=210 mdb.models['Model-1'].parts['Plate_TOP'])211 mdb.models['Model-1'].Part(name='Plate_BOT', objectToCopy=212 mdb.models['Model-1'].parts['Plate_TOP'])213

214 #============== INTERLAYER Thickness =================================215 mdb.models['Model-1'].parts['Plate_INTERLAYER'].\216 features['Solid extrude-1'].setValues(217 depth=interlayer_thickness)218 mdb.models['Model-1'].parts['Plate_INTERLAYER'].regenerate()219

220 #==================================================================221 #============== Generate Bullet =================================222 #=================================================================223 mdb.models['Model-1'].ConstrainedSketch(name='__profile__', sheetSize=0.02)224 mdb.models['Model-1'].sketches['__profile__'].sketchOptions.setValues(225 decimalPlaces=4)226 mdb.models['Model-1'].sketches['__profile__'].ConstructionLine(point1=(0.0,227 -0.01), point2=(0.0, 0.01))228 mdb.models['Model-1'].sketches['__profile__'].FixedConstraint(entity=229 mdb.models['Model-1'].sketches['__profile__'].geometry[2])230 mdb.models['Model-1'].sketches['__profile__'].Line(point1=(0.0, 0.0), point2=(231 0.02, 0.0))232 mdb.models['Model-1'].sketches['__profile__'].HorizontalConstraint(233 addUndoState=False, entity=234 mdb.models['Model-1'].sketches['__profile__'].geometry[3])235 mdb.models['Model-1'].sketches['__profile__'].Line(point1=(0.02, 0.0), point2=(236 0.02, 0.06))237 mdb.models['Model-1'].sketches['__profile__'].VerticalConstraint(addUndoState=238 False, entity=mdb.models['Model-1'].sketches['__profile__'].geometry[4])239 mdb.models['Model-1'].sketches['__profile__'].PerpendicularConstraint(240 addUndoState=False, entity1=241 mdb.models['Model-1'].sketches['__profile__'].geometry[3], entity2=242 mdb.models['Model-1'].sketches['__profile__'].geometry[4])243 mdb.models['Model-1'].Part(dimensionality=THREE_D, name='BULLET', type=244 DISCRETE_RIGID_SURFACE)245 mdb.models['Model-1'].parts['BULLET'].BaseShellRevolve(angle=90.0,246 flipRevolveDirection=OFF, sketch=247 mdb.models['Model-1'].sketches['__profile__'])248 del mdb.models['Model-1'].sketches['__profile__']249 mdb.models['Model-1'].parts['BULLET'].ReferencePoint(point=250 mdb.models['Model-1'].parts['BULLET'].vertices[4])251 mdb.models['Model-1'].parts['BULLET'].Set(name='BULLET_RP', referencePoints=(

Isaac Reis Master Dissertation

Page 126: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

104 A.Multi-objective Optimization Python Code

252 mdb.models['Model-1'].parts['BULLET'].referencePoints[2], ))253 mdb.models['Model-1'].parts['BULLET'].engineeringFeatures.PointMassInertia(254 alpha=0.0, composite=0.0, mass=0.147025, name='Inertia-1', region=255 mdb.models['Model-1'].parts['BULLET'].sets['BULLET_RP'])256 mdb.models['Model-1'].parts['BULLET'].Surface(name='BULLET_SURF', side1Faces=257 mdb.models['Model-1'].parts['BULLET'].faces.\258 getSequenceFromMask(('[#2 ]', ), ))259

260 #=================================================================261 #======= Generate Material, Section and Section Assignment =====262 #=================================================================263

264 #============== TOP Layer=================================265 mdb.models['Model-1'].Material(name='Material_TOP')266 mdb.models['Model-1'].materials['Material_TOP'].\267 Density(table=((material_top[0], ), ))268 mdb.models['Model-1'].materials['Material_TOP'].\269 Elastic(table=((material_top[1],270 material_top[2]), ))271 mdb.models['Model-1'].materials['Material_TOP'].\272 Plastic(table=((material_top[3],273 0.0), ))274

275 #============== INTERLAYER =================================276 mdb.models['Model-1'].Material(name='Material_INTERLAYER')277 mdb.models['Model-1'].materials['Material_INTERLAYER'].\278 Density(table=((material_int[0],279 ), ))280 mdb.models['Model-1'].materials['Material_INTERLAYER'].\281 Elastic(table=((282 material_int[1],material_int[2]), ))283 mdb.models['Model-1'].materials['Material_INTERLAYER'].\284 Plastic(table=((285 material_int[3], 0.0), ))286

287 #============== BOT Layer =================================288 mdb.models['Model-1'].Material(name='Material_BOT')289 mdb.models['Model-1'].materials['Material_BOT'].\290 Density(table=((material_bot[0], ), ))291 mdb.models['Model-1'].materials['Material_BOT'].\292 Elastic(table=((material_bot[1],293 material_bot[2]), ))294 mdb.models['Model-1'].materials['Material_BOT'].\295 Plastic(table=((material_bot[3],296 0.0), ))297

298 mdb.models['Model-1'].HomogeneousSolidSection(material='Material_TOP', name=299 'Section_TOP', thickness=None)300 mdb.models['Model-1'].HomogeneousSolidSection(material='Material_INTERLAYER',301 name='Section_INTERLAYER', thickness=None)302 mdb.models['Model-1'].HomogeneousSolidSection(material='Material_BOT', name=303 'Section_BOT', thickness=None)304

305 mdb.models['Model-1'].parts['Plate_TOP'].Set(cells=306 mdb.models['Model-1'].parts['Plate_TOP'].\307 cells.getSequenceFromMask((308 cell_plate, ), ), name='Set-7')309 mdb.models['Model-1'].parts['Plate_TOP'].SectionAssignment(offset=0.0,310 offsetField='', offsetType=MIDDLE_SURFACE, region=311 mdb.models['Model-1'].parts['Plate_TOP'].sets['Set-7'], sectionName=312 'Section_TOP', thicknessAssignment=FROM_SECTION)313 mdb.models['Model-1'].parts['Plate_INTERLAYER'].Set(cells=314 mdb.models['Model-1'].parts['Plate_INTERLAYER'].\315 cells.getSequenceFromMask((316 cell_plate, ), ), name='Set-7')317 mdb.models['Model-1'].parts['Plate_INTERLAYER'].\318 SectionAssignment(offset=0.0,

Isaac Reis Master Dissertation

Page 127: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

A.Multi-objective Optimization Python Code 105

319 offsetField='', offsetType=MIDDLE_SURFACE, region=320 mdb.models['Model-1'].parts['Plate_INTERLAYER'].\321 sets['Set-7'], sectionName=322 'Section_INTERLAYER', thicknessAssignment=FROM_SECTION)323 mdb.models['Model-1'].parts['Plate_BOT'].Set(cells=324 mdb.models['Model-1'].parts['Plate_BOT'].cells.getSequenceFromMask((325 cell_plate, ), ), name='Set-7')326 mdb.models['Model-1'].parts['Plate_BOT'].SectionAssignment(offset=0.0,327 offsetField='', offsetType=MIDDLE_SURFACE, region=328 mdb.models['Model-1'].parts['Plate_BOT'].sets['Set-7'], sectionName=329 'Section_BOT', thicknessAssignment=FROM_SECTION)330

331 #=================================================================332 #============== ASSEMBLY =================================333 #=================================================================334 mdb.models['Model-1'].rootAssembly.DatumCsysByDefault(CARTESIAN)335 mdb.models['Model-1'].rootAssembly.Instance(dependent=ON, name='BULLET-1',336 part=mdb.models['Model-1'].parts['BULLET'])337 mdb.models['Model-1'].rootAssembly.Instance(dependent=ON, name='Plate_BOT-1',338 part=mdb.models['Model-1'].parts['Plate_BOT'])339 mdb.models['Model-1'].rootAssembly.Instance(dependent=ON, name=340 'Plate_INTERLAYER-1', part=mdb.models['Model-1'].\341 parts['Plate_INTERLAYER'])342 mdb.models['Model-1'].rootAssembly.Instance(dependent=ON, name='Plate_TOP-1',343 part=mdb.models['Model-1'].parts['Plate_TOP'])344 mdb.models['Model-1'].rootAssembly.translate(instanceList=(345 'Plate_INTERLAYER-1', ), vector=(0.0, 0.0, 0.025))346 mdb.models['Model-1'].rootAssembly.translate(instanceList=('Plate_BOT-1', ),347 vector=(0.0, 0.0, 0.025 + interlayer_thickness))348

349 mdb.models['Model-1'].rootAssembly.rotate(angle=-90.0, axisDirection=(0.05,350 0.0, 0.0), axisPoint=(0.0, 0.0, 0.0), instanceList=('BULLET-1', ))351 mdb.models['Model-1'].rootAssembly.translate(instanceList=('BULLET-1', ),352 vector=(0.0, 0.0, -0.000005))353

354 #=================================================================355 #============== STEP AND FIELD OUTPUT ============================356 #=================================================================357 mdb.models['Model-1'].ExplicitDynamicsStep(name='Step-1', previous='Initial',358 timePeriod=Time_period)359 mdb.models['Model-1'].fieldOutputRequests['F-Output-1'].setValues(numIntervals=360 number_intervals)361

362

363 #=================================================================364 #============== Chose Type of Interaction ========================365 #=================================================================366 interaction_type=3367 #============== INTERACTION 1: General Contact ===================368 if (interaction_type==1):369 mdb.models['Model-1'].ContactProperty('IntProp-1')370 mdb.models['Model-1'].interactionProperties['IntProp-1'].\371 TangentialBehavior(372 formulation=FRICTIONLESS)373 mdb.models['Model-1'].ContactExp(createStepName='Step-1', name='Int-1')374 mdb.models['Model-1'].interactions['Int-1'].\375 includedPairs.setValuesInStep(376 stepName='Step-1', useAllstar=ON)377 mdb.models['Model-1'].interactions['Int-1'].\378 contactPropertyAssignments.appendInStep(379 assignments=((GLOBAL, SELF, 'IntProp-1'), ), stepName='Step-1')380 #====================================================================381 #= INTERACTION 2: Surface to Surface between Plate and382 #= Bullet and also between Layers383 if (interaction_type==2):384 mdb.models['Model-1'].ContactProperty('IntProp-1')385 mdb.models['Model-1'].interactionProperties['IntProp-1'].\

Isaac Reis Master Dissertation

Page 128: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

106 A.Multi-objective Optimization Python Code

386 TangentialBehavior(387 formulation=FRICTIONLESS)388 mdb.models['Model-1'].SurfaceToSurfaceContactExp(clearanceRegion=None,389 createStepName='Step-1', datumAxis=None, initialClearance=OMIT,390 interactionProperty='IntProp-1', master=391 mdb.models['Model-1'].rootAssembly.instances\392 ['BULLET-1'].surfaces['BULLET_SURF']393 , mechanicalConstraint=KINEMATIC, name='Int-1', slave=394 mdb.models['Model-1'].rootAssembly.instances\395 ['Plate_TOP-1'].surfaces['SURF_CONTACT']396 , sliding=FINITE)397 mdb.models['Model-1'].SurfaceToSurfaceContactExp(clearanceRegion=None,398 createStepName='Step-1', datumAxis=None, initialClearance=OMIT,399 interactionProperty='IntProp-1', master=400 mdb.models['Model-1'].rootAssembly.instances\401 ['Plate_TOP-1'].surfaces['SURF_BOT']402 , mechanicalConstraint=KINEMATIC, name='Int-2', slave=403 mdb.models['Model-1'].rootAssembly.instances\404 ['Plate_INTERLAYER-1'].surfaces['SURF_TOP']405 , sliding=FINITE)406 mdb.models['Model-1'].SurfaceToSurfaceContactExp(clearanceRegion=None,407 createStepName='Step-1', datumAxis=None, initialClearance=OMIT,408 interactionProperty='IntProp-1', master=409 mdb.models['Model-1'].rootAssembly.instances\410 ['Plate_INTERLAYER-1'].surfaces['SURF_BOT']411 , mechanicalConstraint=KINEMATIC, name='Int-3', slave=412 mdb.models['Model-1'].rootAssembly.instances\413 ['Plate_BOT-1'].surfaces['SURF_TOP']414 , sliding=FINITE)415 #===================================================================416 #= INTERACTION 3: Surface to Surface between417 # Plate and Bullet and Tie constrain between Layers418 if (interaction_type==3):419 mdb.models['Model-1'].ContactProperty('IntProp-1')420 mdb.models['Model-1'].interactionProperties['IntProp-1'].\421 TangentialBehavior(422 formulation=FRICTIONLESS)423 mdb.models['Model-1'].SurfaceToSurfaceContactExp(clearanceRegion=None,424 createStepName='Step-1', datumAxis=None, initialClearance=OMIT,425 interactionProperty='IntProp-1', master=426 mdb.models['Model-1'].rootAssembly.instances['BULLET-1'].\427 surfaces['BULLET_SURF']428 # changed to penalty method:429 , mechanicalConstraint=PENALTY, name='Int-1', slave=430 mdb.models['Model-1'].rootAssembly.instances['Plate_TOP-1'].\431 surfaces['SURF_CONTACT']432 , sliding=FINITE)433 mdb.models['Model-1'].Tie(adjust=ON, master=434 mdb.models['Model-1'].rootAssembly.instances['Plate_TOP-1'].\435 surfaces['SURF_BOT']436 , name='Constraint-1', positionToleranceMethod=COMPUTED, slave=437 mdb.models['Model-1'].rootAssembly.\438 instances['Plate_INTERLAYER-1'].surfaces['SURF_TOP']439 , thickness=ON, tieRotations=ON)440 mdb.models['Model-1'].Tie(adjust=ON, master=441 mdb.models['Model-1'].rootAssembly.\442 instances['Plate_INTERLAYER-1'].surfaces['SURF_BOT']443 , name='Constraint-2', positionToleranceMethod=COMPUTED, slave=444 mdb.models['Model-1'].rootAssembly.instances['Plate_BOT-1'].\445 surfaces['SURF_TOP']446 , thickness=ON, tieRotations=ON)447 #=================================================================448 #= INTERACTION 4: General Contact and Tie constrain between Layers449 if (interaction_type==4):450 mdb.models['Model-1'].ContactProperty('IntProp-1')451 mdb.models['Model-1'].interactionProperties['IntProp-1'].\452 TangentialBehavior(

Isaac Reis Master Dissertation

Page 129: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

A.Multi-objective Optimization Python Code 107

453 formulation=FRICTIONLESS)454 mdb.models['Model-1'].ContactExp(createStepName='Step-1', name='Int-1')455 mdb.models['Model-1'].interactions['Int-1'].includedPairs.\456 setValuesInStep(457 stepName='Step-1', useAllstar=ON)458 mdb.models['Model-1'].interactions['Int-1'].\459 contactPropertyAssignments.appendInStep(460 assignments=((GLOBAL, SELF, 'IntProp-1'), ), stepName='Step-1')461

462 mdb.models['Model-1'].Tie(adjust=ON, master=463 mdb.models['Model-1'].rootAssembly.instances['Plate_TOP-1'].\464 surfaces['SURF_BOT']465 , name='Constraint-1', positionToleranceMethod=COMPUTED, slave=466 mdb.models['Model-1'].rootAssembly.instances\467 ['Plate_INTERLAYER-1'].surfaces['SURF_TOP']468 , thickness=ON, tieRotations=ON)469 mdb.models['Model-1'].Tie(adjust=ON, master=470 mdb.models['Model-1'].rootAssembly.instances\471 ['Plate_INTERLAYER-1'].surfaces['SURF_BOT']472 , name='Constraint-2', positionToleranceMethod=COMPUTED, slave=473 mdb.models['Model-1'].rootAssembly.instances['Plate_BOT-1'].\474 surfaces['SURF_TOP']475 , thickness=ON, tieRotations=ON)476

477 #====================================================================478 #=== History Field Output_____(and add Contact Forces output) =======479 #====================================================================480 mdb.models['Model-1'].HistoryOutputRequest(createStepName='Step-1', frequency=1481 , interactions=('Int-1', ), name='H-Output_CONTACT', rebar=EXCLUDE,482 sectionPoints=DEFAULT, variables=('CFNM', 'CFN1', 'CFN2', 'CFN3'))483

484

485 #=================================================================486 #============== BC'S and Predefined Field ========================487 #=================================================================488

489 mdb.models['Model-1'].XsymmBC(createStepName='Initial', localCsys=None, name=490 'BC-X_SYMM_TOP', region=491 mdb.models['Model-1'].rootAssembly.instances['Plate_TOP-1'].\492 sets['X_SYMM'])493 mdb.models['Model-1'].XsymmBC(createStepName='Initial', localCsys=None, name=494 'BC-X_SYMM_INTERLAYER', region= mdb.models['Model-1'].rootAssembly.495 instances['Plate_INTERLAYER-1'].sets['X_SYMM'])496 mdb.models['Model-1'].XsymmBC(createStepName='Initial', localCsys=None, name=497 'BC-X_SYMM_BOT', region=498 mdb.models['Model-1'].rootAssembly.instances['Plate_BOT-1'].\499 sets['X_SYMM'])500 mdb.models['Model-1'].YsymmBC(createStepName='Initial', localCsys=None, name=501 'BC-Y_SYMM_TOP', region=502 mdb.models['Model-1'].rootAssembly.instances['Plate_TOP-1'].\503 sets['Y_SYMM'])504 mdb.models['Model-1'].YsymmBC(createStepName='Initial', localCsys=None, name=505 'BC-Y_SYMM_INTERLAYER', region= mdb.models['Model-1'].rootAssembly.\506 instances['Plate_INTERLAYER-1'].sets['Y_SYMM'])507 mdb.models['Model-1'].YsymmBC(createStepName='Initial', localCsys=None, name=508 'BC-Y_SYMM_BOT', region=509 mdb.models['Model-1'].rootAssembly.instances['Plate_BOT-1'].\510 sets['Y_SYMM'])511

512 ### CHOSE type of boundary condition513 bc_type=3514 if (bc_type==1):515 #========== PINNED ============================================516 mdb.models['Model-1'].PinnedBC(createStepName='Initial', \517 localCsys=None,name='BC-PINNED_X', region=518 mdb.models['Model-1'].rootAssembly.instances['Plate_BOT-1'].\519 sets['PINNED_X'])

Isaac Reis Master Dissertation

Page 130: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

108 A.Multi-objective Optimization Python Code

520 mdb.models['Model-1'].YsymmBC(createStepName='Initial',\521 localCsys=None,name='BC-PINNED_Y', region=522 mdb.models['Model-1'].rootAssembly.instances['Plate_BOT-1'].\523 sets['PINNED_Y'])524 if (bc_type==2):525 #========== ENCASTRED on the sides =========526 mdb.models['Model-1'].EncastreBC(createStepName='Initial', \527 localCsys=None,name='BC-ENCASTRED_X_TOP', region=528 mdb.models['Model-1'].rootAssembly.instances['Plate_TOP-1'].\529 sets['ENCASTRED_X'])530 mdb.models['Model-1'].EncastreBC(createStepName='Initial', \531 localCsys=None, name='BC-ENCASTRE_Y_TOP', region=532 mdb.models['Model-1'].rootAssembly.instances['Plate_TOP-1'].\533 sets['ENCASTRED_Y'])534

535 mdb.models['Model-1'].EncastreBC(createStepName='Initial', \536 localCsys=None,name='BC-ENCASTRED_X_INTERLAYER', region=537 mdb.models['Model-1'].rootAssembly.instances\538 ['Plate_INTERLAYER-1'].sets['ENCASTRED_X'])539 mdb.models['Model-1'].EncastreBC(createStepName='Initial', \540 localCsys=None, name='BC-ENCASTRE_Y_INTERLAYER', region=541 mdb.models['Model-1'].rootAssembly.instances\542 ['Plate_INTERLAYER-1'].sets['ENCASTRED_Y'])543

544 mdb.models['Model-1'].EncastreBC(createStepName='Initial', \545 localCsys=None, name='BC-ENCASTRED_X_BOT', region=546 mdb.models['Model-1'].rootAssembly.instances\547 ['Plate_BOT-1'].sets['ENCASTRED_X'])548 mdb.models['Model-1'].EncastreBC(createStepName='Initial',\549 localCsys=None, name='BC-ENCASTRE_Y_BOT', region=550 mdb.models['Model-1'].rootAssembly.instances['Plate_BOT-1'].\551 sets['ENCASTRED_Y'])552 if (bc_type==3):553 #==========ENCASTRED on the bot surf ==========554 mdb.models['Model-1'].EncastreBC(createStepName='Initial', \555 localCsys=None, name='BC-ENCASTRE', region=556 mdb.models['Model-1'].rootAssembly.instances['Plate_BOT-1'].\557 sets['BOT_SURF'])558

559 mdb.models['Model-1'].rootAssembly.regenerate()560 mdb.models['Model-1'].VelocityBC(amplitude=UNSET, createStepName='Initial',561 distributionType=UNIFORM, fieldName='', localCsys=None,562 name='BC-VELOCITY', region=mdb.models['Model-1'].\563 rootAssembly.instances['BULLET-1'].sets['BULLET_RP'],564 v1=0.0, v2=0.0, v3=UNSET, vr1=0.0, vr2=0.0, vr3=0.0)565

566 mdb.models['Model-1'].Velocity(distributionType=MAGNITUDE, field='', name=567 'Predefined Field-1', omega=0.0, region=mdb.models\568 ['Model-1'].rootAssembly.instances['BULLET-1'].sets['BULLET_RP'],569 velocity1=0.0, velocity2=0.0,\570 velocity3= Bullet_velocity) #BULLET VELOCITY571

572 #============================================================573 #======= MESH ===============================================574 #============================================================575

576 #============== MESH TOP=====================================577 mdb.models['Model-1'].parts['Plate_TOP'].setElementType(elemTypes=(ElemType(578 elemCode=C3D8R, elemLibrary=EXPLICIT, secondOrderAccuracy=OFF,579 kinematicSplit=AVERAGE_STRAIN, hourglassControl=DEFAULT,580 distortionControl=DEFAULT), ElemType(elemCode=C3D6,\581 elemLibrary=EXPLICIT),582 ElemType(elemCode=C3D4, elemLibrary=EXPLICIT)), regions=(583 mdb.models['Model-1'].parts['Plate_TOP'].cells.getSequenceFromMask((584 cell_plate, ), ), ))585 mdb.models['Model-1'].parts['Plate_TOP'].seedPart(deviationFactor=0.1,586 minSizeFactor=0.1, size=mesh_param[0])

Isaac Reis Master Dissertation

Page 131: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

A.Multi-objective Optimization Python Code 109

587 mdb.models['Model-1'].parts['Plate_TOP'].seedEdgeBySize(constraint=FIXED,588 deviationFactor=0.1, edges=589 mdb.models['Model-1'].parts['Plate_TOP'].edges.getSequenceFromMask((590 edges_IR, ), ), minSizeFactor=0.1, size=mesh_param[1])591 mdb.models['Model-1'].parts['Plate_TOP'].seedEdgeBySize(constraint=FINER,592 deviationFactor=0.1, edges=593 mdb.models['Model-1'].parts['Plate_TOP'].edges.getSequenceFromMask((594 edges_thickness, ), ), minSizeFactor=0.1, size=mesh_param[2])595 mdb.models['Model-1'].parts['Plate_TOP'].generateMesh()596

597 #============== MESH INTERLAYER =================================598

599 mdb.models['Model-1'].parts['Plate_INTERLAYER'].setElementType\600 (elemTypes=(ElemType( elemCode=C3D8R, elemLibrary=EXPLICIT,\601 secondOrderAccuracy=OFF,602 kinematicSplit=AVERAGE_STRAIN, hourglassControl=DEFAULT,603 distortionControl=DEFAULT), ElemType(elemCode=C3D6,\604 elemLibrary=EXPLICIT),605 ElemType(elemCode=C3D4, elemLibrary=EXPLICIT)), regions=(606 mdb.models['Model-1'].parts['Plate_INTERLAYER'].cells.\607 getSequenceFromMask((608 cell_plate, ), ), ))609 mdb.models['Model-1'].parts['Plate_INTERLAYER'].\610 seedPart(deviationFactor=0.1,611 minSizeFactor=0.1, size=mesh_param[0])612 mdb.models['Model-1'].parts['Plate_INTERLAYER'].\613 seedEdgeBySize(constraint=FIXED,614 deviationFactor=0.1, edges=615 mdb.models['Model-1'].parts['Plate_INTERLAYER'].\616 edges.getSequenceFromMask((617 edges_IR, ), ), minSizeFactor=0.1, size=mesh_param[1])618 mdb.models['Model-1'].parts['Plate_INTERLAYER'].\619 seedEdgeBySize(constraint=FINER,620 deviationFactor=0.1, edges=621 mdb.models['Model-1'].parts['Plate_INTERLAYER'].edges.\622 getSequenceFromMask((623 edges_thickness, ), ), minSizeFactor=0.1, size=mesh_param[2])624 mdb.models['Model-1'].parts['Plate_INTERLAYER'].generateMesh()625

626 #============== MESH BOT =================================627 mdb.models['Model-1'].parts['Plate_BOT'].setElementType\628 (elemTypes=(ElemType(629 elemCode=C3D8R, elemLibrary=EXPLICIT, secondOrderAccuracy=OFF,630 kinematicSplit=AVERAGE_STRAIN, hourglassControl=DEFAULT,631 distortionControl=DEFAULT), ElemType(elemCode=C3D6,\632 elemLibrary=EXPLICIT),633 ElemType(elemCode=C3D4, elemLibrary=EXPLICIT)), regions=(634 mdb.models['Model-1'].parts['Plate_BOT'].cells.getSequenceFromMask((635 cell_plate, ), ), ))636 mdb.models['Model-1'].parts['Plate_BOT'].seedPart(deviationFactor=0.1,637 minSizeFactor=0.1, size=mesh_param[0])638 mdb.models['Model-1'].parts['Plate_BOT'].seedEdgeBySize(constraint=FIXED,639 deviationFactor=0.1, edges=640 mdb.models['Model-1'].parts['Plate_BOT'].edges.getSequenceFromMask((641 edges_IR, ), ), minSizeFactor=0.1, size=mesh_param[1])642 mdb.models['Model-1'].parts['Plate_BOT'].seedEdgeBySize(constraint=FINER,643 deviationFactor=0.1, edges=644 mdb.models['Model-1'].parts['Plate_BOT'].edges.getSequenceFromMask((645 edges_thickness, ), ), minSizeFactor=0.1, size=mesh_param[2])646 mdb.models['Model-1'].parts['Plate_BOT'].generateMesh()647

648 #============== MESH BULLET =================================649 mdb.models['Model-1'].parts['BULLET'].setElementType(elemTypes=(ElemType(650 elemCode=R3D4, elemLibrary=EXPLICIT), ElemType(elemCode=R3D3,651 elemLibrary=EXPLICIT)), regions=(652 mdb.models['Model-1'].parts['BULLET'].faces.\653 getSequenceFromMask(('[#3 ]',

Isaac Reis Master Dissertation

Page 132: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

110 A.Multi-objective Optimization Python Code

654 ), ), ))655 mdb.models['Model-1'].parts['BULLET'].seedPart(deviationFactor=0.1,656 minSizeFactor=0.1, size=mesh_param_projectile)657 mdb.models['Model-1'].parts['BULLET'].generateMesh()658

659 #====================================================660 #============== JOB =================================661 #====================================================662 mdb.Job(activateLoadBalancing=False, atTime=None, contactPrint=OFF,663 description='', echoPrint=OFF, explicitPrecision=DOUBLE_PLUS_PACK,664 historyPrint=OFF, memory=90, memoryUnits=PERCENTAGE, model='Model-1',665 modelPrint=OFF, multiprocessingMode=DEFAULT, name='Opt_test',666 nodalOutputPrecision=FULL, numCpus=4, numDomains=4,667 parallelizationMethodExplicit=DOMAIN, queue=None, resultsFormat=ODB,668 scratch='', type=ANALYSIS, userSubroutine='', waitHours=0, \669 waitMinutes=0)670

671 mdb.jobs['Opt_test'].submit(consistencyChecking=OFF)672 mdb.jobs['Opt_test'].waitForCompletion()673

674 elapsed_time_simulation = time.time() - start_time_simulation675

676 start_time_post_proc= time.time()677

678 #=================================================================679 #================ OUTPUT Variables Generation ====================680 #=================================================================681 from abaqus import *682 from abaqusConstants import *683 session.Viewport(name='Viewport: 1', origin=(0.0, 0.0), width=300,684 height=170)685 session.viewports['Viewport: 1'].makeCurrent()686 session.viewports['Viewport: 1'].maximize()687 from caeModules import *688 from driverUtils import executeOnCaeStartup689

690 a = mdb.models['Model-1'].rootAssembly691 session.viewports['Viewport: 1'].setValues(displayedObject=a)692 o3 = session.openOdb(name= os.getcwd() + '/Opt_test.odb')693 session.viewports['Viewport: 1'].setValues(displayedObject=o3)694 odb = session.odbs[os.getcwd() + '/Opt_test.odb']695

696 # Velocity of the Projectile at every time instant697 vel= session.xyDataListFromField(odb=odb, outputPosition=NODAL, variable=(('V',698 NODAL, ((COMPONENT, 'V3'), )), ), nodeSets=(699 'BULLET-1.BULLET_RP', ))700 # Stress (S33) at the top impact region (top plate)701 s3_top= session.xyDataListFromField(odb=odb, outputPosition=INTEGRATION_POINT,702 variable=(('S', INTEGRATION_POINT, ((COMPONENT, 'S33'), )), ),703 elementSets=('PLATE_TOP-1.IMPACT_REGION_TOP', ))704 # Stress (S33) at the rear impact region (rear plate)705 s3_rear= session.xyDataListFromField(odb=odb, outputPosition=INTEGRATION_POINT,706 variable=(('S', INTEGRATION_POINT, ((COMPONENT, 'S33'), )), ),707 elementSets=('PLATE_BOT-1.IMPACT_REGION_BOT', ))708

709 # Projectile Displacement ============710 Projectile_displacement= session.xyDataListFromField(odb=odb, \711 outputPosition=NODAL,variable=(('U', NODAL, \712 ((COMPONENT, 'U3'), )), ), nodeSets=('BULLET-1.BULLET_RP', ))713

714

715 #========== OUTPUT Calculations ==============716 #======= Displacement_ Projectile ===========717 max_displ=0718 for x in range(len(Projectile_displacement[0])):719 for y in range(len(Projectile_displacement)):720 if (Projectile_displacement[y][x][1]>max_displ):

Isaac Reis Master Dissertation

Page 133: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

A.Multi-objective Optimization Python Code 111

721 max_displ=Projectile_displacement[y][x][1]722

723 #======= Top Surface, max stress S3....Top plate===========724 new_values= np.zeros(number_intervals)725 for x in range(number_intervals):726 counter=0727 for y in range(len(s3_top)):728 counter += s3_top[y][x][1]729 new_values[x]= counter/(len(s3_top))730

731 max_val_s3_top=0732 for u in range(len(new_values)):733 if (abs(new_values[u])>max_val_s3_top):734 max_val_s3_top=abs(new_values[u])735

736 #========= Rear Surface, max stress S3....Bottom plate=========737 new_values2= np.zeros(len(Projectile_displacement[0]))738 for x in range(len(Projectile_displacement[0])):739 counter=0740 for y in range(len(s3_rear)):741 counter += s3_rear[y][x][1]742 new_values2[x]= counter/(len(s3_rear))743

744 max_val_IR_rear=0745 for u in range(len(new_values2)):746 if (abs(new_values2[u])>max_val_IR_rear):747 max_val_IR_rear=abs(new_values2[u])748 #=======================749

750 #====== projectile acceleration=====751 size_vel=len(vel[0])752 init_vel= vel[0][0][1] # equal to 20m/s753 fin_vel= vel[0][size_vel-1][1] # it will be close to -18 m/s754 init_time=0755 fini_time=0756 for i in range(size_vel):757 if (vel[0][i][1] != init_vel):758 init_time= vel[0][i][0]759 break760 for f in reversed(range(size_vel)):761 if (vel[0][f][1] != fin_vel):762 fini_time= vel[0][f][0]763 break764 acc= (fin_vel-init_vel)/(fini_time-init_time)765

766 #=======================767 #============Execution Time====768 elapsed_time_post_proc= time.time() - start_time_post_proc769 #================================770 #=========Final Values=========771 final_val= {'max IR Rear':max_val_IR_rear,772 'Exec Time_simulation':elapsed_time_simulation,773 'Exec Time_psot_proc':elapsed_time_post_proc,774 'Interlayer Thickness':interlayer_thickness,775 'Material Density Top': material_top[0],776 'Material Density Int': material_int[0],777 'Material Density Bot': material_bot[0],778 'Material Indice Top': material_top_ind,779 'Material Indice Int': material_int_ind,780 'Material Indice Bot': material_bot_ind,781 'Maximum Displacement': max_displ}782

783 odb.close(odb, write=TRUE)784 return final_val

Isaac Reis Master Dissertation

Page 134: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

.

Page intentionally left blank.

Page 135: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

Appendix B

Additional Graphics

This Appendix is intended to complement Chapter 5 by adding several graphs to the previouslyillustrated.

B.1 Benchmark I

B.1.1 PSO

0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 300.002

0.004

0.006

0.008

0.01

Number of iterations

Thi

ckne

ss[m

]

Thickness Evolution

Figure B.1: Thickness evolution for the PSO in benchmark I.

113

Page 136: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

114 B.Additional Graphics

0 50 100 150 200 250 300 350 400 4500

0.02

0.04

Evaluation

Thi

ckne

ss[m

]

Thickness at each iterationThickness at each evaluation

Figure B.2: Comparison of the position at each evaluation with the overall best position at eachiteration, for the PSO in benchmark I.

B.1.2 GA

0 5 10 15 20 25 30 353.68

3.7

3.72

3.74

3.76

3.78

·10−3

Number of iterations

Thi

ckne

ss[m

]

Thickness Evolution

Figure B.3: Thickness evolution for the GA in benchmark I.

Isaac Reis Master Dissertation

Page 137: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

B.Additional Graphics 115

0 100 200 300 400 500 600 700 800 900

0

2

4

·10−2

Number of iterations

Thi

ckne

ss[m

]

Thickness at each iterationThickness at each evaluation

Figure B.4: Comparison of the position at each evaluation with the overall best position at eachiteration, for the GA in benchmark I.

B.1.3 SA

0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30

2

4

·10−2

Number of iterations

Thi

ckne

ss[m

]

Thickness Evolution

Figure B.5: Thickness evolution for the SA in benchmark I.

Isaac Reis Master Dissertation

Page 138: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

116 B.Additional Graphics

0 50 100 150 200 250 300 350 4000

2

4

·10−2

Number of iterations

Thi

ckne

ss[m

]

Thickness at each iterationThickness at each evaluation

Figure B.6: Comparison of the position at each evaluation with the overall best position at eachiteration, for the SA in benchmark I.

B.2 Benchmark II

B.2.1 PSO

0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 300.5

1

1.5

·108

Number of iterations

Rea

rstr

ee[P

a]

Rear stree Evolution

Figure B.7: Stress evolution for the PSO in benchmark II.

Isaac Reis Master Dissertation

Page 139: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

B.Additional Graphics 117

0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30

0.2

0.4

0.6

0.8

1

Number of iterations

Nor

mal

ized

stre

ss

Best resutlsWorst Resutls

Average

Figure B.8: Evolution of the best, worst and mean values of the objective function withoutpenalization against the number of iterations, for the PSO in benchmark II.

0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30

2

3

4

·10−3

Number of iterations

Thi

ckne

ss[m

]

Thickness Evolution

Figure B.9: Thickness evolution, for the PSO in benchmark II.

Isaac Reis Master Dissertation

Page 140: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

118 B.Additional Graphics

B.2.2 GA

0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30

0.5

1

1.5

·108

Number of iterations

Rea

rstr

ess

[Pa]

Rear stress Evolution

Figure B.10: Rear stress evolution for the GA in benchmark II.

0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30

0.5

1

Number of iterations

Nor

mal

ized

stre

ss

Best resutlsWorst Resutls

Average

Figure B.11: Evolution of the best, worst and mean values of the objective function withoutpenalization against the number of iterations, for the GA in benchmark II.

Isaac Reis Master Dissertation

Page 141: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

B.Additional Graphics 119

0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 301

2

3

4

·10−3

Number of iterations

Thi

ckne

ss[m

]

Thickness Evolution

Figure B.12: Thickness evolution for the GA in benchmark II.

B.2.3 SA

0 5 10 15 20 25 30 35 400

0.5

1

Number of iterations

Nor

mal

ized

stre

ss

Best resutlsWorst Resutls

AverageTemperature

Figure B.13: Evolution of the best, worst and mean values of the objective function withoutpenalization against the number of iterations, for the SA in benchmark II.

Isaac Reis Master Dissertation

Page 142: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

120 B.Additional Graphics

0 50 100 150 200 250 300 350 4000

1

2

3

·108

Number of iterations

Rea

rstr

ess

[Pa]

obj. f at each evaluation(without penalization)obj.f at each iteration

Figure B.14: Comparison of the solution at each evaluation with the overall best position at eachiteration, for the SA in benchmark II.

0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30

2

3

4

5

·10−3

Number of iterations

Thi

ckne

ss[m

]

Thickness Evolution

Figure B.15: Thickness evolution, for the SA in benchmark II.

Isaac Reis Master Dissertation

Page 143: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

B.Additional Graphics 121

0 50 100 150 200 250 300 350 4000

0.5

1

·10−2

Number of iterations

Thi

ckne

ss[m

]

Thickness at each iterationThickness at each evaluation

Figure B.16: Comparison of the position at each evaluation with the overall best position at eachiteration, for the SA in benchmark II.

B.3 Benchmark III

B.3.1 PSO

0 2 4 6 8 10 12 14 16 18 202

2.5

3

3.5

Number of iterations

Wei

ght[

Kg]

Weight Evolution

Figure B.17: Weight evolution for the PSO in benchmark III.

Isaac Reis Master Dissertation

Page 144: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

122 B.Additional Graphics

0 2 4 6 8 10 12 14 16 18 200

5

10

Number of iterations

Nor

mal

ized

wei

ght

Best resutlsWorst Resutls

Average

Figure B.18: Evolution of the best, worst and mean values of the objective function withoutpenalization against the number of iterations, for the PSO in benchmark III.

B.3.2 GA

0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30

2.5

3

Number of iterations

Wei

ght[

Kg]

Weight Evolution

Figure B.19: Weight evolution for the GA in benchmark III.

Isaac Reis Master Dissertation

Page 145: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

B.Additional Graphics 123

0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30

5

10

Number of iterations

Nor

mal

ized

wei

ght

Best resutlsWorst Resutls

Average

Figure B.20: Evolution of the best, worst and mean values of the objective function withoutpenalization against the number of iterations, for the GA in benchmark III.

B.3.3 SA

0 2 4 6 8 10 12 14 16 18 20 220

10

20

Number of iterations

Wei

ght[

Kg]

Weight Evolution

Figure B.21: Weight evolution for the SA in benchmark III.

Isaac Reis Master Dissertation

Page 146: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

124 B.Additional Graphics

0 2 4 6 8 10 12 14 16 18 20 220

0.5

1

1.5

·104

Number of iterations

Nor

mal

ized

wei

ght

Best resutlsWorst Resutls

Average

Figure B.22: Evolution of the best, worst and mean values of the objective function against thenumber of iterations, for the SA in benchmark III.

0 2 4 6 8 10 12 14 16 18 20 220

1

2

3

Number of iterations

Nor

mal

ized

wei

ght

Best resutlsWorst ResutlsAverage

Figure B.23: Evolution of the best, worst and mean values of the objective function withoutpenalization against the number of iterations, for the SA in benchmark III.

Isaac Reis Master Dissertation

Page 147: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

B.Additional Graphics 125

B.4 Benchmark IV

B.4.1 PSO

0 2 4 6 8 10 12 14 16 18 200.6

0.8

1

1.2·106

Number of iterations

Rea

rStr

ess

[Pa]

Rear stress evolution

Figure B.24: Rear stress evolution for the PSO in benchmark IV.

0 2 4 6 8 10 12 14 16 18 200

20

40

60

80

100

Number of iterations

Nor

mal

ized

stre

ss

Best resutlsWorst Resutls

Average

Figure B.25: Evolution of the best, worst and mean values of the objective function withoutpenalization against the number of iterations, for the PSO in benchmark IV.

B.4.2 GA

Isaac Reis Master Dissertation

Page 148: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

126 B.Additional Graphics

0 2 4 6 8 10 12 14 16 18 20

9.85

9.86

9.86

9.87·105

Number of iterations

Rea

rStr

ess

[Pa]

Rear stress Evolution

Figure B.26: Rear stress evolution for the GA in benchmark IV.

0 2 4 6 8 10 12 14 16 18 200

10

20

Number of iterations

Nor

mal

ized

stre

ss

Best resutlsWorst Resutls

Average

Figure B.27: Evolution of the best, worst and mean values of the objective function withoutpenalization against the number of iterations, for the GA in benchmark IV.

Isaac Reis Master Dissertation

Page 149: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

B.Additional Graphics 127

B.4.3 SA

0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 300

20

40

60

80

100

Number of iterations

Nor

mal

ized

stre

ss

Best resutlsWorst Resutls

Average

Figure B.28: Evolution of the best, worst and mean values of the objective function withoutpenalization against the number of iterations, for the SA in benchmark IV.

0 20 40 60 80 100 120 140 160 180 200 220 240 260 280 3000

0.5

1

·108

Number of evaluations.

Rea

rstr

ess

[Pa]

obj. f at each evaluation(without penalization)obj.f at each iteration

Figure B.29: Comparison of the solution at each evaluation without penalization with the overallbest solution at each iteration, for the SA in benchmark IV.

B.5 Alternative approach to the benchmark III

Isaac Reis Master Dissertation

Page 150: Otimizac¸ao da Configurac¸˜ ao de Camadas para˜ …palavras-chave Impacto Bal´ıstico, Abaqus Python API, Otimizac¸ ao de Projeto, Algoritmo˜ Genetico (GA), Otimizac¸´ ao

128 B.Additional Graphics

0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 300

20

40

60

80

100

Number of iterations

Nor

mal

ized

wei

ght

Best resutlsWorst Resutls

Average

Figure B.30: Evolution of the best, worst and mean values of the objective function against thenumber of iterations, for the alternative approach to the benchmark III.

0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 300

1

2

3

Number of iterations

Nor

mal

ized

wei

ght

Best resutlsWorst Resutls

Average

Figure B.31: Evolution of the best, worst and mean values of the objective function withoutpenalization against the number of iterations, for the alternative approach to the benchmark III.

Isaac Reis Master Dissertation