XXX ENCONTRO NACIONAL DE ENGENHARIA DE PRODUÇÃO Maturidade e desafios da Engenharia de Produção: competitividade das empresas, condições de trabalho, meio ambiente. São Carlos, SP, Brasil, 12 a15 de outubro de 2010. OTIMIZAÇÃO POR ENXAME DE PARTÍCULAS APLICADA AO PROBLEMA GERAL DE DIMENSIONAMENTO DE LOTES E PROGRAMAÇÃO DA PRODUÇÃO Claudio Fabiano Motta Toledo (ufla) [email protected] Thiago Fialho de Queiroz Lafitá, (ufla) [email protected] Márcio da Silva Arantes (ufla) [email protected] Renato Resende Ribeiro de Oliveira (ufla) [email protected] Paulo Morelato França (unesp) [email protected] O presente artigo propõe um método baseado em Otimização por Enxame de Partículas (OEP) associado à programação matemática para resolução do Problema Geral de Dimensionamento de Lotes e Programação da Produção (PGDLPP). A OEP fixa as variávveis binárias do modelo enquanto um método exato é utilizado na determinação das variáveis contínuas. O PGDLPP estudado também considera penalização para demandas não atendidas, onde uma formulação matemática é apresentada para essa variante do problema. Instâncias são solucionadas por uma ferramenta de modelagem matemática cujas soluções servem para avaliação do desempenho da OEP proposta. A OEP também é comparada a um AG anteriormente utilizado para resolver o mesmo problema. Os resultados revelam o melhor desempenho obtido pela OEP proposta. Palavras-chaves: Programação da Produção, Dimensionamento de Lotes, Enxame de Partículas, Otimização 1. Introdução O presente artigo propõe um método baseado em Otimização por Enxame de Partículas (OEP) associado à programação matemática para resolução do Problema Geral de Dimensionamento de Lotes e Programação da Produção (PGDLPP). A OEP fixa as variáveis binárias do modelo enquanto um método exato é utilizado na determinação das variáveis contínuas. O PGDLPP estudado também considera penalização para demandas não atendidas, onde uma formulação matemática é apresentada para essa variante do problema. Instâncias são geradas para o PGDLPP estudado seguindo os critérios propostos por Haase (1996) para o mesmo problema. Todas as instâncias geradas são solucionadas usando a ferramenta de modelagem matemática AMPL/CPLEX. As soluções obtidas servem como ponto de partida na avaliação de desempenho da OEP proposta. Além disso, os resultados obtidos são comparados aqueles encontrados pelo Algoritmo Genético com estrutura hierárquica de indivíduos proposto em Toledo et al (2009) para o mesmo problema. Estudos considerando o PGDLPP com máquinas paralelas são descritos em Kang et al. (1999) e Meyr (2002). O primeiro trabalho trata o PGDLPP com máquinas paralelas usando um método baseado em geração de coluna e branch & bound. O segundo trabalho utiliza a metaheurística simulated annealing para determinar as variáveis binárias (atribuição de produtos às linhas e períodos) do PGDLPP e um algoritmo exato para determinar as variáveis contínuas (dimensionamento de lotes e definição dos estoques). O dimensionamento de lote e a programação da produção com restrição de capacidade é um problema de otimização NP–Difícil (BITRAN E YANASSE, 1982). O problema de dimensionamento de lotes e programação da produção multi-item também é um problema NP-Difícil (CHEN e THIZY, 1990). A complexidade desse problema faz com que sejam propostas heurísticas ou metaheurísticas como método de resolução. Jans e Degraeve (2007) apresentam uma revisão da literatura considerando o uso de metaheurística na resolução de problemas de dimensionamento de lote e programação da produção. A otimização por Enxame de Partícula (OEP) foi introduzida por Kennedy & Eberhart (1995) que propuseram uma abordagem baseada no comportamento de enxames de abelhas, cardumes de peixes ou bando de pássaros quando procuram por alimentos (CHEN, T. & CHI, T., 2010). Ali e Kaelo (2008) e Siarry et al (2007) utilizam OEP na otimização de funções multi-modais. Chen & Zhao (2009) propõe uma OEP adaptativa, onde o tamanho da população varia segundo uma função do tipo escada. O método é aplicado na otimização de funções e no treinamento de redes neurais. Algoritmos Genéticos (AG) são métodos de computação evolutiva que simulam processos biológicos (Holland, 1975). Goren et al (2008) apresenta uma revisão da literatura para problemas de dimensionamento de lotes considerando o uso de Algoritmos Genéticos. Um algoritmo genético multi-populacional foi utilizado por Toledo et al (2009) para solucionar o mesmo PGDLPP aqui apresentado. Os autores utilizaram uma representação em árvore ternária, onde indivíduos são separados em clusters com uma ordem de hierarquia entre os indivíduos. O AG proposto foi capaz de encontrar boas soluções, obtendo melhor desempenho em instâncias do PGDLPP com máquinas paralelas. A próxima seção descreve o modelo matemático para o PGLDPP estudado neste trabalho. A Seção 3 apresenta a OEP proposta. Os resultados computacionais são descritos na Seção 4. As conclusões obtidas neste trabalho estão na Seção 5. 2. Modelo matemático para o PGDLPP Toledo et al (2009) apresentaram o modelo matemático para o PGDLPP considerando máquinas paralelas e penalização das demandas não atendidas. Esse modelo será detalhado 2 nesta seção. A formulação proposta segue a modelagem descrita por Meyr (2002) para o PGDLPP com máquinas paralelas. A principal diferença está na inserção de variáveis que acumulam as demandas não atendidas para cada produto. Essas variáveis são incluídas na equação de balanço de estoque no primeiro período de produção e também são penalizadas na função objetivo do modelo. O problema é modelado dividindo o horizonte de planejamento em T macro-períodos. Por sua vez, cada macro-período t possui um número fixo de micro-períodos S. Um aspecto interessante neste tipo de modelagem é que o tamanho de cada micro-período s varia de forma proporcional ao tamanho do lote do produto a ele atribuído. Assim, as variáveis de dimensionamento dos lotes e de atribuição de produtos às linhas e períodos estão indexadas por produtos e micro-períodos. O modelo assume que um único produto é atribuído e produzido em cada micro-período. A Figura 1 apresenta um exemplo dessa situação, supondo três produtos e três microperíodos em cada macro-período em uma linha L1. O tamanho dos micro-períodos s1, s2, s3, s4, s5 e s6 varia de forma proporcional à quantidade produzida. Por exemplo, o lote em s2 de P2 é maior que o lote de P2 em s4 na Figura 1. Assim, os micro-períodos s1, s4 e s6 ocupam 1 unidade de tempo, s2 ocupa 2 unidades e s5 ocupa 3 unidades de tempo. Macro-período 1 s1 P1 L1 0 s2 P2 1 Macro-período 2 s3 s5 s4 P1 3 5 s6 P1 P3 P2 6 9 10 Tempo Figura 1 – Variação dos micro-períodos (Toledo et al, 2009). Um total de J produtos e L linhas são considerados. Abaixo são listados os demais parâmetros do problema Ct: TPl,j: Tempo de processamento do produto j na linha l. Minj: Lote mínimo do produto j. Hj: Custo de estoque do produto j. CTij: Custo de troca do produto i para o produto j. Dit: Demanda do produto i no macro-período t. Ij0: Estoque inicial do produto j no início do horizonte de tempo. Yl,j,0: 1, se o produto j está ajustado inicialmente para a linha l; 0 caso contrário. M: Penalização por unidade de demanda não atendida. Capacidade em unidades de tempo disponível no macro-período t. As variáveis do modelo são apresentadas a seguir: Ijt ≥ 0: Estoque do produto j ao final do macro-período t. qljs ≥ 0: Quantidade do produto j produzido no micro-período s da linha l. q0j ≥ 0: Quantidade de demanda do produto j que não foi produzida. 3 yl,j,s : 1 Se o produto j é atribuído à linha l no micro-período s; 0 caso contrário. zlijs ≥ 0: zlijs = 1 se há troca do produto i para j no micro-período s da linha l; zijs = 0, caso contrário. O modelo matemático para o PGLDPP com máquinas paralelas e penalização de demandas é descrito a seguir: A função objetivo minimiza os custos de estoque e os custos de troca envolvendo produtos. Os custos de troca foram considerados como dependentes da sequência dos produtos, mas independentes das linhas. As demandas não atendidas são acumuladas nas variáveis q0j e penalizadas na função objetivo. O estoque de cada macro-período é determinado pelas equações (2a) e (2b). Observe que a demanda não atendida é acumulada na equação de balanço de estoque do primeiro período (2a). Isso permite que as demandas não atendidas nos demais períodos continuem satisfazendo a restrição de balanço de estoque já que são acumuladas em q0j. Considera-se que essas demandas foram produzidas em um período t=0 com capacidade ilimitada. A restrição (3) garante que a capacidade disponível dentro do período t não seja violada. A capacidade disponível por macro-período é a mesma para todas as linhas, mas cada linha pode ter diferentes tempos de processamento por produto (TPl,j). O tamanho máximo do lote de um produto em um micro-período é dado pela restrição (4). Essa restrição também impõe que nada seja produzido, caso não ocorra atribuição do produto ao micro-período (yl,j,s = 0). A restrição (5) assegura que um lote mínimo será produzido quando ocorre efetivamente a atribuição de um novo produto a um micro-período (yl,j,s = 1). Por outro lado, se o mesmo produto é atribuído a dois micro-períodos consecutivos, não necessariamente haverá produção na segunda atribuição. A equação (6) permite que somente um produto seja produzido em um micro-período. As trocas de produtos são determinadas pela restrição (7). 3 Otimização por Enxame de Partícula 3.1 Representação das soluções A representação utilizada é a mesma proposta por Toledo et al (2009) para o Algoritmo Genético (AG). Trata-se de uma extensão para máquinas paralelas da representação proposta em Fleischmann e Meyr (1997) para o PGDLPP com uma única máquina. Essa representação consiste em uma lista de máquinas ou linhas de produção, onde cada linha armazena uma 4 matriz com informações sobre sua seqüência de produtos. Trata-se de uma matriz do tipo t x n, onde t é o número de macro-períodos e n é o número de micro-períodos (Figura 2). Figura 2 – Matriz de seqüência. Cada entrada (t,n) corresponde ao produto que ocupa determinado micro-período dentro de um macro-período. Duas entradas consecutivas não podem ser ocupadas pelo mesmo produto. A única exceção ocorre para a última entrada de um macro-período e a primeira entrada do macro-período seguinte que podem ser idênticas. Também não pode haver uma entrada sem produto entre duas entradas ocupadas em um mesmo macro-período. Suponha uma instância do problema com duas linhas, quatro produtos e dois macro-períodos divididos em quatro micro-períodos cada. A Figura 3 exemplifica a representação de uma possível solução ou partícula na OEP proposta. Observe que a linha L1 possui três produtos alocados no macro-período T1 e dois alocados em T2. A ordem dos produtos em cada período representa a sequência em que serão produzidos. Na linha L2, um único produto será produzido em T1 e três produtos em T2. Figura 3 – Exemplo da representação da solução. 3.2 Decodficação da representação da solução. A avaliação de uma solução consiste no cálculo do valor da função objetivo (equação 1) apresentada na seção 2. Esse processo exige a determinação dos custos de troca, estoque e a penalização por demanda não atendida. Os custos de troca são calculados a partir da sequência de produtos existentes em cada linha na representação da solução. Os custos de estoque e a penalidade por demanda não atendida exigem a determinação do dimencionamento dos lotes a partir das informações codificadas na representação da solução. Esse dimensionamento é feito através do método apresentado no pseudocódigo a seguir (Figura 4). Esse método é baseado no algoritmo greedy-mod proposto em Fleischmann & Meyr (1997) para o PGDLPP com máquinas simples. O método de decodificação é determinístico e define o tamanho dos lotes, minimizando o custo de estoque. Os parâmetros do algoritmo são descritos abaixo: Xljt - armazena o lote do produto j produzido na linha l no macro-período t. Yljt - número de lotes do produto j no macro-período t na linha l. 5 Dj – demanda acumulada (total) do produto j. ACjt - demanda acumulada do produto j até o macro-periodo anterior ao t. LSjt - limite superior estimado considerando que toda a capacidade disponível fosse utilizada para produzir o produto j em períodos anteriores ao t. para t=1 e para t>1 Xljs – lote do produto j produzido na linha l no micro-período s. Qj – quantia de demanda do produto j não alocada pelo metodo de decodificação. Método de dimensionamento de lotes t=T Enquanto (t≥1) faça //-----Garantindo lote mínimo-----Para toda linha l Para todo produto com (Yljt>0) p = Mínimo( Minj * Yljt ; Dj - ACjt ); Atualiza Xljt, Klt, Dj; Se Klt < 0 então Penalizar capacidade violada //Calcula a parcela a ser produzida //-----Evitando infactibilidades-------------Para todo produto j Q = Dj - LSjt; Para toda linha l com (Yljt>0 e Q > 0) p = Mínimo( Dj - ACjt ; Klt/TPlj ; Q ); Atualiza Xljt, Klt, Dj; //------Distribui em uma ordem gulosa----Para toda linha l e produto j com (Yljt > 0 ) em ordem decrecente de Hj/TPlj p = Mínimo( Dj - ACjt ; Klt/TPlj ); Atualiza Xljt, Klt, Dj; t = t-1 fim Enquanto Qj = Dj, para todo j. //----Distribui as demandas dos macro-período para os micro-períodos----Para todo l,j,t e s pertencente a St Se Yljt > 0 então Xljs = Xljt / Yljt; Senão Xljs = 0; fim do método. Figura 4 – Pseudo-código Método de Decodificação. O algoritmo trabalha preenchendo as quantias dos lotes em ordem decrescente de macroperíodo. Primeiro aloca o lote mínimo para os produtos atribuídos a micro-períodos na matriz de sequência das linhas. Em seguida, dimensiona os lotes para produtos que, se não forem produzidos no macro-período corrente, não haverá capacidade disponível para sua produção ou o produto não aparecerá em outra posição na matriz de sequência das linhas. O objetivo é evitar infactibilidades. Por último, todos os produtos alocados na matriz de sequencia das linhas têm seus lotes redimensionados, seguindo a ordem decrescente do quociente Hj/TPlj. A Figura 5 abaixo demonstra como são atualizadas as quantias Xljt, Klt e Dj pela parcela p de demanda que será produzida. 6 Atualiza Xljt, Klt, Dj dada uma parcela de demanda p calculada Xljt = Xljt + p; //Adiciona a parcela, a quantia a ser produzida Klt = Klt - p * TPlj; //Subtrai a capacidade para produzir a quantia p. Dj = Dj - p; //Nova demanda do produto que deverá ser atendida. Figura 5 – Atualizar Xljt, Klt, Dj 3.3 Algoritmo OEP A Figura 6 e 7 apresentam o pseudocódigos para a OEP proposta. Uma partícula pode assumir diversas representações da solução durante a execução do método. Neste contexto, cada representação da solução de uma partícula é a posição assumida por esta no espaço de busca. No pseudocódigo, Pi é o conjunto com a posição (representação da solução) atual das partículas i. Mi é o conjunto que armazena a melhor posição onde as partículas Pi já estiveram. O pseudo-código força que essa melhor posição seja reinicializada após um certo número de iterações. O objetivo é não ficar preso a uma mesma melhor posição durante todo o código. Pg é a melhor posição alcançada pelo enxame de partículas. Prand é uma partícula aleatória, que pode ser totalmente aleatória ou gerada pela recombinação de partículas existentes através de mudanças aleatórias. Pesos(j) define a probabilidade de escolher a partícula j para recombinação. A atualização dos pesos é dinâmica, ou seja, fica variando entre um valor mínimo e máximo. Essa variação é ditada pelo parâmetro d(j) que determina a quantia adicionada ou subtraída de Peso(j): o PesoMáximo(j) ≥ Pesos(j) ≥ PesoMínimo(j) OEP Inicializa as particulas Pi, Mi. Pg = Melhor(Pi); Enquanto critério não for atingido Escolhe um tipo Prand usada na recombinação. Restarta Mi Para cont=1 até 20 Pi = Ocila(Pi,Mi,Pg, Prand); // para toda partícula Atualiza Pg e Mi; Atualiza os pesos(j) dos vetores de recombinação. Fim OEP Figura 6 – Pseudocódigo para OEP Ocila(Pi) m = Reconbinação(Pi, Mi, Pg, Prand); //para toda partícula Para cont = 1 até 40 aux = Reconbinação(Pi, Mi, Pg, Prand); //para toda partícula Se avaliação(aux) < avaliação (m) //para toda partícula m = aux; //armazena partícula com melhor valor em Pi Retorne m; Fim Ocila Figura 7 – Pseudocódigo para o método Oscila Cada partícula oscila em torno de um ponto antes de efetuar um movimento. O objetivo é garantir que seu próximo movimento tenha um ganho significativo ou garantir pelo menos que o movimento não piore muito a posição atual da partícula. Para efetuar o movimento de uma partícula, o método proposto utiliza uma recombinação envolvendo quatro vetores que armazenam posições (representações da solução) de partículas. O primeiro vetor armazena a posição atual das partículas (Pi), o segundo vetor armazena a melhor posição alcançada pelas partículas (Mi), o terceiro vetor armazena a melhor posição já obtida por todo o enxame (Pg) e o quarto vetor armazena uma posição aleatória (Prand). A recombinação gera novas posições para as partículas baseada em sequências de produtos herdadas das representações 7 armazenadas nos quatro vetores (Figura 8). A seleção de qual vetor irá contribuir segue uma probabilidade de escolha definida como: Probabilidade de escolher o vetor j. Recombinação(Pi, Mi, Pg, Prand) Para cada partícula Para cada linha-l Para cada macro-periodo-t Seleciona um vetor j de acordo com Probabilidade(j). Preeche uma nova particula com a sequencia em l e t do vetor selecionado.. Atualiza particula em Pi com nova partícula; Retorna Pi com partículas atualizadas. Fim Recombinação Figura 8 – Pseudocódigo para recombinação Duas abordagens são propostas para execução da OEP. A primeira chamada OEP1 permite que os valores dos pesos Pesos(j) variem no decorrer da execução do método. Para isso, valores máximos e mínimos são ajustados para cada peso. Também são ajustados o valor inicial dos pesos e a taxa de decréscimo ou acréscimo relacionada. Durante a execução, os pesos irão aumentar ou diminuir sem ultrapassar os valores máximos e mínimos estabelecidos. Na segunda abordagem chamada OEP2, não há variação dos pesos e o método é executado com o valor inicialmente atribuído a cada Peso(j). 4. Resultados computacionais Os testes computacionais foram executados em instâncias do PGDLPP com máquina simples e máquinas paralelas. As instâncias são as mesmas definidas e solucionadas em Toledo et al (2009). No PGDLPP com máquinas simples, os autores utilizaram um total de 4 conjuntos com 10 instâncias cada com os parâmetros apresentados na Tabela 1. Os valores dos parâmetros foram estabelecidos por Haase (1996) na resolução do PGDLPP com máquinas simples, onde U(%) é a porcentagem de utilização da capacidade disponível. Todos os demais parâmetros do problema também foram ajustados pelos mesmos valores utilizados por Haase (1996): djt{0,1,...,100}, Hj=1,TP1j=1, CTij{100,...,200} para i≠j e CTij=0 para i=j, M=10000 e Minj = 1. O modelo matemático da seção 2 e as instâncias geradas foram codificados utilizando o pacote computacional AMPL e solucionados pelo solver CPLEX 11.0 com tempo de execução de 1 hora. Conjuntos S1 S2 S3 S4 Macro-Períodos (T) 6 6 5 5 Micro-Períodos (S) 4 4 4 5 Produtos (J) 4 4 4 5 Capacidade (Ct) 200 200 200 250 U(%) 80 90 90 90 Tabela 1 – Conjuntos de Instâncias para o PGDLPP com uma única máquina. Os resultados obtidos pela OEP são comparados aos retornados pelo AMPL/CPLEX e pelo Algoritmo Genético (AG) também apresentados em Toledo et al (2009). O AG foi executado utilizando uma população com 13 indivíduos, 2,5 de taxa de crossover e 0,7 de taxa de mutação. OEP1 foi executada com 30 partículas, onde o vetor com a posição atual foi ajustado com peso inicial 0, taxa de crescimento 0,8 e limitante superior para o valor do peso em 10. O vetor com a melhor posição da partícula recebeu peso inicial 90, taxa de decaimento 8 1,6 e limitante inferior 0. O vetor com a melhor posição de todo o enxame recebeu peso inicial 0, taxa de crescimento 0,8 e limitante superior 80. O vetor aleatório recebeu valor inicial 10 e era ajustado durante a execução de forma que a soma dos pesos resultasse em 100. OEP2 foi executada todo o tempo com o mesmo valor inicial atribuído aos pesos da OEP1. Todos os testes foram realizados em um processador Intel Corel 2 Duo, 2,66 GHz e 1,95 GB RAM. As metaheurísticas executaram 10 vezes em cada uma das 10 instâncias de cada conjunto. O tempo de execução por instância foi limitado a 0,5h, ou seja, metade do tempo dado ao método exato. As Tabelas 2 e 3 apresentam os resultados para os quatro conjuntos de instâncias do PGDLPP com máquinas simples. S1 S1-0 AMPL 1658* S1-1 1421* S1-2 1700* S1-3 1459* S1-4 1543* S1-5 1402* S1-6 1477* S1-7 1463* S1-8 1480* S1-9 1626* AG 1658 0.0 1421 0.0 1700 0.0 1459 0.0 1551,4 0.5 1402 0.0 1486,5 0.6 1463 0.0 1487 0.5 1633,4 0.5 OEP1 1658 0.0 1421 0.0 1703 0.2 1471 0.8 1543 0.0 1402 0.0 1480 0.2 1463 0.0 1487 0.5 1628 0.1 OEP2 1658 0.0 1421 0.0 1703 0.2 1471 0.8 1543 0.0 1402 0.0 1480 0.2 1463 0.0 1487 0.5 1628 0.1 S2 S2-0 AMPL 1729* S2-1 1758* S2-2 2162* S2-3 1747* S2-4 1638* S2-5 1534* S2-6 1533* S2-7 1822* S2-8 1863* S2-9 1751* AG 1746 1.0 1758 0.0 2162 0.0 1748,2 0.1 1638 0.0 1534 0.0 1533 0.0 1833,8 0.6 1864,7 0.1 1751 0.0 OEP1 1729 0.0 1758 0.0 2162 0.0 1747 0.0 1638 0.0 1539 0.3 1533 0.0 1822 0.0 1863 0.0 1751 0.0 OEP2 1729 0.0 1758 0.0 2162 0.0 1747 0.0 1638 0.0 1539 0.3 1533 0.0 1822 0.0 1863 0.0 1751 0.0 Tabela 2 – Resultados obtidos para o PGDLPP com uma única máquina em S1 e S2. S3 S3-0 AMPL 1269* S3-1 1491* S3-2 1338* S3-3 1530* S3-4 1663* S3-5 1542* S3-6 1553* S3-7 1518* S3-8 1526* AG 1269 0,0 1491 0,0 1338 0,0 1530 0,0 1667 0,3 1542 0,0 1553 0,0 1532,1 0,9 1526 OEP1 1279 0.8 1491 0.0 1338 0.0 1530 0.0 1663 0.0 1542 0.0 1553 0.0 1518 0.0 1526 OEP2 1279 0.8 1491 0.0 1338 0.0 1530 0.0 1663.4 0.02 1542 0.0 1553 0.0 1518 0.0 1526 S4 S4-0 AMPL 1833 S4-1 1986 S4-2 1825 S4-3 1674 S4-4 1974 S4-5 1994 S4-6 1790 S4-7 1786 S4-8 2150 AG 1861,5 1,6 1989,6 0,2 1827,2 0,1 1681,8 0,5 1974 0,0 2011,3 0,9 1793,3 0,2 1784,8 -0,1 2195,4 OEP1 1833 0.0 1986 0.0 1805 -1.1 1779 6.3 1974 0.0 1994 0.0 1790 0.0 1777 -0.5 2139 OEP2 1833 0.0 1986 0.0 1806,9 -1.0 1779 6.3 1974 0.0 1995,5 0.1 1790 0.0 1777 -0.5 2139 9 S3-9 1441* 0,0 1441 0,0 0.0 1441 0.0 0.0 1441 0.0 S4-9 1782 2,1 1788,7 0,4 -0.5 1782 0.0 -0.5 1782 0.0 Tabela 3 – Resultados obtidos para o PGDLPP com uma única máquina em S3 e S4. As Tabelas 2 e 3 listam os resultados obtidos pelo AMPL/CPLEX e o valor médio da solução final obtida nas 10 execuções das metaheurísticas. Também é apresentado o desvio Desv(%)=100*(Z-Z*)/Z*, onde Z é o valor médio da solução final obtida pela metaheurística e Z* é o valor da solução final retornada pelo AMPL/CPLEX. Os valores na coluna AMPL sinalizados com * indicam solução ótima. AMPL/CPLEX retornou a solução ótima ao final de todas as execuções em S1, S2 e S3. No conjunto S4, o AMPL/CPLEX retornou a melhor solução factível encontrada após 1 hora de execução. OEP1 e OEP2 foram capazes de encontrar a solução ótima na maioria das instâncias em S1, S2 e S3. Os valores negativos de alguns desvios em S4 indicam que as metaheurísticas retornaram em média soluções melhores que aquelas encontradas pelo AMPL/CPLEX. O AG também apresenta soluções melhores que o AMPL/CPLEX. Todavia, OEP1 e OEP2 superam os resultados médios do AG em 3 instâncias no conjunto S1, sendo um desses resultados (S1-3) com valor médio no ótimo (Desv(%)=0.0). Nas instâncias do conjunto S2, OEP1 e OEP2 superam os resultados do AG em 4 instâncias com 4 médias no valor ótimo (S2-0, S2-3, S2-7 e S2-8). O AG supera OEP1 e OEP2 em apenas 1 instância tanto em S1 quanto em S2. Nos demais resultados os métodos obtiveram os mesmos resultados. OEP1 e OEP2 superam AG em S3 com 2 resultados (S3-4 e S3-7) no valor ótimo. O AG obtém o melhor resultado em 1 instância no conjunto S3. Não há instâncias com solução ótima no conjunto S4, onde OEP1 e OEP2 superam AG em 7 instâncias. AG supera esses métodos novamente em uma única instância. Todos os 7 melhores resultados obtidos por OEP1 e OEP2 são iguais ou melhores que aqueles obtidos pelo AMPL/CPLEX. A Figura 9 apresenta os desvios total médio obtidos por cada método considerando os conjuntos de instâncias. Observe que OEP1 e OPE2 apresentam praticamente o mesmo desvio em todos os conjuntos e superam o desempenho médio do AG. Figura 9 – Desvio médio em S1, S2, S3 e S4. O PGDLPP com máquinas paralelas foi solucionado usando os mesmos três conjuntos de instâncias (P1, P2 e P3) apresentados em Toledo et al (2009). Os parâmetros utilizados na geração dessas instâncias foram T=6, S=4, J=4, Ct=200, onde apenas o número de linhas variou com L=2 em P1, L=3 em P2 e L=4 em P4. Os demais parâmetros permaneceram como antes, exceto TPlj e U. Agora TPlj [0,1] passa a variar por produto e linha e a taxa de 10 utilização foi fixada em U= 80%. Um total de 5 instâncias foi gerado para cada um desses conjuntos. O AMPL/CPLEX também foi utilizado na resolução exata dessas instâncias com tempo de execução de 1 hora. As metaheurísticas foram executadas por 0,5h; Assim com nas maquinas simples, tiveram metade do tempo destinado ao método exato. As Tabela 4 e 5 apresentam os resultados obtidos. P1 AMPL AG OEP1 OEP2 P2 AMPL AG OEP1 OEP2 P1-0 5819,8 P2-1 5364,3 P1-2 4371,5 P2-2 6375,3 P1-3 5043,8 P2-3 7045,4 P1-4 4536,9 4291,4 -26.3 4245,2 -23.7 3673,7 -16.0 4019,9 -20.3 4161,4 -8.3 5730,2 5561,0 4241,3 -27.1 4169,6 -25.0 3650,5 -16.5 3998,4 -20.7 4153,3 -8.5 P2-0 P1-1 4869,1 -16.3 4653,4 -16.3 4052,3 -7.3 4380,5 -13.1 4411,8 -2.7 P2-4 6666,0 4711,4 -17.8 4913,7 -8.4 5183,6 -18.7 5326,4 -24.4 5552,1 -16.7 3793 -33.8 3899,6 -27.3 4244,8 -33.4 4091 -41.9 4186,1 -37.2 3811,4 -33.5 3900,4 -27.3 4302 -32.5 4126 -41.4 4258,9 -36.1 Tabela 4 – Resultados obtidos para o PGDLPP com máquinas paralelas em P1 e P2. P3 AMPL P3-0 5679,6 AG OEP1 OEP2 4711,4 3711,8 3797,7 -17.0 -34.6 -33.1 P3-1 7713,1 4913,7 3726,5 3863,3 -36.3 -51.7 -49.9 P3-2 7806,1 5183,6 3695,3 3865,9 -33.6 -52.7 -50.5 P3-4 7836,7 5552,1 3798,7 3973,4 -29.2 -51.5 -49.3 P3-5 7130,8 5530,8 3690,5 3771,9 -22.4 -48.2 -47.1 Tabela 5 – Resultados obtidos em P3. O AMPL/CPLEX não foi capaz de retornar soluções ótimas ao final de 1 hora de execução em P1, P2 e P3. Por outro lado, as metaheurísticas propostas superaram os valores das soluções finais obtidas pelo AMPL/CPLEX na maioria das instâncias. OEP1 e OEP2 superam o AG em todas as instâncias do PGDLPP com máquinas paralelas. OEP1 obtém os melhores resultados em todos os conjuntos. A Figura 10 apresenta os resultados médios em cada conjunto. O desempenho médio de OEP1 não é muito diferente do obtido por OEP2. Isso indica que a abordagem de ajuste dos pesos, durante a execução, representou uma pequena melhoria no desempenho do método OEP1. Por outro lado, as duas abordagens mativeram desempenho bastante superior ao AG. 11 Figura 10 – Desvio médio em S1, S2, S3 e S4. 5. Conclusões O presente trabalho propôs métodos de resolução para o Problema Geral de Dimensionamento de Lotes e Programação da Produção (PGDLPP) com e sem máquinas em paralelo, e com penalização por demandas não atendidas. Um modelo matemático foi apresentado e duas abordagems baseadas em otimização por enxame de partículas foram propostas. A primeira utiliza um ajuste dinâmico dos pesos dos vetores de posição das partículas (OEP1). A segunda é executada todo o tempo com os mesmos pesos. Um total de 7 conjuntos de instâncias são solucionados e comparados aos resultdados obtidos pelo AMPL/CPLEX e por um algoritmo genético com estrutura hierarquica de indivíduos. Nas instâncias do PGDLPP com máquinas simples, tanto OEP1 quanto OEP2 apresentam desvios abaixo de 0.5% em relação ao AMPL/CPLEX. Os métodos superam ou igualam a maioria dos resultados obtidos pelo AG. Não há uma diferença relevante de desempenho médio entre OEP1 e OEP2 nessas instâncias. Isso se repete durante a resolução dos conjuntos de instâncias do PGDLPP com máquinas paralelas. OEP1 consegue melhores resultados que OEP2 na maiora das instâncias, mas a diferneça desses resultados na média de cada conjunto é pequena. Dessa forma, o ajuste de pesos durante a execução melhorou o desempenho do método mas não de forma expressiva. Os resultados obtidos permitem concluir que as duas abordagens baseadas em otimização por enxame de partícula conseguem melhores resultados que o AG, anteriormente proposto para o mesmo problema. Além disso, o desempenho médio de OEP1 e OEP2 foi bastante superior ao AG principalmente nos conjuntos de instâncias mais complexos. Referências ALI, M.M. & KAELO, P. Improved particle swarm algorithms for global optimization. Applied Mathematics and Computation Vol. 196, p.578-593, 2008. BITRAN, G. R. & YANASSE, H. H. Computational complexity of the capacitated lot size problem. Management Science Vol. 28, n. 10, p.1174-1186, 1982. CHEN, W.H. & THIZY, J.M. Analysis of relaxations for the multi-item capacitated lot-sizing problem. Annals of Operations Research Vol. 26, p. 29-72, 1990. CHEN, T. & CHI, T. On the improvements of the particle swarm optimization algorithm. Advances in Engineering Software. Vol. 41, p. 229-239, 2010. CHEN, D. & ZHAO, C. Particle swarm optimization with adaptive population size and its application. Applied Soft Computing Vol. 9, no. 1, , p. 39-48, 2009. 12 DE CASTRO, L.N. & VON ZUBEM, F.J. IEEE Learning and Optimization Using the Clonal Selection Principle. IEEE Transactions on Evolutionary Computation, Special Issue on Artificial Immune Systems, Vol. 6, no. 3, p. 239-251, 2002 FLEISCHMANN, B. & MEYR, H. The general lotsizing and scheduling problem. ORSpektrum Vol. 19, p.1121, 1997. GOREN, H.G; TUNALLI, S. & JANS, R. A review of applications of genetic algorithms in lot sizing. Journal of Intelligent Manufacturing, Published online: 04 December 2008. HAASE, K. Capacitated lot-sizing with sequence dependent setup costs. ORSpektrum Vol. 8, p.51-59, 1996. HOLLAND, J.H. Adaptation in natural and artificial systems. The University of Michigan Press, 1975. JANS, R. & DEGRAEVE, Z. Metaheuristics for dynamic lot sizing: A review and comparison of solution approaches. European Journal of Operational Research Vol. 177, p.1855-1875, 2007. KAELO, P. & ALI, M.M. Integrated crossover rules in real coded genetic algorithms. European Journal of Operational Research Vol. 176, p.60-76, 2007. KANG, S., MALIK, K. & THOMAS, L.J. Lotsizing and scheduling on parallel machines with sequencedependent setup costs. Management Science Vol. 45, p.273-289, 1999. KENNEDY, J. & EBERHART, R.C. Particle swarm optimization. In: Proceedings of IEEE International Conference in neural networks, p.1942-1948, 1995. KENNEDY, J., EBERHART, R. & SHI, Y. Swarm Intelligence. Morgan Kaufmann Publishers Inc, San Francisco, CA, 2001. MEYR, H. Simultaneous lotsizing and scheduling on parallel machines. European Journal of Operational Research Vol. 139, p. 277-292, 2002. TOLEDO, C.F.M., FERREIRA, J. E., SIMEONE, F. & ROSA, G.P. Metaheurísticas Aplicadas ao Problema Geral de Dimensionamento de Lotes e Programação da Produção. In: XLI SBPO Simpósio Brasileiro de Pesquisa Operacional, Porto Seguro, BA. 2009. 13