Issuu on Google+

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