Distribuio otimizada de polgonos em um plano bidimensional
Distribuição otimizada de polígonos em um plano bidimensional Acadêmica: Denise Brandt Orientador: Dalton Solano dos Reis
Roteiro da apresentação 1. 2. 3. 4. 5. 6. Introdução Objetivos do trabalho Fundamentação teórica Desenvolvimento Conclusão Extensões
Introdução o Importância • Problema de corte na indústria. Ex. : móveis, vidros, metais, confecções, papelões e outras. • Impacto econômico. o Problema • Complexidade. • Polígonos convexos/côncavos.
Objetivos • Ter como resultado uma solução boa, não necessariamente ótima. • Permitir visualizar o resultado do processo de encaixe. • Solucionar o encaixe dos polígonos em um tempo aceitável.
Trabalhos correlatos • Estudo sobre nova heurística e metaheurística para o problema de corte e empacotamento (Whitwell, 2004). • Moldes. View (Mariano et al. , 2009). • Sistema comercial de encaixe de moldes (Audaces , 2011).
Fundamentação teórica No-fit polygon Bottom-left fill Hill climbing Tabu search
Fundamentação teórica o No-fit polygon • Usado na detecção de colisão entre polígonos côncavos/convexos. • Usado na resolução de sobreposição entre polígonos.
Fundamentação teórica • Translação inicial:
Fundamentação teórica • Detecção de arestas que se tocam:
Fundamentação teórica Criação de potenciais vetores de translação
Fundamentação teórica • Encontrando uma translação viável:
Fundamentação teórica • Ajustando a translação viável:
Fundamentação teórica o Aplicando o vetor de translação • Adicionar ponto de referência ao no-fit polygon. • Verificar se ponto de referência voltou ao início.
Fundamentação teórica o Algoritmo bottom-left fill • Entrada: tamanho da folha, polígonos, rotações.
Fundamentação teórica o Algoritmo hill climbing 1. 2. 3. 4. • Entrada: polígonos ordenados. Executar empacotamento com a entrada. Realizar pequena alteração na ordem dos polígonos que obtiveram melhor resultado. Realizar empacotamento e armazenar o resultado caso tenha sido o melhor de todos. Executar até atingir critério de parada.
Fundamentação teórica o Algoritmo tabu search 1. 2. 3. 4. • Entrada: polígonos ordenados. Executar empacotamento para um subconjunto de vizinhanças de polígonos. A solução corrente é sobrescrita, mesmo sendo pior que a melhor solução até o momento. Executar até atingir critério de parada. Armazena uma lista com a vizinhanças testadas.
Requisitos o Requisitos funcionais • Disponibilizar uma interface visual para exibir o resultado do processo de encaixe. • Realizar o encaixe de polígonos em uma área de largura informada pelo usuário a fim de utilizar menos espaço. • Exibir o comprimento da matéria-prima utilizada. • Exibir o tempo utilizado para efetuar o encaixe dos polígonos. • Não sobrepor os polígonos quando efetuar o encaixe.
Requisitos o Requisitos não funcionais • Executar em um tempo menor que 30 minutos para um problema de dificuldade média (5 peças). • Ser desenvolvido utilizando a linguagem de programação Java. • Ser desenvolvido utilizando o ambiente Eclipse para a programação.
Diagrama de casos de uso
Diagrama de classes
Diagrama de classes
Diagrama de classes
Diagrama de sequência
Operacionalidade
Resultados e discussão • No-fit polygon X Trigonometria. • Ponto flutuante. • Testar todas as combinações de translações viáveis.
Resultados e discussão 12 polígonos convexos. Arquivo fu. xml.
Resultados e discussão 12 polígonos convexos. Arquivo fu. xml.
Resultados e discussão 45 polígonos convexos/côncavos. Arquivo poly 3 b. xml.
Conclusão o Detecção de colisão de polígonos côncavos e convexos. o Algoritmos de otimização combinatorial. o Empacotamento dos polígonos. o Exibição do resultado e informação referentes a ele.
Extensões o Utilizar Big. Decimal ao invés de double. o Otimizar o no-fit polygon: • Algoritmo mais simples para polígonos convexos. • Bounding boxes no ajuste da translação viável. o Suportar todas as combinações para a geração do no-fit polygon. o Permitir rotações individuais.
FIM
Trabalhos correlatos • Moldes. View (Mariano et al. , 2009)
Trabalhos correlatos • Sistema comercial de encaixe de moldes (Audaces , 2011)
Fundamentação teórica o Escolha dos operadores: • • • Opt 1: 30% - troca 1 forma rand. com a sua direita Opt 2: 25% - troca 2 formas rand. uma com a outra Opt 3: 20% - troca 3 formas rand. umas com as outras Opt 4: 15% - troca 4 formas rand. umas com as outras Opt. N: 10% - troca N formas rand umas com as outras
Implementação • Java • Eclipse • Open. GL
Fundamentação teórica • Criação de potenciais vetores de translação:
Fundamentação teórica • Criação de potenciais vetores de translação:
Implementação • Resolução de sobreposição usando o no-fit polygon
Resultados e discussão • Cenário 1: Iteraç ões Hill climbing T 1 T 2 T 3 T 4 Tempo(T) A 1 médio T 5 A 2 A 3 A 4 Altura(A) média A 5 1 842 609 702 686 689, 6 42, 68 38, 12 41, 16 42, 68 40, 55 25 3291 3073 2918 3120 2917 3063, 8 38, 12 37, 36 38, 12 36, 54 37, 65 50 4292 4727 5007 4808 4711 4709 38, 12 37, 78 37, 68 38, 32 37, 91 75 7270 7176 7270 6849 6802 7073, 4 38, 32 37, 36 38, 32 37, 94 38, 32 38, 05 100 9095 9001 8970 8986 8658 8942 37, 36 37, 74 36, 54 36, 16 37, 94 37, 14 Iteraç ões Tabu search T 1 T 2 T 3 T 4 Tempo(T) A 1 médio T 5 A 2 A 3 A 4 Altura(A) média A 5 1 1107 1216 1217 1201 1326 1213, 4 38, 12 39, 64 40, 78 38, 95 25 11232 12199 12215 11325 11809 11756 38, 12 37, 36 36, 16 38, 32 37, 61 50 21700 22776 23213 22371 23244 22660, 8 38, 12 36, 6 34, 7 36, 42 36, 8 75 35225 34288 31918 33415 32011 33371, 4 37, 56 34, 52 37, 56 37, 36 36, 8 36, 76 100 42947 43353 46831 42323 43618 43814, 4 36, 42 35, 08 35, 78 37, 74 37, 18 36, 44
Resultados e discussão • Cenário 2: Itera ções Hill climbing Tabu search Alturas Média 20000 47 46, 6 45, 2 46, 6 46, 4 46, 2 45 46, 2 46 45, 84 40000 45, 4 46, 2 45, 8 45, 96 45, 4 45 46 46, 2 45, 8 45, 68 60000 46, 2 45, 8 46, 2 45, 4 45, 96 46, 2 45, 4 46, 6 45, 4 45, 88 80000 46, 2 45, 4 45, 6 45, 84 46, 6 45, 8 45, 6 45 45, 4 45, 68 100000 45, 4 45 44, 6 45 45, 4 45, 08 45, 4 45 45, 4
Ponto flutuante • Muitas frações decimais não podem ser representadas exatamente como frações binárias finitas. Por consequência, diversos números armazenados na máquina em váriaveis do tipo ponto flutuante (float, double, real) são apenas aproximações. • Por exemplo, a fração 1/3: Não existe uma fração finita capaz de resultar em exatamente 1/3
Big. Decimal • É uma classe que trabalha com números de ponto flutuante de precisão arbitrária: você pode escolher quanto de precisão você quer usar. Por padrão ele vai utilizar o que for necessário, e, diferente do double, ele consegue guardar números como 0. 1, pois guardará isto como sendo 1 x 10ˆ-1 (isto é, usando a base decimal em vez de binária, evitando a dízima).
- Slides: 42