Page 1

Algoritmos Genéticos Aplicações na SBSE


DEFINIÇÃO:

Os algoritmos genéticos são modelos computacionais inspirados na evolução natural que incorporam uma solução potencial para um problema específico numa estrutura semelhante a de um cromossomo e aplicam operadores de seleção e "cross-over" a essas estruturas.


Uma implementação de um algoritmo genético começa com uma população aleatória de cromossomos. Essas estruturas são, então, avaliadas e associadas a uma probabilidade de reprodução de tal forma que as maiores probabilidades são associadas aos cromossomos que representam uma melhor solução para o problema de otimização do que àqueles que representam uma solução pior. A aptidão da solução é tipicamente definida com relação à população corrente.


Estrutura de funcionamento

01. 02. 03. 04. 05. 06. 07. 08.

P := geraPopulacaoInicial(); avaliaPopulação(P) while not satisfazCriterioDeParada() do P’ := selecionarPais(P) P’’ := recombinar(P’) P := mutacao(P’’) avaliaPopulacao(P) endwhile


Exemplo: Caixeiro Viajante

Otimização Combinatória; Dadas n cidades encontrar o caminho mais curto que passe por todas elas somente uma única vez; A solução mais direta (simples em implementação) consiste em tentar todas as permutações possíveis, de modo a verificar por força bruta no final qual é o caminho de menor custo. Dado que a quantidade de permutações é o fatorial de nós, tal solução logo se torna impraticável;


Para n=8 cidades

Possível solução:


Representação cromossomial; A

B

C

E

D

G

F

H

Operadores de permutação para mutação Order-based mutation A

B

C

E

D

G

F

H

A

B

G

E

D

C

F

H

Position-based mutation A A

B B

C

E

D

G

F

H

E

D

G

C

F

H

Scramble mutation A

B

C

E

D

G

F

H

A

B

E

G

C

D

F

H




Operadores de permutação para crossover: Ordered-Based Crossover

pai1

A

B

C

E

D G F

H

filho1

A

pai2

D C

H

A

B

G

filho2

F

E

B

D E

G C

F

H

D C

B

A

F

H E

G

F

Position-Based Crossover pai1

A

B

C

E

D G F

H

filho1

A

C

H

E

B

pai2

D C

H

A

B

G

filho2

H

B

C

A

D G E

F

D C

H G F

E

D A

F

F

E

D G

Partially-Matched Crossover pai1

A

B

pai2

E

G D C

C

E

D G F

H

filho1

A

B

H

F

filho2

H

G C

A

B

E

B


Problemas comuns à Engenharia de Software

Engenharia de Requisitos A Engenharia de Requisitos é definida como a área que trata da definição dos requisitos, incluindo a satisfação do cliente e também seu entendimento. O objetivo da Engenharia de Requisitos é entender as necessidades dos clientes e possibilitar a implementação dessas necessidades no software desenvolvido


Teste de Software A aplicação de metaheurísticas na área de Teste de Software tem tentado solucionar os seguintes problemas: priorização de casos de teste, seleção de casos de teste e geração de dados de teste para teste unitário. Este último problema é o que apresenta maior número de trabalhos.


Estimativa de software A atividade de estimativa de software é uma importante atividade que ocorre ainda na fase de planejamento do projeto. Sua importância se dá devido ao fato de os dados (as estimativas) conseguidos a partir desta atividade serem aplicados durante todo o desenvolvimento, desde o próprio planejamento até o acompanhamento do projeto. Dada a sua relevância, vários trabalhos são feitos nessa área na tentativa de encontrar técnicas eficazes de estimativas de software


CONTINUA NA PRÓXIMA SEXTA

Algoritmos Genéticos SBSE  

Esta apresentação mostra os conceitos de Algoritmos Genéticos e indica campos de aplicação dessa técnica em Engenharia de Software.

Read more
Read more
Similar to
Popular now
Just for you