Inteligência Computacional Aplicada a Engenharia de Software Estudo de caso III Prof. Ricardo de Sousa Britto rbritto@ufpi.edu.br
Introdução Em alguns ambientes industriais, pode ser necessário priorizar os casos de teste existentes. Isto permite uma execução seletiva, a qual usa como base os casos de teste de maior importância. É necessário criar uma ordem de execução que otimize a característica mais importante para o teste em um determinado momento: cobertura de código; ataque aos casos de uso críticos; Execução dos casos de teste em menor tempo e com menor custo.
Abordagem proposta Priorização de casos de teste baseada em requisitos. Três etapas: Avaliar as classes que compõem os requisitos por meio de um sistema de inferência fuzzy de Mamdani; Determinar a criticidade dos casos de teste por meio das classes cobertas por cada um deles; Selecionar um subconjunto priorizado desses casos de teste com base no valor calculado no passo anterior e no tempo de execução de cada um, respeitando a restrição de tempo para realização dos testes.
Sistema de Inferência Fuzzy Duas variáveis de entrada: Grau de importância das classes; Acoplamento entre as classes; Uma variável de saída: Criticidade da classe
Calculo da criticidade dos casos de teste Calculado para cada caso de teste por meio da fórmula: 5
Seleção de subconjunto 6
Colônia de Formigas Otimização colônia de formigas é uma metaheurística baseada em população e inspirada no comportamento forrageiro das formigas. Muitas espécies de formigas são quase cegas. A comunicação entre as formigas é realizada através de uma substância química denominada de feromônio. Em algumas espécies, o feromônio é usado para criar caminhos (trilhas de formigas).
Introdução
Introdução
Introdução
Introdução Ao caminhar, as formigas depositam no chão o feromônio, formando, deste modo, uma trilha de feromônios. Quando elas têm que escolher um caminho, escolhem, com maior probabilidade, o caminho com maior quantidade de feromônio. A trilha ajuda a formiga a achar o caminho de volta e as outras formigas a encontrar a fonte de alimentos.
O Experimento da Ponte Binária Experimento realizado por Deneubourg et al., 1990, para estudar o comportamento forrageiro das formigas.
O Experimento da Ponte Binária No inicio: As formigas são deixadas livres para escolher o caminho. Não há feromônio ainda.
O Experimento da Ponte Binária As formigas convergem para um dos caminhos com igual probabilidade. Devido a flutuações aleatórias, uma das pontes terá mais feromônio e atrairá as formigas com maior probabilidade.
O Experimento da Ponte Binária Usando pontes de tamanhos diferentes, as formigas convergem para a ponte mais curta. Uma formiga percorre ida e volta na ponte curta no mesmo tempo que outra formiga realiza apenas o percurso de ida na ponte longa. Logo, será depositado mais feromônio na ponte curta do que na longa.
Algoritmo Colônia de Formigas É um algoritmo heurístico construtivo que utiliza o comportamento forrageiro de formigas artificiais para se encontrar a solução de um problema. Elas constroem soluções de forma probabilística utilizando duas informações: A trilha de feromônio (artificial) que muda dinamicamente durante a execução do programa de modo a refletir a experiência já adquirida durante a busca; A informação heurística específica do problema a ser resolvido.
Ant System Aplicado ao PCV Ant System foi o primeiro algoritmo criando com base em colônia de formigas reais. Para melhor entendimento deste algoritmo, vamos apresentá-lo no contexto do problema do caixeiro viajante.
Ant System Aplicado ao PCV Matriz de Distância do PCV Cidades do PCV
Inicialização Cada formiga irá construir uma solução movendo-se de uma cidade para outra. No ínicio, cada formiga é colocada em uma cidade diferente (ou colocada aleatoriamente).
Construção da Solução Começando de uma cidade i, a formiga move-se escolhendo probabilisticamente a cidade vizinha j (entre os vizinhos factíveis).
Probabilidade de Escolha A probabilidade da formiga k que está na cidade i de escolher a cidade j é dada pela regra: é feromônio associado a aresta (i,j). α e β são parâmetros para determinar a influência do feromônio e da informação heurística. é a vizinhança factível da formiga k (o conjunto das cidades ainda não visitadas pela formiga k). A escolha é feita de forma similar à roleta viciada dos GA.
A Informação Heurística do PCV Associada a aresta (i,j) existe um valor heurístico η ij dado por: que representa a atratividade da formiga visitar a cidade i depois de visitar a cidade j. O valor η ij é inversamente proporcional a distância d ij entre as cidades i e j.
Executando o Algoritmo Passo 1
Executando o Algoritmo Passo 2
Executando o Algoritmo Passo 3
Executando o Algoritmo Passo 4
Executando o Algoritmo Término da Primeira Iteração
Implementando o Ant System Caminho AntSystem_PCV(int iteracoes, int num_formigas, int tam_caminho){ Formigas populacao(num_formigas); Int t, k, L, L*=1000000000000; Caminho S*; for(t=0; t < iteracoes; t++){ for(k=0; k < num_formigas; k++){ }! while(populacao.formiga[k].getsizesk()< tam_caminho){! populacao.formiga[k].selecionacidade(); } if(populacao.formiga[k].calculalk()< L*){! S = populacao.formiga[k].getsk();! L = populacao.formiga[k].getlk(); } } populacao.atualizaferomonio(); } return S
Atualização do Feromônio No feromônio τ ij associado a aresta (i,j) ocorre dois eventos: A evaporação Evita que o feromônio acumulado cresça indefinidamente; Permite esquecer pobres decisões do passado da busca. O depósito de feromônio de todas as formigas que passaram sobre (i,j).
Atualização do Feromônio O feromônio τ ij associado a aresta (i,j) é atualizado pelo fórmula: onde 0 < ρ 1 é a taxa de evaporação de feromônio.
Atualização do Feromônio Depois que todas as formigas construíram suas viagens, o feromônio é atualizado. Onde Q é uma constante.
Colônia de formigas aplicado ao problema da mochila O estudo de caso descrito é similar ao problema da mochila. Tenho uma janela de tempo para executar um dado conjunto priorizado de casos de teste. Deve escolher o subconjunto de modo a não ferir a restrição de tempo imposta 32
Colônia de formigas aplicado ao problema da mochila CT1 CT2 T CT3 CT4 33
Colônia de formigas aplicado ao problema da mochila Com uma pequena alteração na modelagem do algoritmo original, que é direcionado para o TSP, podemos aplicar o ACO para o problema da mochila binário. Quanto mais ferômonio estiver em um elemento, maior a chance dele ser selecionado. Isso significa que o feromônio é depositado nos nós e Não nas arestas, como no TSP. 34
Colônia de formigas aplicado ao problema da mochila Outra diferença reside no processo de construção de uma solução. Primeiro se determina o tamanho do espaço já ocupado pelos elementos já selecionados. Posteriormente seleciona-se, de acordo com a probabilidade de escolha, um dos elementos restantes que não ultrapasse a capacidade da mochila 35
Colônia de formigas aplicado ao problema da mochila Por fim, existe uma diferença na equação que determina a probabilidade de escolha do próximo elemento a ser inserido na solução. Onde no denominador entram apenas os valores referentes aos elementos que ainda podem ser escolhidos. 36
Atividade Ler o artigo abaixo: Shi, Hanxiao. Solution to 0/1 Knapsack Problem Based on Improved Ant Colony Algorithm. Proceedings of the 2006 IEEE International Conference on Information Acquisition, 2006. 37