TÓPICOS ESPECIAIS EM INTELIGÊNCIA ARTIFICIAL Bounded Knapsack Problem – BPK (Problema da Mochila Inteira)
O PROBLEMA NP-difícil; Técnica utilizada; Modelagem;
MODELAGEM Leitura dos dados; Montagem do modelo de solução; Submissão da solução a uma heurística VND ou VNS
ALGORITMO Leitura dos Dados; Implementação dos movimentos; Solução inicial; VND ou VNS;
LEITURA Vetor de tipos de objetos Vetor de benefício dos objetos; Vetor de quantidade dos tipos de objeto;
IMPLEMENTAÇÃO DOS MOVIMENTOS Os movimentos consistem em tirar ou acrescentar um objeto em uma dada posição, ou tirar um objeto de uma posição e acrescentar um outro objeto em uma outra posição. O movimento básico foi implementado da seguinte maneira: Onde: s = vetor solução; j = posição do vetor solução; q = quantidade a ser adicionada (1 ou –1); lim = limite da quantidade existente do objeto;
MOVIMENTO int troca_quantidade(s, j, q, lim) { if (q > 0) { // if 1 if ((s[j]+q) <= lim[j]) { // if 2 s[j]+=q; return q; } else {// else if 2 s[j]=lim[j]; return 0; } //else if 2 }// if 2 else { // else if 1 if ((s[j]+q) < 0) {// if 3 int result =s[j]; s[j] = 0; return (-1)*(result); } else { // else if 3 s[j]+=q; return q; } //else if 3 } //if 3 } //if1 } // troca_quantidade
FUNÇÃO OBJETIVO Verifica se o peso dos objetos não ultrapassa a capacidade da mochila (inviabilidade); Se ultrapassar é aplicada uma penalidade; fo = benefício – inviabilidade * penalidade;
RESULTADOS COMPUTACIONAIS Testes realizados com: n = 50 (número de tipos de objetos) c= 100 (capacidade da mochila) srand = relógio do computador 5 testes para VND 5 testes para VNS
RESULTADOS COMPUTACIONAIS PARA VND Teste Inviabilidade Inicial Solução Função Objetivo VND 1 22 s = [2, 2, 0, 0, 0, 0, 0, 0, 2, 2] -2018 42 2 6 s = [3, 1, 0, 0, 1, 0, 2, 1, 1, 1] -513 54 4 15 s = [2, 2, 0, 0, 0, 0, 2, 1, 1, 1] -1358 49 33 s = [3, 5, 0, 0, 1, 0, 1, 2, 0, 0] -3044 56 5 25 s = [4, 1, 0, 0, 1, 0, 1, 2, 1, 1] -2292 57 Média: 51,6 Desvio Padrão: 6,188%
RESULTADOS COMPUTACIONAIS PARA VNS Testes executados em 5 segundos de VNS Teste Inviabilidade Inicial Solução Função Objetivo VND 1 25 s = [4, 0, 0, 1, 1, 0, 3, 2, 0, 0] -2316 63 2 8 s = [4, 2, 0, 0, 0, 0, 3, 2, 0, 0] -696 4 19 s = [4, 1, 0, 0, 1, 0, 3, 3, 0, 0] -1737 64 24 s = [4, 3, 0, 0, 1, 0, 3, 0, 0, 0] -2202 5 -1729 Média: 63,2 Desvio Padrão: 0,44 %
COMPONENTE Adriano Pedrosa Maia