• Nenhum resultado encontrado

TCC Final

N/A
N/A
Protected

Academic year: 2023

Share "TCC Final"

Copied!
86
0
0

Texto

O trabalho de conclusão de curso é apresentado à banca examinadora da Faculdade de Ciência da Computação, Faculdades Integradas de Caratinga, como candidatura parcial à obtenção do título de Bacharel em Ciência da Computação, sob a orientação do Professor Paulo Eustáquio dos Santos. O trabalho de conclusão de curso é apresentado à banca examinadora da Faculdade de Informática das Faculdades Integradas de Caratinga, como requisito parcial para a obtenção do título de bacharel em Ciência da Computação.

INTRODUÇÃO

Uma das abordagens mais comuns para resolver esse problema é usar uma técnica conhecida como programação dinâmica, que basicamente representa a divisão do problema principal para encontrar uma solução que satisfaça esse subproblema e passe a fazer parte da solução final subsequente alcançada pela combinação de todas as subsoluções. No entanto, esta abordagem por si só não foi suficiente para resolver este problema. Foi necessário o uso de técnicas como Algoritmos Gulosos, para apoiar a construção da solução, e técnicas de revisão de solução para aproximar a solução ótima.

O PROBLEMA DA MOCHILA

I NTRODUÇÃO

  • problemas NP-completos
    • Complexidade dos algoritmos
    • Tipos dos problemas
    • Classes dos Problemas

Podemos assim ter problemas de corte unidimensionais com apenas uma dimensão relevante para o processo de corte, como corte de bobinas (de papel, aço, tecidos, plástico, etc.) e barras. Neste problema de corte de peças, não há obrigação de atender a demanda (se a demanda for baixa, deve-se tomar cuidado para não exceder a demanda, caso contrário, o padrão de corte gerado não será usado uma única vez).

M ÉTODOS PARA SOLUÇÃO DO P ROBLEMA DA M OCHILA

  • Solução ótima
  • Programação Dinâmica
    • Principio da Optimalidade de Bellman
  • Algoritmo por aproximação

Ao resolver o "problema da bolsa" com programação dinâmica, o problema é dividido em subproblemas menores, onde as soluções desses subproblemas são calculadas e armazenadas em um registrador. A estrutura de dados utilizada na implementação é semelhante à do algoritmo "força bruta", incluindo apenas o número do índice do item no array de estruturas.

METODOLOGIA

O P ROBLEMA

A carga em cada veículo é definida de acordo com a vontade dos clientes, sendo este trabalho da responsabilidade da empresa. No entanto, tem uma função chave, ou seja, o aluguer de viaturas para o transporte de encomendas. Assim, existe uma lista de ordens de entrega e uma lista de viaturas contratadas, sendo que o objetivo é otimizar a distribuição das encomendas entre viaturas de forma a minimizar a perda de capacidade das viaturas, reduzindo assim o tempo de paragem e a quantidade de viaturas encomendadas e consequentemente reduzindo os custos.

Cada encomenda tem uma propriedade adicional que é o seu peso, e cada veículo também tem uma propriedade que é a sua capacidade. Isso se deve ao fato de que cada veículo pode conter todos os pedidos menores ou iguais à sua capacidade. Cada pedido é alocado a apenas um veículo, mas os veículos transportam tantos pedidos quanto sua capacidade de atendimento.

Este problema enquadra-se quase na perfeição na definição do problema Mochila, onde as principais diferenças são a falta de valor de utilidade, uma vez que todos os pedidos têm o mesmo valor a este respeito, e a existência de vários veículos, várias mochilas, com diferentes capacidades.

Figura 2: Relação entre capacidade e veículo, e, pedido  e peso
Figura 2: Relação entre capacidade e veículo, e, pedido e peso

O DESENVOLVIMENTO DA SOLUÇÃO

Em teoria é muito simples criar uma lista de todas as soluções possíveis e depois encontrar uma solução que satisfaça as restrições, mas neste caso não é tão simples. A primeira etapa do algoritmo começa a partir do item da lista de primeira ordem para formar a primeira solução. É criada uma lista de pedidos que corresponde a uma possível carga do veículo, esses pedidos são alocados até que sua capacidade seja atingida.

Cada veículo possui uma lista de possíveis soluções, onde cada item desta lista é composto por um grupo de pedidos que compõem um embarque para cada veículo analisado. Para cada veículo da lista, a primeira solução é atribuída a partir de sua lista individual de soluções, seus pedidos são registrados em uma lista de pedidos carregados. Em seguida, o segundo veículo é alocado e a primeira solução que não corresponde aos pedidos encontrados na lista de pedidos carregados é alocada, os pedidos para a solução encontrada são registrados na lista de pedidos.

Uma vez que todas as combinações de carregamento são registradas em uma lista de possíveis soluções, o algoritmo busca nesta lista a combinação que minimiza o número de veículos a serem carregados. Para cada solução atribuída na lista de possíveis soluções, seus respectivos pedidos são registrados em uma lista de pedidos carregados, e quando todos os pedidos enviados estiverem nesta lista, ela é zerada e a análise de uma nova solução é iniciada. Ele busca na lista de pedidos (itens para a mochila) itens cujos valores sejam iguais ao valor total da capacidade do veículo a ser carregado, caso este valor seja encontrado, o veículo é carregado em sua totalidade pelo respectivo pedido; caso contrário, divide-se a capacidade do veículo ao meio e repete-se a operação para encontrar os valores das capacidades divididas (mochilas menores).

Figura 5: Modelo das entradas para a solução.
Figura 5: Modelo das entradas para a solução.

M ETODOLOGIA DA A NALISE DOS R ESULTADOS

No caso da função Correct_Carga(), ela segue o mesmo padrão das funções de ordenação descritas acima, mas também é formada por dois loops "for" alinhados que percorrem a lista de veículos para encontrar cargas incompatíveis com sua capacidade e possuem uma função de complexidade de F(v2). Isso nos mostra um algoritmo com complexidade em ordem: O(v2n2), algoritmo polinomial dependente dos itens v e n, ou seja, dependente do tamanho das listas de pedidos e veículos. Neste caso, a comparação não foi baseada no desempenho, que é claramente superior ao método automático, mas a comparação será baseada nos resultados obtidos, tendo em conta a otimização do processo, a redução da utilização de recursos.

Foram levantados vários grupos de encomendas e viaturas e posteriormente chegaram-se a soluções pelo método tradicional. Considerando que cada entrada está relacionada a uma região onde a empresa atua, obteve-se naquele momento um conjunto considerável de dados, os quais foram submetidos a testes com a solução proposta, de onde foram extraídos resultados, que posteriormente foram comparados com os obtidos pelo método tradicional. Para tanto, foi utilizado um computador com processador AMD Athlon X2 64, com frequência de 2 GHZ e 3 GB de memória, em sistema operacional Windows XP SP2.

A NÁLISE EM RELAÇÃO A OUTROS ALGORITMOS

  • Relação com o Algoritmo Força Bruta
  • R ELAÇÃO COM O M ÉTODO G ULOSO
  • C OMPARATIVO COM A S OLUÇÃO M ANUAL

O gráfico acima demonstra a diferença já citada em relação à resposta do problema, diferença na quantidade. propostas situou-se em média 17,72% a favor da solução apresentada. O gráfico acima demonstra a diferença mencionada anteriormente em relação à resposta dos e-mails carregados entre as duas soluções propostas, com média de 17,72% a favor da solução apresentada. Em termos de desempenho, o ponto mais relevante é o quão próxima a solução proposta chegou da solução construída a partir do Método Greedy, e desta.

Portanto, em termos de tempo, temos um melhor desempenho do algoritmo baseado no método guloso, e em relação à qualidade da solução. Com relação à comparação entre os tempos das duas soluções, é visível o melhor desempenho da proposta baseada no Método Greedy, que teve média de 55%. Portanto, em termos de tempo, temos um melhor desempenho do algoritmo baseado no método guloso, e em termos de qualidade da solução, temos uma clara vantagem do lado da solução proposta.

Com relação à comparação entre os tempos das duas soluções, observa-se o host baseado no Método Greedy, que teve média de 55%.

CONCLUSÃO E PROPOSTA DE TRABALHOS FUTUROS

O tempo computacional e a qualidade da resposta obtida foram utilizados como parâmetros de comparação nos testes, e concluiu-se que os algoritmos utilizados para a comparação tiveram um desempenho excelente em um dos parâmetros de comparação, sempre deixando a desejar em relação ao outro aspecto da comparação. A proposta apresentada neste trabalho sempre oscilou em pontos medianos em relação ao tempo de computação, sendo melhor que o algoritmo de pior desempenho e pior que o algoritmo de melhor desempenho. Quanto à qualidade da resposta, a solução apresentada obteve sempre um resultado muito bom, chegando mesmo a atingir o resultado óptimo várias vezes.

Do ponto de vista acadêmico, é importante estudar outra variante do problema da mochila, um clássico da Pesquisa Operacional, para propor uma abordagem que una diferentes técnicas e chegue a um resultado que, apesar de não garantir um resultado ótimo, é claramente muito bom. Do ponto de vista das necessidades da empresa, a importância de estudar e desenvolver a solução é ainda mais evidente, pois já foram comprovados os avanços que uma solução automática traz em termos de produtividade para qualquer empresa, e também porque os resultados obtidos superaram os obtidos atualmente, o que reforça ainda mais a excelente posição face ao método atualmente utilizado. Por último, refira-se que esta é uma matéria ainda em estudo e não é uma solução definitiva, quer ao nível do estudo da matéria em apreço, quer ao nível do desenvolvimento de uma solução tecnológica para os problemas estudados na empresa.

De fato, ainda há muito a ser feito na medida em que a empresa está automatizando seus processos, ainda que o tema abordado neste trabalho seja aquele que, embora muito estudado, possui um amplo espectro de variações que merecem atenção individualizada.

Uma aplicação de rotinas de caixeiro-viajante para resolver problemas de atribuição de padrões na indústria vidreira. Uma investigação de problemas de corte e empacotamento. 2000), Otimizando o corte de chapas de estoque em uma empresa moveleira. Tese (Doutorado em Ciência da Computação e Matemática Computacional) – Instituto de Matemática e Ciência da Computação, Universidade de São Paulo, São Carlos.

Dissertação (Mestrado em Ciência da Computação e Matemática Computacional) – Instituto de Ciências Matemáticas e de Computação, Universidade de São Paulo, São Carlos. Tese (Doutorado em Computação e Matemática Aplicada) – Instituto Nacional de Pesquisas Espaciais, São José dos Campos. Lidando com a pequena demanda em todo o problema de corte de estoque com diferentes comprimentos de estoque limitados.

SILVEIRA, Rejane Joas, MORABITO Reinaldo, "Um método heurístico baseado em programação dinâmica para o problema de corte guilhotina bidimensional restrito", Departamento de Engenharia de Produção, Universidade Federal de São Carlos, 2002.

Imagem

Figura 1: Intersecção entre as classes dos problemas
Figura 2: Relação entre capacidade e veículo, e, pedido  e peso
Figura  3:  Representação  de  um  possível  carregamento  onde  cadê  pedido  está  ligado a um veículo
Figura 4: Representação de uma possível   iteração  entre  os  paços  dos  carregamentos
+7

Referências

Documentos relacionados

Relaxamos, e usamos a solução da relaxação linear como probabilidades para obter uma