Apoio à Tomada de Decisão no Planeamento e
Transcrição
Apoio à Tomada de Decisão no Planeamento e
! #$ %&&' # " ! ( ) $ ( * - + . + ) #$ * %&&' # " , / 0 1 + 0 2 3 / 4 / 5 6 7 / / 0 + 5 / / , / 7 + / / ) 4 ! 3 0 ! 3 8 0 ) + 9 3 0 1 9 + 3 3 / 0 9 0 3 7 4 ) 7 0 9 - 4 3 1 9 2 4 4 0 , 1 0 9 9 0 1 9 / , 3 : 1 9 , / 0 7 1 6 3 2 " 0 ;" < , 0 + 0 9 0 4 9 6 " 3 = 1 / ) 1 3 ) 0 4 > = 4 4 ? 9 0 6 4 4 > 4 4 = 0 // 4 > = > 4 0 + ? / 40 9 ? = / // = 6 4 ? / 4 0 4 ? 9 / // 4 0 4 / / 4 0 4 > 4 > 49 4 4 4 4 > 7 / ?0 ( 0 / 4 0 @ 4 9 6 = / 0 3 ? 4 > 40 ? / 4 4 0 4 40 @ " "? 0 ; ""< 4 + 4 > 4 4 /= / 9/ > / 6 ? 4 / / 4 4 4 A 7 = 0 > = ? ? 9 4 0 > 4 4 4 4 4 4 4 4 + @ 4 > = 4 / 4 / = ? 0 4 4 "" / 4 ? / 4 0 4 0 / - 3 + - ) + + / / $ - B ! , + + 0 ( 3 0C " /,3 / 0 4 E0 8 F + 3 D / 2 + 8 / ;3 1 7 G ) B <+ 4 3 + / + G F + 3 9 2 0 + 0 + # 4 / D E 0 : G - G - 7 0 * + 9 H A 3 1 4 + 4 0 G + + + 3 0 ( / ! + 3 6 + B / ! 3 ) + + ) ; MM H%H%0NH H%&IJHKL<+ 6 H$ + 0. $ H%&IJHKL M " 3 " 0 $ 3 08 0 ( 6 + 4 ( 0 3 ( * - 4! 0 0 4 O / 7 7 7 N N0N $ N0% 6 N0' 3 N0'0N N0'0% N0'0' $ N0I N0L , % N 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000% 0000000000000000000000000000000000000000000000000000000000000000000000000000000I 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000J 4 ! 3 00000000000000000000000000000000000000000000000000J 4 ! 3 000000000000000000P 00000000000000000000000000000000N& 1 0000000000000000000000000000000000000000000000000000000000000000000000000000NI 7 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000NL NK 7 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000NK 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000%% 000000000000000000000000000000000000000000000000000000000000000000000000%I %0'0N / 0000000000000000000000000000000000000000000000000000000000000%I %0'0% / / 0000000000000000000000000000000000'& %0I 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'I %0N %0% %0' ' 4 '0N $ '0% A '0' 3 '0I '0L ! 3 3 4 'L 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'J 00000000000000000000000000000000000000000000'Q : 4 ! 3 000000000000000000000000000I& D = E D E00000000000000000000000000000000000000000II ! 3 0000000000000000000000000000000000000000000000000IJ I I0N I0% I0' I0I I0L LN 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 L% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 LI I0%0N / 000000000000000000000000000000000000000000000000000000000000000000000000 LI I0%0% $ , 00000000000000000000000000000000000000000000000000000000000 J& I0%0' 0000000000000000000000000000000000000 JN I0%0I / 000000000000000 JQ $ , 82 1 00000000000000000000000000000000000000 QI I0'0N / 000000000000000000000000000000000000000000000000000000000000000000000000 QJ I0'0% A $ , 82 1 QP I0'0' 00000000000000000000000000000000000000000000000000000000000000000 P' $ , 82 $ 8 4 00000000 PQ I0I0N ( 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 PQ I0I0% / 000000000000000000000000000000000000000000000000000000000000000000000000 KN I0I0' A 0000000000000000000000000000000000000000000000000000000000000000000000 K% I0I0I 0000000000000000000000000000000000000000000000000000000000000000000000000 KP 3 9 6 0000000000000000000000000000000000000000000000000 N&' I0L0N / 1 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 N&J I0L0% 4 0000000000000000000000000000000000000000000000000000000000000000000000000 N&P I0L0' $ 9 6 00000000000000000000000000000000000000000000000000000000000000000000000000000 NNN I0L0I , 9 6 00000000000000000000000 NNI I0L0L 00000000000000000000000000000000000000000000000000000000000000000000000 N%L L NIN 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 NI% 3 0000000000000000000 NII L0%0N / 1 0000000000000000000000000000000000000000000000000000000000000000000000000 NII L0%0% A 3 00 NIQ L0%0' ! 1 000000000000000000000000000000000000000000000000000000000000000000 NLI L0' 000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 NLL L0'0N # 4 000 NLL L0'0% $ 00000000000000000000000000000000000000000000 NJL 0 ( 1 000000000000000000000000000000000000000000000000000000000000000000000000000000000 NJL 0 7 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 NQN 0 $ 00000000000000000000000000000000000000000000000000 NQL 0 ( / $00000000000000000000000000000000000000000000000000000000000000 NQL L0'0' 00000000000000000000000000000000000000 NQJ 0 0000000000000000000000000000000000000000 NQQ 0 : ,000000000000000000000000000000000000000000000000000000000000 NK& 0 / 1 000000 NK% 0 / 00000000000000000000000000000000000000000000000000000000000000000 NK' L0N L0% 0 4 L0'0I 7 ) 0 0 L0'0L ! J " J0N J0% J0' ( J0'0N J0'0% J0'0' J0I ! J0L Q F 1 / 1 00000000000000000000000000000000000000000000000000%&& 0000000000000000000000000000000000000000000000000000000000000%&% 5 00000000000000000000000000000000000000000000000000000000000000%&% 00000000000000000000000000000000000000000000000000000000000000000%&' 00000000000000000000000000000000000000000000000000000000000000000000000%&K %NN 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%NN " R 000000000000000000000000000000000000000000000000000000%NI " 000000000000000000000000000000000000000000000000000000000000000000000000000000%NQ 00000000000000000000000000000000000%NQ 0000000000000000000000000000000000000000000000000000000000000000000000000%%& 000000000000000000000000000000000000000000000000000000000000000000000%%' 4 0000000000000000000000000000000000000000000000000000000000000000000000%%I / 7 00000000000000000000000000000000000000000000000000000000000000000000000000000000000%%Q %%K %'L / N0NB 3 ! 4 ! 3 00000Q %0NB 000000000000000000000000000000000000000000000000000000000%N %0%B / 4 00000000000000000000%' %0'B 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' %0IB / - 7 000000000000000000000000000000000000000000000000000000000000%I %0LB 6 4 000000000000000000000000000000000000000000000000%L %0JB 000000000000000000000000000000000000000000000000000000000000000000000%J %0QB * 6 000000000000000000000000000%J %0PB 000000000000000000000000000000000000000000000000000000000000000000000000000000000000%Q %0KB 4 : / 000000000000000000000000000000000000%Q %0N&B 7 000000000000000000000000000000000000000000000000000000000000000000000%K %0NNB / 4 , 0000000000000000000000000000000'N %0N%B 7 0000000000000000000'' '0NB ; ST + NKKNU< 'J '0%B 1 4 ! 3 0000000000000000000000000000000000000000000000000000000000000I% '0'B ) 4 ! 3 0000000000000000000000000000000000000IQ I0NB 0000000000000000000000000000000000000000000000000000L' I0%B '9 V 0000000000000000000000000000000000000000000QQ I0'B 1 2 1 000000000000PJ I0IB 7 '9 0000PJ I0LB 2 4 # NW 0000000000000K& I0JB 2 4 # %W 0000000000000K& I0QB 7 .V 00000000000000000000000000000000000000000000000000000000KN I0PB $ 4 8$ / 000000000000000000000000000000N&& I0KB 4 4 % 00000000000000000000000000000000000000000000000000000000000000000N&N I0N&B 9 6 B 000000000000000000000000000000000000000NN% I0NNB ( 0000000000000000000000000000000000000000NNL I0N%B M000000000000000000000000000000000000000000000000000000000000000000NNP I0N'B 0000000000000000000000000000000000000000000000000000000NNP L0NB 1 $ : 000000000000000000000000000000000000000NQ' L0%B 1 $ : # 00000000000000NQI J0NB 3 ) 000000%NI J0%B / = 0000000000000000000000000000000%NP J0'B ! 1 4 000000000000000000%NK J0IB 7 6 00000000000000000000000%NK J0LB 7 J0JB " J0QB 7 J0PB * J0KB J0N&B 000000000000000000000000000000000000000000000000000000000000 %%N / 00000000000000000000000000000000000000000000000000000000000000000000000000000000 %%N 0000000000000000000000000000000000000000000000000000000000 %%% : 00000000000000000000000000000000 %%' 7 ; 1 < 00000000000000000000000000000000000000000000000000000 %%L 3 " # R ! 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %%J %0NB I0NB I0%B I0'B I0IB / 0000000000000000000000000000000000000000000000000000000000000000000000000000%% '9 0000000000000000000000000000000000000PI 5 !/ / I0'0000000000000000000000000000000000PJ 3 $$8 00KK 7 ! 4 2 4 # N 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000N&Q I0LB 7 ! 4 2 4 # % 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000N&P I0JB " ! $ $ 000000000000000000000000000000000000000NNN I0QB * 000000000000000000000000000000000000000000000000000000000000000000000000000000000NN' I0PB . $ $ 000000000000000000000000000000000000000000000000000000000NNI I0KB 5 1 N %H 5 000000000000000000000000000N%Q I0N&B 5 # 5 N 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000N%K I0NNB 5 # 5 % 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000N'& I0N%B 5 1 .N$ .%$ H 5 000000000000000N'% I0N'B 5 # 5 ' 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000N'' I0NIB 5 # 5 I 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000N'I I0NLB 5 # .N .% N0000000000000000000000000N'L I0NJB 6 5 L 00000000000000000000000000000000000000000000000000000000000000000000N'J I0NQB 5 # .N$ .%$ L 000000000000000000N'Q L0NB / # 7 0000000000000000000000000000000000000000NLN L0%B X , / # 7 0000000000000000000000000000000NL% L0'B F 4 3 # 7 000000000000000000000000000000000000000000000000000000000000000NL% L0IB " 1 3 # 7 00000000000000NL' L0LB 5 000000000000000000000000000000000000000000000000000000000000000000%&I L0JB 00000000000000000000000000000000000000000000000000%&J L0QB # 000000000%&Q L0PB # 7 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%&P I0NB I0%B / I0'B I0IB I0LB A I0JB A I0QB A I0PB A I0KB L0NB A L0%B L0'B 9 4 000000000000000000000000000000000000000000000000JI 0000000000JK 4 =9 000000000000000000000000000000000000QL '9 00000000000000000000000000000000000000000000000000000000000000000000000000000000000P& 000000000000000000000000000000000000000000000000000000000000000000000000000000000000KI , 4 :7 $$8000000000000000000000000000000000000000000KL $$8 00000000000000000000000000000000000KJ %9 $$800000000000000000000000000000000000000000000000000000000000000KP " % 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000N%& 3 000000000000000NIK A > ,9" 4 / 0000000000000000000000000000000000000000000000000000NPK 000000000000000000000000000000000000000000000000%&N Capítulo 1 Introdução O planeamento e escalonamento da produção para um sistema produtivo real, na indústria papeleira, é uma tarefa extremamente complexa. Na presença de vários objectivos, alguns dos quais conflituosos, e de um elevado número de restrições, é necessário coordenar as interacções entre os diferentes níveis funcionais e operacionais. O funcionamento do sistema depende da colocação de encomendas para proceder ao planeamento e programação da produção, o que lhe confere muito dinamismo e instabilidade. Para responder a elevados níveis da procura e por motivos económicos é necessário explorar ao máximo a capacidade disponível, que é limitada. À minimização de perdas de produção, inerentes ao processo de fabrico, correspondem problemas muito complicados. Nestas condições, são necessários mecanismos de planeamento adequados, eficientes e eficazes, mas também suficientemente flexíveis para lidar com situações de instabilidade. O recurso a um Sistema de Apoio à Decisão permite a elaboração dos planos e programas de 2 Capítulo 1 produção, e facilita a coordenação e cooperação das diferentes estruturas envolvidas no processo. Neste capítulo introdutório, apresentam-se os aspectos que motivaram a elaboração desta dissertação e os objectivos que a orientaram. Enquadra-se o trabalho na área do conhecimento de Investigação Operacional. Relatam-se as contribuições e os resultados que se alcançaram, e descreve-se a organização do texto. 1.1 Motivação Em 1991, a empresa PORTUCEL - Empresa de Celulose e Papel de Portugal, EP, estabeleceu com o ICAT (Instituto de Ciência Aplicada e Tecnologia) o projecto Modelos de Planeamento/Sequenciamento da Produção, de cooperação entre a universidade e a indústria. Este projecto visava a concepção e desenvolvimento de um Sistema de Apoio à Decisão (SAD) para o planeamento da produção na fábrica de Viana. A participação neste projecto originou a investigação dos problemas de planeamento e escalonamento da produção com que se deparam os produtores na indústria papeleira. Em [Respício, 1994] apresentam-se e discutem-se os resultados alcançados. Posteriormente (1996/1997), no âmbito da colaboração Universidade / Empresas, a Portucel Industrial - Empresa Produtora de Celulose, SA, e o ICAT estabeleceram o projecto Adaptação e Extensão do Sistema de Apoio ao Planeamento de Produção e Corte de Papel. O objectivo era expandir e adaptar, para a fábrica de Cacia, o SAD já desenvolvido. Os resultados acabaram por ser bastante amplos, não se resumindo a uma nova parametrização ou adição de funcionalidades ao sistema já existente, e descrevem-se em [Captivo, Respício e Rodrigues, 2000]. Apesar de se terem preservado algumas características do SAD original, reformulou-se o modelo de tomada de decisão e, consequentemente, os modelos associados a alguns dos subproblemas. Passaram ainda a tratar-se outros subproblemas. Ambas as fábricas produzem bobinas de papel kraftliner numa base de produção por encomenda. Apesar de funcionarem segundo o mesmo processo Introdução 3 produtivo, existem diferenças relativamente à coordenação entre as estruturas funcionais intervenientes na tomada de decisão, à classificação dos artigos produzidos e às características técnicas da produção. O caso de estudo que suporta esta dissertação resulta da colaboração com a fábrica de Cacia. O sistema produtivo, o modelo hierárquico, o SAD e os exemplos que se apresentam derivam dessa experiência, salvo indicação em contrário. A Portucel tem passado por várias reestruturações nos últimos anos. As suas unidades têm um elevado posicionamento no mercado de pasta e papel, que é especialmente competitivo e agressivo. Hendry [Hendry, 1998] discute exaustivamente a questão da competitividade em empresas no sector da produção por encomenda e sugere alterações de grande impacto, nomeadamente: • Melhorar a exploração da capacidade; • Melhorar o fluxo da informação; • Melhorar a qualidade do planeamento; • Reduzir as perdas materiais e temporais1; • Utilizar previsão para antecipar a procura e melhorar os planos. Neste contexto, a principal tese desta dissertação é a seguinte: O apoio à tomada de decisão, na resolução do problema global de planeamento e programação da produção, pode promover alterações de grande impacto para o aumento da competitividade. O processo produtivo do caso de estudo inclui um processo de corte unidimensional cujo desempenho é uma componente fundamental no desempenho geral do sistema produtivo. Este facto motivou o estudo dos problemas relacionados com o problema de corte unidimensional. Apesar do elevado número de trabalhos na literatura da área de corte e empacotamento (cf. capítulo 4) e do crescente interesse nesta área 1 Melhorar o value for money. 4 Capítulo 1 [Wang e Wäscher, 2002], existe uma lacuna na intersecção desta área com a área de planeamento da produção. Uma excepção são os trabalhos [Hendry, Fok e Shek, 1996] e [Nonas e Thorstenson, 2000], que abordam aplicações específicas. Os sistemas produtivos reais têm uma capacidade de produção limitada e, como tal, o problema de corte deve ser encarado como uma componente dum problema mais amplo: o problema de planeamento e escalonamento da capacidade. Este aspecto conduz à formulação de uma outra tese mais concreta: Num sistema produtivo que inclui um processo de corte unidimensional, a integração do problema de corte com o problema de planeamento e escalonamento da capacidade permite melhorar a exploração da capacidade de produção. 1.2 Objectivos da investigação O principal objectivo desta dissertação é a resolução do problema global de planeamento e programação da produção no sistema produtivo do caso de estudo. A dificuldade do problema global e a organização funcional e temporal da tomada de decisão motivaram uma abordagem hierárquica. Identificaram-se os subproblemas a tratar, nomeadamente: • Problema de aceitação de encomendas; • Problema de planeamento e escalonamento da capacidade; • Problema de programação do corte; • Problema de previsão da procura1. Paralelamente, percebeu-se a responsabilidade e interacção das estruturas funcionais envolvidas no processo de tomada de decisão. Destas componentes emergiu o modelo de decisão hierárquico (cf. capítulo 3), que expressa as interacções entre os subproblemas e os agentes de decisão, e a hierarquia necessária à sua coordenação. A concepção deste modelo permite estabelecer uma 1 Os modelos de previsão não se descrevem nesta dissertação, podendo ser consultados em [Captivo, Respício e Rodrigues, 2000]. Introdução 5 correspondência entre o problema de aceitação de encomendas e o problema de planeamento e escalonamento da produção. Assim, tem-se como objectivos genéricos: • o estudo dos problemas associados ao planeamento e programação da produção em ambiente que recorre ao corte unidimensional e • o desenvolvimento de ferramentas adequadas ao seu tratamento. O trabalho percorre todo o corpo de problemas que se relacionam com o Problema de Corte (PC) unidimensional (Cutting Stock Problem). Aborda-se um caso particular do PC clássico – condiderando restrições particulares. Abordam-se alguns dos seus subproblemas (a jusante) e uma extensão (a montante). Os subproblemas incluem o problema de minimização dos movimentos das navalhas num plano de corte e os problemas de sequenciamento de padrões de corte de acordo com diferentes critérios. Integra-se o problema de corte com o problema de planeamento da capacidade. Esta extensão constitui uma contribuição inovadora para o corpo da literatura desta área. A formalização e a resolução exacta deste novo problema constituem um desafio, cuja abordagem se relata nesta dissertação. Tratou-se ainda o problema de escalonamento da capacidade. Dado o problema do caso de estudo (cf. capítulo 2), outro objectivo, mais concreto, foi o desenvolvimento de um sistema informático capaz de apoiar a tomada de decisão nos vários níveis do planeamento e programação da produção (cf. capítulo 6). Por último, construíram-se modelos matemáticos para os subproblemas a tratar e desenvolveram-se algoritmos adequados à sua resolução. A implementação de alguns destes algoritmos, em ambiente de apoio à decisão, deu origem a ferramentas informáticas de carácter modular, que se integraram no Sistema de Apoio à Decisão. 6 Capítulo 1 1.3 Enquadramento 1.3.1 Planeamento hierárquico da produção Os problemas de planeamento e escalonamento da produção em ambientes industriais são na generalidade muito complicados. A necessidade de tomar decisões com diferentes características — temporais, materiais e funcionais — na presença de numerosos objectivos conflituosos, assim como as características dinâmicas dos sistemas produtivos, conferem grande complexidade ao problema global. O Planeamento Hierárquico da Produção (PHP) é uma abordagem clássica que consiste em dividir o problema global em subproblemas que se interrelacionam. Referências fundamentais são os trabalhos de [Hax e Meal, 1975] e [Bitran e Tirupati, 1993]. A passagem de uma situação multi-objectivo para vários níveis de decisão e a estratificação da informação em diferentes níveis de agregação (restrição do espaço de soluções) tornam possível o tratamento computacional do problema global. Os níveis de tomada de decisão são estabelecidos tendo em vista a coordenação das áreas funcionais da organização e por forma a garantir a coerência das interdependências resultantes. A definição do nível de agregação e da duração do horizonte de planeamento são aspectos determinantes da adequação do modelo a desenvolver para cada um dos níveis de tomada de decisão. Por outro lado, a tomada de decisão ao nível operacional é adiada, tanto quanto possível, relativamente à sua implementação, reduzindo-se assim o nível de incerteza. Miller [Miller, 2001] descreve vários casos de estudo em que se utilizou uma abordagem hierárquica para o planeamento da produção. As decisões relativas ao planeamento e escalonamento da produção organizamse em três níveis de decisão, definidos em termos de horizonte temporal, conforme se ilustra na figura 1.1. Esta classificação é consensual e tem sido adoptada pela maioria dos autores. Introdução 7 Direcções de investimento e posicionamento no mercado • Localização • Fábricas • Capacidade • Recursos Nível estratégico restrições Planeamento agregado • Afectação das vendas • Afectação dos recursos à produção de categorias de produtos Planeamento e escalonamento detalhado • Programa de produção dos itens (quantidades e calendário) Decisões Muito agregada com origem externa mais resposta Nível táctico restrições 2 anos ou 3 a 24 Agregada com origem externa e interna meses resposta Nível operacional Nível de planeamento alguns dias a meses Horizonte Muito desagregada com origem interna Tipo de informação Figura 1.1: Enquadramento clássico para o planeamento hierárquico de produção Esta classificação das decisões não é necessariamente rígida, pois algumas decisões têm um carácter intermédio e podem ser tomadas mais ou menos tarde na hierarquia. Quanto mais elevado é o nível de tomada de uma decisão, maior é o impacto da sua implementação no funcionamento da empresa. Numa abordagem top-down, as decisões são tomadas sequencialmente ao longo da hierarquia. As decisões tomadas nos níveis superiores limitam os conjuntos de possíveis alternativas para as decisões a tomar nos níveis seguintes. Por outro lado, cada nível reage às restrições impostas pelo nível que lhe antecede na hierarquia. Neste tipo de hierarquia, não há garantia de que um plano definido no nível táctico constitua um objectivo alcançável ao nível operacional. Uma decisão pouco realista, tomada ao nível táctico, pode restringir as possíveis decisões ao nível operacional de tal modo que, por mais sofisticado que seja o algoritmo de escalonamento, não se conseguem eliminar os conflitos gerados. A admissibilidade de um plano agregado pode coexistir com a inadmissibilidade de um plano detalhado, quando algumas restrições de capacidade são violadas, [Axsäter, 1981]. Isto significa que 8 Capítulo 1 as restrições de capacidade podem eliminar a possibilidade de se atingir uma agregação perfeita. As decisões tomadas ao nível do plano agregado envolvem pessoas de diferentes áreas (marketing, finanças, compras e produção). A utilização de técnicas de gestão que mantenham todos os intervenientes com conhecimento do plano agregado e de acordo em cumpri-lo, tanto quanto possível, são provavelmente tão importantes como os modelos utilizados para estabelecer os planos, [Thomas e McClain, 1993]. Como refere Schneeweiss, no processo de gestão entre o planeamento e a implementação existe uma hierarquia, ou seja, tem-se um processo normativo de planeamento, numa situação em que é necessário incorporar conhecimento empírico [Schneeweiss, 1999]. A relação entre os diferentes níveis organizacionais de gestão não se resume a fazer corresponder o nível base à “operacionalização” dos níveis mais elevados. Existe uma relação mais subtil, que se pode traduzir em termos de instruções e antecipações, como se descreve no capítulo 3. 1.3.2 Apoio à decisão em planeamento hierárquico da produção Métodos e técnicas de Investigação Operacional permitem obter soluções para os subproblemas encontrados. A sua integração num ambiente interactivo, e de fácil utilização, faculta a manipulação das soluções e a avaliação de cenários alternativos. O responsável pelo planeamento fica disponível para se concentrar na geração e análise de alternativas, explorando ao máximo a sua expertise na resolução dos problemas. A gestão das inter-relações entre os vários subproblemas tem um papel fundamental e apesar destas emergirem da formalização do sistema real, a intervenção humana do agente de decisão influencia dinamicamente as suas consequências. Um SAD para o PHP inclui uma base de modelos que faculta a tomada de decisão nos diferentes níveis. O Agente de Decisão (AD) pode concentrar-se num determinado subproblema, mantendo uma perspectiva global e podendo interagir com os modelos correspondentes aos subproblemas nos outros níveis. Uma das principais características dum SAD é a flexibilidade. O sistema tem de ser Introdução 9 suficientemente flexível para se poder adaptar às mudanças que o AD vai requerendo no seu processo de percepção e avaliação de uma determinada situação. A resolução de modelos matemáticos para gerar alternativas deve de ser integrada com a extracção e a ordenação de informação, de uma forma fácil, mas que represente o processo cognitivo do AD. Os resultados devem ser apresentados num formato familiar para o utilizador e o sistema deve ser flexível no modo como aceita a introdução das preferências do utilizador (nem sempre as correctas), assim como nos mecanismos de interacção na geração de alternativas. Num sistema em que intervêm vários agentes, com objectivos individuais conflituosos, um SAD cuja utilização é partilhada pelos vários AD’s pode funcionar como um mediador na tomada de decisão. O SAD permite análises o-que-se e a geração de alternativas que optimizam um dado objectivo. Num processo de negociação/cooperação, o AD pode tirar partido destas funções para antecipar a reacção de outro participante simulando e avaliando a sua tomada de decisão. O apoio à decisão usando modelos matemáticos, complexos e de difícil percepção pelo AD, são integrados de forma a estabelecer uma correspondência com a cognição do AD. Os métodos utilizados ajudam o AD e o sistema a reduzir a complexidade computacional dos problemas. As necessidades e o contexto que se estabelecem ao nível cognitivo determinam a selecção de métodos apropriados, a sua organização para representar diferentes aspectos do problema e dos agentes de decisão, assim como a organização do processamento [Kersten e Cray, 1996]. Estes métodos suportam a computação necessária à construção de descrições e determinam a sua implicação para a percepção e a racionalidade na tomada de decisão. Em conjunto com outros métodos, como a extracção e o tratamento de informação das bases de dados e a construção de interfaces, constituem o nível instrumental da tomada de decisão (SAD). A subordinação do nível instrumental ao nível cognitivo resulta da realização da comunicação entre o analista e os AD’s envolvidos no processo. O projecto de um SAD que suporte vários AD’s e servindo de mediador entre AD’s com objectivos conflituosos, é uma tarefa bastante 10 Capítulo 1 complicada. Os utilizadores requerem que o sistema corresponda às suas representações para os problemas (mesmo quando estas são incorrectas), mas o sistema deve fornecer racionalidade. O sistema não tem necessidades nem capacidades cognitivas. Mas as necessidades e as capacidades cognitivas do AD têm grande importância no processo de tomada de decisão e, como tal, deve proporcionar-se alguma forma para o AD as expressar na interacção com o sistema. De outro modo, o sistema torna-se inadequado pois não corresponde à representação que o AD cria acerca do problema e do seu contexto. 1.3.3 Modelos e métodos de Investigação Operacional A essência da Investigação Operacional é a descrição de problemas de decisão através da formulação de modelos matemáticos e a posterior determinação de decisões óptimas, por análise ou resolução explícita dos modelos. A complexidade e as incertezas associadas ao problema de decisão enquadram-se de forma a permitir uma manipulação analítica e a obtenção de uma solução. O modelo deve incluir as variáveis de decisão essenciais ao processo de decisão, mas com um nível de detalhe que permita uma abordagem analítica. Como o modelo é uma representação da realidade, a sua solução pode não ser óptima para o problema de decisão. Assim, as soluções dos modelos são elementos que apoiam a tomada de decisão e os modelos devem ser concebidos de forma a facilitarem análises o-que-se. O planeamento, o escalonamento e a programação da produção têm tido bastante relevância no corpo de conhecimento da Investigação Operacional. Actualmente, é uma área autónoma, com ligações muito fortes com outras áreas, nomeadamente, a programação matemática, a optimização combinatória, a teoria dos grafos, as meta-heurísticas e a teoria da complexidade. Os problemas nesta área são, regra geral, muito complexos enquadrando-se muitos deles na categoria NP-difícil (sobre questões de complexidade consultar [Garey e Johnson, 1979]). Por outro lado, encontram-se inúmeras aplicações práticas. Apesar do grande número de contribuições teóricas, do desenvolvimento tecnológico e do crescimento da capacidade de processamento computacional, ainda não é possível resolver Introdução 11 algumas instâncias reais de forma exacta e/ou em tempo real. Recorre-se então a métodos ou técnicas heurísticas, que permitem obter soluções satisfatórias, eventualmente óptimas. Muitas vezes, na prática, os problemas são resolvidos, com grande regularidade e repetidamente, para conjuntos de dados diferentes. Assim, os melhoramentos nos algoritmos de resolução, em termos de desempenho e de qualidade das soluções obtidas, têm bastante impacto no desempenho global do sistema produtivo. Dada a natureza combinatória dos problemas de planeamento e escalonamento da produção, os modelos de Programação Linear Inteira (PLI) e de Programação Linear Inteira Mista (PLIM) são de grande aplicação nesta área. Nos últimos anos, tem-se assistido a grandes desenvolvimentos na utilização da PLI, devido essencialmente à concepção de novos algoritmos de resolução exacta (teoria dos planos de corte e teoria das desigualdades válidas, algoritmos de decomposição), ao aumento do poder computacional e ao desenvolvimento de programas mais eficientes para a resolução de modelos lineares [Wolsey, 1998]. Na literatura encontram-se numerosos casos de aplicação de modelos de PLI e PLIM ao problema de determinação de lotes1. Este problema consiste em determinar as quantidades, de um mesmo produto ou de diferentes tipos de produto, a produzir ao longo dum horizonte temporal. Regra geral, este problema integra-se com o problema de escalonamento. A combinação de diferentes parâmetros dá origem a diferentes tipos de problema. De entre estes parâmetros salientam-se: o tipo de horizonte de planeamento (discreto/contínuo, finito/infinito); a capacidade de produção (limitada/não limitada); a variação da procura (contínua ou não, determinista/estocástica, estacionária/dinâmica); a presença de set-ups e/ou start-up’s2 (tempos e/ou custos, dependentes/independentes da sequência); a 1 Este problema é designado, na literatura anglo-saxónica, por lot-sizing problem ou, alternativamente, por batching problem. 2 Por set-up entende-se a preparação do recurso produtivo necessária para proceder à produção consecutiva de dois produtos, ou tipos de produto, diferentes. Por start-up entende-se a preparação do recurso produtivo necessária para dar início à produção dum determinado produto ou tipo de produto. 12 Capítulo 1 estrutura do produto (um/vários níveis, um/vários produtos); a política de produção (com/sem atrasos, com/sem custos de atraso). Em [Kuik, Salomon e van Wassenhove, 1994] apresenta-se uma taxonomia para estes problemas e enquadram-se as respectivas abordagens de resolução presentes na literatura. O trabalho de [Drexl e Kimms, 1997] sumaria as principais contribuições que se encontram na literatura da especialidade. O problema de corte, que se descreve no capítulo 4, é formulado em PLI. Resolve-se a relaxação linear do respectivo modelo utilizando a técnica de geração implícita de colunas ([Gilmore e Gomory, 1963]) e o método revisto do simplex com variáveis limitadas. Geram-se novas colunas, resolvendo um problema saco mochila inteiro com restrições adicionais, que também se formulou em PLI. Neste caso, recorre-se a um algoritmo de programação dinâmica para resolver o problema. Também se utiliza um modelo de PLI para formular matematicamente o problema de planeamento da capacidade, ou problema de determinação de quantidades com capacidade limitada (cf. capítulo 5). Para a sua resolução utilizase um algoritmo de partição e geração de colunas1, um método que consiste em combinar o método de pesquisa em árvore com ramificação e limitação2 com a técnica de geração implícita de colunas. O algoritmo desenvolvido inclui ainda a geração e a introdução de planos de corte na raiz da árvore de pesquisa, de forma a alcançar melhores resultados. O subproblema associado à geração de novas colunas atractivas é um problema saco mochila múltiplo com variáveis binárias e restrições adicionais. Para a sua resolução, concebeu-se um algoritmo de pesquisa em árvore com ramificação e limitação especialmente adaptado às características do problema. O problema de sequenciamento de padrões de corte, considerando como critério a minimização do número de movimentos das navalhas, que se descreve no capítulo 4, relaciona-se com o problema do caixeiro viajante generalizado 1 Conhecido por branch-and-price na literatura anglo-saxónica. 2 Usualmente conhecido por branch-and-bound. Introdução 13 assimétrico. Para a resolução deste problema, propõe-se um algoritmo heurístico, baseado em regras de sequenciamento, e a extensão e adaptação de algumas heurísticas aplicáveis ao problema do caixeiro viajante. Os algoritmos que se baseiam em analogias com os processos da natureza designam-se, genericamente, por meta-heurísticas. Nesta classe de algoritmos, encontram-se, entre outros, a programação evolutiva, os algoritmos genéticos, o simulated annealing, a pesquisa tabu e as redes neuronais. Apesar do interesse por este tipo de algoritmos ter surgido há mais de cinco décadas [McCulloch e Pitts, 1943]1, só recentemente se tornaram de aplicação prática, com o aumento da capacidade de processamento computacional e, em especial, com o processamento paralelo. Embora com objectivos diferentes, a aplicação destas técnicas é partilhada pelas áreas de Investigação Operacional e de Inteligência Artificial. Por exemplo, a tecnologia de redes neuronais é utilizada para resolver problemas de previsão (Investigação Operacional), reconhecimento de padrões, modelação e sistemas de classificação (Inteligência Artificial). A programação evolutiva baseiase no princípio de evolução das espécies. Os trabalhos de Holland da década de 70, na concepção de algoritmos genéticos, são uma referência fundamental [Holland, 1995]. Os programas evolutivos adequam-se à resolução de problemas de optimização “difíceis”, onde se enquadram, entre outros, muitos problemas de sequenciamento/escalonamento e o problema do caixeiro viajante. Em [Michalewicz, 1994] apresenta-se uma descrição exaustiva das técnicas de programação evolutiva e de múltiplos exemplos de aplicação. Desenvolveu-se uma abordagem evolutiva para resolver um problema de sequenciamento de padrões bi-objectivo (cf. capítulo 4). O problema considera em simultâneo a minimização do espalhamento médio das encomendas e o problema de minimização do número máximo de pilhas abertas2. Adaptou-se um algoritmo 1 Em 1943, McCulloch e Pitts sugeriam uma estrutura que, imitando um neurónio humano, era capaz de representar qualquer expressão lógica finita. 2 Estes problemas são conhecidos na literatura anglo-saxónica, por minimisation of order spread problem e minimisation of open stacks problem, respectivamente. 14 Capítulo 1 evolutivo multi-objectivo. Experimentou-se uma versão puramente evolutiva e outra híbrida. No capítulo 5 apresenta-se o problema de planeamento e escalonamento da capacidade. Este problema consiste em determinar quantidades a produzir ao longo dum horizonte discreto e a respectiva sequência de produção, considerando tempos de mudança dependentes da sequência e permitindo atrasos na entrega. O algoritmo de resolução é uma heurística com estrutura hierárquica. Numa primeira fase integra as decisões relativas ao corte para determinação de quantidades a produzir ao longo de um horizonte discreto. Numa segunda fase resolve-se um problema de definição de quantidades e escalonamento num horizonte temporal contínuo. 1.4 Contribuições e resultados Esta dissertação apresenta várias contribuições teóricas e resultados práticos. Como principais contribuições destacam-se as que se seguem. • A construção de um modelo de decisão hierárquico, que representa o processo de tomada de decisão para o planeamento e escalonamento da produção na organização. • O desenvolvimento de uma nova heurística para o problema de minimização do número de padrões numa solução de corte (regra 3-optimal que permite a combinação de três padrões de corte em dois). Testes computacionais demonstraram a superioridade desta regra em relação às descritas na literatura [Respício, Captivo e Paixão, 1996]. • A concepção de um novo algoritmo para o problema de minimização do número de movimentos das navalhas num programa de corte – problema que se enquadra no âmbito do sequenciamento de padrões de corte. • A concepção de um novo algoritmo heurístico para o problema de planeamento e escalonamento da capacidade integrando decisões relativas ao corte. Introdução • 15 A identificação de um novo problema integrando o problema de planeamento da capacidade com o problema de corte, e a respectiva formulação matemática em PLI. Propõe-se um algoritmo exacto para resolver este problema. O estudo computacional do desempenho deste algoritmo permitiu concluir relativamente à sua adequação a instâncias reais. • A proposta dum problema de sequenciamento de padrões bi-objectivo e a concepção de algoritmos evolutivos para o resolver. A experiência computacional mostra a sua superioridade, face a uma heurística quasioptimal para um dos objectivos considerados [Yuen, 1995]. O principal resultado prático deste trabalho consiste na construção do SAD (capítulo 6). O sistema integra, para além de outros, o módulo que corresponde à implementação da heurística para o problema de planeamento e escalonamento da capacidade, e a subsequente geração do plano agregado. Adicionalmente, fora do âmbito da cooperação com a empresa, desenvolveram-se outros componentes programados, nomeadamente: • Um módulo que implementa o algoritmo para a resolução do problema de planeamento da capacidade integrado com o problema de corte. • Um módulo que implementa a regra 3-optimal desenvolvida para o problema de minimização do número de padrões numa solução de corte. • Um módulo que implementa a heurística de sequenciamento de padrões de corte, minimizando o número de movimentos das navalhas. • Um módulo que implementa as versões do algoritmo evolutivo para resolução do problema de sequenciamento de padrões bi-objectivo. 1.5 Organização do texto Este capítulo introdutório apresentou a motivação que esteve na origem deste trabalho e o contexto em que ele se enquadra. Descreveram-se os objectivos, as contribuições teóricas e os resultados práticos decorrentes desta dissertação. O capítulo seguinte introduz o caso de estudo em que se baseou a investigação. Apresenta-se o contexto específico do problema, descreve-se o processo de fabrico, 16 Capítulo 1 identificam-se os subproblemas de tomada de decisão e as responsabilidades das diferentes estruturas funcionais envolvidas. No capítulo 3 apresenta-se o desenho do modelo de decisão hierárquico. Começa-se por dar uma perspectiva geral sobre o desenho de modelos de decisão. Em particular, dá-se ênfase à criação de hierarquias em modelos de tomada de decisão distribuída. Descreve-se um quadro teórico para os modelos de decisão hierárquicos, introduzindo-se a terminologia respectiva. Em seguida, discutem-se alguns aspectos de coordenação entre o “marketing” e a “produção”. Finalmente, desenha-se o modelo que representa as diferentes fases de tomada de decisão e as interacções entre as entidades envolvidas. Realçam-se as inter-relações entre os modelos adoptados e as interacções dos agentes de decisão. O problema de corte e os problemas de sequenciamento de padrões de corte são abordados no capítulo 4. Faz-se uma revisão da literatura relacionada e discutemse alguns dos modelos propostos. Apresenta-se a formulação matemática adoptada para o problema de corte do caso de estudo, com restrições particulares, e descrevese o método de resolução. Propõe-se uma heurística para o problema de minimização do número de padrões numa solução de corte. Os testes computacionais permitem avaliar e comparar o respectivo desempenho. Apresentase um algoritmo para o problema de minimização do número de movimentos das navalhas num programa de corte e discute-se o desempenho do mesmo. Propõe-se o problema de sequenciamento bi-objectivo considerando a minimização do espalhamento médio das encomendas e a minimização do número máximo de pilhas abertas. Sugere-se uma abordagem de resolução evolutiva e discute-se a experiência computacional. No capítulo 5, aborda-se o problema de planeamento e escalonamento da capacidade. O problema é enquadrado na área dos problemas de definição de quantidades e escalonamento numa máquina, com tempos de mudança dependentes da sequência. Propõe-se um algoritmo hierárquico, actuando em dois níveis, que integra decisões relativas ao corte no problema de planeamento e Introdução 17 escalonamento da capacidade. Apresenta-se um exemplo de aplicação desta nova heurística. Evidenciam-se as vantagens do algoritmo e sugerem-se melhoramentos. Neste capítulo propõe-se ainda uma formulação matemática para a integração do problema de planeamento da capacidade com o problema de corte. Este novo modelo resulta de estender o problema de corte clássico em duas direcções. Passase duma situação de período único para um horizonte temporal discreto, ao longo do qual se tomam as decisões de como e quando cada item é cortado. Por outro lado, considera-se uma situação multiproduto, em oposição à situação de produto único. Assim, integram-se vários problemas de corte disjuntos que se relacionam, em cada período do horizonte, por restrições de capacidade. Descreve-se um algoritmo de partição e geração de colunas para a resolução do problema, discutindo-se os aspectos comuns com outros algoritmos do mesmo tipo e os detalhes particulares e inovadores. Expõem-se os resultados computacionais e conclui-se relativamente à adequação do algoritmo a instâncias reais. O capítulo 6 começa com a exposição de alguns aspectos relevantes na área dos Sistemas de Apoio à Decisão. Em seguida, apresenta-se o SAD desenvolvido. Mostra-se o seu contexto e procede-se a uma descrição sucinta das funcionalidades disponibilizadas, enfatizando as componentes da respectiva base de modelos. Ilustra-se a interacção entre o SAD e o responsável pelo planeamento, através de exemplos reais. Conclui-se com uma apreciação dos resultados globais decorrentes da utilização do SAD e criticam-se alguns aspectos. Finalmente, no capítulo 7 resume-se o conteúdo da dissertação, evidenciam-se as contribuições e resultados, tecem-se considerações críticas e perspectivam-se as orientações do trabalho futuro. 18 Capítulo 1 Capítulo 2 Caso de estudo Neste capítulo, apresenta-se o caso de estudo em que se baseou a investigação desenvolvida. Começa-se por introduzir um contexto em que se salientam questões relativas à importância do planeamento da produção para a competitividade da empresa e apresenta-se a estrutura do produto. Em seguida, descreve-se o processo produtivo. Expõe-se o problema global identificando os subproblemas que se associam ao processo produtivo e as responsabilidades funcionais dentro da empresa, e relacionando os subproblemas numa hierarquia temporal. 2.1 Contexto A competitividade é fundamental para o sucesso de qualquer empresa. No caso das empresas que produzem por encomenda, há uma especificidade dos artigos produzidos que se encara muitas vezes como um factor de fidelidade dos clientes. Em [Amaro, Hendry e Kingsman, 1999] esta noção é clarificada. Estes autores apresentam um estudo sobre as estratégias de competitividade no sector da 20 Capítulo 2 produção por encomenda e concluem que um maior nível de especificidade dos artigos é um factor de vantagem competitiva. No entanto, para empresas que produzem com o mesmo grau de especificidade, os factores competitivos são o preço, a qualidade e o cumprimento das datas de entrega, tal como se verifica para os outros sectores. De entre estes factores, o cumprimento das datas de entrega é o principal critério do trabalho que se desenvolveu, tendo-se excluído questões relativas à qualidade e à definição de preços. Para um sistema produtivo em que a capacidade é limitada, o cumprimento das datas de entrega depende crucialmente de: • um processo de aceitação de encomendas fiável e coerente, e • um esquema de planeamento e programação da produção que explore ao máximo a capacidade disponível. Relativamente à liderança no sector de produção por encomenda, Hendry ([Hendry, 1998]) refere os aspectos principais a trabalhar para melhorar o desempenho. Destacam-se aqueles que se consideraram neste trabalho e, para cada um deles, identifica-se (a itálico) a forma como se introduziu: • Dar poder à força de trabalho: motivar o envolvimento dos funcionários na resolução dos problemas; motivar a cooperação inter e intra equipas — utilização partilhada do mesmo SAD. • Simplificar a produção: redução do volume de trabalhos em curso, redução dos tempos entre operações, redução dos tempos de pesquisa de produtos e promoção do trabalho em equipa — resolução do problema de planeamento e escalonamento da capacidade e dos problemas de sequenciamento de padrões de corte. • Explorar a capacidade: aumento da capacidade utilizada; redução de tempos de mudança; utilizar a experiência passada para proceder a previsões da procura a curto prazo — resolução do problema de planeamento e escalonamento da capacidade e disponibilização de uma ferramenta para previsão. Caso de estudo • 21 Melhorar a qualidade e o value for money: redução de perdas materiais e temporais; responsabilização dos trabalhadores pela qualidade; redução do trabalho em curso — resolução do problema de corte e dos problemas de sequenciamento de padrões de corte, e utilização partilhada do SAD. • Implementar sistemas de controlo e planeamento apropriados e actualizados: esquemas de planeamento e controlo perceptíveis pela equipa; eficácia essencial no planeamento a médio e curto-prazos — coordenação entre as diferentes estruturas por utilização partilhada do SAD. No mercado do papel, os preços oscilam, em função do “estado do mercado” (assumindo uma conjuntura económica mundial estável), e seguem um ciclo autoregulado, que se ilustra na figura 2.1. Diminui o preço Aumenta a procura Aumenta o preço Aumenta a capacidade disponível Diminui a procura Figura 2.1: O ciclo do preço no mercado do papel Neste ciclo participam a globalidade dos clientes e dos produtores. É interessante notar que acabam por ser os clientes que, involuntariamente, gerem a duração das fases deste ciclo, pois ela depende da capacidade de armazenamento dos clientes e do seu ciclo de reposição de stocks. Neste caso de estudo, pressupõe-se a estabilidade do mercado e a situação mais comum em que a empresa lida com falta de capacidade para satisfazer a procura. Os clientes tentam colocar as encomendas o mais tarde possível, para não suportarem os custos de armazenagem. Por este motivo, e porque há muitos clientes que fazem uma gestão de stocks deficiente, ocorrem muitas encomendas com carácter urgente. 22 Capítulo 2 Caracterização do produto Os clientes encomendam quantidades (em toneladas) de bobinas especificando os valores para os diferentes atributos apresentados na tabela 2.1. Atributo Unidade tipo do papel código 2 ou mais 2 gramagem do papel g/m 9 ou mais diâmetro das bobinas cm 5 ou mais largura das bobinas cm cerca de 800 Tabela 2.1: Atributos dos itens finais O número de diferentes itens ou tipos de artigo (bobinas) que podem ser produzidos ( 2 × 9 × 5 × 800 ≈ 72000 ) é muito grande, o que justifica uma política de produzir basicamente por encomenda. Considera-se uma agregação dos itens finais em famílias, segundo o conceito de [Hax e Meal, 1975]. Uma família é um conjunto de itens que partilham um set-up comum e que consomem a mesma quantidade de recursos por unidade produzida. Cada combinação dos atributos relativos às características do papel (tipo/gramagem) define uma família. A desagregação de uma família em itens finais é obtida considerando os atributos relativos às características das bobinas (diâmetro/largura). As quantidades que se encomendam correspondem, regra geral, a um número não inteiro de bobinas, que se arredonda na conversão. Também é usual na indústria papeleira usarem-se tolerâncias na satisfação das encomendas, ou seja, os clientes aceitam receber quantidades aproximadas das encomendadas. 2.2 O Processo produtivo Os itens finais são produzidos em duas fases. Na máquina do papel produz-se continuamente uma folha de papel de uma dada família, que é enrolada num rolo de grandes dimensões dando origem a um carretel, como se ilustra na figura 2.2. Caso de estudo 23 enrolamento da folha em carretel Pasta+químicos+água Figura 2.2: O processo de produção e enrolamento da folha em carretel Posteriormente, na máquina de corte, cada carretel é cortado de forma a obter um determinado conjunto de itens. A figura 2.3 ilustra o processo de corte. carretel largura do carretel navalha corte desperdício itens finais w1 w2 w3 w4 largura do carretel = w1 + w2 + w3 + w4 + desperdício Figura 2.3: O processo de corte Estes processos repetem-se sequencialmente sem interrupções. Em cada instante, ou está a ser produzido um carretel, ou está a ocorrer uma mudança da família a ser produzida. Simultaneamente, na máquina de corte, ou está a ser cortado outro carretel, ou está a ocorrer a preparação para um novo corte. O corte simultâneo dum conjunto de bobinas denomina-se bobinagem. Variando o diâmetro do rolo em carretel, pode-se cortar mais do que uma bobinagem utilizando a folha dum mesmo carretel. Nesta dissertação, utiliza-se o termo carretel, ou seja, assume-se que um carretel corta apenas uma bobinagem. O processo produtivo enquadra-se nos processos de fabrico contínuo: todos os itens são produzidos de acordo com a mesma sequência de operações e utilizando as mesmas máquinas. Os itens finais são embalados e catalogados consoante o seu destino e seguem para armazém a partir de onde são expedidos. Os itens não afectados a nenhuma encomenda constituem o stock livre. 24 Capítulo 2 2.3 Descrição do problema global 2.3.1 Identificação de subproblemas A cada uma das fases de fabrico associa-se um problema específico, conforme se ilustra na figura 2.4. Os problemas, que se descrevem em seguida, enquadram-se a um nível táctico/operacional. Na fase de expedição encontra-se o problema de carregamento de veículos, que não é abordado nesta dissertação. carretéis pasta Máquina do papel (Planeamento e escalonamento da capacidade) ... carretéis Máquina de corte (Programação do corte) ... embalagem itens armazém Camiões e contentores (carregamento de veículos) clientes itens porto marítimo Figura 2.4: O processo de fabrico até expedição O corte de carretéis de uma mesma família e com um determinado diâmetro dá origem a itens da mesma família e diâmetro. Um padrão de corte (ou padrão) é um conjunto de itens, cada um deles a cortar um determinado número de réplicas. Um padrão de corte é admissível quando pode ser utilizado para cortar um carretel, ou seja, as larguras dos itens que o constituem verificam as restrições técnicas da máquina de corte. Uma solução de corte é um conjunto de padrões de corte admissíveis em que cada um deles deve ser utilizado para cortar um determinado número de carretéis. O Problema de Corte (PC) consiste em obter uma solução de corte que permita produzir um determinado conjunto de itens minimizando o desperdício resultante. Caso de estudo 25 A cada um dos itens num padrão faz-se corresponder um destino, que pode ser uma linha de encomenda ou o armazém, definindo uma ordem de corte. Um programa de corte é uma sequência de ordens de corte. O Problema de Programação do Corte consiste em determinar um programa de corte que permita cortar os itens pedidos num conjunto de linhas de encomenda (ou partes de linhas de encomenda), minimizando o desperdício resultante e optimizando uma dada medida de desempenho. Ou seja, o problema de programação do corte integra o PC com objectivos adicionais (por exemplo, a minimização do espalhamento das encomendas no programa de corte) e a respectiva afectação dos itens na solução aos pedidos dos clientes. Para facilitar a compreensão destes problemas apresenta-se o seguinte exemplo real. Considera-se o conjunto de pedidos apresentado na figura 2.5. São todos referentes ao mesmo tipo de papel, à mesma gramagem e ao mesmo diâmetro. Apenas se apresentam os atributos das linhas de encomenda relevantes para a explanação. Assim, nessa figura, a coluna NBobs apresenta o número de bobinas por produzir. Os nomes das restantes colunas são auto-explicativos. Linha 00014993 00015121 00015122 00015157 00015257 00015442 00015445 00015447 00015452 00015453 00015459 00015460 00015461 00015483 00015517 Cliente P 062 03113 E 030 03495 E 030 03495 E 030 03497 I 051 04470 I 047 08533 I 047 08533 I 047 08534 I 051 04474 I 051 04474 D 007 03326 D 007 03326 D 007 03326 PK 003 00395 P 130 03269 Largura 82.0 112.0 122.0 13.0 142.0 112.0 98.0 122.0 82.0 84.0 81.5 91.5 101.5 102.0 122.0 NBobs Peso 97 61.00 58 50.00 107 100.00 240 24.00 3 3.00 27 23.00 31 23.00 49 46.00 32 20.00 5 3.00 32 20.00 22 15.00 39 30.00 383 300.00 6 5.00 Figura 2.5: Conjunto de linhas de encomenda a cortar Para cada largura, calcula-se o número total de bobinas a produzir (NBobinas), passando-se assim a uma agregação dos pedidos, que se ilustra na figura 2.6. 26 Capítulo 2 Largura 13.0 81.5 82.0 84.0 91.5 98.0 101.5 102.0 112.0 122.0 142.0 NBobinas 240 32 129 5 22 31 39 383 85 162 3 Figura 2.6: Dados agregados por larguras A figura 2.7 expõe uma solução de corte para uma largura de carretel de 420cm. Cada linha refere-se a um padrão de corte. Na primeira coluna (IP) apresenta-se uma indexação dos padrões de corte, apenas por questões de explicação do exemplo. A segunda coluna (NCarretéis) corresponde ao número de carretéis a cortar de acordo com o padrão associado. Segue-se o conjunto de larguras que compõem o padrão e, por fim, exibe-se o desperdício resultante. Na subtabela inferior, apresentam-se os indicadores da qualidade da solução. IP NCarretéis Padrão 1 13 122.0 122.0 2 4 122.0 101.5 3 20 122.0 112.0 4 1 84.0 84.0 5 2 142.0 142.0 6 32 122.0 102.0 7 23 122.0 82.0 8 22 122.0 122.0 9 14 102.0 102.0 10 65 112.0 102.0 11 31 102.0 102.0 N. total de bobinagens 227 N. total de bobinas 1135 122.0 101.5 102.0 84.0 122.0 101.5 82.0 91.5 102.0 102.0 102.0 13.0 13.0 13.0 13.0 82.0 13.0 82.0 84.0 84.0 13.0 81.5 13.0 82.0 13.0 13.0 13.0 82.0 82.0 13.0 13.0 102.0 98.0 13.0 Desperdicio Medio Perda de producao Largura Media Aproveitada Desperdício 2.0 0.0 2.0 0.0 1.0 0.0 13.0 0.0 2.5 6.0 2.0 3.0 1.8943cm 0.4510% 4.1811m Figura 2.7: Uma solução de corte para o conjunto de larguras dado Afectam-se as larguras em cada padrão às linhas de encomenda e obtêm-se as ordens de corte. O programa resultante exibe-se na figura 2.8, onde os padrões são desdobrados em conjuntos de números de linhas de encomenda. Para cada padrão, exibem-se os números de linhas de encomenda a que se afectaram as larguras, mantendo-se a ordem correspondente à ordem das larguras. Por exemplo, para o padrão 1, cada item de largura 122.0cm fica afectado à linha de encomenda 00015122, e cada item de largura 13.0cm fica afectado à linha 00015157. O padrão com índice 5 é usado para cortar dois subconjuntos de números de linhas de Caso de estudo 27 encomenda. Para esse padrão, uma bobina de largura 142.0cm e outra de 122.0cm foram afectadas a encomendas não consideradas para a elaboração do programa (a carregado), por haver sobre-produção dessas larguras. IP NCarretéis 1 13 2 4 3 10 3 3 3 6 3 1 4 1 5 1 5 1 6 32 7 23 8 22 9 14 10 58 10 7 11 31 Padrão 00015122 00015447 00015122 00015122 00015517 00015447 00015453 00015257 00015257 00015122 00015122 00015447 00015483 00015121 00015442 00015483 00015122 00015461 00015442 00015442 00015442 00015442 00015453 00015257 00015335 00015483 00014993 00015447 00015483 00015483 00015483 00015483 00015122 00015461 00015483 00015483 00015483 00015483 00015453 00015447 00015372 00015461 00014993 00015460 00015483 00015483 00015483 00015483 00015157 00014993 00015452 00014993 00014993 00014993 00015453 00015157 00015157 00015459 00014993 00015452 00014993 00015483 00015483 00015445 00015157 00015157 00015157 00015157 00015453 00015157 00015157 00015157 00015157 00015157 00015157 00015157 Figura 2.8: O programa de corte A figura 2.9 apresenta o estado das linhas de encomenda após a afectação. As colunas NProd e PesoProd indicam, respectivamente, o número de bobinas afectadas e o respectivo peso. Podem verificar-se alguns desvios face aos valores de peso pedido. As duas últimas linhas de encomenda (a carregado) não tinham sido consideradas para a elaboração do programa e, como já explicado, procedeu-se à afectação de uma bobina a cada uma dessas linhas. Linha 00014993 00015121 00015122 00015157 00015257 00015442 00015445 00015447 00015452 00015453 00015459 00015460 00015461 00015483 00015517 00015335 00015372 Cliente P 062 E 030 E 030 E 030 I 051 I 047 I 047 I 047 I 051 I 051 D 007 D 007 D 007 PK 003 P 130 I 047 SRL001 03113 03495 03495 03497 04470 08533 08533 08534 04474 04474 03326 03326 03326 00395 03269 08529 00002 Largura 82.0 112.0 122.0 13.0 142.0 112.0 98.0 122.0 82.0 84.0 81.5 91.5 101.5 102.0 122.0 122.0 142.0 NBobs NProd Peso PesoProd 97 97 61.00 61.14 58 58 50.00 49.93 107 107 100.00 100.34 240 241 24.00 24.08 3 3 3.00 3.27 27 27 23.00 23.24 31 31 23.00 23.35 49 50 46.00 46.89 32 31 20.00 20.17 5 5 3.00 3.23 32 32 20.00 20.05 22 22 15.00 15.47 39 40 30.00 31.21 383 382 300.00 299.49 6 6 5.00 5.63 ? 1 ? 0.94 ? 1 ? 1.09 Figura 2.9: Estado das linhas de encomenda após a afectação Na ausência de uma ferramenta informática, o responsável pela programação do corte procede à elaboração dos programas manualmente. Os padrões são 28 Capítulo 2 estabelecidos iterativamente, num processo de tentativa-e-erro, definindo os grupos de linhas de encomenda a cortar em cada padrão e optando por “boas” combinações de larguras. Para além da complexidade do problema de corte, neste processo consideram-se simultaneamente dois tipos de dados (larguras e linhas de encomenda), o que aumenta a dificuldade. Apesar disso, dada a experiência do responsável, conseguem-se obter programas com alguma qualidade. No entanto, o processo é extremamente moroso, a geração e avaliação de soluções alternativas é incomportável em termos temporais, e o “sucesso” duma solução depende da experiência e intuição humana. Em termos cognitivos, o responsável pelo planeamento recorre a combinações de larguras que, devido a situações passadas, já são conhecidas como sendo “boas”. Criam-se assim “padrões preferidos” e desiste-se de procurar alternativas mais atractivas. Na construção do SAD consideraram-se estes aspectos e disponibiliza-se a introdução/imposição de “padrões preferidos”, de forma a avaliar a qualidade das soluções associadas. Por Problema de Planeamento e Escalonamento da Capacidade entende-se a afectação temporal da capacidade à produção de famílias ao longo de um horizonte de planeamento táctico/operacional (1 a 3 meses). Consideram-se módulos de produção com a duração de uma quinzena. A este nível trabalha-se com a informação agregada relativamente às características dos produtos. Este problema consiste em determinar, sequenciar e escalonar as quantidades a produzir de cada família, satisfazendo a procura e maximizando a exploração da capacidade disponível. O plano resultante, que denominamos por plano agregado, expressa os instantes de início e de fim da produção das diferentes famílias, correspondendo este intervalo à produção de um determinado número de carretéis. Mudanças da produção de famílias têm associados tempos e custos que dependem da sequência de produção. O intervalo de tempo durante o qual uma determinada família está a ser produzida denomina-se na indústria papeleira por corrida1, sendo este termo também utilizado para referir genericamente a família que lhe corresponde. 1 Este termo deriva do termo production run, utilizado em inglês. Caso de estudo 29 A figura 2.10 ilustra um plano de produção agregado, para o período decorrente de 97.06.23 até 97.08.29. Este plano permite produzir todas as encomendas e partes de encomenda ainda não produzidas, com data de entrega anterior a 97.09.01. A primeira corrida refere-se a um programa para o tipo de papel KX e gramagem 80, a ter início na data 97.06.23, e com duração de 3 dias e 7 horas. Cada linha da tabela corresponde a uma corrida. As duas primeiras colunas indicam o início da produção da respectiva corrida. A primeira coluna indica o tempo decorrido desde o início do plano, em horas, enquanto que a segunda corresponde à data em que a corrida se inicia. Em seguida mostra-se a duração do programa em número de horas e a correspondente transformação para dias, horas e minutos. As colunas Prod. e Gram. indicam, respectivamente, o tipo de produto e a gramagem. As duas últimas colunas indicam, respectivamente, o peso do programa e da correspondente mudança (set-up), em toneladas. Calendário dos programas na máquina Início Duração Hora Data relativa (h) ( d h m) 0.0 970623 79.0= 3d 7h 1m 79.1 970626 32.4= 1d 8h23m 111.6 970627 25.8= 1d 1h49m 137.4 970628 20.1= 20h 8m 157.8 970629 11.2= 11h14m 169.1 970630 9.0= 8h59m 178.1 970630 4.1= 4h 3m 182.2 970630 1.8= 1h48m 184.3 970630 102.3= 4d 6h16m 286.7 970704 39.8= 1d15h50m 326.7 970706 30.6= 1d 6h33m 357.3 970707 18.9= 18h52m 376.4 970708 16.5= 16h31m 393.2 970709 12.2= 12h11m 405.6 970709 9.8= 9h48m 415.5 970710 103.8= 4d 7h49m 519.5 970714 13.5= 13h28m 533.3 970715 315.1=13d 3h 4m 848.4 970728 223.4= 9d 7h22m 1071.9 970806 86.6= 3d14h38m 1158.8 970810 41.8= 1d17h47m 1200.7 970812 1.4= 1h21m 1202.3 970812 153.4= 6d 9h25m 1355.8 970818 93.5= 3d21h29m 1449.4 970822 48.2= 2d 0h12m 1497.7 970824 45.2= 1d21h14m 1543.2 970826 28.8= 1d 4h45m 1572.1 970827 26.8= 1d 2h46m 1598.9 970828 19.5= 19h30m 1618.5 970829 7.7= 7h42m Prod. Gram. KX KX KX KX KS KS KS KS KX KX KS KS KX KS KX KX KS KX KX KX KS KS KX KX KX KX KS KS KS KS 80 70 90 85 60 65 70 90 80 70 60 65 90 70 85 80 60 80 70 90 60 80 90 80 70 85 60 70 90 80 Peso do Programa (t) 493.9 202.4 161.4 125.9 70.2 56.2 25.4 11.3 639.2 249.0 191.0 118.0 103.3 76.2 61.3 648.9 84.3 1969.2 1396.1 541.5 261.2 8.5 958.9 584.3 301.3 282.7 179.8 167.3 121.9 48.2 Figura 2.10: Exemplo dum plano agregado Peso do Setup (t) 0.00 0.52 0.73 0.00 1.56 0.00 0.00 0.73 1.56 0.52 1.56 0.00 1.56 1.56 1.56 0.00 1.56 1.56 0.52 0.73 1.56 0.73 1.56 0.52 0.52 0.63 1.56 0.52 0.73 0.52 30 Capítulo 2 Na situação anterior à disponibilização do SAD, a ordem de processamento das corridas era pré-definida. Em cada quinzena, para cada tipo de produto percorriam-se todas as gramagens duas vezes (por ordem crescente e depois por ordem decrescente), sendo a duração das corridas definida pelo tempo necessário para produzir o peso pedido de cada família (aproximadamente). Esta regra, apesar de coerente, pois tenta minimizar os tempos de mudança entre gramagens, não é efectiva. Na elaboração duma solução de corte faz-se a desagregação em relação às características do produto duma corrida. A desagregação temporal, da informação associada a uma solução de corte, resulta da afectação dos itens às encomendas e do sequenciamento das ordens de corte que assim se obtêm. 2.3.2 Identificação das responsabilidades funcionais Existem duas estruturas funcionais envolvidas no processo de tomada de decisão: o Departamento de Marketing (“marketing”) e o Departamento de Produção (“produção”). Os problemas que se identificaram na secção anterior estão relacionados com as fases do processo produtivo. O problema de planeamento e escalonamento da capacidade associa-se com a produção dos carretéis na máquina do papel, e o problema de programação do corte refere-se à fase de corte dos carretéis. A “produção” é responsável pela tomada de decisão relativa a estes problemas. No entanto, estritamente dependente do problema de planeamento e escalonamento da capacidade, e a montante deste, tem-se o problema de aceitação de encomendas. Este problema, da responsabilidade do “marketing”, consiste em dada uma encomenda, duma determinada quantidade, de um dado item e com uma determinada data de entrega, avaliar o impacto da sua aceitação no plano agregado. A “produção” planeia e executa o fabrico dos artigos para satisfazer as encomendas. Em termos temporais, as decisões do “marketing” são tomadas primeiro e definem as quantidades a produzir e as respectivas datas de entrega. No entanto, estas decisões estão condicionadas pelas restrições da “produção”, que Caso de estudo 31 define os valores da capacidade. A velocidade de funcionamento da máquina do papel pode ser corrigida dentro de dados limites, o que permite uma ligeira adequação dos valores da capacidade às quantidades a produzir. Velocidades muito elevadas conduzem a problemas de qualidade no papel. Por outro lado, a velocidade tem de se adaptar à qualidade da pasta que está a ser produzida, ou seja, o valor da capacidade é estabelecido dinamicamente. A aceitação de encomendas com datas impraticáveis congestiona ainda mais o sistema. A promessa de entrega, num espaço de tempo irrealista, acontece como uma tentativa de agradar ao cliente, mas acaba por ter o efeito contrário quando não se cumpre esse prazo. Por outro lado, este tipo de actuação conduz a um ciclo vicioso pois os clientes têm tendência a antecipar a colocação de encomendas, em virtude de experimentarem atrasos em relação às datas prometidas. Os conflitos entre o “marketing” e a “produção” acabam por resultar na degradação do desempenho geral do planeamento. A figura 2.11 sumaria os problemas de tomada de decisão, as respectivas responsabilidades das estruturas funcionais e os horizontes temporais. Em termos temporais, podem-se identificar três níveis de tomada de decisão. Estruturas funcionais Marketing Tomada de decisão Horizonte temporal Problema de aceitação de encomendas 1 dia até vários meses restrições Problema de planeamento e escalonamento da capacidade Produção 1 a 3 meses restrições Problema de programação do corte 1 a vários turnos restrições Operação Implementação Figura 2.11: Responsabilidades funcionais e horizontes temporais 32 Capítulo 2 No primeiro nível, tem-se o problema de aceitação de encomendas. O horizonte temporal vai de 1 dia até vários meses. Este horizonte não se enquadra na caracterização clássica do planeamento hierárquico. Mas, na prática, dada a relação que a empresa privilegia com alguns clientes, admitem-se tempos de entrega muito reduzidos. A determinação da data de entrega pode resultar dum processo de negociação com o cliente, com várias interacções, e em que também se estabelece o preço. O “marketing” funciona como duplo interface, fazendo a comunicação entre os clientes e a “produção”. Na interacção com os clientes definem-se os preços e na interacção com a “produção” definem-se as datas de entrega. A proposta dum modelo para o problema de aceitação de encomendas que determinasse estas duas variáveis foi rejeitada pela empresa. De acordo com as condições expressas pelo “marketing”, os preços não poderiam ser parâmetros do sistema. Para este problema, dada uma proposta de encomenda, o SAD apenas deveria funcionar como um avaliador da exequibilidade da data de entrega. Optou-se por classificar os clientes, numa escala de preferências, de modo a poder avaliar alterações das datas de entrega de encomendas já aceites. Em caso de escassez da capacidade e face a uma proposta de encomenda dum cliente prioritário, através duma regra de prioridade (cf. capítulo 6), determina-se a encomenda (ou conjunto de encomendas) a adiar, por forma a libertar a capacidade requerida. O impacto da aceitação duma encomenda, no plano agregado, não se pode medir por um acréscimo em termos de quantidades pedidas. É necessário avaliar as alterações resultantes em termos da combinação de larguras na solução de corte que define a corrida associada. O exemplo, que se descreve de seguida, ilustra este problema. Assuma-se que a largura do carretel é 420cm. Considerem-se duas encomendas distintas de artigos da mesma família e diâmetro: numa encomenda pedem-se 21 bobinas de 120cm, e na outra 42 bobinas de 60cm. Ambas as encomendas têm o mesmo peso. Mas, como se mostra na figura 2.12 (encomendas separadas), para Caso de estudo 33 cortar a primeira são necessário 7 carretéis, originando um desperdício de 7 bobinas de 60cm, enquanto que para cortar a segunda bastam 6. Neste caso, a diferença é de apenas um carretel, mas, se usarmos múltiplos das quantidades encomendadas a diferença cresce proporcionalmente. Se se combinarem as duas encomendas, podem-se aproveitar as 7 bobinas de 60cm que eram desperdício na primeira situação para cortar 7 bobinas da segunda encomenda. Desta combinação resulta a poupança de um carretel, como se ilustra na figura 2.12 (encomendas combinadas). Encomendas separadas 7X 6X 120 60 120 60 60 = 21 X 120 60 60 60 60 = 42 X 60 = 21 X 60 = 35 X 120 +7X 60 120 +7X 60 60 Encomendas combinadas 7X 5X 120 60 120 60 60 120 60 60 60 60 Figura 2.12: Exemplo de corte para duas encomendas com o mesmo peso No segundo nível, procede-se ao planeamento e escalonamento da produção. Define-se o plano agregado e elaboram-se os programas de corte para as diferentes famílias. Os planos gerados são dinâmicos e adaptáveis a alterações. Gera-se o plano agregado para um horizonte de 1 a 3 meses. Estabelece-se a programação do corte para a primeira corrida (ou as primeira corridas) do primeiro período, o que corresponde à desagregação da informação relativa a esse subplano, em termos temporais e da caracterização do produto. Os programas de corte são enviados à “operação” para execução e referem-se a um horizonte temporal de 1 a vários turnos. O subplano remanescente passa a ser o plano actual. A “operação”, que está integrada no Departamento de Produção, e onde se enquadram os operadores de produção, é responsável por executar os programas de corte definidos no nível anterior. A este nível compete também detectar algum tipo 34 Capítulo 2 de falhas na qualidade dos produtos acabados (defeitos no papel), ajustar o funcionamento do equipamento e reformular os programas de corte para resolver eventuais falhas da produção. Na “operação”, o horizonte temporal para a tomada de decisão é de um ou mais turnos. 2.4 Replaneamento Quando se implementa o programa relativo à primeira corrida (ou às primeiras) do primeiro período no plano agregado, imediatamente ocorrem alterações ao plano. Recebem-se novas encomendas, e encomendas já aceites podem ser revistas: canceladas, adiadas ou adiantadas. Podem também ocorrer alterações na implementação dos programas: faltas de qualidade obrigam à reprogramação dos itens defeituosos e desvios na velocidade da máquina do papel podem levar à redefinição da capacidade disponível. O plano é reformulado sempre que se inicia um novo período de produção ou sempre que ocorrem alterações significativas dos dados. Tem-se portanto um esquema de replaneamento misto, pois combina-se um esquema de horizonte rolante com um esquema de revisões por alterações (cf. [Martinich, 1997], capítulo 14). O plano está permanentemente actualizado de acordo com o estado da informação, o que é uma vantagem. Idealmente, não se deveriam reformular os planos com muita regularidade, mas apenas identificar as alterações resultantes e relatá-las. No entanto, neste caso de estudo, a aceitação de uma encomenda “urgente” de grande dimensão, pode provocar grandes alterações no plano agregado, devido à forte interdependência dos problemas (ver modelo hierárquico no capítulo 3). Desta forma, este esquema de replaneamento é também por si só instável e acaba por conferir ainda mais nervosismo ao sistema. Mas, dada a organização do trabalho na empresa, um esquema de replaneamento mais relaxado poderia vir a traduzir-se na descoordenação entre as diferentes unidades funcionais. Capítulo 3 O modelo hierárquico de tomada de decisão Neste capítulo, começa-se por dar uma perspectiva de classificação dos modelos de tomada de decisão. Em seguida, discutem-se alguns aspectos referentes à criação de hierarquias para decisão distribuída. Neste contexto, enfatizam-se os mecanismos de interacção entre os agentes de decisão humanos. Discute-se a importância dos mecanismos de agregação/desagregação da informação para os sistemas hierárquicos e descreve-se um enquadramento teórico para o planeamento hierárquico. Expõem-se ainda alguns conceitos referentes à coordenação entre o “marketing” e a “produção”, salientando a necessidade de cooperação entre estas unidades funcionais com interesses conflituosos. A finalizar, apresenta-se o desenho do modelo hierárquico que representa o processo de decisão para o caso em estudo. Identificam-se os níveis de tomada de decisão, os modelos a utilizar em cada um deles, as interacções entre os modelos e as interacções entre os agentes de decisão. 36 Capítulo 3 3.1 Modelos de decisão No trabalho de [Koopman e Pool, 1991] discute-se uma categorização dos modelos de tomada de decisão. O modelo clássico ou racional é um modelo normativo que define a forma “ideal” de tomar a decisão numa perspectiva quantitativa. Assumese que o AD conhece todas as alternativas possíveis e que, entre elas, procura uma alternativa com lucro máximo. Este modelo é limitativo, pois pressupõe que: • só existe um AD; • para resolver o problema apenas se considera um único objectivo, que pode ser expresso em termos quantitativos; e • é sempre possível encontrar a “melhor” alternativa. O modelo racional pode adaptar-se, dando origem ao modelo de informação. Neste modelo, o AD intervém processando a informação e considerando a experiência do passado. A tomada de decisão é influenciada pelas preferências, o conhecimento e a intuição do AD. Estabelecer objectivos Rever objectivos Rever ou actualizar objectivos Seguimento e controlo Pesquisar e/ou gerar alternativas Comparar e avaliar alternativas Recomeçar pesquisa Corrigir se necessário Implementar decisões Escolher Figura 3.1: O processo de tomada de decisão (adaptado de [Koopman e Pool, 1991]) A tomada de decisão individual quando expandida e integrada numa organização apropriada dá origem ao modelo organizacional. A criação de várias estruturas funcionais, com diferentes competências, aumenta a capacidade de processamento da informação. No entanto, a divisão de tarefas pelas estruturas cria uma visão limitada do problema e pode originar conflitos. Criam-se então mecanismos de O modelo hierárquico de tomada de decisão controlo e coordenação que permitem ultrapassar estas questões. O modelo organizacional pode ser adaptado a diferentes contextos. No modelo organizacional, o AD posiciona-se num mundo, onde coexiste com os outros participantes do processo de decisão, e que inclui também o ambiente onde todos trabalham [Kersten e Cray, 1996]. O ambiente é constituído por entidades que não são individuais. Caracteriza-se pela informação do passado, do presente e de eventuais perspectivas futuras e pode ser instável. O AD tem necessidades e valores que são considerados nos problemas que vai resolvendo para diferentes estados do mundo. Esses estados impõem restrições no conjunto das possíveis alternativas a considerar para a resolução dos problemas. Por outro lado, a tomada de decisão exige que o AD considere também as necessidades e valores dos outros participantes e as eventuais reacções às suas próprias decisões. Os mecanismos de cooperação e negociação permitem coordenar este tipo de envolvimento, em que existem interdependências entre os vários participantes dum processo de tomada de decisão. As decisões têm de ser percebidas em termos das necessidades do AD e da sua relação com as outras entidades no mundo. 3.2 Hierarquias em tomada de decisão distribuída Segundo Brehmer, um sistema permite a tomada de decisão distribuída quando é possível que diferentes pessoas funcionem autonomamente sem pôr em perigo os objectivos do sistema [Brehmer, 1991]. Inversamente, um sistema requer a tomada de decisão distribuída quando os seus propósitos só podem ser alcançados se alguns dos indivíduos no sistema funcionarem de forma independente. No caso em estudo, o problema de decisão, enquadra-se na área da tomada de decisão distribuída. No problema global de tomada de decisão, um indivíduo sozinho não consegue abranger toda a tomada de decisão, antes as diferentes tarefas têm de ser realizadas individualmente. Assim, há a necessidade de coordenar os indivíduos, que se organizam em estruturas. Por outro lado, é necessário coordenar estas estruturas, o que introduz aspectos temporais. Cada estrutura tem um campo de actuação numa determinada escala temporal que 37 38 Capítulo 3 requer um dado nível de controlo. E assim o sistema tem uma organização hierárquica. Existe a necessidade de regular a complexidade do problema de comando e controlo. Criam-se níveis de coordenação e controlo hierárquico. No entanto, os níveis inferiores não podem ser completamente controlados pelos níveis superiores. De acordo com o tipo de decomposição que se utiliza, existem diferentes estratégias para a coordenação dum sistema hierárquico [Rasmussen, 1991], que consistem em manipular os níveis inferiores, relativamente a: • Objectivos ou parâmetros dos objectivos; • Restrições no domínio de acção; • Variáveis de interacção entre unidades (estimação ou previsão); • Informação disponível (quantidade e qualidade). Uma organização distribuída encara dois tipos de problemas: informação e confiança [Brehmer, 1991]. Em relação à questão da informação, a mesma informação pode ser utilizada sob diferentes formas, nos vários níveis do sistema. A informação deve ser transformada adequadamente para processamento nos níveis inferiores. O nível de confiança estabelece a necessidade de monitorização entre os diferentes níveis. Quanto mais elevado for, mais partido a organização pode tirar da capacidade de processamento da informação, para efectuar as tarefas em cada nível. Numa organização onde o nível de confiança é baixo, criam-se esquemas de monitorização e controlo muito fortes, o que pode conduzir a um direccionamento da capacidade de processamento da informação para tarefas não essenciais. Por outro lado, os níveis inferiores resistem à disponibilização da informação pelas novas tecnologias, o que facilita o controlo pelos níveis superiores. Quando os esquemas de monitorização são demasiado fortes, os indivíduos controlados tendem a deixar essa tarefa para os níveis superiores, perdendo-se a automonitorização. Este mecanismo conduz a uma diminuição de confiança e, ciclicamente, aumenta-se a necessidade de controlo. O modelo hierárquico de tomada de decisão Num processo de tomada de decisão individual, o AD aceita uma alternativa que preencha os seus requisitos. Quando existe mais do que um AD, uma alternativa aceitável para um dos AD pode não ser aceitável para outro. De acordo com Kersten, o processo de negociação envolve a pesquisa duma alternativa (solução) que seja admissível (tecnicamente possível de implementar) e aceitável para os AD’s envolvidos [Kersten, 1987]. Numa relação de negociação, o poder relativo de cada negociador estabelece-se pela extensão da dependência que cada parceiro tem do outro [Anderson, 1992]. Os indivíduos tendem a aceder aos níveis de poder relativo dentro de uma relação e aí escolhem o tipo de relação: competir, acomodar, colaborar ou desistir da negociação com o outro. O nível de conflito é estabelecido pela forma como os parceiros compreendem a sua relação. A percepção da construção da relação como sendo uma mais valia pode conduzir a ganhos conjuntos numa relação simbiótica. Ela pode motivar a negociação, mesmo que tal signifique a perda de lucros para um dos parceiros, no caso em que tal seja mais valorado do que as perdas em questão. A simbiose é uma ideologia de negociação em que o processo origina ganhos conjuntos. A comunicação é aberta e a informação é partilhada. A estratégia “win-win” permite que nenhum dos parceiros tenha perda. Ambos estabelecem esforços que permitam o maior lucro conjunto, mesmo que esse lucro seja aparentemente afecto a apenas um dos parceiros. Os princípios da negociação simbiótica incluem a necessidade das pessoas se separarem do problema. Assim, os parceiros percebem o seu trabalho conjunto para resolver o problema, focando o interesse num objectivo comum e não em preferências pessoais. Neste caso, devem-se especificar critérios objectivos que permitam estabelecer soluções para o ganho mútuo. No processo de tomada de decisão do caso em estudo, o problema de aceitação de encomendas conduz muitas vezes a um processo de negociação entre o “marketing” e a “produção”. O responsável pela aceitação das encomendas não pode ignorar a admissibilidade da produção dessa encomenda para a data prevista e o impacto que essa aceitação pode ter na produção das encomendas já aceites. Ou 39 40 Capítulo 3 seja, tem de existir um compromisso com a exequibilidade das opções tomadas nas fases mais avançadas do processo, abandonando-se a perspectiva de “o que se passa daqui para a frente já não me diz respeito”. O nível médio de gestão numa hierarquia organizacional, que no caso de estudo corresponde ao “marketing”, tem um papel determinante para o processo global de tomada de decisão, dada a diversidade das suas funções, onde se destacam: • Interface com entidades externas à companhia (clientes, fornecedores e parceiros); • Interface com outros níveis de gestão mais elevados; • Alocação dos recursos produtivos; • Antecipação da situação no nível inferior, de forma a assegurar que se possa proceder à implementação das decisões tomadas. O acesso à informação para a tomada de decisão distribuída é feito através dum sistema de informação centralizado, o que pode tornar o sistema vulnerável. Devem-se implementar regras de segurança que restrinjam as acções disponíveis para os utilizadores nos diferentes níveis de tomada de decisão. As regras que se concretizaram, para o caso em estudo, apresentar-se-ão na secção 6.4. 3.3 Enquadramento teórico para o planeamento hierárquico Um dos maiores desafios num modelo hierárquico de planeamento refere-se à construção dum mecanismo de agregação/desagregação da informação no caso em que os modelos usam diferentes parâmetros. Axsäter aborda o problema de agregação/desagregação [Axsäter, 1981]. Dada a definição das variáveis do modelo hierárquico, determina condições que garantem a coerência da desagregação de um plano agregado. Günther apresenta um modelo hierárquico para o planeamento e escalonamento da produção de detergentes, [Günther, 1986]. O modelo consiste em quatro níveis de decisão, organizados numa estrutura estritamente top-down. Günther identifica os subproblemas de planeamento agregado, escalonamento e O modelo hierárquico de tomada de decisão sequenciamento das quantidades, determinação 41 de ordens de produção, distribuição e expedição, e descreve heurísticas para a sua resolução. Um esquema robusto de agregação/desagregação para o problema de planeamento e escalonamento da produção é tratado em [Lasserre e Mercé, 1990]. Assume-se que a procura é desconhecida, mas limitada, e considera-se um modelo hierárquico com dois níveis, separando os dois subproblemas. Estabelecem-se condições, necessárias e suficientes, para que o plano agregado obtido no nível superior seja admissível para a desagregação pelo nível inferior. Em caso de inadmissibilidade de um plano agregado, introduzem-se as condições violadas no modelo superior, e determina-se uma nova solução. Assim, sugere-se que as condições derivadas sejam introduzidas no modelo no nível superior, o que consiste numa antecipação explícita do modelo no nível inferior. Este mecanismo confere grande complexidade computacional ao modelo no nível superior e, portanto, não se apresentam aplicações práticas da abordagem. A coerência da agregação/desagregação é também abordada em [Dauzère-Péres e Lasserre, 1994]. Neste trabalho considera-se também um modelo com dois níveis em que o nível superior consiste na determinação de quantidades (lot-sizing) e no nível inferior procede-se ao escalonamento da produção das quantidades. Apresenta-se uma abordagem iterativa em que se introduzem restrições no modelo do nível superior até que se determine a inadmissibilidade ou um plano integrado admissível. O modelo é coerente e apresentam-se resultados de aplicação. Sönher e Schneeweiss apresentam uma abordagem hierárquica de integração para um sistema de planeamento e controlo da produção [Söhner e Schneeweiss, 1995]. O sistema consiste nas componentes MPS (Master Production Scheduling), MRP (Material Requirements Planning) e CRP (Capacity Requirements Planning), organizadas hierarquicamente, mas considerando uma antecipação explícita dos níveis inferiores. É testada a admissibilidade da integração. Schneeweiss apresenta um enquadramento teórico para o planeamento hierárquico [Schneeweiss, 1995, 1999], onde se consideram os vários tipos de 42 Capítulo 3 interacção entre os diferentes níveis da hierarquia. Recorrendo a uma antecipação reactiva exacta e explícita, pode-se derivar uma solução que optimiza simultaneamente o esquema de agregação e o modelo hierárquico [Schneeweiss, 1999, cap. 6]. Este enquadramento descreve uma situação de planeamento hierárquico pela sobreposição de dois modelos de decisão, conforme se passa a apresentar. Descreve-se um modelo de decisão M pelo seu conjunto de alternativas A e a sua estrutura de preferências (sistema de critérios) C. Considera-se ainda o estado da informação no momento em que a decisão é tomada: IT(t0) e IB(t1), para o nível superior e o nível inferior, respectivamente. Tem-se assim uma definição para os modelos nos dois níveis: — o modelo-superior MT(CT, AT, IT(t0)) e — o modelo-base MB(CB, AB, IB(t1)). A figura 3.2 ilustra as interacções entre os dois níveis deste modelo hierárquico. Modelo Hierárquico Nível superior Modelo-superior AF(IN) antecipação IN instrução Modelo-base antecipado RE* reacção Decisão final IN* instrução Nível base modelo-base Figura 3.2: Interacções no modelo hierárquico O nível superior transmite a sua decisão ao nível base na forma duma instrução IN. A estimação das componentes do modelo-base permite determinar uma função antecipação AF(IN), que antecipa a reacção do nível inferior à sua instrução. Obtém-se assim um modelo-base antecipado, que o nível superior utiliza para O modelo hierárquico de tomada de decisão calcular uma estimativa da decisão óptima a obter pelo nível base aB*, em função da instrução IN, e como tal da sua própria decisão óptima aT*. A instrução que melhor se adequa ao critério do modelo superior é IN*=IN(aT*). O nível base recebe esta instrução, integra-a no seu modelo de decisão e explicita a sua reacção RE*. O critério do nível superior pode ser decomposto em duas componentes: o critério privado, que depende unicamente do nível superior, e o critério top-down que explicita a função de antecipação da reacção do nível base. A optimização do critério no nível superior conduz à decisão óptima neste nível, aT*, que depende da componente privada do critério no nível superior, da componente top-down relativa à antecipação da instrução associada e do estado da informação disponível para o nível superior no momento em que é tomada a decisão IT(t0). Distinguem-se dois tipos de antecipação: a antecipação reactiva, que considera uma possível reacção do nível base, e a antecipação não reactiva, ou inexistente, em que não há reacção do nível base. A antecipação reactiva distingue-se em: explícita exacta, aproximada explícita e implícita. Interessa-nos a antecipação reactiva explícita e exacta. Neste caso, a estrutura matemática de MB é totalmente conhecida pelo nível superior. O estado da informação difere entre o instante em que é tomada a decisão no nível superior e o instante em que se aplica o modelo do nível base. Ou seja, apenas algumas características de MB podem ser conhecidas. A função de antecipação pode ser conhecida sem recorrer a aproximações. É explícita porque antecipa o comportamento do nível base no momento em que é tomada a decisão pelo modelo do nível superior. É exacta porque a informação conhecida pelo modelo do nível superior é processada de forma exacta – dado um determinado estado da informação, a antecipação é exacta. O nível base processa a informação num instante posterior ao da tomada de decisão pelo nível superior. A introdução dos aspectos particulares do nível base pode conduzir a resultados diferentes dos que foram antecipados pelo modelo superior. 43 44 Capítulo 3 Nesta perspectiva, o modelo hierárquico que se concebeu para o problema do caso de estudo (cf. secção 3.5), considera no modelo do nível superior uma antecipação reactiva exacta e explícita do modelo base. 3.4 Coordenação entre o “marketing” e a “produção” Em termos organizacionais, o “marketing” e a “produção” têm funções de gestão separadas, com diferentes competências e com diferente âmbito de actuação. No entanto, o “marketing” (a estrutura no nível superior de gestão) acaba por definir o espaço de soluções para os subproblemas a resolver pela “produção” (no nível base de gestão). Na literatura apresentam-se vários modelos que integram a tomada de decisão pelo “marketing” e pela “produção” [Eliashberg e Steinberg, 1993]. Este tipo de abordagem é conhecido por tomada de decisão conjunta do “marketing” e “produção” (marketing-production joint decision-making). Regra geral, os modelos integram os problemas de definição de preços e aceitação de encomendas com o problema de definição dos planos de produção. Na taxonomia de coordenação de Whang [Whang, 1995] este tipo de abordagem corresponde à perspectiva de tomada de decisão por um único agente – tomada de decisão centralizada. Implicitamente, assume-se que uma entidade (AD) tem acesso a toda a informação necessária para tomar a decisão conjunta e autoridade para proceder à sua implementação. Num sistema produtivo complexo, este tipo de abordagem torna-se impraticável. Por outro lado, o processo envolve estruturas funcionais independentes que se coordenam para a tomada de decisão nos pontos de intersecção. Este tipo de abordagem corresponde a uma perspectiva de equipa na taxonomia de Whang, que assume a existência de diferentes parceiros, cada um deles com algumas restrições no acesso à informação e com diferentes campos de actuação, que cooperam para atingir um objectivo global. O principal objectivo do “marketing” é a maximização das vendas enquanto que o objectivo da “produção” é a minimização dos custos. O objectivo organizacional é a maximização dos lucros a longo prazo, ou seja, a maximização da diferença entre as vendas e os custos. A estrutura organizacional põe a trabalhar para um mesmo O modelo hierárquico de tomada de decisão objectivo agentes com desejos individuais conflituosos. A importância atribuída ao cumprimento das datas de entrega é o principal ponto de conflito entre as duas funções, como se identifica no estudo apresentado em [Swamidass, Baines e Darlow, 2001]. Aparentemente, após ter conseguido estabelecer uma venda, o “marketing” dissocia-se do cumprimento da data de entrega, deixando a responsabilidade para a “produção”. Este comportamento pode ser um foco de conflito, pois a “produção” “sente” que esta responsabilidade não é partilhada e reage negativamente. A investigação na área de resolução de conflitos entre o “marketing” e a “produção” encontra-se dividida em duas categorias: a abordagem de integração, em que a tomada de decisão é conjunta, e a abordagem de coordenação, que corresponde à tomada de decisão descentralizada usando variáveis de coordenação que funcionam como interfaces, [Mukhopadhyay e Gupta, 1998]. A tomada de decisão conjunta permite, regra geral, obter melhores resultados que a tomada de decisão descentralizada. Aparentemente, o “marketing” apresenta relutância em relação a este tipo de abordagem, e por isso ela tem tido pouca aplicação. Estes autores também identificam que as abordagens de coordenação têm sucesso na concepção da cooperação entre as duas estruturas funcionais, que podem manter a sua identidade. Desta forma, pode-se construir um conjunto de interfaces mantendo a separação funcional e reduzindo o conflito. O “marketing” e a “produção” têm interesses, relativos às encomendas, que são potencialmente conflituosos. Quando estes interesses não são coordenados correctamente podem verificar-se suboptimizações dos planos. Por outro lado, como os AD’s nos diferentes níveis estão a trabalhar em diferentes escalas temporais, vêm o sistema global com perspectivas diferentes. Numa companhia que pretenda um desempenho de alto nível, é fundamental que o “marketing”/vendas e a “produção” trabalhem em cooperação. Este factor é especialmente importante para sistemas versáteis que trabalham numa política de produção por encomenda, que produzem artigos personalizados e que têm de competir no mercado para garantir 45 46 Capítulo 3 a preferência dos clientes. Foi neste sentido que se concebeu o modelo hierárquico que se apresenta na secção seguinte, que se enquadra como sendo uma abordagem de coordenação entre o “marketing” e a “produção”. 3.5 O modelo hierárquico de tomada de decisão O planeamento e escalonamento da capacidade posiciona-se entre diferentes níveis de gestão de uma companhia, fazendo a comunicação entre a política geral da empresa e as restrições da produção. A cooperação entre os diferentes níveis de tomada de decisão e o compromisso em seguir o plano agregado são factores fundamentais para a eficácia dum sistema de planeamento de produção. É também necessária a coordenação do “marketing” e da “produção” face ao problema da consulta dos clientes e aceitação de encomendas. O modelo hierárquico, que se representa na figura 3.3, foi desenhado para traduzir funcionalmente o processo de tomada de decisão do caso de estudo. Como já se referiu, as linhas que orientaram esta concepção incluem: • obter soluções para o nível superior que sejam coerentes para o nível inferior, ou seja, que a desagregação não as torne inadmissíveis; e • estabelecer uma estrutura de coordenação que promova a redução dos conflitos entre o “marketing” e a “produção”. Consideram-se dois níveis de tomada de decisão: o Nível Superior (NS) e o Nível Inferior (NI). Estão envolvidos Agentes de Decisão (AD) de dois níveis de gestão: • o Agente de Decisão no nível Médio de Gestão (ADMG), responsável pela tomada de decisão no NS (“marketing”); e • o Agente de Decisão a um nível Baixo de Gestão (ADBG), responsável pela tomada de decisão no NI (“produção”). O modelo hierárquico de tomada de decisão 47 Nível Superior (NS) – Nível Médio de Gestão ADMG Modelo de planeamento e escalonamento da capacidade Modelo de optimização do corte Instruções(NS) Nível Inferior (NI) – Nível Baixo de Gestão ADBG Modelo de previsão FeedBack(NI) Modelo de previsão Modelo de optimização do programa de corte Instruções(NI) Interacção Dados Implementação SI Figura 3.3: Dependências hierárquicas na tomada de decisão O ADMG é responsável pela aceitação das encomendas. Os seus objectivos são responder aos pedidos dos clientes, captar o maior volume possível de encomendas, fixar os preços tão altos quanto possível, e manter os clientes satisfeitos. Como a capacidade de produção é limitada, o critério de optimização no NS é a maximização da utilização da capacidade, satisfazendo as encomendas. A tomada de decisão diz respeito a quando é que os itens podem ser produzidos e não a como vão ser produzidos. Mas, como uma parte da capacidade de produção é desperdiçada no corte, a forma como se cortam os itens restringe a maximização da utilização da capacidade, tanto mais quanto maior for a procura. Por este motivo, o modelo do nível superior resulta da integração do modelo de optimização do corte (cf. capítulo 4) com o modelo de planeamento e escalonamento da capacidade (cf. capítulo 5). Utiliza-se assim uma antecipação reactiva explícita e exacta do modelo no nível inferior. Apesar do modelo integrar um processo de desagregação da informação para optimização das soluções geradas, este processo nunca é visível para o AD que trabalha no nível superior. Na sua interacção com o modelo de planeamento e escalonamento da capacidade a informação apresenta-se agregada. Ele interage com o modelo para simular diferentes cenários, e avalia as consequências de aceitar uma encomenda para uma determinada data em função 48 Capítulo 3 dos indicadores da qualidade das soluções geradas. O modelo pode propor eventuais alterações a encomendas já aceites, e é da responsabilidade do ADMG efectuar ou não essas alterações, podendo ser necessário reiniciar a negociação com outro ou outros clientes. O modelo de previsão destina-se a facultar, ao nível estratégico/táctico, a monitorização da evolução da procura de papel e, ao nível táctico/operacional, o apoio ao planeamento de produção e à programação do corte, e a tomada de decisões mais criteriosas sobre a constituição de stocks. Para um número significativo de itens é possível estabelecer previsões relativamente seguras da procura potencial. Caso essas previsões sejam tomadas em consideração nos planos de produção, espera-se conseguir o escoamento dos stocks entretanto constituídos num prazo relativamente reduzido. Em situações de excesso de capacidade, o ADMG interage com o modelo de previsão [Captivo, Respício e Rodrigues, 2000] para determinar as características dos itens que se prevê virem a ser encomendados a curto prazo. Antecipa-se assim a colocação de encomendas, e a respectiva produção, o que conduz a uma exploração mais efectiva da capacidade de produção. Especificamente, os benefícios directos e indirectos do modelo de previsão incluem: a redução do número de encomendas não aceites (por a saturação temporária da capacidade de produção); o aproveitamento mais racional das capacidades de produção em períodos de procura mais baixa do que o normal; a redução do prazo de entrega das encomendas; e a redução do desperdício nos planos de corte (ao sugerir um maior número de possibilidades a explorar na definição dos planos de produção). A aceitação de encomendas condiciona o NI sob a forma de instruções do NS. A estas instruções, o NI reage sob a forma de feedback. O modelo de planeamento e escalonamento da capacidade permite coordenar a tomada de decisão dos dois níveis. As suas componentes agregadas funcionam como variáveis de coordenação entre os ADs. O ADBG interage com este modelo para planear e escalonar a produção de famílias. Nesta tarefa, partilha o critério de optimização do NI: a O modelo hierárquico de tomada de decisão maximização da utilização da capacidade, satisfazendo as encomendas. O modelo integrado permite que os diferentes níveis na hierarquia executem a sua função, apercebendo-se o sistema como um todo, embora com um enfoque diferente no nível de agregação da informação. O planeamento operacional é da responsabilidade do ADBG. As suas funções consistem na programação da produção garantindo a satisfação da procura sem atrasos, incluindo a programação do corte (conforme os modelos no capítulo 4). A minimização da perda de produção é o critério de optimização no NI. Podem-se alcançar economias de escala antecipando a produção de itens que se prevê serem encomendados num curto espaço de tempo. Para decidir relativamente às características desses itens o ADBG também interage com o modelo de previsão. Os programas de corte que se determinam no NI são transmitidos à operação sob a forma de instruções a executar de seguida. Neste nível, a implementação, ocorre também a tomada de decisão em relação à correcção de falhas de produção. O operador de produção interage com o modelo de optimização do corte para conceber programas de corte de pequena dimensão. Isto permite-lhe decidir relativamente à produção de itens que tenham ficado em falta quando se executam os programas concebidos pelo NI. Esta tomada de decisão não se representa porque só tem implicações com os outros níveis em termos dos resultados – criação de atrasos no cumprimento dos planos ou não satisfação de partes de encomendas. Caso ocorra uma alteração de grande impacto no plano, por exemplo devida a uma avaria nas máquinas, o facto é comunicado em toda a hierarquia através do fluxo de interacção entre os AD’s. Isto significa que a interacção entre os agentes de decisão também constitui uma variável de coordenação do sistema. Os resultados da produção conduzem à actualização dos dados no Sistema de Informação (SI) e à subsequente realimentação de ambos os níveis com a informação actualizada. 49 50 Capítulo 3 Capítulo 4 Programação do Corte Neste capítulo, apresentam-se os subproblemas encontrados ao nível da optimização do corte. Começa-se por descrever o problema geral, que se enquadra na área dos problemas multi-critério e que se aborda duma forma hierárquica. Descreve-se o problema de corte e revê-se a bibliografia relacionada. Apresenta-se a formulação utilizada para o problema de corte do caso de estudo, descreve-se o respectivo algoritmo de resolução e o algoritmo para o problema de afectação de bobinas às encomendas dos clientes. Descreve-se o Problema de Minimização do Número de Padrões (PMNP), propõe-se uma nova regra heurística para o PMNP e avalia-se a sua qualidade por comparação com outras heurísticas. Em seguida abordam-se os subproblemas de sequenciamento de padrões. Apresenta-se o Problema de Minimização do número de Movimentos das Navalhas (PMMN), para o qual se propõem algumas heurísticas. Discute-se o desempenho das heurísticas propostas. Descrevem-se o Problema de Minimização do Espalhamento das Encomendas (PMEE) e o Problema de Minimização das Pilhas Abertas (PMPA). 52 Capítulo 4 Propõe-se um modelo bi-objectivo em que se integram os dois critérios e apresentase uma abordagem de resolução utilizando algoritmos evolutivos. Discutem-se os resultados computacionais, que permitem estabelecer uma relação entre os objectivos e revelam a aplicabilidade desta abordagem num contexto real. A finalizar tecem-se alguns comentários ao trabalho apresentado e perspectivam-se possíveis evoluções. 4.1 Introdução O Problema de Programação do Corte consiste em determinar um programa de corte que permita cortar um conjunto de itens – pedidos correspondentes a um conjunto de linhas de encomenda, ou partes de linhas de encomenda – minimizando o desperdício resultante e optimizando eventuais critérios adicionais. Entre soluções de corte com o mesmo valor de desperdício associado, prefere-se uma solução que corte o número mínimo de padrões, [Haessler, 1975] e [Johnston, 1990]. Dada uma solução de corte, a afectação dos itens às encomendas dos clientes e o sequenciamento dos padrões origina um programa de corte. Um problema de sequenciamento consiste em determinar uma permutação de padrões que optimize um dado critério. Os critérios utilizados relacionam-se com aspectos do fluxo de trabalho – limitações físicas do espaço de trabalho e do armazém, e a eficiência da organização do trabalho, em termos logísticos e temporais. Exemplos de objectivos relacionados com ambos os aspectos são a minimização do espalhamento das encomendas e a minimização do número de encomendas parcialmente produzidas (pilhas abertas). A minimização do número de movimentos nas navalhas para cortar um programa de corte é um objectivo que se relaciona com a eficiência da execução em termos temporais. Os problemas de sequenciamento relacionam-se com o Problema do Caixeiro Viajante (PCV), mas não existe uma matriz de custos predeterminada. Ou seja, o valor da função objectivo, regra geral, só pode ser calculado conhecendo a permutação completa. Estes problemas, com um único Programação do corte 53 objectivo são, no geral, NP-difíceis. As abordagens heurísticas e metaheurísticas têm-se revelado apropriadas para a sua resolução. Para resolver o problema de programação do corte, no caso de estudo, utiliza-se uma abordagem de resolução hierárquica. Selecção das encomendas ou partes de encomenda a cortar Agregação dos pedidos por larguras Determinação duma solução de corte Afectação dos itens na solução de corte às encomendas Sequenciamento de padrões Figura 4.1: Determinação de um programa de corte Numa primeira fase, seleccionam-se as encomendas ou partes de encomenda a cortar. Os pedidos correspondentes referem-se a bobinas da mesma família e com igual diâmetro. Calcula-se o número de bobinas a cortar para cada largura, o que corresponde a agregar os dados por largura. Considerando estes dados, resolve-se o problema clássico de corte uni-dimensional. O critério de optimização é a minimização do desperdício associado ao corte. O espaço de soluções é definido por restrições de satisfação da procura, dentro dos limites impostos pela tolerância, e restrições de carácter técnico. O modelo matemático que se utilizou e o respectivo método de resolução descrevem-se em 4.2.2 e 4.2.3, respectivamente. Em seguida, procede-se à afectação dos itens às encomendas dos clientes e geram-se as ordens de corte, obtendo-se um programa de corte. A afectação tem por objectivo minimizar o número de padrões que cortam cada encomenda e descreve-se o algoritmo de resolução em 4.2.4. 54 Capítulo 4 Os problemas de sequenciamento de padrões foram tratados fora do âmbito do caso de estudo. A secção 4.3 é dedicada ao Problema de Minimização do Número de Padrões (PMNP). Descreve-se uma nova heurística para este problema e comparase o seu desempenho com outras abordagens. Na secção 4.4, aborda-se o Problema de Minimização do número de Movimentos das Navalhas (PMMN). Descrevem-se algumas heurísticas para o problema e apresenta-se um estudo comparativo. Na secção 4.5, propõe-se um novo problema de sequenciamento que resulta de considerar como objectivos a minimização do espalhamento médio das encomendas e a minimização do número máximo de pilhas abertas. Aproximou-se o conjunto óptimo de Pareto utilizando diferentes versões de um algoritmo evolutivo para optimização multi-objectivo. As experiências computacionais indicam que esta abordagem é adequada para resolução de instâncias reais do problema. Por outro lado, permitem tirar conclusões acerca da relação de variação entre os respectivos problemas de objectivo único. Este estudo responde, em termos práticos, às conjecturas teóricas de Yanasse [Yanasse, 1997]. 4.2 Problema de Corte 4.2.1 Revisão da bibliografia O Problema de Corte (PC) tem sido alvo de um grande interesse na literatura da especialidade. Este problema enquadra-se na área dos problemas de corte e empacotamento, que constitui um corpo de literatura bastante vasto. Problemas relacionados são o Problema Saco-Mochila (PSM), Problema de Bin-Packing (PBP) (que lhe é equivalente1), Problema de Sortidos. Como surveys podemos encontrar os trabalhos de [Dyckhoff, 1990] e [Dowsland e Dowsland, 1992]. Nesta dissertação trata-se apenas com o problema de corte unidimensional, 1/V/I/R na tipologia de 1 Embora estruturalmente se trate do mesmo problema, as características das instâncias induzem a designações diferentes. No PC os itens a cortar são em número elevado (da ordem dos milhares), distribuídos por um número relativamente pequeno de larguras (da ordem de meia centena). No BPP o número de itens a cortar é aproximadamente igual ao número de diferentes larguras. Programação do corte 55 Dyckhoff, e algumas das suas extensões. Por este motivo, referências a trabalhos fora deste contexto, que não sejam relevantes, são omitidas. O PC é equivalente ao PBP que é fortemente NP-completo [Garey e Johnson, 1979] e, como tal, o PC também é fortemente NP-completo. Para alguns autores, as instâncias do PC dividem-se em difíceis e fáceis. As instâncias difíceis são aquelas onde a largura média dos itens a produzir é aproximadamente metade da largura da peça original. Nestas instâncias torna-se mais difícil obter combinações de larguras aproveitando a largura disponível. Para as instâncias fáceis as soluções heurísticas têm boa qualidade. O artigo de Kantorovich parece ser o primeiro trabalho onde o PC é identificado [Kantorovich, 1960]. Este artigo, escrito em russo no original em 1939, foi traduzido para inglês e publicado apenas em 1960. Gera-se uma lista de padrões de corte seguido de uma aplicação de Programação Linear (PL). A solução linear é arredondada e assumida como sendo a óptima. Na realidade o arredondamento da solução linear pode nem sequer conduzir a uma solução admissível. Por outro lado, a geração de todos os padrões nos problemas reais não é uma tarefa exequível. Os trabalhos de Gilmore e Gomory – [Gilmore e Gomory, 1961] e [Gilmore e Gomory, 1963] – marcam a “história” do PC. A formulação matemática utilizada e o desenvolvimento da técnica da geração implícita de colunas, são ainda hoje a base das abordagens utilizadas para o problema. No primeiro trabalho, o problema é formulado através do modelo de Programação Linear Inteira, (4.1)-(4.3), em que os padrões são representados por colunas que não é necessário conhecer a priori. Assume-se que se pretende cortar d1,..., d m unidades de itens com larguras w1,...,w m , respectivamente. min ∑ j =1 x j n (4.1) sujeito a: ∑ j =1 aij x j n ≥ di , i = 1,..., m (4.2) x j ≥ 0 e inteiro, j = 1,..., n (4.3). 56 Capítulo 4 A j-ésima coluna, [a1j a2j amj ]T , da matriz de restrições representa o j-ésimo padrão de corte admissível, onde aij é o número de itens da i-ésima largura cortados nesse padrão. A variável de decisão x j , j = 1,..., n , é o número de peças a cortar usando o j-ésimo padrão. A função objectivo em (4.1) é a minimização do número total de peças a cortar. As restrições (4.2) garantem a obtenção do número de itens em falta. Em (4.3) assegura-se que as variáveis de decisão são inteiras e não negativas. Quando se utiliza uma formulação de colunas, o problema genérico, que inclui todas as possíveis colunas, neste caso (4.1)-(4.3), denomina-se por Problema Mestre (PM). Por Problema Mestre Restrito (PMR) entende-se o problema que resulta de considerar a formulação do PM apenas com um subconjunto de colunas. Gilmore e Gomory propõem resolver a relaxação linear do problema original da forma que se passa a descrever. Cria-se um PMR inicial com tantas colunas como o número de itens a cortar e onde em cada uma dessas colunas se corta apenas um item, tantas vezes quantas as possíveis. Iterativamente resolve-se a relação linear do PMR actual, pelo método do simplex. Quando numa iteração do simplex não existe uma coluna candidata à base, averigua-se se existe alguma coluna não considerada e que seja atractiva – com custo reduzido apropriado para entrar na base. Para tal, resolve-se um problema – o subproblema de geração de colunas – em que se maximiza a contribuição da coluna para a redução do valor da função objectivo. Quando não existe nenhuma coluna que possa melhorar o valor actual da função objectivo, atingiu-se um óptimo linear. A solução obtida é linear e o seu arredondamento está “próximo” do óptimo inteiro. A solução linear é arredondada por uma heurística. Os trabalhos de Haessler, [Haessler, 1971, 1975], apresentam um método de redução exaustiva repetida, que consiste em elaborar uma solução construindo e fixando os padrões um a um. Este método heurístico tem como objectivo adicional controlar o número de padrões na solução. Consideram-se, implicitamente, critérios adicionais relacionados com a qualidade da solução, tais como o número Programação do corte 57 de movimentos das navalhas ou reprocessamento de alguns itens, que o autor refere como não linearidades. Dada uma lista residual de pedidos, constrói-se um padrão que satisfaça um determinado nível de aspiração. Determina-se o número máximo de vezes que o padrão pode ser cortado e fixa-se a sua utilização. Para cada pedido, calcula-se o número de itens cortados no padrão e actualiza-se a lista residual de pedidos. Repete-se esta sequência de passos até esgotar a lista de pedidos. Para construir um novo padrão, calculam-se dois descritores: a estimativa do número total de peças necessárias para satisfazer os pedidos residuais e o número médio de itens a cortar em cada uma dessas peças. Estabelecem-se restrições a verificar pelo novo padrão em relação aos seguintes parâmetros: valor máximo permitido para o desperdício; número máximo e mínimo de itens no padrão e número mínimo de repetições para o padrão. Quando não é possível encontrar um padrão que verifique as restrições, estas são sistematicamente relaxadas por ajustamento dos respectivos parâmetros. Até à última década, os desenvolvimentos sobre este problema concentraram-se essencialmente em processos heurísticos. A existência de tolerâncias em várias das indústrias onde se aplica permite que, na prática, as soluções heurísticas sejam bastante satisfatórias, se não óptimas. Goulimis [Goulimis, 1990] apresenta uma abordagem de resolução exacta no âmbito da indústria do papel. Utiliza-se uma formulação de colunas em PLI, considerando explicitamente os padrões que podem ser utilizados, onde o objectivo é a minimização do desperdício global e as restrições de satisfação da procura envolvem tolerâncias. Considera-se uma variável adicional que conta o total de carretéis a utilizar. Gera-se previamente um conjunto de padrões admissíveis. O problema é resolvido através dum algoritmo que combina uma fase de introdução de planos de corte de Gomory, seguida da aplicação dum algoritmo de pesquisa em árvore com ramificação e limitação com restrições sobre o valor das variáveis. As instâncias de Programação Linear são resolvidas recorrendo a um pacote de 58 Capítulo 4 software. Esta abordagem conduz a soluções não óptimas, dado que apenas se consideram os padrões “mais eficientes” quando o número de padrões admissíveis é “demasiado grande”. Os resultados, relativos a um conjunto de 500 instâncias difíceis geradas aleatoriamente, reportam um total de 11% de problemas não resolvidos, sendo de notar que estas instâncias são de pequena dimensão (em média 12 itens por instância e um máximo de 4 itens por padrão). A abordagem revela-se inadequada para problemas fáceis. O PC continua a ser um desafio para os investigadores. O desenvolvimento tecnológico e os avanços em termos de investigação fundamental contribuíram decisivamente para o panorama actual. Esta evolução pode ser ilustrada por duas citações referidas em [Hinxman, 1980]. A primeira é acerca da abordagem de Gilmore e Gomory e do desenvolvimento sucessivo de procedimentos para o subproblema Saco-Mochila: “Stainton1 observa que dum ponto de vista prático o custo de proceder como eles (referindo-se a Gilmore e Gomory) prescrevem seria proibitivo – o custo computacional seria superior a quaisquer poupanças que se pudessem obter na utilização do ferro”. A segunda refere-se ao corpo reduzido de literatura nesta área no final da década de 70 e alerta que “a quantidade de literatura referente ao problema de corte é muito limitada, o que se deve ao facto de muitos modelos, procedimentos e programas terem sido desenvolvidos por empresas e mantidos confidenciais.” 2 A formulação de Gilmore e Gomory, para além de suportar a maior parte das abordagens ao PC, permitiu estabelecer algumas propriedades importantes. A propriedade do arredondamento superior, conhecida por integer round-up property (IRUP) na literatura anglo-saxónica, verifica-se para um problema de minimização em programação linear inteira, se para qualquer instância, o óptimo é igual ao 1 Não se consultou o trabalho referido. A referência é Stainton, R. S., 1977, “The cutting stock problem for the stock-holder of steel reinforcement bars”, Operational Research Quartely, 28, pp 139-149. 2 Esta citação refere-se ao trabalho Abraham, P. M., Kirby, S. J. e Ng, Y. G., 1976, “Production schedule of a float glass process plant”, Systems Engineering Science and Industrial Mangement, University of Liverpool, que não se consultou. Programação do corte 59 arredondamento superior do limite inferior dado pelo óptimo da relaxação linear. O problema de corte clássico goza de IRUP para algumas classes de instâncias [Marcotte, 1985], embora seja NP-difícil decidir se uma determinada instância goza de IRUP [Marcotte, 1986]. A propriedade de arredondamento superior modificada, conhecida por modified integer round-up property (MIRUP), introduzida em [Scheithauer e Terno, 1995b], verifica-se se o óptimo não excede o arredondamento superior do óptimo da relaxação linear acrescido de uma unidade. Existe a conjectura de que o problema de corte clássico goza de MIRUP [Scheithauer e Terno, 1995b] e não foi ainda encontrada nenhuma instância para a qual o gap de linearidade seja pelo menos de 2 unidades [Scheithauer et al, 2001]. Os trabalhos relevantes da última década, com excepção da heurística de Wäscher e Gau, [Wäscher e Gau, 1996], concentram-se no desenvolvimento de abordagens exactas para o PC. Após se ter revelado a eficiência do método de partição e geração de colunas, que resulta da combinação da geração implícita de colunas com o método de pesquisa em árvore com ramificação e limitação, na resolução do problema de corte binário [Vance et al, 1996], vários autores desenvolveram, com sucesso, algoritmos de partição e geração de colunas para a obtenção de soluções óptimas para o PC. De entre estes trabalhos salientam-se [Scheithauer e Terno, 1995a], [Vance, 1998], [Vanderbeck, 1999], [Vanderbeck, 2000b], [Valério de Carvalho, 1999], [Degraeve e Schrage, 1999] e [Degraeve e Peeters, 2002]. No capítulo 5, descreve-se este método mais detalhadamente, assim como as abordagens que se apresentam nos trabalhos acima referidos. Em [Scheithauer et al, 2001] introduz-se outro tipo de abordagem exacta, que combina a técnica de geração implícita de colunas com a introdução de planos de corte de Chvatal-Gomory. Em [Belov e Scheithauer, 2002], esta ideia é retomada e adaptada ao PC em que as peças originais têm diferentes dimensões. Recentemente, Schilling e Georgiadis apresentam uma extensão do PC que integra outros aspectos, para além da minimização do desperdício [Schilling e Georgiadis, 2002]. Numa formulação, em PLIM, a função objectivo é a 60 Capítulo 4 maximização do lucro e integra receitas, custos da matéria prima, custos de mudança entre padrões e custos de reciclagem. As variáveis incluem a forma como é cortado cada carretel, e resolve-se o modelo através de pesquisa em árvore com ramificação e limitação no GAMS/CPLEX. Este modelo é bem adaptado às características dos problemas reais e promissor para aplicação prática, embora os resultados computacionais apenas refiram problemas de dimensão modesta. Nos exemplos apresentados, o número máximo de larguras considerado é 9 e o número máximo de rolos por padrão é 6, o que corresponde a instâncias de pequena dimensão. 4.2.2 Modelo de optimização do corte Para resolver as instâncias do Problema de Corte, no caso de estudo, utilizou-se um modelo de PI, que se baseia na formulação de Gilmore e Gomory (4.1)-(4.3). Para um determinado diâmetro e família calcula-se o número de itens d1,..., dm , de cada largura, w 1 ,...,w m , i =1,...,m , respectivamente, a produzir num mesmo programa de corte (agregando informação relativa a encomendas diferentes). Assume-se uma tolerância α na satisfação dos pedidos. A formulação resultante é a seguinte. [PC1] min ∑ j =1 x j n (4.1) sujeito a: n (1 − α ) d i ≤ ∑ j =1aij x j ≤ (1 + α ) d i , i = 1, ..., m x j ≥ 0 e inteiro, j = 1, ..., n . (4.4) As restrições em (4.4) garantem que o número de itens obtido para cada largura está compreendido entre os limites impostos pela tolerância. A experiência prática com a formulação original (4.1)-(4.3) mostrou que as soluções originavam muita sobreprodução. A introdução dum limite superior sobre o número de itens cortados para cada largura garante a não sobreprodução, eliminando a criação de stocks. É curioso verificar que, na generalidade, as abordagens que se apresentam na Programação do corte 61 literatura da especialidade, utilizam formulações em que as restrições de satisfação da procura têm sinal de maior ou igual, descurando este aspecto de grande importância nos problemas reais. A largura de carretel não utilizada num padrão pode ser aproveitada, pelo responsável pelo planeamento, para cortar itens extra a afectar a encomendas no plano actual ou a encomendas a satisfazer no futuro. Introduzindo variáveis auxiliares inteiras y i , i = 1,..., m , que representam o desvio absoluto em relação ao número exacto de itens pedidos para cada largura, obtém-se a formulação final, em PLI, com variáveis limitadas. [PC2] min ∑ j =1 x j n sujeito a: ∑ j =1 aij x j − y i = (1 − α )di , i = 1,..., m x j ≥ 0 e inteiro, j = 1,..., n 0 ≤ y i ≤ 2α d i e inteiro, i = 1,..., m n (4.5) (4.6). As restrições em (4.5) garantem a obtenção do número mínimo de itens e, em conjunto com a imposição de limites nas variáveis em (4.6), asseguram que não se criam stocks. 4.2.3 Algoritmo de resolução do problema de corte Para resolver o modelo do problema de corte [PC2] optou-se por utilizar a heurística de Gilmore e Gomory, descrita anteriormente, com algumas modificações. O objectivo era o desenvolvimento duma ferramenta de suporte à tomada de decisão. O algoritmo calcula soluções heurísticas de boa qualidade, e permite facilmente introduzir alterações numa solução e proceder à consequente reavaliação. Na situação real do caso em estudo, não é necessária a obtenção de soluções exactas. A existência de tolerância na satisfação da procura fornece aos responsáveis pelo planeamento alguma flexibilidade na geração de possíveis soluções. 62 Capítulo 4 Resolve-se a relaxação linear do PM utilizando a técnica da geração implícita de colunas. Em cada iteração, resolve-se a relaxação linear (RL) do PMR actual utilizando o método revisto do Simplex com variáveis limitadas. Devido à existência de tolerância na satisfação da procura, o arredondamento da solução final conduz a um plano de corte aproximado do óptimo. No subproblema de geração de colunas, integram-se as restrições definidas pelas limitações técnicas da máquina de corte, de forma a que as colunas geradas representem padrões de corte admissíveis. Considere-se que o número máximo de itens a cortar num padrão é N . A largura dum carretel é W e, devido a restrições do equipamento, a largura utilizada no corte de um padrão deve ser pelo menos W b . Num padrão de corte podem-se cortar no máximo N s itens com largura não superior a w s , que se denominam itens “pequenos”. Só são produzidos itens cuja largura não seja inferior a w st , a largura mínima comercializável. Colunas a introduzir no problema mestre restrito podem ser geradas, conforme são necessárias, resolvendo o seguinte subproblema saco-mochila com restrições adicionais. [PSM] max∑i =1 bi ai m (4.7) sujeito a: W b ≤ ∑i aiw i ≤ W ∑i ai ≤ N s ∑i :w i ≤w s ai ≤ N ai ≥ 0 e inteiro, W − ∑ aiw i ≥ w st i a ∑i i < N ou ∑ a < N s , se W − ∑i aiw i ≤ w s i :w i ≤w s i s s ∑i :w ≤w s ai ≤ N , se W − ∑i aiw i > w i i = 1,..., m (4.8) (4.9) onde os bi ’s são os valores das variáveis duais para a solução óptima da relaxação linear do problema mestre restrito actual, e ai é o número de itens da largura i a cortar no padrão. Programação do corte 63 A função objectivo em (4.7) maximiza a contribuição para a redução do valor da função objectivo da RL do PMR actual pela eventual introdução da coluna gerada. A condição (4.8) explicita duas situações que ocorrem alternativamente: − ou a soma das larguras dos itens no padrão está compreendida entre a largura mínima utilizável e a largura do carretel, e então o número total de itens e o número total de itens “pequenos” não podem exceder os respectivos valores máximos; ou − a largura não aproveitada tem de ser utilizada para cortar um item adicional cuja largura é não inferior à largura mínima que se pode comercializar, o número de itens cortados é inferior ao número máximo e, se a largura não aproveitada só é suficiente para cortar um item “pequeno”, então o número de itens “pequenos” é inferior ao respectivo valor máximo, se não o número de itens “pequenos” não excede o respectivo valor máximo. Uma coluna (a1,...,am )T , gerada pela resolução deste problema é atractiva se o seu custo reduzido é negativo, ou seja, se ∑i =1 bi ai m > 1 . Neste caso, introduz-se a coluna no PMR actual, dando origem a um novo PMR, e resolve-se em seguida a sua relaxação linear. Para resolver o subproblema utiliza-se um algoritmo de programação dinâmica baseado no algoritmo apresentado em [Gilmore e Gomory, 1963] com as modificações necessárias para garantir as restrições adicionais, e que se apresenta em algoritmo 4.1. Indexam-se os itens são por ordem não decrescente dos valores de lucro por unidade de largura, ou seja, de acordo com: bi b ≥ i +1 , i = 1,..., m − 1 w i w i +1 (4.8). Introduz-se uma variável am +1 com largura w m +1 = 1 e lucro bm +1 = 0 . Um m-vector x = (x 1,..., x m ) diz-se uma extensão dum s-vector y = (y 1,..., y s ) , m ≥ s , quando as primeiras s componentes de x coincidem com as componentes de y . Um m-vector x = (x 1,..., x m ) é lexicograficamente maior do que um s-vector 64 Capítulo 4 y = (y 1,..., y s ) sse ∃ i , 1 ≤ i < min {m, s} para o qual as primeiras i componentes de x coincidem com as componentes de y e x i +1 > y i +1 . Início de Saco-Mochila Passo 1 Reindexar os itens de acordo com (4.8); z * = 1 ; zˆ = 0 ; Wˆ = 0 ; W * = 0 ; n̂ = 0 ; n̂ s = 0 ; Para ( i = 1 até i = m ) fazer ai* = 0 ; Passo 2 {* Determinar o maior vector candidato a admissível *} Para ( k = 1 até k = m ) fazer a = W −Wˆ w ; k ( Se ( w k ) k ≤ws ( ) então ak = min ak , N − nˆ, N s − nˆ s ) senão ak = min( ak , N − nˆ ) ; Se ( nˆ + ak = N e Wˆ + ak w k ≤ W ) então ak = ak − 1 ; ˆ ˆ W = W + w k ak ; zˆ = zˆ + bk ak ; nˆ = nˆ + ak ; Se ( w k ≤ w s ) então nˆ s = nˆ s + ak ; − w st Passo 3 {* Testar a admissibilidade do vector actual e se melhora a melhor solução actual *} Se (Wˆ ≥ W b ou (Wˆ < W b e Wˆ ≤ W − w st )) então Se ( zˆ > z * ou ( zˆ = z * e Wˆ > W * )) então { * guardar solução *} Para ( i = 1 até i = m ) fazer ai* = ai ; W * = Wˆ ; z * = zˆ ; Passo 4 {* Determinar o maior índice k tal que ak ≠ 0 *} k = m ; Enquanto ( k > 1 e ak = 0 ) fazer k = k − 1 ; Passo 5 {* Decrementar ak e testar se uma extensão permite melhoramentos *} ak = ak − 1 ; nˆ = nˆ − 1 ; Wˆ = Wˆ − w k ; zˆ = zˆ − bk ; Se ( w k ≤ w s ) então nˆ s = nˆ s − 1 ; W * −Wˆ bk +1 > z * − zˆ então Seguir para Passo 7 Se w k +1 senão continuar Passo 6 {* Uma extensão da solução actual não conduz a melhoramentos *} i = k − 1 ; Enquanto ( i > 0 e ai = 0 ) fazer i = i − 1 ; k = i ; {* k é o maior índice i, 1 ≤ i ≤ k − 1 tal que ai ≠ 0 *} Se ( k = 0 ) então Terminar senão Seguir para Passo 5 Passo 7 {*Construir uma extensão da solução actual (parcialmente admissível) *} Para ( i = k + 1 até i = m ) fazer W − Wˆ ai = ; wi ( Se ( wi ≤ ws ) então ai = min ai , N − nˆ, N s − nˆ s ) senão ai = min( ai , N − nˆ ) ; Se ( nˆ + ai = N e Wˆ + wi ai ≤ W − wst ) então ai = ai − 1 ; Wˆ = Wˆ + wi ai ; zˆ = zˆ + bi ai ; nˆ = nˆ + ai ; Se ( wi ≤ ws ) então nˆ s = nˆ s + ai ; Seguir para Passo 3 Fim de Saco-Mochila Algoritmo 4.1: Algoritmo para o subproblema saco-mochila Programação do corte 65 O algoritmo gera, por ordem lexicográfica decrescente, uma sequência de vectores da forma (a1,..., am ) . Para uma solução não final (a1,..., am ) , o lucro é zˆ = ∑i =1 bi ai , m m a largura utilizada tem o valor Wˆ = ∑i =1w i ai e o número total de objectos já introduzidos na solução é nˆ = ∑i =1 ai , m dos quais nˆ s = ∑i =1,...,m :w i a ≤w s i são objectos “pequenos”. Os vectores gerados representam soluções que verificam as restrições de largura máxima e de limite sobre o número de objectos (Wˆ ≤ W , nˆ ≤ N , nˆ s ≤ N s , e nˆ < N se Wˆ ≤ W − w st ). Uma solução (a1,..., am ) é candidata a óptima se verifica as restrições de largura mínima: verifica Wˆ ≥ W b ou verifica ( ) * , tem Wˆ < W b e Wˆ ≤ W − w st . A melhor solução obtida guarda-se em a* = a1*,...,am lucro z * e utiliza uma largura total com valor W * . O algoritmo inicia com z * = 1 (pretende-se uma solução de valor superior a 1) e W * = 0 . O primeiro vector gerado é o maior vector ∑i =1w i ai m <W (a1,..., am ) que satisfaz e verifica as condições sobre os limites no número de objectos (calcula-se no Passo 2). Testa-se então se o lucro associado excede o lucro do melhor vector já encontrado e se se verificam as condições relativas à largura mínima (Passo 3). Se sim, actualiza-se a solução. Se não, avalia-se se uma extensão do maior vector, menor do que (a1,..., am ) , pode melhorar a solução actual. Seja k o maior índice tal que ak ≠ 0 (pesquisa-se no Passo 4). Então, (a1,..., ak ) tem todas as componentes não nulas de (a1,..., am ) e a sua última componente é não nula. No maior m-vector, menor do que (a1,..., am ) , o valor da componente k é inferior a ak − 1 , ou seja, é uma extensão de (a1,..., ak − 1) . Para que essa extensão melhore z * é necessário que, ao relaxar a restrição de integralidade em ak +1 , fazendo ak +1 = (W −Wˆ ) / w k +1 , se verifique um melhoramento (avaliação no Passo 5). Neste caso, calcula-se a maior extensão de (a1,..., ak − 1) que satisfaz as condições de admissibilidade em relação à largura máxima, e aos limites no número de objectos (no Passo 7). Retorna-se ao teste de melhoramento de z * e procede-se à sua eventual actualização (Passo 3). Se no teste do Passo 5, (a1,..., ak − 1) não tem uma extensão atractiva e se k > 1 , o próximo vector que pode ter uma extensão que conduza a um melhoramento é o maior ( k − 1 )-vector, menor 66 Capítulo 4 que (a1 ,..., a k − 1) . No Passo 6, o algoritmo determina se é possível construir esse vector e, se sim, retorna ao Passo 5 para testar a existência duma extensão que possa conduzir a melhoramentos. Caso contrário, a melhor solução foi encontrada e o algoritmo termina. O valor final de z * é o máximo pretendido quando o algoritmo termina no Passo 6, devido à ordem pela qual os vectores são gerados e testados no Passo 3. Começa-se por testar o maior vector admissível para o qual zˆ > 1 . Sucessivamente, no Passo 3, testa-se se o próximo vector que verifica as restrições sobre a largura máxima e sobre o número máximo de objectos também verifica as restrições de largura mínima e se zˆ > z * . Como de cada vez que se verifica um melhoramento no Passo 3, se guarda o vector associado e se actualiza a melhor solução já encontrada, no final, a solução óptima está em a* . Comentários sobre a implementação A experiência do caso de estudo mostrou que a abordagem utilizada, embora baseada numa técnica não recente e não exacta, é adequada à resolução dos problemas reais com que se deparam os responsáveis pelo planeamento do corte. Os valores típicos para os parâmetros do modelo são os seguintes: − W =420.0 (largura máxima utilizável num carretel, em cm); − W b =410.0 (largura mínima a cortar num carretel, em cm); − N =8 (número máximo de rolos por padrão); − N s =4 (número máximo de rolos “pequenos” por padrão); − w s =33.0 (largura máxima dum item “pequeno”, em cm); − w st =10.5 (largura mínima comercializável, em cm); Os valores para os parâmetros W , W b e w st variam em função do tipo de papel e da gramagem a cortar. Para os parâmetros N s e N , os valores são regra geral constantes, embora os responsáveis do planeamento aceitem aumentar esses valores, uma a duas unidades, dependendo da distribuição dos pedidos e das condições da produção. Programação do corte 67 O algoritmo foi codificado em Pascal e compilado em Turbo Pascal 6.0. O programa resultante aceita um máximo de 60 larguras diferentes. O programa integrou-se no Sistema de Apoio à Decisão e funciona duma forma interactiva, conforme se ilustra no capítulo 6. 4.2.4 Afectação dos itens numa solução de corte às encomendas Dada uma solução de corte, estabelece-se a correspondência entre cada um dos itens que a constituem e o destino respectivo. Este processo corresponde à desagregação dos dados relativos a larguras em linhas de encomenda (diferentes linhas de encomenda podem corresponder a pedidos para uma mesma largura). O objectivo é a minimização do número de padrões que cortam cada encomenda. No caso de estudo não se implementaram processos de sequenciamento dos padrões de corte e o processo de afectação estabelece um plano de corte tendo em vista a minimização do espalhamento das encomendas. Dado que a solução de corte não é exacta, pode acontecer que ocorra subprodução ou sobreprodução de algumas larguras. Na elaboração interactiva dos programas de corte, é o responsável pelo planeamento que gere estas questões. As faltas são controladas durante a construção da solução de corte. Em relação às bobinas em excesso, a afectação resulta da interacção do responsável pelo planeamento, que confirma, ou não, as sugestões que lhe são propostas, como se ilustrará no exemplo de aplicação do algoritmo. O algoritmo de afectação também é utilizado como componente dum procedimento para o planeamento e escalonamento da capacidade, que se apresenta em 5.2, onde se executa sem a intervenção do responsável pelo planeamento. Nesse caso, as faltas são ignoradas e as bobinas em excesso são afectadas a stock. Pressupõe-se assim, que existe um cliente fictício – stock. As bobinas afectadas a este cliente, na realidade, são livres e permanecem em armazém até uma possível afectação a uma linha de encomenda. Para resolver este problema, utiliza-se uma heurística que se descreve no algoritmo 4.2. Começa-se por calcular, para cada padrão P j , o número de bobinas 68 Capítulo 4 ainda não afectadas BNAP( P j ), que inicialmente é o número total de bobinas cortadas no padrão. Da mesma forma, para cada cliente C i , calcula-se o número de bobinas ainda não afectadas BNAC(C i ), que no início é a soma das bobinas pedidas em todas as linhas de encomenda associadas ao cliente i. Para cada padrão e cada linha de encomenda, calcula-se o número de bobinas que podem ser afectadas: para as larguras coincidentes, é o mínimo entre o número de pedidas e o número de cortadas no padrão; caso contrário, é zero. Estes valores dão origem a uma matriz de “possíveis afectações”. Para cada cliente, somam-se os valores de “possíveis afectações” de cada padrão às suas linhas e obtém-se o número de bobinas desse padrão, pedidas pelo cliente, que podem ser satisfeitas. Como, num mesmo padrão se podem cortar bobinas iguais que se destinam a linhas de encomenda diferentes, a afectação das bobinas de cada padrão, conduz à geração de ordens de corte. Cada ordem de corte corresponde ao corte dum dado número de carretéis – de acordo com as larguras no padrão – produzindo bobinas que se destinam ao mesmo conjunto de linhas de encomenda. O exemplo de aplicação do algoritmo, que se apresentará, ilustra como se processa a determinação de ordens de corte. Estabelecem-se primeiro as ordens de corte que permitam satisfazer completamente ou “estar mais perto” de satisfazer completamente o maior número de linhas de encomenda. Assim, afectam-se as bobinas no padrão de forma a gerar o menor número possível de ordens de corte, ou seja, o menor número possível de destinos para o total dessas bobinas. Em cada iteração, determina-se o padrão que tem o maior número de bobinas ainda não afectadas. Enquanto existirem linhas de encomenda não satisfeitas, às quais essas bobinas possam ser afectadas, procede-se à correspondente afectação. Dada a afectação parcial actual, e dado o padrão que se está a tratar, iterativamente, identifica-se o cliente ao qual se pode afectar o maior número possível de bobinas. Procede-se a todas as possíveis afectações às linhas de encomenda desse cliente, actualizando as ordens de corte no padrão. Programação do corte 69 Quando, num dado padrão ainda existem bobinas por afectar e já não existem pedidos por satisfazer, para cada largura de bobina não afecta, pesquisa-se no conjunto de pedidos se existe alguma linha de encomenda à qual se pode afectar no limite superior da tolerância (em relação ao peso pedido) e sugerem-se as possíveis afectações nestas condições. Caso contrário, sugere-se afectar as bobinas em sobreprodução a possíveis linhas de encomenda, que não tinham sido consideradas no conjunto de pedidos e cuja produção esteja planeada para períodos posteriores. Quando também não existem linhas nessas condições, ou quando o algoritmo é utilizado sem a interacção do responsável pelo planeamento, as bobinas por afectar são consideradas stock. O processo termina quando já não existem nenhum padrão com bobinas por afectar. Início de Afectação Para todo o j, calcular BNAP( P j );Para todo o i, calcular BNAC( C i ); calcular a matriz de “possíveis afectações”; Enquanto ( ∃j : BNAP( P j )>0) {* existem bobinas por afectar *} fazer seja P j o padrão para o qual BNAP( P j ) é o máximo; {* escolher o padrão a afectar *} em caso de empate escolher o que pode afectar o maior número de bobinas a linhas de encomenda parcialmente satisfeitas. Enquanto (existem linhas de encomenda que podem ser afectadas a P j e BNAP( P j )>0) fazer seja C i o cliente com maior número de bobinas que podem ser afectadas de P j ; em caso de empate, escolher o que tiver maior número de linhas de encomenda já parcialmente satisfeitas; proceder a todas as possíveis afectações de bobinas em P j às linhas de C i ; actualizar as ordens de corte associadas a P j ; actualizar os valores da matriz de “possíveis afectações”; Para todo o j, actualizar BNAP( P j );Para todo o i, actualizar BNAC( C i ); Fim de Enquanto Enquanto (BNAP( P j )>0) {* os pedidos estão satisfeitos e existem bobinas por afectar *} fazer Para cada largura de bobina ainda não afecta em P j fazer Se existe uma linha sobre essa largura “abaixo” do limite superior da tolerância (peso) então afectar a essa linha de encomenda senão afectar a uma linha fora do programa (ou a stock) Fim de Enquanto Fim de Enquanto Fim de Afectação Algoritmo 4.2: Afectação dos itens na solução de corte às encomendas dos clientes 70 Capítulo 4 Exemplo de aplicação do algoritmo Afectação Considere-se que se pretende elaborar um programa de corte para o seguinte conjunto de pedidos, com 10 linhas de encomenda distribuídas por 4 clientes. Cliente 1 2 3 4 Linha de encomenda 1 2 3 4 5 6 7 8 9 10 Largura 82 13 84 112 122 102 122 142 82 122 Número de Bobinas 10 2 5 20 10 20 2 4 10 8 Total 10 37 26 18 Agregando os pedidos de larguras iguais, obtém-se o seguinte conjunto de pedidos. Largura 13 82 84 102 112 122 142 Total Número de Bobinas 2 20 5 20 20 20 4 91 Considere-se que, para este conjunto de pedidos, se obteve a seguinte solução de corte com três padrões. padrões número de carretéis 1 20 P3 2 Total de bobinas P1 P2 13 0 0 1 2 82 0 1 0 20 84 5 0 0 5 larguras 102 112 0 0 1 1 0 0 20 20 122 0 1 1 22 142 0 0 2 4 Esta solução de corte produz um total de 93 bobinas, enquanto que no conjunto de pedidos o total de bobinas é 91, ou seja, na solução existem 2 bobinas em sobreprodução. Para cada padrão e para cada cliente, calcula-se o número de bobinas ainda não afectadas, BNAP e BNAC, respectivamente. Calcula-se e a matriz de “possíveis afectações” – número de bobinas que se podem afectar de cada padrão a cada linha de encomenda. Programação do corte Ci 1 2 71 BNAC( C i ) linha largura 10 37 1 2 3 4 5 6 7 8 9 10 82 13 84 112 122 102 122 142 82 122 3 26 4 18 P1 P3 P2 10 2 5 20 10 20 2 BNAP( P j ) 5 2 2 4 10 8 8 80 8 Como ainda estão por afectar todas as bobinas, tem-se a seguinte afectação parcial (NA significa “não afectadas”). P1 número de carretéis 1 P2 20 0 20-NA 0 P3 2 2-NA 0 0 padrões 13 0 82 0 84 5-NA larguras 102 112 0 0 122 0 142 0 20-NA 20-NA 20-NA 0 0 0 2-NA 4-NA Começa-se por escolher o padrão que tem o maior BNAP, ou seja, o P2 . Em seguida, escolhe-se o cliente ao qual se pode afectar o maior número possível de bobinas de P2 . É o cliente 2, porque tem 30 bobinas nestas condições – 20 da linha 4 mais 10 da linha 5 – enquanto o cliente 1 tem 10, o 3 tem 22 e o quatro tem 18. As linhas 4 e 5 são integralmente satisfeitas por bobinas de P2 . Como o padrão corta 20 carretéis e desses, em apenas 10 vão ser cortadas bobinas da linha 5, o padrão desdobra-se em 2 ordens de corte: OC 1 e OC 2 . A afectação parcial passa a ser a que se segue. padrões ordens de corte 13 82 84 1 0 0 5-NA OC 1 10 0 10-NA 0 10-NA 10-L4 10-L5 0 OC 2 10 0 10-NA 0 10-NA 10-L4 10-NA 0 2 2-NA 0 0 P1 P2 P3 larguras 102 112 número de carretéis 0 0 0 0 122 142 0 0 2-NA 4-NA Actualizam-se os valores de bobinas por afectar e a matriz de “possíveis afectações”, passando a ter-se a seguinte situação. 72 Capítulo 4 Ci 1 2 3 BNAC( C i ) linha largura 10 7 1 2 3 4 5 6 7 8 9 10 82 13 84 112 122 102 122 142 82 122 26 4 18 P1 P3 P2 10 2 5 0 0 20 2 BNAP( P j ) 5 0 2 4 10 8 8 50 8 Agora, C 3 é o cliente ao qual se pode afectar o maior número possível de bobinas de P2 – que é 22; 20 da linha 6 e 2 da linha 7. Afectam-se as 20 bobinas de largura 102 à linha 6 e distribuem-se pelas OC 1 e OC 2 . No P2 estavam por afectar 10 bobinas da largura 122 (na OC 2 ), das quais 2 são afectadas à linha 7. Isto leva a um desdobramento da OC 2 em OC 2 e OC 3 . A OC 2 , onde ficam as bobinas que se acabaram de afectar, passa a cortar 2 carretéis. A OC 3 vai cortar os restantes 8 e fica com 8 bobinas não afectadas da largura 122. Passa a ter-se a seguinte afectação parcial. padrões ordens número de de corte carretéis 82 84 1 0 0 5-NA OC 1 10 0 10-NA 0 10-L6 10-L4 10-L5 0 OC 2 2 0 2-NA 0 2-L6 2-L4 2-L7 0 OC 3 8 0 8-NA 0 8-L6 8-L4 8-NA 0 2 2-NA 0 0 0 P1 P2 larguras 102 112 13 P3 0 0 0 122 142 0 0 2-NA 4-NA Os valores de bobinas por afectar e a matriz de “possíveis afectações” passam a ser como se segue. Ci 1 2 3 4 BNAC( C i ) linha largura 10 7 1 2 3 4 5 6 7 8 9 10 82 13 84 112 122 102 122 142 82 122 4 18 BNAP( P j ) P1 P2 10 P3 2 5 0 0 0 0 5 0 0 4 10 8 8 28 8 Programação do corte 73 Das bobinas ainda não afectadas em P2 , afecta-se o máximo possível a C 4 . Têm-se ainda, 20 bobinas por afectar da largura 82, das quais se afectam 10 à linha 9. A OC 1 , onde se afectam as 10 bobinas da linha 9 fica completa. As 8 bobinas da largura 122 ainda não afectadas em OC 3 , afectam-se à linha 10, que fica satisfeita. Por fim, afectam-se as 10 bobinas da largura 82 (ainda não afectadas em OC 2 e OC 3 ) à linha 1, terminando a afectação de P2 . padrões ordens de corte 13 82 84 1 0 0 5-NA OC 1 10 0 10-L9 0 10-L6 10-L4 10-L5 0 OC 2 2 0 2-L1 0 2-L6 2-L4 2-L7 0 8 0 8-L1 0 8-L6 8-L4 8-L10 0 2 2-NA 0 0 0 P1 P2 larguras 102 112 número de carretéis OC 3 P3 0 0 0 122 142 0 0 2-NA 4-NA Passam a ter-se os seguintes valores de bobinas por afectar e de “possíveis afectações”. Ci 1 2 3 4 BNAC( C i ) linha largura 0 7 1 2 3 4 5 6 7 8 9 10 82 13 84 112 122 102 122 142 82 122 4 0 BNAP( P j ) P1 P2 0 P3 2 5 0 0 0 0 5 0 0 4 0 0 0 0 8 O padrão com maior número de bobinas não afectadas é P3 . Deste padrão, começase por afectar 4 bobinas de largura 142 à linha 8 (do cliente 3) e em seguida 2 de largura 13 à linha 2 (de C 2 ). Sobram 2 bobinas de largura 122. Percorrem-se as linhas já completas, para avaliar se se pode afectar alguma no limite da tolerância. Assuma-se que a afectação está a decorrer interactivamente – é solicitado ao responsável pelo planeamento a confirmação da afectação da sobreprodução. Considerando uma tolerância de 10%, sugere-se afectar 1 bobina extra à linha 5. O pedido era de 10 bobinas e exceder-se-ia o limite de tolerância no peso, se se afectassem as 2 bobinas. Sugere-se afectar a outra bobina a uma linha por 74 Capítulo 4 programar – seja a linha 35. O responsável pelo planeamento aceita as sugestões. O P3 dá origem a duas ordens de corte – OC 4 e OC 5 – cada uma delas cortando um carretel. Passa-se a ter a seguinte afectação parcial. padrões ordens de corte 13 82 84 1 0 0 5-NA OC 1 10 0 10-L9 0 10-L6 10-L4 10-L5 0 OC 2 2 0 2-L1 0 2-L6 2-L4 0 8-L4 8-L10 P1 P2 P3 larguras 102 112 número de carretéis 0 0 122 142 0 0 2-L7 OC 3 8 0 8-L1 0 8-L6 OC 4 1 1-L2 0 0 0 0 1-L5 OC 5 1 1-L2 0 0 0 0 1-L35 2-L8 0 2-L8 Finalmente, afectam-se as 5 bobinas cortadas em P1 à linha 3 dando origem à sexta ordem de corte. As ordens de corte são reindexadas e obtém-se o seguinte programa de corte final. ordens de corte OC 1 OC 2 OC 3 OC 4 OC 5 OC 6 número de carretéis 1 10 2 8 1 1 13 0 0 0 0 1-L2 1-L2 82 0 10-L9 2-L1 8-L1 0 0 84 5-L3 0 0 0 0 0 larguras 102 112 0 0 10-L6 10-L4 2-L6 2-L4 8-L6 8-L4 0 0 0 0 122 142 0 0 10-L5 0 2-L7 0 8-L10 0 1-L5 2-L8 1-L35 2-L8 Para cada linha de encomenda, o número de bobinas programadas é exactamente o número de bobinas pedidas, com excepção da linha 5 que tem uma bobina extra. A linha 35, que não tinha sido considerada para cortar neste programa, passa a ter uma bobina já programada e, para esta linha, actualiza-se o respectivo valor de bobinas por programar. 4.3 Problema de Minimização do Número de Padrões O Problema de Minimização do Número de Padrões (PMNP) pode ser definido como o problema de encontrar uma solução de corte em que se considera como objectivo adicional a minimização do número de padrões utilizados. Programação do corte 75 Teorema O PMNP é NP-difícil. Prova Considere-se que a procura de cada item é unitária. Neste caso, o problema reduzse ao PC: porque cada padrão não pode ser utilizado mais do que uma vez. O PC é equivalente ao PBP que é fortemente NP-completo [Garey e Johnson, 1979]. Logo, o PMNP é NP-difícil. ❏ Considere-se uma solução de corte predeterminada. Os algoritmos k-combinação (k-combining) permitem obter soluções heurísticas para o PMNP, de qualidade razoável. Estas heurísticas, baseiam-se na filosofia das heurísticas k-optimal, desenvolvidas para o Problema do Caixeiro Viajante, e testam iterativamente se é possível reduzir a cardinalidade da solução, mantendo a sua qualidade em termos de desperdício resultante. Um algoritmo k-combinação consiste em, dada uma solução de corte, avaliar para cada subconjunto de k padrões, se é possível substituí-lo por um conjunto de k-1 padrões, cortando o mesmo conjunto de itens. Sempre que tal é possível, actualiza-se a solução ocorrendo uma k-combinação. Para proceder ao teste e à eventual substituição dos padrões utiliza-se um procedimento, que se designa por regra k-combinação. Sempre que se encontra uma k-combinação, ela é efectuada e recomeça-se o processo até que não existam mais k-combinações. Início de k-combinação geral i=2; Enquanto (i<k) fazer Repetir Para cada subconjunto de i padrões fazer Testar se é possível combinar em i-1 padrões por regra i-combinação; Se pode combinar então actualizar solução de corte Até nenhuma i-combinação ser detectada; i=i+1; Fim de Enquanto Fim de k-combinação geral Algoritmo 4.3: Algoritmo geral para uma heurística k-combinação 76 Capítulo 4 Por motivos de eficiência computacional, com excepção do algoritmo que se esboça em [ESGWI, 1996], apenas se desenvolveram regras 2 e 3-combinação. Recentemente, em [Vanderbeck, 2000b] e [Schilling e Georgiadis, 2002] apresentam-se abordagens exactas, embora a sua aplicabilidade aos problemas reais não tenha sido ainda demonstrada. 4.3.1 Revisão da bibliografia Em [Johnston, 1984] explora-se uma regra 2-combinação que permite obter todas as possíveis combinações de dois padrões. Esta regra consiste no seguinte: “Considerem-se dois padrões P1 e P2 a cortar, respectivamente, r1 e r2 vezes, valores cujo ratio é p:q. Os padrões são combináveis se diferem 0 mod(p + q ) no número de vezes que cortam cada largura.” Uma regra 3-combinação que obtém todas as combinações de 3 padrões em 2 é referida em [Johnston, 1986]. Três padrões P1 , P2 e P3 , cortados, respectivamente, r1 , r2 e r3 vezes, podem ser combinados em P1′ e P2′ a cortar r1′ e r2′ vezes, respectivamente, se e só se para cada largura, o número total de itens cortados no triplo original pode ser escrito como uma combinação linear não negativa de r1′ e r2′ onde r2′ = r1 + r2 + r3 − r1′ . Esta regra pode apresentar tempos de execução longos pois pode ser necessário testar todos os possíveis valores para r1′ , desde 1 até à parte inteira de (r1 + r2 + r3) / 2 . Por outro lado, os valores do número total de itens para cada largura podem ser grandes, obrigando a testar um elevado número de possíveis coeficientes. Em [Allwood e Goulimis, 1988] e [Goulimis, 1990] é apresentada uma regra 3combinação, a regra da escada, que permite identificar, embora parcialmente, pares de padrões resultantes de combinar de três padrões. Esta regra só pode ser aplicada quando se verifica um conjunto de pré-condições muito específicas: 1. O desperdício em cada padrão é menor do que a menor largura no conjunto de padrões; 2. Não existe nenhuma largura repetida em cada padrão; 3. Dois dos padrões originais são cortados igual número de repetições. Programação do corte 77 A figura 4.2 ilustra a regra de Goulimis na combinação dum triplo de padrões P1 , P2 e P3 a cortar, respectivamente, r1 , r2 e r3 vezes, num par P1′ e P2′ a cortar r1′ e r2′ . Os padrões originais são divididos em duas secções. Por secção entende-se o conjunto de uma ou várias larguras. Para que os padrões possam ser combinados é necessário que se consigam estabelecer secções de forma a que P1 partilhe uma secção com P2 , e que P2 partilhe uma secção com P3 . A regra consiste em cortar num mesmo padrão ( P1′ ) as secções que são cortadas r1 vezes ( S1 e S6 ) e no outro as secções cortadas r1 + r2 vezes ( S3 e S4 ). Padrões originais P1 S1 r1 S2 P2 S3=S2 r2 S4 P3 S5=S4 S6 r3 = r1 Padrões resultantes P1′ P2′ S1 r1′ = r1 S6 S3 S4 r2′ = r1 +r2 Figura 4.2: Aplicação da regra 3-combinação de Goulimis A primeira abordagem que considera aspectos de sequenciamento de padrões em simultâneo com minimização do desperdício é apresentada em [Johnston, 1995]. Utilizando pesquisa em árvore, procuram-se padrões atractivos que vão sendo fixados de forma a manter o valor do desperdício numa região admissível. Essa região é determinada previamente, através de geração implícita de colunas convencional num modelo de Programação Linear. Em [Respício, Captivo, e Paixão, 1996] apresenta-se uma nova regra 3-combinação, que se descreve em 4.3.2. Compara-se o desempenho desta regra com as de Johnston e de Goulimis. Curiosamente, quando este trabalho foi apresentado, o 29º Grupo de Estudo com a Indústria da Universidade de Oxford estudou o PMNP, sob proposta da empresa Greycon, tendo produzido o relatório 78 Capítulo 4 [ESGWI, 1996]. Neste trabalho, esboça-se uma nova regra k-combinação geral, que se testa sobre quatro instâncias reais fornecidas pela Greycon. Os resultados não são conclusivos quanto à qualidade da regra. Recentemente, Vanderbeck [Vanderbeck, 2000b] formula o Problema de Corte através dum modelo de programação inteira quadrática, em que minimiza o número de padrões impondo um limite superior sobre o número de peças a cortar. Este limite é dado pela solução óptima do PC associado, que se resolve previamente. O modelo é decomposto e reformulado de forma a obter um modelo de PLI que é resolvido através dum algoritmo de partição e geração de colunas. Este trabalho constitui uma contribuição inovadora pois descreve uma abordagem exacta para a resolução do problema. No entanto, na nossa opinião, os resultados parecem enviesados. O autor apresenta uma redução da ordem de 64% do número de padrões em relação ao valor dado pela solução do PC, mas utilizou o PC com restrições de igualdade para a satisfação da procura, o que restringe muito o espaço de soluções e faz aumentar o número de diferentes padrões na solução final. Por outro lado, em 16 instâncias, 25% não foram resolvidas em 2 horas de CPU, três das quais de dimensão reduzida (7, 11 e 14 itens, respectivamente). Em [Schilling e Georgiadis, 2002] considera-se uma formulação para o PC que inclui custos de mudança de padrão, o que, dada uma estrutura de custos adequada, permite obter soluções de cardinalidade mínima. 4.3.2 Heurística para o Problema de Minimização do Número de Padrões A nova regra que se propõe, 3-combinação R, baseia-se na ideia de Johnston, mas restringe o número de combinações lineares a averiguar e descreve-se de seguida. Regra 3-combinação R Considere-se um triplo de padrões P1 , P2 e P3 , cortados r1 , r2 e r3 vezes, respectivamente. Estes padrões podem ser combinados em P1′ e P2′ , a cortar r1′ e r2′ vezes, respectivamente, se para cada largura i no triplo de padrões original, Programação do corte 79 1≤i ≤m , o número total de itens cortados, d i , pode ser escrito como uma combinação linear não negativa de r1′ e r2′ , onde − r1′ divide dmin , com dmin= min { d i , 1 ≤ i ≤ m } , e − r2′ = r1 + r2 + r3 − r1′ . O algoritmo 4.4 descreve a regra 3-combinação R. Como se pretende um algoritmo de utilização geral, considera-se que um padrão é admissível se a largura não excede a largura máxima utilizável, W, e se o número total de rolos cortados não excede o respectivo limite N. Durante a construção dos novos padrões, designam-se por Ŵj e N̂ j os valores actuais para a largura utilizada e o número de itens no padrão j, respectivamente. Dado o triplo de padrões original, começa-se por fazer uma lista, ordenada por ordem não crescente, das larguras w i e do correspondente número de rolos cortados d i , e calcula-se dmin= min { d i , 1 ≤ i ≤ m } . Como os padrões resultantes se obtêm por inserção sequencial das larguras, utilizando esta ordenação introduzem-se primeiro as larguras que têm mais hipótese de esgotar a largura total admissível. Pressupõe-se que, se existir um par de padrões que corte esse conjunto de rolos, um desses padrões, será cortado um número de vezes igual a dmin ou igual a um dos números que o dividem (incluindo a unidade). Neste caso, para a largura (ou uma das larguras) a cortar o número mínimo de vezes, a combinação linear terá um coeficiente nulo, ou seja, todas as bobinas com essa largura são cortadas num só padrão. Para cada par r1′ e r2′ , nas condições especificadas, percorre-se a lista de larguras e, para cada uma, tenta-se inserir o máximo número possível de itens no padrão a ser cortado o maior número de vezes. Em seguida, testa-se se o remanescente ainda pode ser inserido no outro padrão, sem que sobrem itens e garantindo a admissibilidade. A função min (x 1,..., x k ) corresponde à função mínimo de um conjunto de valores, para o correspondente número de argumentos. A operação P j ⊕ aij representa a “adição” de aij réplicas do item i ao padrão Pj , e inclui a soma de aij unidades à componente i do vector que o representa, a actualização de Wˆ j para Wˆ j + aijw i , e a actualização de Nˆ j para Nˆ j + aij . 80 Capítulo 4 Para percorrer os números que dividem dmin , utilizou-se factorização directa, que é o método mais simples para encontrar os divisores dum número. Considerese que se pretende factorizar k. Percorrem-se sequencialmente os inteiros até k , testando para cada um deles se a divisão é exacta. Basta pesquisar os inteiros menores ou iguais a k , pois ( k + 1 )⋅ k > k , e para cada factor que se encontra, fica também determinado o respectivo cofactor (que excede Algoritmo regra 3-combinação R Fazer lista ordenada de larguras e número de rolos: w i , d i . dmin = min( d1,..., d m ) ; r1′ =d min ; Repetir r2′ =r1 + r2 + r3 −r1′ ; Se r1′ < r2′ então trocar os valores r1′ e r 2′ ; Wˆ1 = 0; Wˆ2 = 0; Nˆ 1 = 0; Nˆ 2 = 0; Para ( i =1 até i = m ) fazer { ai1 = 0; ai 2 = 0 }; combina = true; i =1 ; {* tentar construir padrões admissíveis a cortar r1′ e r2′ vezes *} Enquanto (combina) e ( i ≤ m ) fazer {* testar combinação para as várias larguras *} Se ( d i div r1′ > 0 ) então {* di “cabe” em P1′ *} ai1 = min(N − Nˆ 1, d i div r1′, (W −Wˆ1) / w i ) ; resto =d i −ai 1 r1′ ; Se ( resto mod r2′ = 0 ) então {* tentar pôr o resto em P2′ *} ai 2 = min(N − Nˆ 2, resto div r2′ , (W −Wˆ2 ) / w i ) ; Se ( ai 2 = resto div r2′ ) então {* actualiza padrões *} P1′ = P1′⊕ai 1 ; P2′ = P2′ ⊕ai 2 ; senão combina = false ; {* não combinou para esta largura *} senão combina = false ; {* não combinou para esta largura *} senão {* di “não cabe” em P1′ , testar em P2′ *} Se ( d i mod r2′ = 0 ) então ai 2 = min(N −Nˆ 2 , d i div r2′ , (W −Wˆ2 )/w i ) ; Se ( ai 2 =d i div r2′ ) então {* actualiza P′2 *} P2′ = P2′ ⊕ai 2 ; senão combina = false ; {* não combinou para esta largura *} senão combina = false ; {* não combinou para esta largura *} Fim de Enquanto Se não(combina) então r1′ = Pr óximo _ divisor (d min , r1′) ; Até combina ou ( r1′ = 0 ) Fim de Algoritmo regra 3-combinação R. Algoritmo 4.4: Regra 3-combinação R k ). Programação do corte 81 A função Próximo_divisor(A,B), dado B, devolve o próximo divisor de A, a testar, que pode ser o próximo factor de A entre 1 e A , ainda não testado, ou um cofactor. Se já foram testados todos os divisores, devolve 0. Tendo-se determinado d min , no início do processo, o passo do ciclo é executado no máximo 2 d min vezes, ou seja, esta regra é O ( dmin ). Este valor é totalmente dependente do terno de padrões a analisar. Na prática, verifica-se que este valor é, regra geral, de uma ordem de grandeza pequena. Para testar exaustivamente todas as possíveis combinações lineares, têm de se testar todos os pares ( r1′ , r2′ ) com 1 ≤ r1′ ≤ (r1 + r2 + r3) / 2 , ou seja, a regra exaustiva é O ((r1 + r 2 + r3 )/2) . Exemplo de aplicação da regra 3-combinação R Considere-se o seguinte triplo de padrões P1 , P2 e P3 a cortar 1, 3 e 4 vezes, respectivamente. Larguras Largura rj Pj r1 =1 P1 242 242 161 P2 161 161 161 160 P3 161 160 160 160 r2 = 3 r3 = 4 645 643 160 641 A largura máxima a cortar num padrão é 645cm e o número máximo de rolos num padrão é 6. A lista de larguras e número de itens cortados para cada largura é wi di i 1 2 3 242 161 160 2 14 15 d min= 2 , e inicia-se r1′ =d min = 2 e r2′ = 8−r1′ = 6 . Trocam-se os valores r1′ = 6 e r 2′ = 2 . P1′ e P2′ são iniciados como vazios, e, para ambos, iniciam-se os valores da largura e do número de rolos cortados como nulos. 82 Capítulo 4 Inserir item 1: não pode ser inserido em P1′ ( d1 =2<6), é inserido uma vez em P2′ ( a12 =d1 div r2′ =1 ) esgotando d1 ( d1 mod r 2′ = 0 ). r j′ P j′ r1′ = 6 P1′ vazio 0 0 r2′ = 2 P2′ 242 242 1 Larguras Wˆ j Nˆ j Inserir item 2: é inserido 2 vezes em P1′ ( a21 = d 2 div r1′ = 2 ), sobram 2 rolos e insere-se a largura uma vez em P2′ ( 2 div r 2′ =1 ), esgotando a quantidade ( 2 mod r 2′ = 0 ). r j′ P j′ r1′ = 6 P1′ 161 161 322 2 r2′ = 2 P2′ 242 161 403 2 Larguras Wˆ j Nˆ j Inserir item 3: não é possível, porque d3 =15 não se pode escrever como uma combinação linear de 6 e de 2. Não é possível fazer a combinação usando os valores r1′ = 6 e r 2′ = 2 . Actualiza-se r1′ =1 (cofactor de 2 na decomposição de d min= 2 ) e r2′ = 8−r1′ = 7 . Trocam-se r1′ = 7 e r2′ =1 . P1′ e P2′ são iniciados como vazios. Inserir item 1: não pode ser inserido em P1′ , é inserido duas vezes em P2′ ( a12 =d1 div r2′ = 2 e d1 mod r2′ = 0 ). r j′ P j′ r1′ = 7 P1′ vazio r2′ =1 P2′ 242 Larguras 242 Wˆ j Nˆ j 0 0 484 2 Inserir item 2: é inserido duas vezes em P1′ ( a21 = d 2 div r1′ = 2 ), esgotando-se a quantidade deste item não se insere em P2′ ( 0 mod r2′ = 0 e a22 = 0 div r2′ = 0 ). r j′ P j′ r1′ = 7 P1′ 161 161 362 2 r2′ =1 P2′ 242 242 484 2 Larguras Wˆ j Nˆ j Programação do corte 83 Inserir item 3: é inserido duas vezes em P1′ ( a31 =d3 div r1′ = 2 ), sobra 1 rolo que é inserido em P2′ ( 1 mod r2′ = 0 e a31 =1div r 2′ =1 ). r j′ P j′ r1′ = 7 P1′ 161 161 160 r2′ =1 P2′ 242 242 160 Larguras Wˆ j 160 Nˆ j 642 4 644 3 Os padrões P1′ e P2′ , na tabela acima, a cortar 7 e 1 vezes, respectivamente, são admissíveis e permitem obter os mesmos itens que o triplo original de padrões. 4.3.3 Resultados computacionais Testou-se o desempenho da regra proposta, utilizando um conjunto de dados relativos a 22 instâncias reais fornecido pelo produtor do caso em estudo. Comparou-se a nova regra com a regra exaustiva de Johnson e a regra da escada de Goulimis. Os algoritmos foram codificados em Pascal, e utilizou-se o compilador Borland Pascal 7.0. Os tempos de execução referem-se a testes executados num computador com processador Pentium IV 1600MHz com 256Mb de RAM. Na implementação dos algoritmos utilizou-se o esquema geral k-combinação. Efectuam-se primeiro as combinações de ordem 2 e depois passa-se às combinações de ordem 3. Um parâmetro para a complexidade do problema, que se designa por CC, é dado pelo produto entre o número médio de rolos por padrão e o número total de padrões. A tabela 4.1 apresenta as características das instâncias e os resultados obtidos por aplicação dos três algoritmos. A coluna #I é o índice da instância; as colunas n e m apresentam o número de padrões na solução e o número de larguras do problema; a coluna v é o valor para o parâmetro de dificuldade do problema de corte (largura média/largura total); #c é o número total de carretéis cortados na solução; a coluna #r é o número total de rolos cortados; #rp é o número médio de rolos por padrão; #mrp é o número máximo de rolos por padrão; %D é a percentagem relativa de desperdício associado; CC é o número médio de rolos por padrão multiplicado pelo número total de padrões. Cada uma das quatro colunas 84 Capítulo 4 sob o título #Reduções apresenta o número de padrões reduzidos por aplicação de cada uma das regras: 2C, 3CG, 3CR e 3CJ, que correspondem, respectivamente, às regras 2-combinação, 3-combinação de Goulimis, 3-combinação R, e 3-combinação de Johnston. Em relação aos valores que se apresentam nestas colunas, os resultados das regras 3-combinação incluem também as reduções obtidas por 2combinação. As colunas que se seguem, sob o título %Reduções, apresentam a percentagem de reduções em relação ao número de padrões original. As quatro últimas colunas apresentam os tempos de execução para cada uma das regras, em milésimos de segundo. A última linha da tabela apresenta os valores médios para as respectivas colunas. #I 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 n 9 15 7 10 6 14 9 13 9 14 21 6 22 12 15 9 9 10 28 16 28 27 14.1 m v 10 .39 15 .39 11 .37 10 .36 6 .38 17 .40 13 .39 14 .39 11 .39 16 .38 22 .40 9 .40 23 .38 12 .38 21 .39 11 .34 9 .39 11 .34 34 .36 21 .33 31 .38 32 .38 16 .38 #c 150 55 31 64 27 106 48 90 55 45 87 37 95 71 56 17 49 33 147 58 128 146 72.5 #r 450 192 96 200 81 346 176 279 169 167 273 111 298 218 204 67 151 147 495 245 447 491 241 #rp #mrp %D CC 3.00 3 0.56 27.0 3.40 5 1.54 51.0 3.14 4 0.37 22.0 3.33 5 0.50 33.3 3.00 3 2.07 18.0 3.36 4 0.97 47.0 3.75 5 0.93 33.7 3.23 4 1.65 41.9 3.11 4 0.89 28.0 4.07 6 0.21 57.0 3.33 5 0.54 70.0 3.00 3 0.57 18.0 3.33 4 0.51 73.3 3.09 4 1.50 37.1 3.86 5 0.10 57.9 4.22 6 0.19 37.9 3.22 5 0.79 29.0 4.60 6 0.36 46.0 3.50 4 0.10 98.0 4.44 6 0.13 71.0 3.82 6 0.19 107.0 3.59 5 0.16 97.0 3.52 4.6 0.67 50.06 # R e d u ç õ e s % R e d u ç õ e s 2C 3CG 3CR 3C J 2C 3CG 3CR 3C J 0 0 0 0 0 0 0 0 0 1 3 3 0 7 20 20 0 0 0 0 0 0 0 0 0 0 1 1 0 0 10 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 11 11 1 2 2 2 8 15 15 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 5 5 5 5 0 1 1 1 0 8 8 8 0 1 1 1 0 7 7 7 1 1 3 3 11 11 33 33 0 0 1 1 0 0 11 11 0 0 1 1 0 0 10 10 0 0 0 0 0 0 0 0 0 0 3 3 0 0 19 19 0 1 1 1 0 4 4 4 0 0 1 1 0 0 4 4 .14 .37 .91 .91 1.06 2.56 7.11 7.11 -3 2C 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0.2 CPU seg. 10 3CG 3CR 0 3 3 24 0 2 0 7 0 1 1 15 1 5 1 14 0 4 4 16 7 51 0 1 7 50 1 8 5 27 1 2 0 5 1 9 16 125 5 42 34 146 119 14 5 31 3C J 54 214 11 59 6 145 36 161 30 155 501 7 425 69 210 14 42 68 1076 298 1419 1115 278 Tabela 4.1: Resultados de aplicação das regras 3-combinação Os resultados mostram que, das 22 instâncias, é possível reduzir a cardinalidade por 3-combinação em 13 instâncias. Para a instância 13, não houve melhorias por combinação de três padrões, a redução que se alcança é obtida pela regra 2C. As regras 3CR e 3CJ apresentam soluções de igual qualidade. Ou seja, a nova regra 3CR executa todas as possíveis reduções por 3-combinação, reduzindo em cerca de 90% o esforço computacional da regra exaustiva 3CJ. A regra 3CG só consegue reduzir a cardinalidade em 5 instâncias (2, 8, 14, 15 e 21) e, para essas, em 2 casos (2, 16) não atinge a totalidade de reduções. Para o Programação do corte 85 conjunto global das instâncias, é possível efectuar 17 reduções por 3-combinação, que não são detectadas pela regra 2C. Destas, a regra 3CG apenas consegue detectar 5, ou seja, cerca de 30% das possíveis reduções. Em comparação, a regra 3CR detecta a totalidade das reduções (mais 70% que a 3CG), apesar de um esforço computacional adicional de 75% que não é relevante pois, para todas as instâncias este é inferior a 1 segundo de CPU. O número médio de reduções é da ordem de 7%, para o conjunto total de instâncias. Para as instâncias em que é possível efectuar reduções, a média de reduções possíveis por 3-combinação é da ordem de 12%, enquanto que por 2combinação é de apenas 1.8%. Não se evidencia uma relação entre a percentagem de reduções obtidas e algum indicador. Em [ESGWI, 1996], afirma-se que “o número de reduções parece estar relacionado com a percentagem de desperdício na solução original” e “para valores de perda inferiores a 1% o número de reduções é reduzido, notando-se maiores reduções para valores de perda superiores a 5%.” Esta afirmação faz sentido, pois um valor maior de desperdício relativo cria mais oportunidades de combinação das larguras. O estudo não é conclusivo pois estudam-se apenas 4 instâncias reais, 2 com perda superior a 5%, uma com perda de 4.2% e outra com perda inferior a 0.2%. Ou seja, esta afirmação não foi deduzida a partir das experiências realizadas e fica por esclarecer se é proveniente da experiência da Greycon. Nas experiências computacionais testou-se um conjunto de instâncias para o qual a percentagem média de perda é 0.67%. O valor máximo (2,07%) ocorre para a instância 5, e para essa instância não foram encontradas reduções por combinação de 3 padrões. Os resultados parecem indicar uma tendência crescente da percentagem de reduções em função do número máximo de rolos num padrão. Em relação a este parâmetro, as instâncias dividem-se em quatro grupos, a que correspondem os valores 3, 4, 5 e 6, respectivamente. Dentro destes grupos foi feita uma ordenação por ordem crescente do valor de perda relativa, como se apresenta na tabela 4.2. 86 Capítulo 4 Número máximo de rolos por padrão 3 4 5 6 Ordenação das instâncias 1, 12 e 5 19, 3, 13, 9, 6, 14 e 8 15, 22, 4, 11, 17, 7 e 2 20, 21, 16, 10 e 18 Tabela 4.2: Distribuição das instâncias no gráfico da figura 4.3 No gráfico na figura 4.3, apresenta-se a percentagem de reduções obtida por aplicação das regras 3CJ, 3CR e 3CG. O índice das instâncias está em abcissa e ordenaram-se os dados por ordem crescente do número máximo de rolos por padrão (#mrp) e por ordem crescente do valor de perda relativa, para igual valor de #mrp. % Reduções 40 30 20 10 0 Instâncias 1 12 5 19 3 13 9 6 14 8 15 22 4 11 17 7 2 3C G 0 0 0 0 0 5 0 0 8 15 7 0 0 0 0 0 7 0 4 11 0 0 3C R 0 0 0 0 0 5 0 0 8 15 7 4 10 0 11 11 20 19 4 33 0 10 3C J 0 0 0 0 0 5 0 0 8 15 7 4 10 0 11 11 20 19 4 33 0 10 20 21 16 10 18 Figura 4.3: Comparação da percentagem de reduções no número de padrões O gráfico da figura 4.4 evidencia a relação entre o tempo de execução de cada algoritmo e o número médio de rolos por padrão vezes o número de padrões (CC). 1400 CPU 1200 3CJ 1000 3CR 800 3CG 600 400 200 CC 0 0,00 20,00 40,00 60,00 80,00 100,00 120,00 Figura 4.4: Comparação de tempos de execução para os algoritmos 3-combinação Programação do corte 87 A regra 3CR apresenta um comportamento bastante estável, para o conjunto de instâncias testado. O seu tempo de execução parece ter um crescimento linear em função de CC. Para a regra 3CJ, comparável em termos da qualidade de resultados, o tempo de execução cresce exponencialmente em função de CC. No contexto da abordagem utilizada para a programação do corte no caso em estudo, a regra 3CR adequa-se à implementação em ambiente de apoio à decisão, para reduzir a cardinalidade das soluções de corte. A sua eficácia e desempenho (esforço computacional inferior a 0,2 segundo para todas as instâncias estudadas) permite que durante a geração duma solução de corte, interactivamente, o responsável pelo planeamento possa em simultâneo avaliar eventuais reduções da cardinalidade da solução. 4.4 Problema de Minimização do Número de Movimentos das Navalhas O tempo necessário para cortar por completo um determinado conjunto de padrões de corte é função da velocidade da máquina e dos tempos mortos que decorrem entre o término de um corte e o início do seguinte. Nas máquinas em que as navalhas são posicionadas manualmente, a soma destes tempos pode-se tornar bastante elevada. Não havendo directivas relativamente à sequência pela qual os padrões devem ser cortados, é o operador que escolhe a sequência que lhe parece mais favorável1. No entanto, mesmo para planos de cardinalidade reduzida (por exemplo, 6 padrões e 10 larguras), essa tarefa torna-se extremamente complexa. 4.4.1 Formulação Dada uma solução de corte, o Problema de Minimização do Número de Movimentos das Navalhas (PMMN) consiste em encontrar uma permutação de padrões e a 1 Este tipo de “solução” é completamente desaconselhável. Se o tempo necessário para cortar uma solução de corte tiver duração superior a um turno, o operador do primeiro turno pode escolher a “parte melhor” deixando o restante para o próximo, com as eventuais consequências que essa acção possa causar. 88 Capítulo 4 permutação das larguras em cada padrão de forma a que o número de movimentos das navalhas necessários para cortar o plano seja mínimo. As larguras, em cada padrão, são cortadas justapostas e alinhadas a um dos extremos (versão single-ended do problema). Neste caso, isto traduz-se em manter a navalha mais à esquerda sempre na mesma posição. Para remover ou introduzir uma navalha, opera-se sobre a mais à direita e deslocam-se as restantes. A função de custos difere da considerada nas restantes abordagens na literatura, que admitem ser possível introduzir uma navalha entre outras duas, sem as mover. Esta diferença traduz-se numa formulação para o PMMN com componentes distintas das já existentes na literatura, e que se passa a descrever. Considere-se uma solução de corte definida pelo conjunto de padrões P1,..., Pn . Representa-se o padrão Pj por um multiconjunto ordenado, composto pelas larguras que corta, e com cardinalidade n j . Designa-se por l ij a largura do rolo a cortar na i -ésima posição do padrão j , i = 1,..., n j , j = 1,..., n . Uma permutação dos índices dos padrões Π = (π 1 ,..., π n ) representa uma sequência de corte para os padrões. Analogamente, denota-se por Φ j = (φ1j ,...,φnj ) ∈ Γ(n j ) , a permutação dos j índices das larguras que representa a respectiva ordem de corte no padrão j, onde Γ(n j ) representa o conjunto de permutações de cardinalidade n j . As navalhas que não são necessárias para um corte permanecem na posição que equivale à largura máxima utilizável W. Dadas duas permutações de larguras Φ i e Φ j , i = 1,..., n , j>1, para cortar o padrão j após o i-ésimo, v kj (Φ i , Φ j ) = 1 indica se é necessário reposicionar a k-ésima navalha, k ≤ n j + 1 , onde v kj (Φi , Φ j ) 0, se k ≤ n + 1 e k l i = k l j ∑q =1 φq , i ∑q =1 φq , j . i = 1, caso contrário O custo de mudar do padrão i para o padrão j, ou seja, o número total de movimentos nas navalhas para cortar j após i, é dado por n +1 c ij = ∑k j= 2 v kj (Φ i , Φ j ) , onde Φ i ∈ Γ(ni ) e Φ j ∈ Γ(n j ) estão fixas. Programação do corte 89 O PMMN consiste em encontrar uma permutação Π e a correspondente sequência de permutações de larguras Φ Π = (Φπ1, ..., Φπ j , ..., Φπ n ) que permitem minimizar o valor da função n −1 z (Π, ΦΠ ) = nπ1 + 1 + ∑ j =1 cπ j ,π j +1 . Nesta função, a parcela nπ1 + 1 é o número de navalhas a posicionar para cortar o primeiro padrão da sequência, e cπ j ,π j +1 , 1 ≤ j ≤ n − 1 , é o número de movimentos necessários para cortar dois padrões consecutivos na sequência. O conjunto de soluções do problema, cresce exponencialmente com o número de padrões e com o número de larguras por padrão. A dimensão duma instância é aproximada por n! m1! mn! , onde m j é o número de diferentes larguras cortadas por Pj , ou seja, é O( n! N !n ), onde N é o número máximo de rolos que podem ser cortados num padrão. Exemplo Considere-se a solução de corte dada por P1 = (140, 120, 110, 50), P2 = (160, 100, 60, 60) e P3 = (140, 120, 70, 50, 30). As figuras 4.5 e 4.6 ilustram diferentes soluções de sequenciamento. As navalhas que têm de ser posicionadas estão marcadas com uma “setinha”. As navalhas que se mantêm na mesma posição dum corte para o outro estão marcadas com uma linha tracejada. O número de navalhas que têm de se posicionar para cortar cada sequência de larguras está indicado à direita do padrão. Na primeira solução, a sequência de corte dos padrões é dada pela permutação identidade e as permutações de larguras em cada padrão são dadas, respectivamente, por Φ1 = (2, 1, 3, 4), Φ2 = (3, 4, 1, 2) e por Φ3 = (4, 3, 2, 1, 5). O número total de movimentos das navalhas necessários para cortar essa sequência é 12. Note-se que para cortar P3 após P2 , posiciona-se uma navalha adicional, pois a cardinalidade de P3 é superior à de P2 em uma unidade. Se se cortasse P2 após P3 , usando as mesmas permutações de larguras, o número de movimentos entre os dois padrões seria apenas 2. 90 Capítulo 4 5 P1 120 140 110 50 4 P2 60 60 160 100 3 P3 50 70 120 140 30 Figura 4.5: Contagem do número de movimentos nas navalhas – 1ª solução Na segunda solução, Π = (1, 3, 2) representa a sequência de corte dos padrões. As permutações de larguras em cada padrão são dadas por Φ1 = (2, 1, 4, 3), Φ2 = (1, 2, 3, 4) e Φ3 = (2, 1, 4, 3, 5), respectivamente. O número total de movimentos das navalhas necessários para cortar essa sequência é 9. 5 P1 120 140 50 110 2 P3 120 140 50 70 30 2 P2 160 100 60 60 Figura 4.6: Contagem do número de movimentos nas navalhas – 2ª solução O PMMN relaciona-se com o Problema do Caixeiro Viajante Generalizado (PCVG). Num PCV pretende-se encontrar um circuito de custo mínimo que visite um dado conjunto de cidades. No PCVG as cidades a visitar não estão definidas à partida e estão agrupadas em conjuntos mutuamente exclusivos e exaustivos (agrupamentos), a partir dos quais uma, e exactamente uma, cidade de cada conjunto deve ser visitada. Pretende-se encontrar um caminho Hamiltoneano de custo mínimo sobre os padrões (grupos de cidades) visitando uma e uma só permutação de larguras em cada padrão (cidade). O grafo associado é assimétrico porque o custo de mudar de um padrão para outro pode ser diferente se se reverter a ordem de corte – introduzir uma navalha requer um posicionamento, enquanto que removê-la não. A figura 4.7 ilustra uma instância do PCVG com cinco agrupamentos de nós e um Programação do corte 91 possível circuito no grafo. Para facilitar a exposição, não se apresentam as ligações entre todos os pares de nós que se encontram em diferentes agrupamentos. Figura 4.7: Exemplo de um circuito para o PCVG 4.4.2 Revisão da bibliografia O PMMN foi introduzido por Pierce, que descreveu possíveis abordagens recorrendo a heurísticas, a programação dinâmica, e a programação inteira [Pierce, 1970]. A heurística que se apresenta em [Goulimis, 1990] itera em dois passos. No primeiro passo, dada uma permutação de padrões, encontra a melhor permutação de larguras para cada padrão. Este problema é identificado como um problema de fluxos numa rede e resolvido por Programação Dinâmica. No segundo passo, dada a permutação de larguras em cada padrão, encontra a melhor permutação de padrões. Este problema é um PCV e é resolvido por uma heurística 2-optimal. Em [Respício, Captivo, e Paixão, 1996] relaciona-se o problema com o Problema do Caixeiro Viajante Assimétrico Generalizado (PCVAG). A literatura relativa a esta classe de problemas desencoraja o uso de abordagens exactas. Em [Noon e Bean, 1991] apresenta-se uma abordagem baseada na Relaxação Lagrangeana para resolver problemas onde a dimensão relativa ao número de nós é no máximo 104. Em [Fischetti, Salazar e Toth, 1997] trata-se a versão simétrica do problema duma forma exacta. Apresentam-se procedimentos de separação, exactos e heurísticos, para algumas classes de desigualdades que definem facetas do problema. Estes procedimentos são utilizados num algoritmo de ramificação e corte (branch-and-cut algorithm). A dimensão dos problemas resolvidos é muito 92 Capítulo 4 pequena comparativamente com o que se pode encontrar nas instância reais do PMMN. Os autores resolvem problemas com um máximo de 442 nós agrupados num número de conjuntos da ordem de um quinto do número de nós (88 conjuntos com 5 nós em cada). Considere-se uma instância real do PMMN. No caso do número máximo de itens por padrão ser 6, o número máximo de permutações intrapadrão é da ordem de 720 (número médio de nós por conjunto). Para um problema com 10 padrões, têm-se 7200 nós agrupados em 10 conjuntos. Em [Respício, Captivo e Paixão, 1996] apresentam-se heurísticas de ordenação baseadas nas ideias das heurísticas desenvolvidas para o PCV. Finalmente, em [Easwaran et al, 1996] apresenta-se a aplicação de um algoritmo evolutivo ao PMMN. Utiliza-se uma representação dos indivíduos, especial para este problema, e adaptam-se alguns dos operadores genéticos desenvolvidos para o PCV. Provavelmente devido à grande complexidade do PMMN, o corpo da literatura dedicado a este problema é extremamente reduzido, apesar da sua importância na prática. Os resultados para o PCVG que se têm vindo a apresentar na literatura são também pouco motivadores, sendo que a versão assimétrica do problema parece ter sido ignorada. Na abordagem que se apresenta em [Schilling e Georgiadis, 2002] o PMMN é integrado na formulação do PC, que se resolve de forma exacta. Como já se referiu anteriormente, não é claro que esta abordagem se adeqúe a problemas reais de dimensão razoável. Justifica-se assim o desenvolvimento de abordagens heurísticas e meta-heurísticas para a resolução das instâncias reais deste problema. 4.4.3 Heurísticas de resolução Considere-se uma solução de corte definida pelo conjunto de padrões P1,..., Pn , que cortam r1,..., rn rolos, respectivamente, e onde aij é o número de vezes que a largura w i é cortada no padrão j , i = 1,..., m , j = 1,..., n . O número máximo de rolos que podem ser cortados num padrão é N. Programação do corte 93 Heurística de Ordenação A heurística de ordenação tem por base o cálculo das medidas Apai e Env j , que permitem relacionar as larguras e os padrões entre si, e que se passam a descrever. Seja 1, se w i é cortada no padrão j , i = 1,..., m , j = 1,..., n . δ ij = 0, caso contrário O número total de vezes que a largura wi "aparece" nos padrões de corte é dado por Apai = ∑ j =1 aij , i = 1,..., m . n Uma medida do envolvimento do padrão j com os restantes padrões na solução é dada por Env j = m m i =1 i =1 ∑ Apai δ ij ∑ aij , j = 1,..., n . A heurística de ordenação, que se descreve no algoritmo 4.5, estabelece para cada padrão, uma permutação de larguras onde as larguras cortadas mais vezes são colocadas o mais à esquerda possível, ou seja, as larguras em cada padrão são ordenadas por ordem não crescente de Apa. Para larguras com igual valor desta medida, desempata-se colocando primeiro a de maior valor de largura. Este procedimento coloca a largura mais cortada (ou a maior das larguras mais cortadas) na primeira posição de todos os padrões que a cortam e assim sucessivamente. Em seguida, os padrões são ordenados por ordem não crescente de Env . Na solução que se obtém, o primeiro padrão é o que corta o maior número de larguras “mais cortadas”. Esta ordenação agrupa os padrões que potencialmente cortam mais larguras em comum. A heurística é totalmente míope relativamente às somas das primeiras k larguras em cada padrão, ou seja, às posições absolutas das navalhas. 94 Capítulo 4 Início de Ordenação Passo 1. Para ( i = 1 até i = m ) calcular Apai ; Passo 2. Para ( j = 1 até j = n ) calcular Env j ; Passo 3. Para ( j = 1 até j = n ) ordenar as larguras em P j por ordem não crescente de Apai ; Passo 4. Ordenar os padrões por ordem não crescente de Env j . Fim de Ordenação. Algoritmo 4.5: Heurística Ordenação Esta heurística é 2(nN log N). O passo 1 é 2(m). O passo 2 é 2(n). Ordenar as larguras em cada padrão é majorado por 2(N log N), logo o passo 3 é 2(nN log N). Finalmente, o passo 4 é 2(n log n). Heurísticas construtivas base-PCV Adaptaram-se ao PMMN as seguintes heurísticas construtivas desenvolvidas para o PCV: vizinho mais próximo, vizinho mais afastado e inserção de custo mínimo. Os algoritmos são análogos, e utilizam-se os mesmos nomes para os referir, assumindo-se a respectiva adaptação ao PMMN. Na adaptação, para calcular o custo de fixar um padrão na solução é necessário avaliar as permutações das suas larguras. Optou-se por avaliar estes custos em tempo de execução, em alternativa a calcular e guardar as permutações à partida. Apesar desta opção ser extremamente dispendiosa em termos de esforço computacional, justifica-se por questões de manutenção de memória. Para melhorar as soluções obtidas por estas heurísticas construtivas, implementou-se uma heurística de melhoramento 2optimal. A complexidade dos algoritmos que se apresentam em seguida, depende do número de padrões na solução (n) e do número máximo de rolos que podem ser cortados em cada padrão (N), que majora o número de itens cortados em cada padrão. Apesar de N ser constante para uma categoria de instâncias, o seu valor influencia bastante o desempenho dos algoritmos e, como tal, é explicitamente considerado na análise correspondente. O algoritmo 4.6 descreve a heurística do vizinho mais próximo para o PMMN. Começa-se por iniciar todos os padrões como “livres”. A primeira posição da sequência é preenchida com o padrão, e respectiva permutação de larguras, que Programação do corte 95 corresponde à primeira posição da solução obtida pela heurística Ordenação. Marca-se este padrão como fixo. Constrói-se o resto da solução, fixando iterativamente o “próximo” padrão da sequência e a respectiva permutação de larguras. Avalia-se o custo de mudança entre o último padrão na sequência e cada permutação de larguras de cada padrão ainda livre, e escolhe-se o padrão para o qual ocorre a permutação de menor custo. Fazendo um paralelismo com o PCVG, para sucessor dum dado nó, escolhe-se o nó e respectivo agrupamento, a que corresponde a ligação de custo mínimo. O custo da solução final é dado por zˆ . Início de vizinho mais próximo para o PMMN Passo 1. Iniciar todos os padrões como livres; fixos=0; Passo 2. Para ( j = 1 até j = n ) calcular Env j ; Passo 3. Encontrar j tal que Env j = max {Env i : 1 ≤ i ≤ n } ; i ordenar as larguras em P j por ordem não crescente de Apai ; fixar Φ j ; zˆ = 1 + n j ; π1 = j { * fixar P j como escalonado no início da sequência *}; k = j ; fixos=1; Passo 4. Enquanto (fixos<n) fazer Encontrar j: c kj = min c ki : Φ i ∈ Γ(ni ) ∧ Pi livre i { } fixar Φ j ; fixos=fixos+1; zˆ = zˆ + c kj ; π fixos = j { * fixar P j como escalonado *}; k = j ; Fim de Enquanto Fim de vizinho mais próximo para o PMMN. Algoritmo 4.6: Heurística vizinho mais próximo para o PMMN A heurística vizinho mais próximo para o PMMN é 2( n 2N ! ). A complexidade do algoritmo depende do Passo 4, cujo ciclo é executado 2( n ) vezes. Em cada passo deste ciclo, avaliam-se as permutações das larguras de todos os padrões livres, operação que é 2( nN ! ). Logo, o algoritmo é 2( n 2N ! ). O algoritmo para a heurística do vizinho mais afastado para o PMMN é em tudo idêntico ao algoritmo 4.6, excepto na escolha do padrão a fixar em cada iteração do Passo 4. Alternativamente a fixar o padrão livre com ligação de custo mínimo (e respectiva permutação de larguras de custo mínimo), determina-se para cada padrão livre, qual a permutação de larguras que tem o custo mínimo e escolhe-se o padrão ao qual está associado o máximo desses custos mínimos. Isto 96 Capítulo 4 significa que o padrão j a fixar é aquele ao qual corresponde o custo c kj = max c k = min {c ki : Φ i ∈ Γ(ni ) ∧ Pi livre } : P livre . i O algoritmo 4.7 descreve a heurística inserção de custo mínimo para o PMMN. Início de inserção de custo mínimo para o PMMN Passo 1. Iniciar todos os padrões como livres; fixos=0; Passo 2. Para ( j = 1 até j = n ) calcular Env j ; Passo 3. Encontrar j tal que Env j = max{Env i : 1 ≤ i ≤ n} ; i Encontrar tal que cj +c j { } = min c ji + c ij : Φ i ∈ Γ(ni ), Φ j ∈ Γ(n j ) ∧ Pi livre ; i Definir um circuito de cardinalidade 2 formado por P j e P e fixar Φ j e Φ ; fixos=2; zˆ = 1 + c j + c j ; Passo 4. Enquanto (fixos<n) fazer Encontrar j, k e : { } c kj + c j − c k = min c k ′j ′ + c j ′ ′ − c k ′ ′ : Φ j ′ ∈ Γ(n j ′) ∧ Pj ′ livre ∧ P ′ segue Pk ′ no circuito ; j ′, k ′, ′ fixar Φ j ; fixar P j após Pk e seguido de P , definindo um circuito de cardinalidade fixos+1; fixos=fixos+1; zˆ = zˆ + c kj + c j − c k ; Fim de Enquanto Passo 5. Encontrar k e : c k = max{c ij : Pi é seguido por Pj no circuito } ; i,j Remover a ligação entre Pk e P ; zˆ = zˆ − c k ; Definir a sequência: π1 = , π n = k e restantes posições dadas pela ordem no circuito; Fim de inserção de custo mínimo para o PMMN. Algoritmo 4.7: Heurística inserção de custo mínimo para o PMMN Começa-se por iniciar todos os padrões como “livres”. Dado o padrão que apresenta maior valor de Env, escolhe-se um outro, e as respectivas permutações de larguras em ambos, de forma a construir um circuito de custo mínimo, de cardinalidade 2. Esse circuito passa a ser a solução actual e calcula-se o seu custo. Iterativamente, amplia-se o circuito actual por inserção de um padrão ainda livre, até atingir uma solução de cardinalidade n. O padrão a inserir, a posição onde se insere, e a sua permutação de larguras são determinados de forma a que o acréscimo no custo total do circuito tenha valor mínimo. Ao inserir o padrão, fixa-se a correspondente permutação de larguras e actualiza-se o custo do circuito actual. Programação do corte 97 Para obter a sequência final, determina-se o par de padrões consecutivos com o maior custo de mudança e remove-se essa ligação. O segundo padrão desse par passa a ser o primeiro elemento da sequência final e o resto da sequência obtém-se fixando os padrões pela ordem em que se apresentavam no circuito. Actualiza-se o custo da solução zˆ , subtraindo-lhe o custo da ligação que se removeu. A heurística inserção de custo mínimo para o PMMN é 2( n 3N ! + nN !2 ). Os passos 3 e 4 determinam a complexidade do algoritmo. No passo 3, define-se um circuito de custo mínimo de cardinalidade 2, avaliando todas as permutações de larguras do padrão j e dos restantes n-1 padrões, ou seja, 2( nN !2 ) operações. O passo 4 é executado n-2 vezes. Na iteração k, o circuito actual tem k+1 padrões. Para cada par de padrões consecutivos no circuito, que são k+1, avalia-se o custo de inserir entre eles cada um dos padrões livres, que são n-k-1. Para avaliar o as e sequenciam-se por ordem não decrescente de data de conclusão. Faz-se corresponder a cada data o número de??horas que decorre fazem-se assim 2( N ! (k + 1)(n − k − 1) ) operações. O número total de operações no ciclo é n −2 2 ∑k =1 N ! (k + 1)(n − k − 1) , ou seja, é 2( n 3N ! ). Logo, o algoritmo é 3 2 2( nON algoritmo ! + nN ! ). 4.8 descreve a heurística 2-optimal para melhoramento duma solução do PMMN. Considere-se a solução representada pela permutação Π , a correspondente sequência de permutações de larguras Φ Π = (Φπ 1 ,..., Φπ j ,..., Φπ n ) e o custo, dado por z = z (Π, Φ Π ) . A heurística testa, para cada par de posições, se é possível reduzir o custo da solução, trocando os índices na permutação e mantendo fixas as correspondentes permutações das larguras da solução original. Se a troca é atractiva, actualiza-se a solução Π , o seu custo z , e recomeça-se. O algoritmo termina quando, para uma dada solução, não existem trocas favoráveis. Dada uma solução, pesquisar se existe uma troca 2-optimal que corresponda a um melhoramento é 2( n 2 ). O ciclo principal é executado n vezes e na iteração k avaliam-se n-k trocas, ou seja, no total avaliam-se ∑k =1 n − k n trocas, o que é 2( n 2 ). O ciclo principal é executado pelo menos uma vez mas, não se pode dar um limite superior para o pior caso. O ciclo é repetido sempre que se encontra uma 98 Capítulo 4 troca que reduza pelo menos uma unidade ao custo da solução, o que apenas garante que o ciclo é repetido um número finito de vezes. Início de 2-optimal para o PMMN j = 1 ; Π̂ = Π ; Enquanto ( j ≤ n ) fazer i = j +1 ; Enquanto ( i ≤ n ) fazer ˆ , Φ Π̂ ) ; Trocar πˆ i com πˆ j ; zˆ = z (Π Se ( zˆ < z ) então ˆ ; z = zˆ ; {* actualizar solução *} Π=Π j = 1 ; i = n + 1 ; {* sair do ciclo e recomeçar a pesquisa *} senão Trocar πˆ i com πˆ j ; i = i + 1 ; {* repor a solução e continuar a pesquisa *} Fim de enquanto j = j +1 ; Fim de enquanto Fim de 2-optimal para o PMMN. Algoritmo 4.8: Heurística 2-optimal para o PMMN 4.4.4 Testes computacionais Os algoritmos, que se descreveram na secção anterior, foram codificados em Pascal, e, os códigos resultantes foram compilados no Borland Pascal 7.0. Os tempos de execução referem-se a testes executados num computador com processador Pentium IV 1600MHz com 256Mb de RAM. Nos testes, utilizou-se o mesmo conjunto de dados reais utilizado em 4.3.3, após as possíveis reduções de cardinalidade das soluções de corte. Os dados foram alterados relativamente ao número de padrões e ao número médio de rolos por padrão. A tabela 4.3 apresenta as características das instâncias e os resultados obtidos por aplicação dos três algoritmos. A coluna #I é o índice da instância; as colunas n e m apresentam, respectivamente, o número de padrões e o número de larguras da instância; #rp é o número médio de rolos por padrão; #mrp é o número máximo de rolos por padrão; CC é o número médio de rolos por padrão multiplicado pelo número total de padrões; dim é a dimensão aproximada do problema (número total de soluções admissíveis). Cada uma das sete colunas sob o Programação do corte 99 título Valor do objectivo – NM, apresenta o número mínimo de movimentos das navalhas obtido pela aplicação da heurística correspondente: • Ord – ordenação; • MP – vizinho mais próximo; • MP2 – vizinho mais próximo seguida de 2-optimal; • MA – vizinho mais afastado; • MA2 – vizinho mais afastado seguida de 2-optimal; • CI – inserção de custo mínimo e • CI2 – inserção de custo mínimo seguida de 2-optimal. As seis últimas colunas, sob o título CPU (10-3 seg.), indicam os tempos de execução dos algoritmos respectivos, em milésimos de segundo. Não se apresentam os valores para a heurística Ordenação pois, para cada uma das instâncias, o tempo de execução é inferior a um milésimo de segundo. As instâncias apresentam-se por ordem não decrescente de CC. Na última linha, apresentam-se os valores médios para os valores nas respectivas colunas. CPU (10-3 seg.) Valor do objectivo – NM #I 5 12 3 17 16 1 9 7 4 14 8 2 18 6 15 10 20 13 11 22 19 21 n 6 6 7 8 6 9 9 8 9 11 11 12 9 14 14 14 13 21 21 26 28 27 m 6 9 11 9 11 10 11 13 10 12 14 15 11 17 21 16 21 23 22 32 34 31 #rp #mrp 3.00 3 3.00 3 3.14 4 3.13 4 4.17 5 3.00 3 3.11 4 3.75 5 3.44 5 3.09 4 3.18 4 3.42 5 4.56 6 3.36 4 3.86 5 4.07 6 4.54 6 3.33 4 3.33 5 3.58 5 3.50 4 3.81 6 13 16 3.52 4.6 CC 18 18 22 25 25 27 28 30 31 34 35 41 41 47 54 57 59 70 70 93 98 103 Dim 3.0E+07 3.0E+07 6.0E+09 3.0E+11 9.0E+11 4.0E+12 1.0E+13 4.0E+14 1.0E+15 6.0E+16 2.0E+17 1.0E+21 4.0E+21 7.0E+24 1.0E+29 4.0E+31 5.0E+32 2.0E+40 3.0E+40 1.0E+56 5.0E+59 1.0E+63 Ord 13 12 12 17 20 20 19 20 20 25 24 27 28 37 41 46 48 56 57 81 70 93 MP MP2 12 12 12 12 12 11 18 14 17 16 14 13 17 15 22 19 18 16 22 21 20 20 26 26 23 21 31 31 31 30 40 35 42 38 43 40 46 44 62 58 56 51 72 66 MA MA2 15 12 13 12 17 11 19 15 20 18 21 14 20 14 24 19 23 16 27 21 25 20 30 26 30 21 39 31 43 32 51 34 50 39 61 39 62 46 88 61 83 57 96 70 CI 12 12 11 15 16 14 14 19 17 21 20 27 20 31 30 34 40 39 44 57 55 67 CI2 12 12 11 14 16 13 13 19 16 21 20 26 20 31 30 33 38 38 43 56 53 65 46.6 5.0E+61 35.7 29.8 27.8 38.9 28.5 28.0 27.3 MP MP2 0 1 0 0 1 1 3 3 4 4 1 1 1 1 6 6 1 2 1 2 2 2 2 3 24 24 3 4 10 12 71 73 49 51 9 12 18 22 23 38 16 34 49 63 13 16 MA MA2 CI CI2 0 0 1 2 0 0 1 1 0 0 2 2 1 0 20 20 2 0 15 16 1 1 4 5 1 1 8 8 2 0 15 16 1 1 5 6 1 1 13 14 1 1 14 15 1 2 22 23 9 1 204 204 2 58 37 38 6 3 63 64 22 4 863 864 16 3 513 515 5 16 133 137 5 13 239 242 13 43 221 228 12 47 407 419 24 45 2481 2488 6 11 240 242 Tabela 4.3: Resultados relativos aos algoritmos de sequenciamento para o PMMN Os resultados permitem concluir que a heurística Ordenação apresenta soluções de qualidade pobre, tendo atingido o melhor valor encontrado, apenas para uma 100 Capítulo 4 instância de pequena dimensão (a 12). Para cada instância, o melhor valor encontrado foi obtido pela aplicação da heurística CI2, com excepção da instância 19, para a qual esta heurística é superada pela MP2. Em relação à qualidade dos resultados, a heurística MP2 sucede a CI2 – permite obter o melhor valor encontrado para 14 instâncias, e em média o valor obtido está a 1.8% do melhor encontrado. Para as heurísticas que não incluem a fase 2-optimal, a CI é a que apresenta melhores resultados – atinge o melhor valor encontrado em 10 instâncias, todas elas com um valor do factor de dimensão inferior a 50. Para esta heurística, o tempo despendido para efectuar melhoramentos 2-optimal não é significativo (inferior a 1%). A fase 2-optimal permite uma redução média, do valor do objectivo, da ordem de 2.5%. Para a heurística MP, a fase 2-optimal requer cerca de 23% de esforço computacional extra, conduzindo a um melhoramento médio da ordem de 7%. Das heurísticas base-PCV, a heurística MA é a que apresenta resultados de pior qualidade. A fase 2-optimal aplicada à MA, requer um esforço adicional de cerca de 83% a que corresponde a um melhoramento médio de cerca de 36%. Neste caso, na fase 2-optimal, detecta-se um elevado número de trocas que melhoram a solução e de cada vez que se efectua uma troca, a solução actual é reprocessada, o que explica o elevado esforço relativo adicional. O gráfico da figura 4.8 apresenta a evolução do melhor valor encontrado (NM) para a função objectivo, em função do indicador CC. O custo da solução cresce linearmente em função de CC. NM 60 40 Melhor valor encontrado 20 CC 0 0 20 40 60 80 100 Figura 4.8: Melhor valor encontrado para NM em função de CC 120 Programação do corte 101 A heurística CI2 é a que apresenta melhores resultados. O tempo de execução da CI2 depende do número máximo de rolos por padrão. O esforço computacional é praticamente consumido na totalidade pela execução da heurística CI, que como já se referiu anteriormente é 2( n 3N ! + nN !2 ). O gráfico na figura 4.9 mostra a evolução do tempo de execução da CI2, em função do número máximo de rolos por padrão (#mrp) e da dimensão do problema (Dim). O índice das instâncias está em abcissa e ordenaram-se os dados por ordem crescente de #mrp e, para igual valor de #mrp, por ordem não decrescente de Dim. Os dados foram truncados, em ordenada, no valor 900, não se apresentando a barra total relativa à instância 21, a que corresponde o valor real de 2488. O gráfico mostra que, para o mesmo valor de #mrp, o tempo de execução da CI2, cresce exponencialmente em função de n. 900 CPU (mili. seg.) 800 700 600 500 400 300 200 100 0 instâncias 5 12 1 3 17 9 14 8 6 13 19 16 7 4 2 15 11 22 18 20 10 #mrp 3 3 3 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 6 6 6 6 n 6 6 9 7 8 9 11 11 14 21 28 6 8 9 12 14 21 26 9 13 14 27 C I2 C pu 2 1 5 3 20 8 14 15 38 137 419 16 16 6 23 64 242 228 204 515 864 2488 21 Figura 4.9: Desempenho da heurística CI2 Conclusões e comentários Recomenda-se a aplicação da heurística CI2 para a resolução de problemas reais. É a heurística que apresenta melhores resultados. Apesar de requerer um acréscimo de esforço computacional, adequa-se a ser implementada num ambiente de apoio à decisão. Para as instâncias reais que se testaram, o seu tempo de execução médio foi inferior a meio segundo, sendo o maior valor observado inferior a 3 segundos – 102 Capítulo 4 para a instância de maior dimensão, a 21, com um número máximo de rolos por padrão com valor 6 e com 27 padrões. Uma das lacunas na implementação das heurísticas base-PCV, é ter-se fixado como primeiro padrão na sequência, o padrão na primeira posição da solução da heurística ordenação, e a correspondente permutação de larguras. A questão relativa à posição do padrão é parcialmente corrigida pela fase de melhoramentos 2-optimal. Fica aberta a questão de quanto se poderia melhorar, se se testassem, na primeira posição, todas as permutações de larguras de todos os padrões. Na heurística CI, apesar de se predeterminar um dos padrões a incluir na solução inicial, já se testam todas as permutações nesse padrão. Apesar do objectivo ser avaliar o comportamento dos algoritmos na resolução de instâncias reais, importa salientar que para as instâncias testadas, o número máximo de itens por padrão é oito. Isto significa que o bom desempenho dos algoritmos se deve essencialmente à dimensão das instâncias. A estratégia das heurísticas construtivas base-PCV e da 2-optimal inclui testar todas as permutações de itens em cada padrão. Fica por estudar a maior dimensão das instâncias para a qual seria razoável continuar a aplicar estes algoritmos. A função objectivo que se considerou difere das apresentadas na literatura, o que impede de estabelecer comparações com os resultados obtidos por outros autores. Por outro lado, a quantidade de resultados/instâncias que se encontram na literatura são de reduzida dimensão. Mais ainda, os autores, quando contactados não se mostraram disponíveis para fornecer os exemplos que testaram nos seus trabalhos. No início do século XXI, o PMMN tem a “idade” que o problema de corte tinha na década de 70, e ironicamente, aplica-se ao PMMN a citação que em [Hinxman, 1980] se aplicava ao PC (cf. 4.2.1) “a quantidade de literatura referente ao problema é muito limitada, o que se deve ao facto de muitos modelos, procedimentos e programas terem sido desenvolvidos por empresas e mantidos confidenciais”. Programação do corte 103 4.5 Problema de sequenciamento bi-objectivo Os itens produzidos são de grande dimensão física, o que dificulta a sua movimentação e armazenamento temporário enquanto se encontram em espera para serem catalogados e seguirem para armazém. Quando o número de itens em espera para serem catalogados é elevado, torna-se difícil a distinção de itens iguais ou "quase iguais" destinados a clientes diferentes. Para além disso, existem também limitações físicas do espaço de trabalho. Estes factores conduzem muitas vezes a perdas de produtividade que é necessário minimizar. De seguida, apresentam-se duas medidas que, embora diferentes, permitem avaliar a qualidade dum plano de corte neste contexto. Dada uma sequência de padrões de corte e considerada uma encomenda, o espalhamento da encomenda (order spread) é a "distância" entre o primeiro e o último rolo (relativamente à ordem pela qual serão cortados de acordo com a sequência dada) destinados a satisfazer a encomenda de um mesmo cliente. Para avaliar esta distância considera-se o número de padrões que se cortam desde o início até ao término do corte da encomenda, embora existam outras formas de o quantificar (e.g., contar o número de carretéis). Assim, dada uma encomenda, o seu espalhamento é 0, se todos os rolos que se destinam a satisfazê-la forem obtidos no mesmo padrão; é 1, se todos os rolos forem cortados por dois padrões consecutivos; e, assim, consecutivamente. Como critério de optimização, considera-se a minimização do valor médio do espalhamento das encomendas num plano (existem variantes como, por exemplo, considerar o valor máximo de espalhamento). Esta medida relaciona-se com a avaliação individual da distribuição das encomendas no plano. Para a calcular, conta-se o número de padrões necessários para cortar cada encomenda, sem se considerar a componente temporal. Enquanto não se conclui o corte duma encomenda, os rolos já produzidos ficam em espera para serem catalogados. Assim, durante o corte dum determinado plano, é criada um fila de encomendas parcialmente produzidas, que denominamos por pilhas abertas (open stacks). Após o corte dum determinado padrão, a pilha 104 Capítulo 4 para uma dada encomenda diz-se aberta quando já se iniciou, mas ainda não se concluiu o seu corte. O número de encomendas nessa situação, num dado instante, é o número de pilhas abertas. Como critério de optimização, considera-se a minimização do número máximo de pilhas abertas num plano (existem variantes como, por exemplo, considerar o valor médio ou o valor total). O número de pilhas abertas relaciona-se com a avaliação das encomendas em termos de conjunto, ao longo do tempo. Para o calcular, dado um plano, conta-se o número de encomendas com pilha aberta, em cada momento da execução do plano. Em algumas abordagens, o sequenciamento faz-se considerando que cada largura/item corresponde a uma encomenda. Após a afectação dos itens às encomendas, por “encomenda” pode-se entender uma linha de encomenda, ou todas as linhas de encomenda que correspondem à mesma encomenda dum dado cliente. Sem perda de generalidade, utilizar-se-á o termo item para referenciar qualquer uma destas situações. A experiência de colaboração com a empresa que disponibilizou o caso em estudo, mostrou que os responsáveis pelo planeamento não conseguiam estabelecer uma preferência relativamente aos critérios a considerar no problema de sequenciamento de padrões de corte. Quando inquiridos sobre qual destas duas medidas preferiam optimizar referiram que a sua decisão só podia ser tomada comparando diferentes sequências. Este facto motivou a proposta do problema de sequenciamento de padrões bi-objectivo que considera (i) a minimização do número máximo de pilhas abertas e (ii) a minimização do espalhamento médio das encomendas. Dada a escassez do espaço, a escolha do objectivo (i) decorre da necessidade de minimizar a ocorrência de enganos na catalogação dos produtos acabados, na eventualidade do pior caso. O objectivo (ii) relaciona-se com a qualidade dos planos obtidos, relativamente ao espalhamento em termos médios. A resolução do problema bi-objectivo permite adquirir conhecimento acerca do espaço de soluções que não seria adquirido com a resolução dos correspondentes problemas de objectivo único. As abordagens de resolução de objectivo único Programação do corte 105 exploram o espaço de decisão em apenas uma direcção, e podem perder-se soluções eficientes do problema bi-objectivo. Como refere Horn, na tomada de decisão multi-objectivo, existem três modos gerais de procedimento [Horn, 1997]: 1) decidir relativamente a uma função de utilidade que avalie as soluções e depois proceder à pesquisa das soluções; 2) proceder à pesquisa de soluções e só depois à tomada de decisão; e 3) integrar a pesquisa de soluções com a tomada de decisão. A abordagem que se desenvolveu integra-se na categoria 2. Aproxima-se o conjunto de soluções não dominadas utilizando um algoritmo evolutivo de optimização multi-objectivo. Obtém-se assim um conjunto de soluções potencialmente não dominadas, cuja análise permite ao agente de decisão a escolha da solução a implementar. Outra motivação para resolver este problema bi-objectivo advém da seguinte questão “Qual a extensão máxima aceitável de perda de qualidade num objectivo para se optimizar o outro objectivo?”. Linhares e Yanasse mostram que o PMEE e o PMPA conduzem a soluções potencialmente diferentes [Linhares e Yanasse, 2002]. As abordagens disponíveis na literatura da especialidade têm-se dedicado apenas aos problemas com um único objectivo. Elaboraram-se algumas conjecturas teóricas relacionando o PMEE e o PMPA ([Yanasse, 1997] e [Linhares e Yanasse, 2002]). No entanto, não se estabeleceram quaisquer resultados práticos sobre as relações entre os dois objectivos. Para abordar o problema utiliza-se um algoritmo evolutivo do qual se conceberam uma versão pura e outra híbrida (integrando mecanismos de pesquisa local). As experiências computacionais, para além de avaliar a adequação do algoritmo, visam estabelecer uma relação de variação entre os dois objectivos considerados. 106 Capítulo 4 4.5.1 Definições Considere-se uma solução de corte definida pelo conjunto de padrões P1,..., Pn , a cortar r1 ,..., r n vezes, respectivamente, e onde aij é o número de vezes que o item i é cortado no padrão j , i = 1,..., m , j = 1,..., n . Uma permutação dos índices dos padrões Π = (π 1 ,..., π n ) representa uma sequência de corte. O espalhamento do item (encomenda) i na sequência Π , i = 1,..., m , é dado por s i (Π ) , que se define como { } { } s i (Π ) = max j : aiπ j > 0 – min j : aiπ j > 0 (4.9). O espalhamento médio das encomendas para a sequência representada por Π é dado por EME ( Π ) = 1 m ∑ s i (Π) m i =1 (4.10). O Problema de Minimização do Espalhamento médio das Encomendas (PMEE) consiste em encontrar uma permutação que minimiza o valor EME (Π ) . Considere-se a mesma solução de corte e a sequência representada por Π = (π 1 ,..., π n ) . A pilha para o item i , i = 1,..., m , está aberta durante o corte do k , sse q ik ( Π ) = 1 , onde n 1, se k a ∑ j =1 iπ j ∑ j = k aiπ j > 0 q ik ( Π ) = 0, caso contrário (4.11). O número médio de pilhas abertas para a sequência representada por Π é dado por PA ( Π ) = 1 ∑ n r j =1 j ∑k =1 ∑i =1 q ik (Π ) rπ k n m e o número máximo de pilhas simultaneamente abertas é dado por MPA ( Π ) = max k =1,..., n {∑ m q i =1 ik (Π ) } (4.12). Programação do corte 107 O Problema de Minimização do número máximo de Pilhas Abertas (PMPA) consiste em encontrar uma permutação que minimize MPA (Π ) . * * Designam-se por z EME ( Π ) = min Π ∈Γ EME ( Π ) e z MPA ( Π ) = min Π ∈Γ MPA ( Π ) , onde Γ é o conjunto de todas as permutações de cardinalidade n, os valores óptimos para os problemas PMEE e PMPA, respectivamente. Um limite inferior para o valor do número máximo de pilhas abertas é dado pelo valor máximo de encomendas diferentes, cortadas num mesmo padrão. O número de soluções cresce exponencialmente com o número de padrões e é dado por n!. Numa situação real típica esse número é da ordem de 106 a 1032. Exemplo Consideremos uma solução de corte com 5 padrões e 8 itens, conforme se apresenta na tabela 4.4. A primeira coluna indica os índices do padrões que estão ordenados de acordo com a permutação identidade, Π . Segue-se a matriz, onde cada célula exibe o número de vezes que se corta cada item em cada um dos padrões. A última coluna apresenta o número de pilhas abertas durante o corte do padrão j. A última linha, s i (Π ) , apresenta o espalhamento para cada item i, dada a sequência Π . πj i=1 i =2 i =3 i =4 i =5 i =6 i =7 i =8 ∑i q ij (Π) 1 2 3 4 5 s i (Π) 0 0 0 1 0 1 1 0 0 0 0 1 1 0 1 1 0 1 1 0 0 0 0 0 2 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 3 4 4 4 2 0 1 3 3 0 0 0 2 Tabela 4.4: Exemplo de cálculo do espalhamento e do número de pilhas abertas – solução 1 Para a sequência de corte Π , tem-se MPA (Π ) =4 e EME (Π) = 9 / 8 = 1.125 . A tabela 4.5 ilustra a ordenação dos padrões de acordo com a permutação ˆ = (5, 3, 2, 1, 4) . Da mesma forma, a última coluna apresenta o número de pilhas Π abertas durante o corte do padrão j e a última linha apresenta o espalhamento do ˆ ) =4 e EME (Π ˆ) = 8/8 =1. item i. Para a sequência de corte Π̂ , tem-se MPA(Π 108 Capítulo 4 πˆ j i=1 i =2 i =3 i =4 i =5 i =6 i =7 i =8 ∑i q ij (Πˆ ) 5 3 2 1 4 0 0 0 0 1 0 0 1 1 0 1 1 1 0 0 0 1 0 1 1 2 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 2 3 4 4 3 ˆ) s i (Π 0 1 2 3 0 0 0 2 Tabela 4.5: Exemplo de cálculo do espalhamento e do número de pilhas abertas – solução 2 4.5.2 Trabalho relacionado Dyson e Gregory integram aspectos de sequenciamento de padrões durante a geração de padrões [Dyson e Gregory, 1974]. Consideram a minimização das descontinuidades, como objectivo, e relacionam o problema com o PCV. Em [Haessler e Talbot, 1983] apresenta-se uma heurística para o problema de corte de cartão canelado (corrugator) que inclui aspectos de minimização do espalhamento das encomendas. Definem-se elementos de corte, como formas de cortar uma, duas, ou três encomenda(s), usando um ou dois padrões de corte. Usando quatro tipos de elementos de corte, o problema é formulado em Programação Linear Inteira 0/1, como um problema de partição com restrições adicionais. Os elementos de corte são previamente gerados, e em seguida usa-se um algoritmo de enumeração implícita para o problema de partição, incluindo testes para a verificação das restrições adicionais. O PMEE é introduzido por Madsen, [Madsen, 1988], que descreve uma aplicação no contexto do corte bidimensional de peças de vidro. O problema é formulado como um PCV e aplica-se uma heurística 3-optimal. Para evitar os longos tempos associados aos procedimentos k-optimal, Madsen sugere a aplicação do procedimento a um problema auxiliar, onde se minimiza o número de descontinuidades1 numa sequência. Assume-se que a solução deste problema auxiliar é a solução do PMEE, o que não corresponde à realidade. Em [Yuen, 1991, 1995] apresentam-se e comparam-se heurísticas baseadas em regras de prioridade para o PMPA, no âmbito de problemas bidimensionais na 1 Uma descontinuidade ocorre quando uma encomenda pertence a um padrão mas não pertence ao subsequente. Programação do corte 109 indústria de vidro. Na sequência destes trabalhos, Yuen e Richardson descrevem métodos para estabelecer a optimalidade de soluções do PMPA [Yuen e Richardson, 1995]. Um destes métodos, baseia-se no cálculo dum limite inferior e apenas pode ser aplicado em instâncias onde o número de pilhas abertas seja “pequeno”. O outro consiste na enumeração implícita sobre todas as sequências. Este trabalho apresenta como resultado principal, a prova de que duas das heurísticas de Yuen são quasi-optimais, mas apenas se conseguiram trabalhar instâncias com dimensão máxima de 30 padrões. Em [Foerster e Wäscher, 1998] descreve-se a aplicação duma heurística de pesquisa local tipo 3-optimal para o PMEE e estuda-se o comportamento dum algoritmo de simulated annealing integrando movimentos 2-optimais. Para economizar o esforço computacional, a heurística 3-optimal não procura trocas entre padrões, uma vez que isso implica reavaliar toda a permutação. Consiste em partir a sequência actual em três posições e testar as trocas 3-optimais com as subsequências resultantes. Avaliam-se os algoritmos sobre um conjunto de 2400 instâncias geradas aleatoriamente. Conclui-se que o procedimento 3-optimal tem melhores resultados do que a heurística de Madsen, embora o esforço computacional para algumas instâncias seja excessivo. Yanasse reporta alguns problemas relacionados com o PMPA e estabelece algumas conjecturas [Yanasse, 1997]. Neste trabalho, descreve formas de calcular limites inferiores para o PMPA e esboça um algoritmo de pesquisa em árvore com ramificação e limitação, não apresentando resultados de aplicação. Recentemente, Linhares e Yanasse provam que o PMPA é NP-difícil [Linhares e Yanasse, 2002]. Relacionam o PMPA com o problema de desenho VLSI (design of very-large-scale integrated systems), e clarificam algumas conjecturas das relações do PMPA com outros problemas de sequenciamento de padrões. Faggioli e Bentivoglio sugerem uma abordagem que integra uma heurística de construção “gulosa”, seguida por pesquisa tabu, ou por um procedimento de pesquisa local generalizada [Faggioli e Bentivoglio, 1998]. Utilizam a melhor 110 Capítulo 4 solução encontrada como limite superior para um processo de enumeração implícita. Fink e Voss abordam ambos os problemas e apresentam uma prova de que o PMEE é NP-difícil [Fink e Voss, 1999]. Desenvolvem e avaliam heurísticas construtivas, heurísticas de tipo 2-optimal e algoritmos de simulated annealing, pesquisa tabu (várias versões). Integram ainda heurísticas adaptativas de avaliação de vizinhanças. No sistema de apoio à decisão desenvolvido no âmbito do caso em estudo, [Captivo, Respício e Rodrigues, 2000] e [Respício, Captivo e Rodrigues, 2002], integra-se o PMEE com a afectação dos itens numa solução de corte às encomendas dos clientes – conforme se descreve em 4.2.4. Na afectação utiliza-se uma heurística baseada em regras de prioridade que minimiza o número de padrões que cortam cada encomenda, o que contribui para reduzir a dispersão das encomendas. Os trabalhos que se referiram, focam todos, abordagens de objectivo único para o PMEE e/ou o PMPA. Em alguns, o critério é abordado de uma forma implícita e, a forma de avaliar as soluções difere consoante os autores. A tabela 4.6 sumaria, para cada um destes trabalhos, o problema abordado e o tipo de abordagem utilizada. A descrição das colunas na tabela é a seguinte: • EE – minimização do espalhamento das encomendas; • PA – minimização do número de pilhas abertas; • DT – desenvolvimentos teóricos; • PLI – Programação Linear Inteira; • RP – heurísticas baseadas em regras de prioridade; • H – heurísticas; • SA – simulated annealing; • PT – pesquisa tabu; • PL – pesquisa local e • EI – enumeração implícita. Programação do corte 111 Para cada trabalho, apresenta-se um ‘X’ nas células que correspondem ao critério ou à abordagem / técnica utilizada. Trabalho [Dyson e Gregory, 1974] [Haessler e Talbot, 1983] [Madsen, 1988] [Yuen, 1991; 1995] [Yuen e Richardson, 1995] [Yanasse, 1997] [Foerster e Wäscher, 1998] [Faggioli e Bentivoglio, 1998] [Fink e Voss, 1999] [Captivo, Respício e Rodrigues, 2000] [Yanasse e Linhares, 2002] EE X X X PA DT PLI X X RP SA PT PL EI X X X X X X X X X X X X X X X X X X X H X X X X X X X X X X X X Tabela 4.6: Sumário da literatura para o PMEE e o PMPA 4.5.3 Modelo bi-objectivo Apresentam-se em seguida algumas definições e conceitos referentes a optimização multi-objectivo e a algoritmos evolutivos. Problema de optimização multi-objectivo Um problema de optimização multi-objectivo pode ser formulado como max/min y = f ( x ) = ( f 1 ( x ), f 2 ( x ),..., f n ( x )) (4.13) sujeito a : x = ( x 1 , x 2 ,..., x m ) ∈ X onde − x representa um vector de decisão, com m variáveis, X é o espaço dos vectores de decisão, e − y representa um vector de valores das funções objectivo, com n variáveis, para um vector de decisão. Pode-se designar por Y a imagem de X por f. Consideremos, sem perda de generalidade, um problema de minimização. Sendo a e b dois vectores de objectivos, diz-se que a domina b ( a b ) se e só se ∀i ∈ {1, 2, ..., n } ⇒ ai ≤ bi e ∃j ∈ {1, 2, ..., n } : a j < b j . Um vector de decisão é eficiente se o vector de objectivos que lhe corresponde não é dominado. 112 Capítulo 4 O conjunto óptimo de Pareto é o conjunto de todos os vectores eficientes, no espaço de decisão. Os vectores não dominados correspondentes, no espaço de objectivos, constituem a frente óptima de Pareto. Consideremos, sem perda de generalidade, um problema de minimização, da forma (4.13). Seja x *(i ) o vector de decisão para o qual a i-ésima função objectivo toma o valor óptimo f i* = f i ( x *( i ) ) . O ponto ideal é z * = f * = (f 1* , f 2* , , f m* ) , ou seja, é o ponto no espaço de objectivos, em que cada componente corresponde ao valor óptimo para o objectivo respectivo. O ponto ideal representa o limite inferior de cada objectivo, considerando o espaço de soluções admissíveis e só representa uma solução admissível quando a frente óptima de Pareto é um conjunto singular. O ponto nadir representa o limite superior de cada objectivo na frente óptima de Pareto. Para um problema com dois objectivos, consideremos as soluções extremas da frente óptima de Pareto, dadas por z *(1) = (f 1 ( x *(1) ), f 2 ( x *(1) )) e z *(2) = (f 1 ( x *( 2) ), f 2 ( x *(2) )) , ou seja, z *(1) e z *( 2) são os pontos do espaço de objectivos correspondentes aos mínimos lexicográficos de f 1 e f 2 , respectivamente. O ponto nadir pode ser estimado por z nad = (f 1 ( x *(2) ), f 2 ( x *(1) )) . A figura 4.10 ilustra os conceitos que se acabam de descrever, para um problema bi-objectivo. z*(1) znad região admissível do espaço dos objectivos frente óptima de Pareto solução não dominada z* solução dominada z*(2) f1 Figura 4.10: Problemas bi-objectivo: ilustração de conceitos Programação do corte 113 Modelo bi-objectivo Dada uma solução de corte, como se define em 4.5.1, o problema bi-objectivo é a minimização da função f, que transforma cada permutação num par de valores para os objectivos: min y = f (x ) = (f1(x ), f 2(x )) sujeito a (4.14) x ∈Γ, y ∈( , ) onde f 1 ( x ) = MPA ( x ), f 2 ( x ) = EME ( x ) e Γ é o conjunto de todas as permutações de cardinalidade n . Neste problema bi-objectivo, um único ponto no espaço de objectivos corresponde muitas vezes a múltiplas alternativas para os vectores de decisão. As abordagens de optimização com um único objectivo não tomam em consideração este facto. Por outro lado, algumas soluções óptimas de Pareto são perdidas. A aproximação do conjunto óptimo de Pareto permite, assim, uma exploração mais efectiva do espaço de soluções. Exemplo Consideremos a solução de corte dada pela tabela 4.7, apresentada originalmente em [Linhares e Yanasse, 2002]. Padrão rj 1 2 3 4 1 1 1 1 Item 1 1 0 0 1 2 1 0 1 0 3 1 0 1 0 4 0 1 0 1 5 0 1 0 1 6 0 1 0 1 7 0 1 1 0 8 0 0 1 1 9 0 1 0 0 10 0 1 0 0 11 0 0 1 0 12 0 0 1 0 13 0 0 1 0 14 0 0 0 1 Tabela 4.7: Uma solução de corte Na tabela 4.8 listam-se as permutações de cardinalidade 4 e apresentam-se, para cada uma delas, os valores correspondentes para as funções MPA e EME calculados com os dados na tabela 4.7. Como estas funções são simétricas, ou seja, MPA ( Π ) = MPA ( Π −1 ) e EME ( Π ) = EME ( Π −1 ) , onde Π −1 representa permutação inversa de Π , omitem-se as permutações inversas das listadas. a 114 Capítulo 4 Π 1 1 1 1 1 1 2 2 3 3 4 4 2 2 3 4 3 4 1 1 1 1 1 1 3 4 2 2 4 3 3 4 2 4 2 3 MPA (Π ) 4 3 4 3 2 2 4 3 4 2 3 2 11.0000 9.0000 8.0000 9.0000 8.0000 10.0000 11.0000 9.0000 8.0000 7.0000 9.0000 10.0000 EME (Π ) 1.0714 1.0000 0.7857 0.9286 0.7143 0.9286 1.1429 1.0714 0.8571 0.7857 1.0714 1.0714 Tabela 4.8: Valores possíveis para MPA e EME * Verifica-se que o óptimo para o PMEE é z EME (Π ) =0.7143, para Π = (1,3,4,2) e para a sua inversa. Para estas permutações tem-se o valor correspondente MPA (Π ) =8. * Não existem outras permutações para as quais se tenha EME ( Π) = z EME (Π ) . A * solução óptima para o PMPA é z MPA ( Π ) = 7, para Π = (3,1,4,2) e para a sua inversa. Neste caso EME ( Π) = 0.7857. Esta solução óptima também é única. Neste exemplo, a frente óptima de Pareto é o conjunto com apenas dois pontos: { (7, 0.7857), (8, 0.7143) }. O ponto ideal é (7, 0.7143) e o ponto nadir é (8, 0.7857). 4.5.4 Algoritmo evolutivo para a optimização bi-objectivo Nos últimos anos, a área de Algoritmos Evolutivos Multi-Objectivo (AEMO) tem atraído a atenção dos investigadores. O estado da arte é descrito nos trabalhos [Horn, 1997], [Veldhuizen e Lamont, 1998], [Coello, 2000], e [Zitzler, 2002]. Os algoritmos evolutivos englobam uma classe de métodos de optimização estocástica que simulam o processo de evolução natural. Os trabalhos de Holland da década de 70, na concepção de algoritmos genéticos, são uma referência fundamental [Holland, 1995]. Em [Michalewicz, 1994] apresenta-se uma descrição exaustiva das técnicas de programação evolutiva e de múltiplas aplicações. Conceitos base Um algoritmo evolutivo considera um conjunto de soluções candidatas, que se denominam por indivíduos. Este conjunto de indivíduos é modificado iterativamente, simulando a evolução duma espécie ao longo de várias gerações, de acordo com os princípios básicos de evolução – a selecção e a variação. A selecção Programação do corte 115 imita a competitividade dos indivíduos pela sobrevivência e a subsequente reprodução dos mais aptos, garantindo a continuação das suas características por descendência entre gerações. A variação simula os processos naturais de 1) recombinação, em que os indivíduos acasalam e reproduzem-se, originando uma nova geração; e de 2) mutação, em que alguns indivíduos sofrem uma alteração do material genético que herdaram dos seus progenitores. Utiliza-se uma codificação para representar as variáveis através duma sequência (vector). Por exemplo, para representar números inteiros é vulgar usar a representação binária – cada número num determinado intervalo é representado por uma sequência de 0’s e 1’s, cuja dimensão depende do intervalo que se pretende representar. Cada concretização possível representa uma solução, e denomina-se por cromossoma, ou indivíduo. O processo, que se ilustra na figura 4.11, inicia-se com a geração duma população inicial: por um procedimento aleatório ou por outro processo que permita gerar um conjunto de representações de soluções admissíveis. Gerar população inicial Ngerações=0 Avaliação Atribuição de adequação Parar? Não Selecção Sim Extrair solução Ngerações=Ngerações+1 Recombinação Mutação Figura 4.11 Funcionamento base dum algoritmo evolutivo Iterativamente, avalia-se e constrói-se uma população, correspondendo uma geração a cada iteração. Utiliza-se um contador de gerações. Em cada geração, avalia-se cada indivíduo calculando o valor da função objectivo, e duma medida de satisfação das restrições. Com base nesta avaliação, atribui-se, a cada indivíduo, o 116 Capítulo 4 valor de adequação que permite qualificar e ordenar os elementos da actual população. Assim, a função de adequação é uma medida relativa da qualidade dos indivíduos numa população. Para construir uma nova população, procede-se à selecção. Identificam-se os indivíduos a reproduzir e guardam-se múltiplas cópias dos “melhores” num conjunto de indivíduos a reproduzir – a mating pool. Em seguida, alguns indivíduos desse conjunto, escolhidos e emparelhados aleatoriamente, originam novos indivíduos por aplicação dum operador de recombinação. A ideia subjacente consiste em admitir que eventuais combinações do material genético de dois indivíduos pode conduzir a melhoramentos. Por fim, dos indivíduos resultantes, escolhem-se alguns aleatoriamente e aplica-se um operador de mutação que, como o nome indica, efectua uma alteração no material genético do indivíduo. Os indivíduos resultantes constituem a população actual, ou seja, completou-se uma geração e passa-se à avaliação da geração seguinte. O processo termina quando se atinge um limite predeterminado do número de gerações, ou quando se verifica outro critério de paragem. Os métodos clássicos para aproximação do conjunto óptimo de Pareto baseiamse numa agregação dos objectivos numa única função parametrizada, e na sua subsequente optimização em várias operações de pesquisa (execuções), fazendo variar os diferentes parâmetros. O sucesso dos métodos clássicos depende da qualidade das técnicas para problemas de objectivo único que se podem adaptar, da sensibilidade dessas técnicas em relação à forma da frente óptima de Pareto, e do conhecimento prévio em relação ao problema multi-objectivo. Os AEMO permitem ultrapassar estas deficiências. Através duma única operação de pesquisa (execução) permitem manipular espaços de pesquisa suficientemente amplos e gerar múltiplas soluções alternativas. Não existem medidas, uniformemente reconhecidas pelos investigadores, que permitam comparar e/ou avaliar o desempenho dum determinado AEMO na optimização dum determinado problema. Quando se conhece a priori a frente óptima de Pareto, pode avaliar-se a distância entre esta e a aproximação dada pelo Programação do corte 117 algoritmo – o que só acontece para problemas muito específicos e/ou já bem estudados. Esta situação contraria o que se passa para os problemas de objectivo único, em que a distância entre a solução obtida e um determinado limite (limite superior, no caso de minimização) é sempre uma medida da qualidade dos resultados. Representação dos indivíduos, selecção e variação Na codificação dos indivíduos, os operadores de recombinação e mutação foram adaptados dos conceitos e técnicas de algoritmos evolutivos, desenvolvidos para os problemas de Caixeiro Viajante, (cf. cap. 10 de [Michalewicz, 1994]). Os indivíduos são codificados usando a representação de caminho, que é a forma mais natural de representar sequências. A selecção faz-se por meio de torneio binário com substituição. Este processo consiste em, dada uma população, escolher dois indivíduos de forma pseudoaleatória. O indivíduo que apresenta menor valor da função de adequação é substituído por uma cópia do outro. O operador de recombinação é o operador de cruzamento de ordem (order crossover) (OX). O operador OX constrói um indivíduo que resulta de seleccionar uma subsequência de um dos progenitores e preservar a ordem dos elementos do outro progenitor. Este operador dá importância à ordem dos elementos na sequência e não à sua posição. A figura 4.12 ilustra o funcionamento deste operador. São dados dois indivíduos – Pai_1 e Pai_2 – a recombinar. A subsequência a manter em cada indivíduo filho é determinada pelos índices que marcam o início (Ini) e fim (Fim). Estes índices obtém-se pela geração de dois números pseudo-aleatórios inteiros, compreendidos entre 1 e a dimensão dos indivíduos. Filho_1 herda partir de Pai_1 a subsequência (2, 9, 3), nas posições compreendidas entre Ini=5 e Fim=7 (inclusive). Em Pai_2 a ordem dos elementos a partir de 3 é 1-2-4-6-8-9-7-5. Em Filho_1, as posições livres, a partir da posição 7, são preenchidas com os elementos ainda não colocados pela ordem em que estão em Pai_2, ou seja, 1-4-6-8-7-5. Assim, 1 ocupa a posição 8, 4 a 118 Capítulo 4 9, 6 a 1, 8 a 2, 7 a 3 e 5 a 2. Filho_2 é obtido de forma análoga mantendo nas posições de 5 a 7, os elementos que ocupam essas posições em Pai_2. Recolocam-se os restantes elementos pela ordem em que se apresentam em Pai_1. Fim=7 Ini=5 Pai_1 7 6 5 1 2 9 3 4 8 Pai_2 2 4 6 8 9 7 5 3 1 Filho_1 6 8 7 5 2 9 3 1 4 Filho_2 3 4 8 6 9 7 5 1 2 Figura 4.12: Operador de recombinação OX O operador de mutação é a troca recíproca (reciprocal exchange) que troca de posição dois elementos na sequência, como se ilustra na figura 4.13. Geram-se dois inteiros pseudo-aleatórios, que indicam os índices das posições dos elementos a trocar, que neste caso, são Posição_1=2 e Posição_2=7. Os elementos que, no indivíduo original, ocupam estas posições são o 4 e o 5, respectivamente. O operador mutação coloca o elemento 4 na Posição_2 e o elemento 5 na Posição_1. Posição_1 = 2 Posição_2 = 7 Indivíduo 2 4 8 9 7 6 5 3 1 Após mutação 2 5 8 9 7 6 4 3 1 Figura 4.13: Operador de mutação troca recíproca Aproximando a frente óptima de Pareto – Algoritmo SPEA2 Recentemente, Zitzler, Laumanns e Thiele [Zitzler, Laumanns e Thiele, 2002], apresentaram o algoritmo SPEA2, que corresponde a uma versão melhorada do Programação do corte algoritmo SPEA (Strength 119 Pareto Evolutionary Algorithm), previamente desenvolvido pelos mesmos autores, e que aproxima o conjunto óptimo de Pareto para problemas de optimização multi-objectivo. O SPEA2 foi comparado com outras técnicas recentes de optimização multi-objectivo, tendo apresentado muito bons resultados. Por este motivo, optou-se por adaptar o SPEA2 ao problema biobjectivo (4.14). As principais características do SPEA2 incluem: • Elitismo Em cada geração, as soluções potencialmente não dominadas são mantidas num arquivo. Um procedimento de truncagem do arquivo garante a preservação das soluções nos extremos do conjunto. • Um esquema de cálculo do valor de adequação refinado A adequação de cada indivíduo depende do número de indivíduos que o dominam e do número de indivíduos por ele dominados, e integra informação da densidade das soluções vizinhas. • Diversidade das soluções em cada geração Utiliza-se uma técnica de estimação da densidade baseada no conceito de vizinho mais próximo, que permite a discriminação dos indivíduos que têm igual valor de adequação base (raw fitness). O algoritmo 4.9 descreve a versão base do algoritmo. Como parâmetros de entrada, têm-se os seguintes valores: − DimPop (dimensão da população) − DimArc (dimensão do arquivo) − T (número máximo de gerações) − ProbRec (probabilidade de recombinação) − ProbMut (probabilidade de mutação) 120 Capítulo 4 Início de SPEA2 – versão base Passo 1: Inicialização Iniciar o contador de gerações t = 0 . Gerar uma população inicial Pop0 e criar um arquivo vazio Arc 0 . Passo 2: Atribuição da adequação 2.1. Calcular o valor da função de adequação para cada indivíduo i em Popt + Arct . 2.2. Calcular EME (Π) e MPA(Π) , para a permutação Π que i representa; 2.3. Calcular a força de i , S (i ) =# {j : j ∈ Popt + Arct ∧ i j } (número de indivíduos actualmente dominados por i ); 2.4. Calcular a adequação de base de i , R(i ) = ∑ j : j ∈Pop + Arc , j i S ( j ) (soma dos t t valores de força dos indivíduos que actualmente dominam i ); 2.5. Calcular o valor da densidade para i , D (i ) = 1 σ ik + 2 ( σ ik é a distância relativa ao k-vizinho mais próximo, com k = DimPop + DimArc ); 2.6. Atribuir o valor de adequação a i , F (i ) = R(i ) + D (i ) (função a minimizar). Passo 3: Selecção ambiental 3.1. Copiar todos os indivíduos actualmente eficientes em Popt + Arct para Arct +1 , removendo os duplicados no espaço de decisão. 3.2. Se a dimensão actual de Arct +1 > DimArc , então reduzir Arct +1 usando o operador de truncamento, caso contrário, preencher Arct +1 com os indivíduos actualmente dominados em Popt + Arct com os menores valores de adequação. Passo 4: Teste de paragem Se o critério de paragem foi atingido, t > T (ou outro critério de paragem), então construir o conjunto Solução com todos os indivíduos potencialmente eficientes em Arct +1 . Parar a execução. Passo 5: Selecção Construir a mating pool através de torneio binário com substituição sobre os indivíduos em Arct +1 . Passo 6: Variação 6.1. Aplicar operadores de recombinação (OX) e mutação (Troca Recíproca) sobre os indivíduos da mating pool e atribuir a população resultante a Popt +1 6.2. Incrementar o contador de gerações t = t + 1 e seguir para o Passo 2 Fim de SPEA2 – versão base. Algoritmo 4.9: Algoritmo SPEA2 Após a atribuição dos valores de adequação, no Passo 2, cada indivíduo i potencialmente eficiente, tem um valor de adequação F (i ) < 1 . Isto acontece porque o valor da adequação de base é R (i ) = 0 , σ ik ≥ 0 , e como tal D (i ) < 1 . No passo 2, para cada indivíduo i do arquivo e da população, calcula-se o valor da sua força S (i ) = {j : j ∈ Popt + Arqt ∧ i ele domina. R ( i ) = ∑ j ∈Pop Em t + Arqt ∧ j i seguida, calcula-se j } , que é o número de indivíduos que o valor da adequação base S ( j ) , que é a soma dos valores de força para todos os Programação do corte 121 indivíduos, na população e no arquivo, que o dominam. Zitzler, Laumanns e Thiele utilizam uma parcela para discriminar indivíduos que têm o mesmo valor de adequação base, e que corresponde a uma estimativa da densidade no espaço de soluções. A estimativa da densidade é a inversa da distância ao k -ésimo vizinho. Para a calcular, determina-se para cada indivíduo, a distância a cada um dos indivíduos na população e no arquivo (no espaço dos objectivos). Guardam-se estas distâncias e ordenam-se por ordem não decrescente. A distância do indivíduo i ao k -ésimo vizinho mais próximo, que se designa por σ ik , é dada pelo valor na k - ésima componente na lista ordenada de distâncias. Para k , utiliza-se o valor k = DimPop + DimArq , que é o arredondamento inferior da raiz quadrada da dimensão total da amostra. A densidade correspondente ao indivíduo i é dada por ( ) D (i ) = 1 σ ik + 2 . Este valor está sempre compreendido entre 0 e 1. A função de adequação é dada por F ( i ) = R ( i ) + D ( i ) e é uma função a minimizar. No passo 3, a operação de actualização do arquivo começa por copiar, para o arquivo da próxima geração, todos os indivíduos não dominados nesta iteração, ou seja, todos aqueles para os quais o valor da função de adequação é inferior a uma unidade. Se o número de indivíduos não dominados corresponder à dimensão do arquivo, a selecção ambiental está terminada. Se Arq t ≤ DimArq , então copiar para o arquivo os DimPop − DimArq indivíduos dominados – têm F ( i ) ≥ 1 – que têm o menor valor da função de adequação. Se o número de indivíduos não dominados exceder a dimensão do arquivo, aplica-se um operador de truncamento, que iterativamente remove indivíduos do arquivo até que se atinja a respectiva dimensão. Em cada iteração escolhe-se para remoção o indivíduo que tem a menor distância para um outro do arquivo. Se existe mais do que um indivíduo nesta situação, o desempate é obtido pela segunda menor distância, e assim sucessivamente. 122 Capítulo 4 O torneio, no passo 5, considera a globalidade dos indivíduos na geração, ou seja, todos os do arquivo e todos os da população. Critérios de paragem Na literatura da área AEMO, têm-se estudado diferentes critérios de paragem. O critério mais elementar consiste em parar quando o número de gerações atinge um valor predeterminado. Neste caso, quando a convergência da solução ocorre prematuramente, despende-se um grande esforço computacional desnecessário. Outros critérios envolvem a comparação do número de indivíduos que são dominados em duas gerações consecutivas ou durante um determinado número consecutivo de gerações, ou a comparação de medidas da uniformidade da aproximação do conjunto de Pareto. Recentemente, em [Szczepánski e Wierzbicki, 2002], sugere-se que, para a estimação do conjunto óptimo de Pareto, o critério de paragem mais efectivo é a avaliação da diferença relativa da distância entre as aproximações dos pontos ideal e nadir. Implementou-se este critério de paragem – avaliação da distância entre os pontos ideal e nadir – para comparação com o critério número máximo de gerações. Como no problema bi-objectivo se minimizam ambos os objectivos, o ponto ideal é o “maior” ponto que domina o conjunto de soluções não dominadas e o ponto nadir é o “mais pequeno” ponto que é dominado por todas as soluções não dominadas. Em cada geração t, a satisfação do critério de paragem é verificada no Passo 4 do algoritmo. A aproximação actual do conjunto de Pareto é dada pelo conjunto de indivíduos potencialmente eficientes em Arct +1 . Na geração t, a aproximação do ponto ideal no espaço dos objectivos é y I (t ) = ( y 1I (t ), y 2I (t )) , dado por y 1I (t ) = min{f1(i ) : i ∈ Arct +1, F (i ) < 1} e y 2I (t ) = min{f 2(i ) : i ∈ Arct +1, F (i ) < 1} (4.15), onde f é a função objectivo e F o vector de valores para a função de adequação. Programação do corte Da mesma 123 forma, a aproximação do ponto nadir é dada por y N (t ) = ( y1N (t ), y 2N (t )) , onde y1N (t ) = max{ f1 (i ) : i ∈ Arct +1 , F (i ) < 1} e y 2N (t ) = max{ f 2 (i ) : i ∈ Arct +1 , F (i ) < 1} (4.16). Em cada geração, actualiza-se a medida da distância entre as aproximações dos pontos ideal e nadir, de acordo com dUN (t ) = y I (t ) − y N (t ) , onde . designa o cálculo da distância Euclideana. Para concretizar este critério de paragem utilizouse um parâmetro r, que pondera o número de gerações ainda não realizadas em relação ao máximo de gerações estabelecido (T). Critério de paragem “avaliação da distância entre os pontos ideal-nadir” Seja t1 a última geração em que se alteraram as aproximações dos pontos ideal e nadir. O algoritmo pára na geração t 2 > t1 , se a variação relativa de dUN , dada por dUN (t 2) − dUN (t1), está perto de zero, e t 2 − t1 > r (T − t 2) . Implementaram-se duas versões do algoritmo SPEA2. A versão 1 utiliza, no Passo 4, o critério de paragem do número máximo de gerações. A versão 2 utiliza como critério de paragem a avaliação da distância entre os pontos ideal e nadir (paragem antecipada). Em ambas as versões, os indivíduos da população inicial são gerados aleatoriamente. Algoritmo híbrido Alguns testes computacionais iniciais mostraram que o desempenho das versões 1 e 2 não correspondia às expectativas. Optou-se então por integrar dois procedimentos de pesquisa local no algoritmo base, que se passam a descrever e que dão origem ao algoritmo híbrido. Na geração da população inicial, obtém-se cada um dos primeiros n indivíduos (onde n é a dimensão da instância) por aplicação da heurística 3 de Yuen (Yuen3) que se apresenta em [Yuen, 1995]. Esta heurística minimiza o número máximo de pilhas abertas e segundo [Yuen e Richardson, 1995] tem um comportamento quasi- 124 Capítulo 4 optimal. Fixa-se como primeiro elemento da sequência um inteiro (entre 1 e n), e obtém-se a solução que resulta da aplicação da heurística. Geram-se assim n soluções e introduzem-se na população inicial os indivíduos que as representam. Os restantes indivíduos da população inicial são gerados aleatoriamente. O outro procedimento consiste em, dado o arquivo actual na geração t, Arct , tentar “melhorar” o indivíduo a que corresponde a aproximação actual da solução extrema z *(1) . Ou seja, considere-se o indivíduo i que representa a permutação Π com o menor valor já encontrado de MPA(Π) . Aplica-se um procedimento 2-optimal que avalia se, por troca das posições de dois componentes de i, se pode obter uma solução que domine i. Em caso afirmativo, substitui-se o indivíduo pela nova solução. Este procedimento 2-optimal funciona de forma idêntica à do algoritmo 4.8, com as respectivas alterações necessárias para avaliar a dominância. A introdução destes melhoramentos nas versões 1 e 2 do algoritmo dá origem às versões 1M e 2M, respectivamente. Nestas, a fase de melhoramento 2-optimal repete-se a cada 2OptRep gerações, onde 2OptRep passa a ser um parâmetro de entrada. O procedimento só é efectuado, se durante as últimas 2OptRep houve alteração da aproximação do ponto ideal. Sumariando, concretizaram-se as seguintes versões do algoritmo: − versão 1 (V1): versão base, com o critério de paragem número máximo de gerações; − versão 2 (V2): versão base, com o critério de paragem antecipada; − versão 1M (V1M): versão base, com o critério de paragem número máximo de gerações, n indivíduos em Pop0 gerados pela Yuen3 e fase 2-optimal, cada 2OptRep gerações; − versão 2M (V2M): versão base com o critério de paragem antecipada, n indivíduos em Pop0 gerados pela Yuen3 e fase 2-optimal cada 2OptRep gerações. Programação do corte 125 4.5.5 Testes computacionais Métricas de desempenho Para testar e comparar o desempenho das versões do algoritmo para o problema em estudo, utilizaram-se três métricas no espaço de objectivos como se descreve em [Zitzler, Deb e Thiele, 2000]. Considere-se um conjunto X’ de vectores de decisão potencialmente eficientes, e seja Y’ o correspondente conjunto de vectores potencialmente não dominados no espaço de objectivos. Designe-se por X , o conjunto de Pareto, e por Y o seu correspondente no espaço de objectivos. Considere-se σ > 0 , um parâmetro de vizinhança predeterminado, e a distância Euclideana denotada por . . A métrica M 1 (Y ' ) = 1 Y' ∑ min { y '− y : y ∈ Y y '∈Y ' } avalia a distância média de Y’ a Y . A métrica M 2 (Y ' ) = 1 Y '−1 ∑ {y ∈ Y ': y '∈Y ' y '− y > σ } avalia a distribuição das soluções no espaço de objectivos. Conta o número de nichos com vizinhança de raio σ . A métrica M 3 (Y ' ) = ∑ max{ i =1, 2 yi '− yi : y, y '∈ Y ' } avalia a extensão da aproximação da frente de Pareto. Calcula a extensão máxima em cada objectivo, para estimar o afastamento das soluções extremas no espaço dos objectivos (spreading out of the front-range). Como se consideram dois objectivos, esta métrica é a distância das duas soluções nos extremos da 126 Capítulo 4 aproximação da frente de Pareto. Para o cálculo da distância utilizou-se sempre a distância Euclideana. Resultados das experiências Executaram-se testes computacionais em dois conjuntos de instâncias. O primeiro conjunto é um subconjunto das instâncias de maior dimensão que se descrevem e testam em [Foerster e Wäscher, 1998] e em [Fink e Voss, 1999]. Os dados correspondem a soluções de corte heurísticas, para instâncias do problema de corte geradas aleatoriamente. Estas soluções de corte apresentam os itens por cliente e não por larguras. O parâmetro m representa o número total de diferentes itens (encomendas) e consideram-se dois valores para m (m=50, m=60). Para todas as instâncias, o valor de n, que representa o número de padrões na solução, é aproximadamente igual a m. O parâmetro v representa a relação entre a maior largura dos itens na solução e a largura total das peças. Consideram-se quatro valores para v (v=0.25, v=0.5, v=0.75, v=1). A cada par (m,v) corresponde um grupo de instâncias, num total de oito grupos. Dos grupos originais, para proceder aos testes, seleccionaram-se apenas as primeiras 10 instâncias de cada grupo, num total de oitenta instâncias. O segundo conjunto é o conjunto de 22 soluções de corte reais, fornecidas pelo produtor do caso de estudo – que se utilizaram também nos testes descritos em 4.4.4 e 4.3.3. A medida SC, que representa o número médio de padrões, em que cada item é cortado, é uma medida da complexidade do problema de sequenciamento, de acordo com Foerster e Wäscher [Foerster e Wäscher, 1998]. Para cada versão do algoritmo, e conjunto de experiências, calculam-se os valores para as métricas de desempenho M1 , M 2 e M 3 . Calcula-se o valor da métrica M 1 , utilizando como Y , a aproximação final do conjunto de soluções não dominadas. Os algoritmos foram codificados em C e os códigos resultantes compilaram-se utilizando o compilador Microsoft Visual C++ 6.0. Os resultados referem-se a Programação do corte 127 testes executados num computador com processador Pentium IV 1600MHz com 256Mb de RAM. Testes para as instâncias geradas aleatoriamente Para as versões 1 e 2 do algoritmo, fizeram-se dois conjuntos de experiências, utilizando, como parâmetros, os valores que se exibem na tabela 4.9. Conjunto de parâmetros DimPop DimArq ProbRec ProbMut T σ r CP1 CP2 100 100 0.8 0.2 750 0.48862 0.2 150 150 0.8 0.2 2000 0.48862 0.4 Tabela 4.9: Parâmetros para as versões 1 e 2 / instâncias geradas Os valores escolhidos para ProbRec e ProbMut não foram afinados e foram escolhidos com base em algumas experiências prévias para os problemas de objectivo único associados. Como o objectivo MPA só toma valores discretos, optou-se por um valor de σ inferior a 0.5, o que permite identificar o número de nichos na solução final, originados por diferenças nesse objectivo. Escolheu-se este valor concreto com base no estudo em [Zitzler, Deb e Thiele, 2000]. O número médio de indivíduos avaliados na versão 1 é cerca de 120000, para o conjunto de parâmetros CP1, e cerca de 480000 para o CP2. Nos dois conjuntos de parâmetros, a dimensão do arquivo tem um valor suficientemente grande para garantir que se guardam múltiplas soluções do espaço de decisão que são equivalentes. Em cada conjunto de experiências, executaram-se, para cada instância, 20 simulações – 10 utilizando a versão 1 do algoritmo e outras 10 utilizando a versão 2. Para cada instância, a aproximação do conjunto de soluções não dominadas é dada pelo conjunto de soluções não dominadas que se obtiveram no conjunto das 20 simulações. 128 Capítulo 4 Cada uma das tabelas que se seguem, apresenta os resultados médios para um conjunto de experiências em que se usam, para cada um deles, os oito grupos de instâncias geradas aleatoriamente. As tabelas 4.10 e 4.11 apresentam os resultados relativos aos conjuntos de parâmetros CP1 e CP2, respectivamente. A descrição do cabeçalho das colunas é a seguinte: − #G é o índice do grupo de instâncias; − m é o número de encomendas; − v é a relação entre a maior largura e a largura total; − An é o número médio de padrões nas soluções de corte do grupo; − SC é o número médio de padrões em que cada item é cortado; − #P é a cardinalidade média da aproximação final do conjunto de soluções não dominadas; − P2 e P3 são os valores para as métricas M 2 e M 3 calculados utilizando a aproximação final do conjunto de soluções não dominadas; − M1, M2 e M3 são, respectivamente, os valores médios para as métricas M 1 , M 2 e M 3 calculados para as simulações da versão 1; − N1, N2 e N3 são, respectivamente, os valores médios para as métricas M 1 , M 2 e M 3 calculados para as simulações da versão 2; − DP é a diferença percentual relativa entre as primeiras componentes (no espaço dos objectivos) das aproximações finais dos pontos nadir e ideal, e refere-se à variação máxima esperada no objectivo MPA; − DE é a diferença percentual relativa equivalente, para o objectivo EME; − δP é o número relativo de vezes (em média) que se obteve a melhor solução conhecida para o objectivo MPA, e δE é o equivalente para MPE; − GN é o número médio de gerações executadas pela versão 2; − T1 e T2 representam os tempos médios de execução (em segundos) de cada simulação, respectivamente, para a versão 1 e a versão 2. Programação do corte #G m v An SC #P P2 129 P3 δP δE M1 M2 M3 N1 N2 N3 DP DE GN T1 T2 1 50 0.25 52.3 4.2 1.5 1.0 0.564 1.478 0.100 0.104 2.254 0.120 0.380 2.689 0.348 .9 .2 289 230 74 2 50 0.50 51.7 3.8 1.4 0.8 0.444 1.723 0.020 0.092 2.296 0.020 0.163 2.157 0.810 .5 .2 274 230 72 3 50 0.75 53.3 2.6 1.5 1.0 0.577 1.219 0.000 0.000 1.962 0.000 0.000 4.995 3.512 .9 .3 271 222 64 4 50 1.00 51.7 1.9 1.2 0.4 0.230 0.714 0.000 0.000 1.197 0.000 0.000 4.000 3.400 .8 .2 238 218 54 5 60 0.25 63.8 4.1 1.3 0.6 0.357 2.193 0.240 0.342 3.210 0.000 0.624 1.139 0.726 .3 .0 313 310 94 6 60 0.50 61.3 3.7 1.4 0.8 0.442 2.089 0.120 0.254 2.806 0.000 0.447 1.779 0.608 .4 .0 303 308 90 7 60 0.75 63.1 2.6 1.3 0.6 0.372 1.791 0.020 0.081 2.761 0.000 0.102 3.838 1.498 .3 .0 295 300 82 8 60 1.00 62.0 1.9 1.2 0.4 0.215 1.117 0.000 0.000 1.791 0.000 0.000 3.666 1.497 .5 .0 271 280 74 M 57.4 3.1 1.4 0.7 0.400 1.541 0.063 0.109 2.285 0.018 0.215 3.033 1.550 .6 .1 282 262 76 Tabela 4.10: Resultados para as instâncias geradas aleatoriamente – parâmetros CP1 Os resultados mostram que a cardinalidade média da aproximação final do conjunto de soluções não dominadas é aproximadamente uma unidade para todos os grupos de instâncias. A cardinalidade desse conjunto, em todas as instâncias, foi no máximo 2. Para a métrica M1 , verificam-se valores relativamente elevados para ambas as versões do algoritmo, ou seja, uma única execução do algoritmo não é suficiente para obter a aproximação final da frente óptima de Pareto. A variação máxima relativa no valor do espalhamento médio das encomendas é cerca de 3.5%, e a variação para o valor do número máximo de pilhas abertas é inferior a 5%. Os valores máximos para as diferenças relativas ocorrem para os grupos de instâncias mais fáceis (3 e 4 para m=50, 7 e 8 para m=60). Para estes grupos, o número de itens diferentes cortados em cada padrão é menor. A variação média para o objectivo MPA é cerca de 3%, e cerca de 1.5% para o objectivo EME. Para a maioria das instâncias não existe uma variação significativa entre os valores de cada objectivo, para as aproximações das soluções não dominadas. As excepções são a instância 7 do grupo 3 e a instância 8 do grupo 4, onde os mínimos lexicográficos obtidos foram, respectivamente, {(6,3.44); (7,2.66)} e {(4, 1.98); (5, 1.58)}, conduzindo a variações de 14% e 20% no primeiro objectivo, e 22% e 20% para o segundo. O tempo médio de execução para a versão 1 é 262 segundos, enquanto que para a versão 2, onde se executam em média 282 gerações, é 76 segundos. Verifica-se que N1>M1 para todos os grupos de dados. Isto indica que as soluções obtidas pela versão 1 aproximam melhor a aproximação final. A versão 2 130 Capítulo 4 termina prematuramente, o que indica um desajustamento dos parâmetros T (número máximo de gerações), e r (ponderação em relação ao número de gerações não efectuadas). Essa observação, conduziu à elaboração do segundo conjunto de parâmetros, em que se aumentou T para 2000 e r para 0.4. Adicionalmente, na perspectiva de avaliar melhoramentos nas soluções extremas, aumentaram-se os parâmetros DimPop (dimensão da população) e DimArq (dimensão da arquivo) para 150. Na tabela 4.11 exibem-se os resultados correspondentes às experiências em que se utilizaram os valores que se definem em CP2. M1 M2 M3 N1 N2 N3 DP δP δE GN T1 T2 50 0.25 52.3 4.2 1.2 0.8 0.463 1.594 0.280 0.436 1.583 0.200 0.794 2.137 0.329 1.0 .6 765 1184 348 #G m 1 v An SC #P P2 P3 DE 2 50 0.50 51.7 3.8 1.7 1.3 0.710 1.411 0.060 0.152 1.735 0.020 0.315 3.845 1.370 .9 .6 739 1172 358 3 50 0.75 53.3 2.6 1.1 0.2 0.134 1.416 0.000 0.000 1.579 0.000 0.000 0.909 1.028 .9 .3 724 1059 335 4 50 1.00 51.7 1.9 1.1 0.2 0.106 0.800 0.020 0.040 0.855 0.000 0.102 1.667 0.462 1.0 .1 694 1444 360 5 60 0.25 63.8 4.1 1.8 1.4 0.761 1.762 0.060 0.194 2.207 0.280 0.542 3.201 1.128 .9 .7 844 1506 270 6 60 0.50 61.3 3.7 1.5 0.9 0.532 2.139 0.080 0.196 2.075 0.053 0.292 2.733 0.953 .9 .3 785 1480 422 7 60 0.75 63.1 2.6 1.6 1.1 0.594 1.654 0.000 0.000 1.624 0.000 0.000 6.107 2.742 .3 .0 783 1666 514 8 60 1.00 62.0 1.9 1.0 0.0 0.000 0.971 0.000 0.000 1.393 0.000 0.000 0.000 0.000 .7 .0 716 1561 546 3.1 1.4 0.7 0.413 1.468 0.063 0.127 1.631 0.069 0.256 2.575 1.002 .8 .3 756 1384 394 M Tabela 4.11: Resultados para as instâncias geradas aleatoriamente – parâmetros CP2 Para este conjunto de parâmetros, continuam a obter-se aproximações finais cuja cardinalidade média é sempre inferior a 2. Continuam a não se observar variações significativas nos valores dos objectivos para as aproximações das soluções não dominadas. A média da variação percentual média é cerca de 2.5% para o objectivo MPA e cerca de 1% para o objectivo EME. Regista-se o caso do grupo 7, em que essa diferença é cerca de 6% para o MPA. Para esse grupo, existem seis instâncias onde a cardinalidade da aproximação final é dois, e como os valores que se obtêm para MPA são relativamente pequenos (entre 6 a 12), uma variação duma unidade pode conduzir a uma elevada variação percentual. V2 obtém soluções cuja distância média à aproximação final é em cerca de 11% pior, relativamente à de V1, despendendo menos de 30% do esforço computacional. V2 não é uniformemente pior, sendo até ligeiramente superior no caso dos grupos 1, 6 e 7, para os quais se verifica N1<M1. A média de M2 é aproximadamente igual à de N2, o que indica que nas soluções dadas por cada uma das versões o número de Programação do corte 131 nichos é aproximadamente igual, e inferior a uma unidade, o que indica que a cardinalidade média da aproximação final para cada versão também é inferior a 2. Em relação à terceira métrica, as aproximações finais obtidas por V2 têm soluções extremas mais espaçadas do que as que se obtêm por V1. Comparando estes resultados com os que se obtiveram para CP1, a qualidade da aproximação final do conjunto de Pareto em CP2 é ligeiramente superior. Os valores #P e P2 mantêm-se, e P3 cresce cerca de 3%. Isto significa, que para os dois conjuntos de parâmetros, − a aproximação final tem igual cardinalidade média, − a aproximação final está distribuída em igual número médio de nichos, e − as soluções extremas da aproximação final estão em média 3% mais afastadas em CP2. Para cada versão, uma análise comparativa entre os resultados que se obtêm para os dois conjuntos de parâmetros mostra que a qualidade das soluções obtidas para CP2 é superior à das obtidas para CP1. Para V1, utilizando CP2, tem-se M1=1.468, o que significa uma melhoria de cerca de 5% em relação ao que se obtém para CP1 (M1=1.541), ou seja, a aproximação dada por esta versão está mais perto da aproximação final global. Apesar do número médio de indivíduos avaliados quadruplicar em CP2, essa melhoria é pouco evidente. Isto deve-se a um comportamento clássico dos algoritmos evolutivos: após a avaliação dum elevado número de indivíduos, atinge-se um patamar de convergência lenta. Os valores médios para M2 e M3 são semelhantes. Para a versão V2, o número médio de gerações executadas é 282 para CP1, e de 756 para CP2. O número médio de indivíduos avaliados, nesta versão, aumentou de 45120 (282*200*0.8) em CP1 para 181440 (756*300*0.8) em CP2, o que explica uma maior convergência de V2 no conjunto de experiências com CP2. Testaram-se as versões V1M e V2M, utilizando também dois conjuntos de parâmetros (CP3 e CP4), que se descrevem na tabela 4.12. Desta vez, o número médio de indivíduos avaliados é igual para os dois conjuntos. Escolheu-se projectar 132 Capítulo 4 esse número em 240000, que é metade do número médio de indivíduos avaliados por V1, quando se utilizam os valores de CP2 e excede o valor para o qual V2 conseguiu convergir quando se consideram os valores em CP2. Para avaliar se o desempenho do algoritmo híbrido, para este problema, é mais sensível à dimensão do conjunto de indivíduos avaliados em cada geração, ou ao número de gerações, consideram-se DimPop+DimArq=300 e T=1000 em CP3, e DimPop+DimArq=400 e T=750 em CP4. Ou seja, em CP3, o valor de DimPop+DimArq é 75% do respectivo valor em CP4 e, em CP4, o valor de T é 75% do considerado em CP3. Em ambos os casos, a dimensão do arquivo é um terço da dimensão da população. Conjunto de parâmetros DimPop DimArq ProbRec ProbMut T σ r CP3 CP4 225 75 0.8 0.2 1000 0.48862 0.1 300 100 0.8 0.2 750 0.48862 0.1 Tabela 4.12: Parâmetros para as versões V1M e V2M / instâncias geradas Para o parâmetro 2OptRep, número de gerações entre dois melhoramentos da fase 2-optimal, utilizou-se o valor 50 em todas as experiências. As tabelas 4.13 e 4.14 sumariam os resultados obtidos. Omitiram-se as colunas m, v, An, e SC já descritas anteriormente. Omitem-se também as colunas relativas aos tempos médios obtidos para ambas as versões. As novas colunas são: − PY é o valor médio da diferença percentual relativa entre o melhor valor de MPA encontrado pela Yuen3 e o valor correspondente na solução extrema da aproximação final ( z *(1) ); − EY é o valor médio da diferença percentual relativa entre o melhor valor de EME encontrado pela Yuen3 e o valor correspondente na solução extrema da aproximação final ( z *(2) ); − PYM é o valor máximo da diferença percentual relativa entre o melhor valor de MPA encontrado pela Yuen3 e o valor correspondente na solução extrema da aproximação final ( z *(1) ); Programação do corte − 133 EYM é o valor máximo da diferença percentual relativa entre o melhor valor de EME encontrado pela Yuen3 e o valor correspondente na solução extrema da aproximação final ( z *(2) ); − 2O representa o tempo médio (em segundos) consumido pela fase 2optimal. Não se apresentam os tempos médios de execução da heurística Yuen3, que são negligenciáveis por serem inferiores a 1 segundo em todas as experiências. P3 M1 M2 M3 N1 N2 N3 DP DE δE 2O GN .5 .0 84 215 .3 .6 100 201 .7 .4 63 200 .5 38 186 .5 228 208 .3 .3 216 216 31 1.0 .7 258 209 40 25 1.0 .7 89 191 25 22 .6 .5 135 203 #P PY EY 1 1.1 0.200 0.104 0.119 0.000 0.012 0.223 0.040 0.084 0.500 0.065 12 13 2 1.2 0.400 0.209 0.264 0.000 0.000 0.307 0.000 0.000 0.950 0.150 12 15 25 24 3 1.2 0.400 0.227 0.078 0.000 0.000 0.465 0.000 0.000 1.547 0.784 9 11 15 22 4 1.0 0.000 0.000 0.017 0.000 0.000 0.067 0.000 0.000 0.000 0.000 15 14 33 25 .9 5 1.3 0.300 0.153 0.732 0.000 0.010 0.855 0.040 0.137 0.800 0.188 13 20 13 17 .4 6 1.0 0.000 0.000 0.599 0.120 0.091 0.681 0.180 0.114 0.000 0.000 13 14 21 17 7 1.3 0.600 0.312 0.376 0.000 0.000 0.396 0.000 0.000 3.055 0.505 19 18 38 8 1.1 0.200 0.101 0.129 0.000 0.000 0.212 0.000 0.000 1.400 0.050 17 14 1.2 0.263 0.138 0.289 0.015 0.014 0.401 0.033 0.042 1.032 0.218 14 15 M P2 δP #G PYM EYM 17 17 Tabela 4.13: Resultados para as instâncias geradas aleatoriamente – parâmetros CP3 Neste conjunto de experiências, o esforço computacional médio é 879 segundos para V1M e 190 segundos para V2M. A comparação entre os valores médios de M1 e N1, mostra que a qualidade da aproximação final da frente de Pareto é cerca de 38% melhor para V1M. V2M apresenta aproximações de maior cardinalidade (N2>M2), e com soluções extremas mais espaçadas. Isto indica que nas experiências para cada instância, são as soluções obtidas por V1M que contribuem mais para a aproximação final, ou seja, V2M obtém uma maior quantidade de soluções que acabam por ser dominadas pelas de V1M. Comparando os melhores valores dos objectivos obtidos pelo AEMO com os obtidos pela Yuen3, verifica-se que em média a Yuen3 é superada em cerca de 14%, para o MPA, e em 15%, para o EME. A média da variação máxima encontrada para esses mesmos valores é de 25%, para o MPA, e de 22%, para o EME. Isto significa que, em média, o melhor valor para o MPA encontrado pela Yuen3 é 25% pior do que o melhor encontrado pelo AEMO híbrido, e o correspondente melhor 134 Capítulo 4 valor dado pela Yuen3 é 22% pior para o EME. Este resultado é curioso, porque a Yuen3 é uma heurística de objectivo único direccionada para o MPA, e em termos do pior caso comporta-se melhor para o EME. #G #P PY EY δP δE 2O GN 1 1.1 0.200 0.105 0.182 0.000 0.021 0.289 0.000 0.034 0.500 0.070 12 13 17 17 .5 .2 78 181 2 1.1 0.400 0.222 0.286 0.200 0.011 0.349 0.040 0.105 1.033 0.370 12 15 19 25 .3 .0 103 172 3 1.1 0.200 0.122 0.671 0.000 0.000 0.542 0.080 0.175 0.714 0.339 12 13 30 23 .9 .7 55 177 4 1.0 0.000 0.000 0.043 0.000 0.000 0.062 0.000 0.000 0.000 0.000 17 14 33 26 1.0 1.0 29 163 5 1.2 0.400 0.204 0.857 0.040 0.177 0.875 0.120 0.409 0.817 0.038 14 14 21 17 .5 .3 230 179 6 1.0 0.000 0.000 0.525 0.020 0.049 0.585 0.080 0.239 0.000 0.000 13 13 20 16 .3 .4 195 180 7 1.2 0.400 0.213 0.202 0.000 0.000 0.363 0.000 0.000 2.221 0.190 13 19 38 32 .9 .7 220 178 8 1.0 0.000 0.000 0.209 0.000 0.005 0.295 0.000 0.013 0.000 0.000 17 15 40 26 1.0 1.0 73 166 M 1.1 0.200 0.108 0.372 0.033 0.033 0.420 0.040 0.122 0.661 0.126 14 15 27 23 .7 .5 123 175 P2 P3 M1 M2 M3 N1 N2 N3 DP DE PYM EYM Tabela 4.14: Resultados para as instâncias geradas aleatoriamente – parâmetros CP4 Para CP4, o esforço computacional médio é de 848 segundos para V1M e de 170 segundos para V2M. V1M supera V2M em cerca de 12% relativamente à qualidade da aproximação final da frente de Pareto. Para a segunda e terceira métrica observa-se também uma ligeira superioridade de V1M. No entanto, neste caso, V2M apresenta uma qualidade quase equivalente à de V1M, despendendo apenas um quinto do respectivo esforço computacional. Relativamente à comparação com a Yuen3, para cada objectivo, a média das diferenças médias é igual à que se obtém para CP3. A média das diferenças máximas, para cada objectivo, é maior em CP4, o que confere a este conjunto de parâmetros uma superioridade em relação à qualidade das soluções finais. A observação dos valores δP e δE permite-nos concluir relativamente à qualidade das soluções obtidas para os vários conjuntos de experiências. Os respectivos valores médios são: (0.6,0.1) para CP1; (0.8, 0.3) para CP2; (0.6, 0.5) para CP3 e (0.7, 0.5) para CP4. As melhores soluções para o objectivo MPA obtêmse em CP2 (δP=0.8 é o máximo), o que se explica pelo elevado número de indivíduos avaliados pela V1 (480000). Para o objectivo EME, obtêm-se as melhores soluções com V1M e V2M utilizando CP4 (δE máximo é 0.5), o que resulta dos melhoramentos introduzidos. Neste aspecto, as diferenças entre CP3 e CP4 não são significativas. Os melhoramentos não são regulares e são mais efectivos para os Programação do corte 135 grupos onde v>0.5 (os grupos 3, 4, 7 e 8). Para os outros grupos, os melhores resultados obtêm-se para CP2 à custa dum esforço computacional muito maior. Testes para as instâncias reais Para o conjunto de instâncias reais, testaram-se apenas as versões V1 e V2 do algoritmo utilizando o conjunto de parâmetros CP1. Os resultados apresentam-se na tabela 4.15. As instâncias têm pequena a média dimensão (5<m<35 e 5<n<30) e apresentam-se por ordem não decrescente de n. As soluções de corte resultaram de problemas de corte de dificuldade média (0.33<v<0.41). Os problemas de sequenciamento associados são também relativamente fáceis (a média de SC=2.22). A coluna #I é o índice da instância. Para todas as instâncias, encontrouse uma única solução (no espaço dos objectivos) potencialmente não dominada. Isto significa que para este conjunto de instâncias não existem conflitos entre os dois objectivos. Por este motivo, omitem-se as colunas #P, que apresentaria o valor 1 em todas as linhas, e P2, P3, DP e DE, que apresentariam o valor zero em todas as linhas. Para simplificar a leitura, apresentam-se apenas os valores não nulos. #I m v n SC 5 12 3 1 7 9 16 17 4 18 14 8 6 10 2 15 20 11 13 22 19 21 6 9 11 10 13 11 11 9 10 11 12 14 17 16 15 21 21 22 23 32 34 31 .38 .40 .37 .39 .39 .39 .34 .39 .36 .34 .38 .39 .40 .38 .39 .39 .33 .40 .38 .38 .36 .38 6 6 7 9 9 9 9 9 10 10 12 13 14 14 15 15 16 21 22 27 28 28 1.833 1.444 1.363 2.400 1.769 2.090 2.363 2.111 2.300 2.363 2.500 2.428 2.000 2.625 2.333 2.381 2.428 2.318 2.608 2.281 2.471 2.484 2.206 M1 M2 M3 0.008 0.014 0.037 0.013 0.009 0.066 0.674 0.437 0.695 0.966 0.905 0.174 0.200 0.200 0.626 0.836 0.200 0.027 0.609 0.094 N1 0.008 0.050 0.011 0.037 0.020 0.014 0.090 0.702 0.309 0.964 1.018 1.066 0.195 N2 0.200 N3 1.000 0.746 1.043 1.075 1.000 0.100 1.016 0.176 GN T1 T2 126 126 126 126 128 126 126 126 130 136 134 140 135 152 136 149 137 133 167 159 192 235 143 125 102 123 105 124 124 127 144 123 153 128 123 147 126 148 132 143 181 132 201 147 144 136 17 17 16 17 17 17 17 22 19 23 18 20 23 22 24 22 21 28 25 33 32 40 22 Tabela 4.15: Resultados para as instâncias reais – V1 e V2 com CP1 136 Capítulo 4 Ambas as versões do algoritmo alcançaram a aproximação do ponto ideal em todas as execuções, para várias instâncias (1, 3, 4, 5, 7, 9, 12, 16, 17 e 18). Em relação à instância 6, isto apenas aconteceu com a versão 1. Apesar dos resultados da versão 1 superarem os da versão 2 – M1 ≤ N1 e M3 ≤ N3 para todas as instâncias – as diferenças são pequenas. Conclui-se que para instâncias com características semelhantes às das testadas – pequena e média dimensões (5<m<35 e 5<n<30), e a dificuldade dos problemas de sequenciamento relativamente pequena (neste caso, a média de SC=2.22) – a V2 com o CP1 constitui uma abordagem razoável para o problema bi-objectivo. Para testar as versões V1M e V2M e comparar a qualidade das soluções com a das obtidas pela Yuen3, utilizou-se o conjunto de parâmetros CP5 (descrito na tabela 4.16) que difere de CP1 relativamente ao número de indivíduos no arquivo. Mantém-se o número de indivíduos avaliados em cada geração igual a 200 e o número total de indivíduos avaliados (750x200=150000). Manteve-se a ideia, usada em CP3 e CP4, de considerar para dimensão do arquivo um terço da dimensão da população. Da mesma forma, o parâmetro r passa a ter o valor 0.1. Conjunto de parâmetros DimPop DimArq ProbRec ProbMut T σ r CP1 150 50 0.8 0.2 750 0.48862 0.1 Tabela 4.16: Conjunto de parâmetros CP5 Os resultados apresentam-se na tabela 4.17. Os tempos de execução para a Yuen3 e a fase de melhoramento 2-optimal são inferiores a 1 segundo em todas as instâncias. Para V1M, os tempos de execução são semelhantes aos da tabela 4.15. Na versão V2M executam-se, em média, 160 gerações e o tempo médio de execução é de 26 segundos. Tal como já se observara para as versões V1 e V2 utilizando o conjunto de parâmetros CP1, a aproximação final do conjunto de Pareto é constituída por Programação do corte 137 apenas um ponto em todas as instâncias. Ou seja, a aproximação do ponto ideal é admissível. #I n 5 12 3 1 7 9 16 17 4 18 14 8 6 10 2 15 20 11 13 22 19 21 6 6 7 9 9 9 9 9 10 10 12 13 14 14 15 15 16 21 22 27 28 28 M1 M2 M3 N1 N2 N3 PYM EYM 8 12 12 0.550 0.385 0.053 0.053 0.038 0.168 0.117 0.221 0.009 0.877 0.092 0.043 0.172 0.082 0.231 0.041 0.878 0.086 0.200 0.009 0.609 0.027 10 7 17 0.200 0.009 1.016 0.046 15 11 25 3 13 8 4 7 28 19 20 12 29 9 Tabela 4.17: Resultados para as instâncias reais – V1M e V2M com CP5 Os resultados mostram que as alterações introduzidas conduzem efectivamente a melhoramentos. Obtiveram-se reduções nos valores de M1 e N1 e esses valores são muito pequenos (nulos ou quase nulos) para todas as instâncias. Isto indica que cada execução de ambas as versões aproxima correctamente a melhor aproximação encontrada. Em relação à melhor solução obtida em cada objectivo, para cada instância, não se encontraram diferenças, isto é, a aproximação final do conjunto de Pareto não melhora. Para ambos os objectivos, a abordagem evolutiva alcança melhores resultados que a heurística Yuen3. Esses melhoramentos são alcançados à custa de um esforço computacional muito superior. No entanto, estes resultados demonstram que a Yuen3 não é quasi-optimal, como tinha sido afirmado em [Yuen e 138 Capítulo 4 Richardson, 1995] (mesmo para problemas de pequena dimensão, como são estas instâncias). Para o objectivo MPA observa-se que essa diferença é nula para as instâncias de muito pequena dimensão (n<20). Para o objectivo EME essa diferença é maior. No entanto, chegou-se a encontrar uma diferença em MPA da ordem de 25% – para a instância 21 – o que é significativo. A V2M com o conjunto de parâmetros CP5 constitui uma aproximação adequada para resolver os problemas reais com características semelhantes às das instâncias testadas, e pode-se recomendar a sua concretização em ambiente de apoio à decisão. Comentários e conclusões Nesta secção, estudou-se a relação entre o problema de minimização do número máximo de pilhas abertas e o problema de minimização do espalhamento médio das encomendas. Apesar destes objectivos estarem relacionados, resolver um problema de sequenciamento de padrões, considerando um ou o outro objectivo pode conduzir a resultados diferentes. Com o propósito de avaliar a extensão da diferença relativa nos casos em que ela ocorre, aproximou-se a frente óptima de Pareto do problema bi-objectivo correspondente. Verificou-se que, para a maioria das instâncias testadas, existe apenas uma solução não dominada, o que significa que a aproximação do ponto ideal é admissível. Os resultados mostram que nos casos em que tal não acontece, a diferença relativa não é significativa, ou é pouco significativa. Isto indica que, na prática, não é relevante o erro que se comete utilizando indiferentemente abordagens de objectivo único, para qualquer um dos objectivos considerados. Testaram-se diferentes versões do SPEA2 e, apesar deste algoritmo apresentar um bom desempenho na resolução de outros problemas, não há evidência de que seja o mais adequado para este problema concreto. Comparou-se a qualidade dos resultados com a dos que se obtêm pela Yuen3, uma das “melhores” heurísticas apresentadas em [Yuen, 1995], direccionada para minimização do número de pilhas abertas. Conclui-se que apesar do reduzido Programação do corte 139 tempo de execução, essa heurística está longe de obter boas aproximações para instâncias de pequena a grande dimensão. Conclui-se que, para o apoio à decisão num ambiente real, a abordagem biobjectivo permite adquirir conhecimento acerca do espaço de soluções que não seria adquirido com uma abordagem de objectivo único. As abordagens de resolução de objectivo único exploram o espaço de decisão em apenas uma direcção, e podem perder-se soluções eficientes do problema bi-objectivo. A abordagem utilizada – um AEMO elitista puro e uma versão híbrida – fornece como resultado um conjunto de soluções potencialmente não dominadas. No caso em que a aproximação da frente óptima de Pareto é constituída por um único ponto, este ponto, do espaço de objectivos, pode corresponder a múltiplas soluções alternativas no espaço de decisão. A manutenção das várias soluções potencialmente eficientes num arquivo possibilita ao agente de decisão uma análise detalhada das várias alternativas. O grande esforço computacional associado a esta abordagem é compensado pela qualidade da informação que se pode extrair, o que justifica a sua implementação num contexto industrial. O sequenciamento de padrões é o último problema na hierarquia da tomada de decisão e precede a implementação do programa de corte nas máquinas de produção. A integração desta abordagem numa ferramenta de apoio à decisão permite ao agente de decisão proceder à pesquisa de soluções em execução diferida, e posteriormente analisar as soluções geradas. Nessa direcção, para instâncias de grande dimensão (n≥50) sugere-se a concretização da versão híbrida do algoritmo com o critério de paragem antecipada, utilizando o conjunto de parâmetros CP4 que permite alcançar um bom compromisso entre o esforço computacional e a qualidade das soluções. Para as instâncias típicas do caso em estudo, com pequena a média dimensão (n<30), recomenda-se a concretização da versão híbrida com o critério de paragem antecipada, e o conjunto de parâmetros CP5. Dado o seu desempenho, esta versão até pode ser integrada num ambiente de apoio à decisão. 140 Capítulo 4 Capítulo 5 Integração do Problema de Corte com o Problema de Planeamento da Capacidade Neste capítulo propõem-se duas abordagens que integram o problema de corte com o problema de planeamento de capacidade. A primeira abordagem que se propõe é uma heurística, que permite determinar um plano de produção, e que inclui o sequenciamento e escalonamento da produção das famílias. Geram-se as soluções de corte para cada família em cada período do horizonte de planeamento. Determinam-se as ordens de corte resultantes, agrupam-se em lotes e procede-se ao sequenciamento. O objectivo é a minimização do custo do escalonamento. Para a segunda abordagem propõe-se um novo modelo, que integra os problemas de corte para as várias famílias e períodos, considerando restrições de capacidade. Não se consideram aspectos de sequenciamento e escalonamento. Expõem-se alguns conceitos associados ao desenvolvimento de algoritmos de partição e geração de colunas, e dá-se uma panorâmica da sua aplicação, especialmente para o Problema de Corte e para o Problema de Bin-Packing. Formula-se o problema em Programação Linear Inteira, estendendo a formulação de colunas de Gilmore e 142 Capítulo 5 Gomory. Descreve-se o algoritmo de partição e geração de colunas, que se desenvolveu especialmente para resolver este modelo, dando especial atenção aos aspectos inovadores. Sugerem-se duas regras de ramificação e exploram-se detalhes referentes ao cálculo de soluções admissíveis, limites inferiores e introdução de planos de corte. Descreve-se o subproblema de geração de colunas e o método de resolução. Apresentam-se e discutem-se os resultados relativos a um conjunto de testes computacionais. A finalizar tecem-se alguns comentários e perspectivam-se evoluções possíveis. 5.1 Introdução As aplicações tradicionais do Problema de Corte (PC) assumem a disponibilidade dum número infinito de peças idênticas a cortar. No entanto, em muitos dos problemas encontrados em meio industrial, estas peças podem ter características diferentes, quer em termos de dimensão, quer em termos do material que as constitui, e têm de ser produzidas num sistema com capacidade finita. Assim, na “vida-real”, o PC ocorre como subproblema no âmbito dum problema de planeamento de produção muito mais amplo. Estes casos parecem ser ignorados pela literatura da especialidade, talvez devido à sua grande complexidade. Duas excepções são os trabalhos [Hendry, Fok e Shek, 1996] e [Nonas e Thorstenson, 2000]. Hendry, Fok e Shek abordam um caso de estudo para um produtor de peças de cobre e integram o PC com um problema de planeamento e escalonamento da capacidade. Os itens são produzidos cortando barras que podem ter três diâmetros diferentes. São gerados previamente todos os padrões de corte admissíveis, trabalhando-se apenas com padrões maximais1. O problema é abordado em duas fases e considera-se um horizonte temporal de duas semanas. Na primeira fase determina-se uma solução de corte para os diâmetros a utilizar, em cada uma das semanas. Dada esta solução obtêm-se os planos diários de produção minimizando 1 Um padrão de corte é maximal quando a largura não aproveitada é inferior ao menor valor de largura dos objectos a produzir. Integração do problema de corte com o problema de planeamento da capacidade 143 os tempos totais de processamento. Apresentam-se modelos em PLI onde se consideram restrições de capacidade. Para a primeira fase são também descritas duas heurísticas. Não é claro o tratamento das restrições de capacidade, sendo mesmo ignoradas nas heurísticas. No caso de insuficiência da capacidade, os modelos que se apresentam são inadmissíveis e não permitem extrair qualquer conhecimento adicional. Nonas e Thorstenson integram o PC com um problema de formação e sequenciamento de lotes, em condições de procura estática. Consideram tempos de preparação para cada padrão e custos de armazenamento e pretendem determinar os ciclos de produção. Geram um conjunto de padrões admissíveis, e a formulação inclui decisões relativas ao número de vezes que cada padrão é utilizado em cada ciclo de produção. Não se consideram restrições de capacidade. Simplificam o modelo relaxando as restrições de integralidade dos lotes, mas a função objectivo é não linear. Testam-se diferentes procedimentos heurísticos combinados. A necessidade de resolver na prática o problema de planeamento e sequenciamento da produção motivou o desenvolvimento da heurística que se apresenta na secção 5.2, e que se concretizou para resolver o subproblema do caso em estudo. Esta heurística foi especialmente concebida de forma a ter suficiente flexibilidade para permitir tratar as instâncias reais, em que muitas vezes se prometem datas de entrega pouco exequíveis. Não se consideram restrições de capacidade. Determinam-se as quantidades a produzir das diferentes famílias (minimizando o desperdício), e em seguida sequencia-se a sua produção. O objectivo é a minimização do custo total. No sequenciamento considera-se um compromisso entre a minimização do número de atrasos e a minimização do custo de perda de produção por mudanças da produção de famílias. Os trabalhos recentes de [Vance, 1998], [Vanderbeck, 1999], [Valério de Carvalho, 1999], [Degraeve e Schrage, 1999] e [Degraeve e Peeters, 2002] relatam o sucesso da aplicação de algoritmos de partição e geração de colunas na resolução exacta do PC e do problema de bin-packing. Estes resultados motivaram o desafio 144 Capítulo 5 de estender o PC a um problema de planeamento de capacidade, e de conceber um algoritmo para a resolução exacta deste novo problema. O modelo matemático deriva da formulação de Gilmore e Gomory, mas é bastante mais complexo, pois integra as decisões relativas ao corte de vários produtos ao longo dum horizonte temporal discreto, com restrições de capacidade nos vários períodos. Esta contribuição, proposta em [Respício e Captivo, 2001, 2002b], apresenta-se na secção 5.3. 5.2 Problema de planeamento e sequenciamento da capacidade 5.2.1 Definições e conceitos Assume-se que a procura de cada item em cada período é conhecida. A capacidade de produção é fixa em cada período. O problema consiste em determinar e sequenciar as quantidades a produzir de cada família, satisfazendo a procura sem atrasos. Podem-se criar stocks para lidar com as flutuações da procura, e para tirar partido de economias de escala resultantes da antecipação da produção de alguns itens. Os tempos de mudança da família em produção dependem da sequência de produção. Quando um carretel da família f é processado imediatamente antes dum carretel da família g ocorre um tempo de mudança dado por s fg ∈ . Este intervalo de tempo, em que se produz uma porção de folha de papel que não pode ser utilizada para venda, corresponde a um período de perda de produção. Os custos de mudança são directamente proporcionais aos tempos de mudança. Para resolver este problema desenvolveu-se uma heurística que trabalha a dois níveis de agregação temporal. No primeiro, considera-se um horizonte temporal discreto. Assume-se que cada item é produzido no período que antecede o da sua data de entrega. Calculam-se as quantidades a produzir de cada família, em cada período, resolvendo, de forma independente, os problemas de corte associados às várias famílias e períodos. Procede-se à afectação das soluções de corte às encomendas, o que permite estabelecer as ordens de corte a produzir em cada período. Integração do problema de corte com o problema de planeamento da capacidade 145 No segundo nível, determinam-se os respectivos programas, para cada família, e a sua sequência de produção ao longo do mesmo horizonte, mas considerando o tempo contínuo. Procede-se, assim, à desagregação temporal, afectando a produção das famílias a intervalos de tempo contínuos. O problema de sequenciamento reduz-se a um problema de definição de batches1 e escalonamento numa única máquina com tempos de mudança dependentes da sequência das famílias [Potts e Van Wassenhove, 1992]. Entende-se por tarefa, a produção dum conjunto de carretéis que após o corte vão originar itens destinados a um mesmo conjunto de pedidos, ou seja, corresponde a uma ordem de corte. Considere-se que: — a tarefa j produz x j ∈ — bf ∈ carretéis duma determinada família (seja a f), e é o tempo de processamento dum carretel da família f. O tempo de processamento da tarefa j é dado por bf .x j e a sua data de conclusão, que se designa por D j ∈ , é dada pela menor data de entrega dos itens resultantes. Não se consideram pesos associados às tarefas (que na literatura se designam por wj ). Não se permite a interrupção do processamento de tarefas. Um escalonamento é uma sequência de processamentos de tarefas com os intervalos de tempo necessários para as mudanças de família nas posições correspondentes. Dado um escalonamento, o tempo de conclusão da tarefa j > 0 , Cj ∈ , é dado recursivamente pela soma do tempo de conclusão da tarefa que a antecede, com o tempo de processamento de j e, caso exista mudança de família, o correspondente tempo de mudança. O atraso duma tarefa j é dado por L j = C j − D j e o correspondente atraso binário é dado por 1, se L j > 0 ( j = 1,... , N ). Uj = 0, caso contrário 1 Por batch, termo utilizado na literatura anglo-saxónica, entendemos uma sequência de carretéis da mesma família que são produzidos consecutivamente, correspondendo, assim, à produção duma determinada quantidade da mesma família. 146 Capítulo 5 O tempo total { de processamento duma sequência } é dado C max = max C j , j = 1, ..., N , e o número de tarefas em atraso é dado por por ∑ jU j . Várias tarefas da mesma família podem ser agrupadas e produzidas em conjunto, como uma batch, para atingir poupanças nos tempos de mudança da produção das famílias. O tempo de processamento duma batch B i , que se designa por P (B i ) , é dado pela soma dos tempos de processamento das tarefas que a constituem e a sua data de conclusão D (B i ) é dada pela menor data de conclusão das tarefas que a constituem. Num sequenciamento, o tempo de conclusão C (B i ) corresponde a C k , onde k é a última tarefa processada na batch. Como função objectivo considera-se a minimização do custo total do escalonamento, que inclui a minimização do número de tarefas em atraso e a minimização do custo total de mudanças entre famílias. Como os custos são proporcionais aos tempos de mudança, minimizar os custos é equivalente a minimizar o tempo total de mudanças, ou seja, a minimizar a duração total do escalonamento. Como não se permite interrupção, este problema é formalmente equivalente a determinar o caminho hamiltoniano de custo mínimo num grafo onde os nós representam tarefas e os arcos representam as mudanças entre o processamento das tarefas. Os custos associados são os tempos de mudança entre as famílias associadas às tarefas. Ou seja, o problema de minimização do tempo total de mudança pode ser reduzido ao PCV e como tal, é NP-difícil. Monma e Potts estudam o problema de sequenciamento da produção de famílias, numa única máquina, com tempos de mudança dependentes da sequência, considerando diversas funções objectivo [Monma e Potts, 1989]. Estes autores mostram que: — para o objectivo de minimização do tempo de conclusão ponderado, que se designa por (1 | sfg | ∑w jC j ), existe um escalonamento óptimo onde as tarefas em cada batch estão ordenadas segundo a regra de “data de conclusão mais cedo”, e Integração do problema de corte com o problema de planeamento da capacidade 147 — para o objectivo de minimização do custo total de tarefas em atraso, que se designa por (1 | sfg | ∑ wU i i ), existe um escalonamento óptimo onde as tarefas não atrasadas, em cada batch, estão ordenadas segundo a regra de “data de conclusão mais cedo”. Desenvolveram algoritmos de programação dinâmica cuja ordem de complexidade, apesar de polinomial, é bastante elevada. Mais recentemente estes algoritmos foram melhorados (cf. [Potts e Kovalyov, 2000]). Actualmente existem algoritmos O (N F ) , ou seja, polinomiais para um número fixo de famílias, F. Como as instâncias que se têm de resolver no caso em estudo têm dimensão bastante elevada, optou-se por desenvolver um procedimento heurístico para resolver o problema. 5.2.2Heurística para o planeamento e sequenciamento da capacidade As tarefas de cada família são ordenadas por data de conclusão não decrescente. Definem-se batches agrupando subsequências de tarefas com data de conclusão numa determinada janela temporal – estas janelas definem-se de forma a terem duração igual a meio período de produção. Em seguida, sequenciam-se estas batches utilizando uma regra de prioridade baseada na utilizada por [Schutten, 1996], para tratar um problema da mesma classe. Exemplo de determinação das tarefas originadas por um padrão Consideremos: um padrão de corte 120 120 100 70, a usar para cortar 30 carretéis, e o conjunto de encomendas sobre itens da mesma família e diâmetro a satisfazer usando os itens cortados no padrão: Encomenda Quantidade A 40 B 20 C 8 D 22 E 30 Largura 120 120 70 70 100 Data 99.05.10 99.05.11 99.05.08 99.05.15 99.05.20 148 Capítulo 5 O padrão de corte dá origem a três tarefas (a que correspondem três ordens de corte): Tarefa 1 2 3 Encomendas destino dos itens A A E D B B E D B B E C Número de carretéis 20 2 8 Tempo de processamento 10 1 4 Data de conclusão 99.05.10 99.05.11 99.05.08 Para cada tarefa, obteve-se o respectivo tempo de processamento, assumindo que o corte de um carretel tem um tempo de processamento de 0.5 horas. Caso se agrupem estas três tarefas para constituir uma batch, o respectivo tempo de processamento é 15, e a data de conclusão é 99.05.08. Regra de prioridade para sequenciamento de batches Para determinar uma sequência de batches, utiliza-se a regra de prioridade que se apresenta de seguida. Inicia-se a sequência fixando, na primeira posição, a batch que apresente a menor data de conclusão. Se existir mais do que uma batch nessas condições, escolhe-se a que consome o maior tempo de processamento. Iterativamente, escolhe-se a próxima batch a ser introduzida na sequência até a completar. Considera-se: — β , parâmetro que representa o valor relativo do tempo de mudança, e — B ig , a i-ésima batch da família g, e B jf , a j-ésima batch da família f. Regra Se B jf foi a última batch introduzida no escalonamento, a próxima batch a introduzir na sequência é B ig , a batch com o maior valor de L(B ig ) − β × s fg , onde: – L(B ig ) = C (B ig ) − D (B ig ) é o atraso de B ig , se esta for a próxima batch a ser introduzida na sequência. O algoritmo 5.1 problema. apresenta o procedimento que se utilizou para resolver o Integração do problema de corte com o problema de planeamento da capacidade 149 Heurística para o planeamento e sequenciamento da produção 1. Para cada período e cada diâmetro de cada família, considerar a procura respectiva e determinar uma solução de corte. 2. Afectar os itens nas soluções obtidas às encomendas. Determinar as tarefas e os correspondentes tempos de processamento e datas de conclusão. 3. Para cada família, ordenar as tarefas por ordem não decrescente de data de conclusão. 4. Considerar, como datas limite, as datas que marcam o meio ou o fim de períodos. Para cada família, agrupar numa batch as tarefas cuja data de conclusão ficam entre duas datas limite consecutivas. 5. Iniciar β = 0 . Determinar uma sequência de batches inicial utilizando a regra de prioridade. Iniciar a melhor sequência encontrada com essa sequência inicial. 6. Enquanto β ≤ 80 fazer β = β +1 ; Determinar uma nova sequência pela regra de prioridade; Actualizar a melhor sequência encontrada com a sequência actual se • melhora o tempo total de processamento, C max , sem aumentar o número de tarefas em atraso, • ∑ j U j , ou melhora o número de tarefas em atraso, ∑ j U j , sem aumentar o tempo total de processamento, C max . Algoritmo 5.1: Heurística para o planeamento e sequenciamento da produção No passo 1, determinam-se as quantidades a produzir considerando os dados agregados pelas características do produto e ao longo do tempo, num horizonte temporal discreto. A afectação no passo 2 corresponde à desagregação nas características dos itens e permite a determinação das tarefas. A ordenação das tarefas, no passo 3, é o passo inicial para resolver o problema de sequenciamento e 150 Capítulo 5 determinação de batches num horizonte temporal contínuo – desagregação temporal. No passo 4, dividem-se os períodos do horizonte discreto inicial, em dois subperíodos de igual duração. Para cada um dos períodos originais definem-se duas datas: a que corresponde ao fim da primeira metade do período, e a que marca o fim do período. As tarefas duma mesma família cuja data de conclusão esteja compreendida entre duas destas datas são agrupadas numa batch. Isto corresponde a estipular que todas as ordens de corte (da mesma família), que têm de estar concluídas no fim da metade dum período, são produzidas na mesma corrida. No passo 5 procede-se ao sequenciamento das batches gerando um conjunto de sequências atractivas e guardando a mais “favorável” relativamente aos critérios considerados. Geram-se diversas sequências fazendo variar β , ou seja, atribuindo valores diferentes à importância relativa dos tempos de mudança entre famílias. A melhor sequência é actualizada sempre que se encontra uma nova sequência que melhora ou o tempo total de processamento, ou o número total de tarefas em atraso. Os limites de variação e o passo de variação do parâmetro β foram determinados por experiência computacional. A solução final expressa o plano de produção. Os programas para cada família são dados pelas batches dessa família, ou pela agregação de batches dessa mesma família, que ocorram sequencialmente na solução. Como não se impõem restrições de capacidade e o sequenciamento é feito considerando as quantidades que têm de ser produzidas, este procedimento permite tratar situações pouco desejáveis que acabam por ocorrer na prática: — já existe atraso na satisfação da procura quando se procede ao planeamento, ou — a capacidade não é suficiente para produzir toda a procura ao longo do horizonte de planeamento. Integração do problema de corte com o problema de planeamento da capacidade 151 Outra vantagem deste algoritmo é permitir que o plano possa ter início em qualquer momento, não sendo necessário que esse instante corresponda ao início dum módulo de produção. Para tal, em alternativa a considerar as datas absolutas, utilizam-se as datas relativas ao início do plano, como se mostra no exemplo que se segue. Um aperfeiçoamento possível das soluções geradas, que não foi concretizado, consiste em testar se eventuais antecipações de alguns programas podem conduzir a um melhoramento em algum dos critérios que foram considerados. Exemplo de aplicação da heurística Considere-se que os módulos de produção têm a duração de uma quinzena. Pretende-se elaborar um plano para um horizonte com duração de um módulo de produção. O plano vai ter início à hora zero do dia 3 dum mês com 30 dias – ou seja, a hora zero do plano corresponde à hora 48 do mês. As encomendas a produzir nesse plano são as ainda não programadas e com entrega no período seguinte, que se inicia no dia 16, ou seja, a hora 360 do mês, que corresponde à hora 312 do plano. Para simplificar, assuma-se que o tempo de processamento duma tonelada é de uma hora, e que esse tempo corresponde ao tempo de processamento dum carretel de qualquer família. São pedidos itens de cinco famílias. Os tempos de mudança entre as famílias, sfg , são dados, em horas, pela matriz que se apresenta na tabela 5.1. f/g 1 2 3 4 5 1 0 0.08 0.25 0.16 0.25 2 0.08 0 0.08 0.08 0.16 3 0.25 0.08 0 0.08 0.16 4 0.16 0.08 0.08 0 0.08 5 0.25 0.16 0.16 0.08 0 Tabela 5.1: Tempos de mudança entre famílias – exemplo Resolvem-se os problemas de corte para cada família e obtêm-se as quantidades a produzir para cada família, que se exibem na tabela 5.2. 152 Capítulo 5 f Quantidade 1 190 2 95 3 120 4 120 5 115 Tabela 5.2: Quantidade a produzir para cada família – exemplo Determinam-se as tarefas e sequenciam-se por ordem não decrescente de data de conclusão. Faz-se corresponder a cada data o número de horas que decorre desde o início do plano até essa data (exclusive), expressando-se em horas a data de conclusão de cada tarefa. O fim do período corresponde à hora 312 do plano. O meio do período seguinte (22.5dias x 24 horas=540 horas), corresponde à hora 492 do plano (540-48=492). Para cada família, forma-se uma batch agrupando todas as tarefas cuja conclusão seja inferior a 492 (a existirem) e outra com as que têm conclusão superior ou igual a 492. Na tabela 5.3 apresenta-se a lista de batches que se obtiveram, com as respectivas quantidades a produzir, P (B jf ) , e ordenadas por data de conclusão, D (B jf ) . B jf P (B jf ) D (B jf ) B13 80 408 B15 110 408 B12 20 432 B14 60 432 B11 110 480 B 23 40 504 B 24 60 504 B 25 5 504 B 21 80 576 B 22 75 576 Tabela 5.3: Batches a sequenciar – exemplo A tabela 5.4 expõe as quatro sequências diferentes que se obtêm fazendo variar o parâmetro β nos limites estabelecidos. Para cada solução, exibe-se a sequência de batches e os tempos de mudança, apresentando para cada batch a respectiva data de conclusão. Integração do problema de corte com o problema de planeamento da capacidade 153 S0 S12 Bi P (B i ) B15 110 s 53 C (B i ) S 30 Bi P (B i ) 110 B15 110 190.16 C (B i ) S 34 Bi P (B i ) 110 B15 110 190.16 C (B i ) Bi P (B i ) 110 B15 110 0.16 190.16 0.16 s 53 0.16 s 53 0.16 s 53 B13 80 B13 80 B13 80 B13 80 s 31 0.25 s 34 0.08 s 34 0.08 s 34 0.08 B11 110 300.41 B14 60 250.24 B14 60 250.24 B14 60 s14 0.16 360.57 360.40 360.40 0.16 s 41 0.16 s 41 0.16 s 41 B14 60 B11 110 B11 110 B11 110 s 42 0.08 s12 0.08 s12 0.08 s12 0.08 B12 20 380.65 B12 20 380.48 B12 20 380.48 B12 20 s 24 0.08 440.73 440.56 440.56 0.08 s 24 0.08 s 24 0.08 s 24 B 24 60 B 24 60 B 24 60 B 24 60 s 43 0.08 s 43 0.08 s 43 0.08 s 43 0.08 B 23 40 480.81 B 23 40 480.64 B 23 40 480.64 B 23 40 s 31 0.08 561.06 560.89 555.72 0.25 s 31 0.25 s 32 0.08 s 32 B 21 80 B 21 80 B 22 75 B 22 75 s15 0.25 s15 0.25 s 21 0.08 s 25 0.16 B 25 5 566.31 B 25 5 566.14 B 21 80 635.80 B 25 5 s 52 0.16 s 52 0.16 s15 0.25 s 51 0.25 75 641.56 B 22 75 641.30 B 25 5 641.05 B 21 80 B 22 C (B i ) 110 190.16 250.24 360.40 380.48 440.56 480.64 555.72 560.88 641.13 Tabela 5.4: Soluções obtidas para sequenciamento da produção – exemplo Como não se conhece a duração das tarefas e para simplificar a explanação, assuma-se que cada tarefa tem a duração de uma hora. Dada uma sequência, o número de tarefas em atraso na batch B jf é dado pelo arredondamento superior do número de horas que não são produzidas até D (B jf ) . Para contar o número total de tarefas em atraso, basta somar o número de tarefas em atraso, para cada batch. Note-se que este valor é diferente do número de horas em atraso, dado pela soma de L(B ig ) . A melhor solução encontrada é iniciada com a sequência S0 , que corresponde a considerar β = 0 . A duração do sequenciamento é C max = 641.56 . O número de tarefas em atraso ∑jU j = 71 – a batch B25 tem 5 tarefas; como está totalmente em atraso, origina 5 tarefas em atraso; a B22 tem 66 (641.56-576=65.56) tarefas em atraso. As sequências obtidas com β = 1 até β = 11 são iguais a S0 . 154 Capítulo 5 Para β = 12 obtém-se a sequência S12 com C max = 641.3 e ∑jU j = 71 – para a batch B25 ficam 5 tarefas em atraso e para a B22 ficam 66 (641.3-576=65.3). Actualiza-se a melhor solução encontrada com S12 . Para a sequência S30 tem-se C max = 641.05 e ∑jU j = 65 – para a batch B21 ficam 60 tarefas em atraso (635.8-576=59.8), e para a B25 ficam 5. A melhor solução encontrada passa a ser S30 . Para β = 34 obtém-se uma nova sequência, S34 , com C max = 641.13 e ∑jU j = 71 . Nenhum dos critérios é melhorado e não se actualiza a solução. Todas as sequências obtidas para β > 34 , são iguais a S34 . A melhor solução obtida corresponde a S30 . 5.2.3 Comentários e conclusões Em situações reais típicas, num plano com a duração de dois meses, produzem-se cerca de 200 ordens de corte, com um número médio de 16 carretéis cada, distribuídas por cerca de 30 programas. Neste caso, a execução do algoritmo num computador actual, termina em cerca de 1 a 2 minutos. Verificou-se ainda que, pela utilização deste procedimento, o valor de tempo gasto nas mudanças entre famílias consome em média cerca de 1 a 2% da capacidade disponível. Este valor de desperdício da capacidade pode ser deduzido ao valor efectivo de capacidade disponível, obtendo-se uma estimativa da capacidade disponível para a produção de carretéis. A abordagem, que se apresenta na secção seguinte, permite resolver o problema de planeamento da capacidade, ou seja, determinar as quantidades a produzir de cada família num horizonte de planeamento. Essas quantidades podem então ser sequenciadas utilizando uma heurística que resulta da que se apresentou, por supressão do passo 1. Integração do problema de corte com o problema de planeamento da capacidade 155 5.3 Problema de planeamento da capacidade integrando o problema de corte 5.3.1 Partição e geração de colunas – conceitos e trabalho relacionado A geração implícita de colunas é uma técnica que permite resolver problemas de programação linear (PL) de grande dimensão através do método do simplex. A avaliação das variáveis não básicas recorre à resolução de um problema de optimização na determinação da variável com custo reduzido apropriado à entrada na base. A principal motivação para a utilização desta técnica é permitir tratar problemas de PL, em que o número de variáveis é de ordem tão elevada que seria impraticável a sua enumeração completa. Considere-se um modelo em Programação Linear Inteira (PLI) que deriva duma formulação de colunas. Denomina-se por Problema Mestre (PM) o modelo original, e por Problema Mestre Restrito (PMR) uma concretização do PM, em que apenas se considera um subconjunto das possíveis colunas. Para resolver a Relaxação Linear do Problema Mestre (RLPM), basta resolver a Relaxação Linear do Problema Mestre Restrito (RLPMR) por geração implícita de colunas. O método de partição e geração de colunas (branch-and-price) resulta da combinação da geração implícita de colunas com a pesquisa em árvore com ramificação e limitação. Este método tem sido utilizado com sucesso na resolução de diferentes problemas formulados em PLI. De entre estes, salientam-se: problema de rotas de veículos (vehicle routing problem) com janelas temporais, [Desrosiers, Soumis e Desrochers, 1984] e [Desrochers, Desrosiers e Solomon, 1992]; problema de coloração num grafo [Nemhauser e Park, 1991]; problema de formação de lotes com tempos de preparação [Vanderbeck, 1998]; problema de corte binário [Vance et al., 1996] e [Vance, 1993]; problema de corte e problema de bin-packing [Vance, 1998], [Vanderbeck e Wolsey, 1996], [Vanderbeck, 1999, 2000b], [Valério de Carvalho, 1999], [Degraeve e Schrage, 1999] e [Degraeve e 156 Capítulo 5 Peeters, 2002]. Em [Vanderbeck, 2000a] esta abordagem é utilizada para minimizar o número de padrões num problema de corte. A combinação destas duas metodologias tem de enfrentar uma dificuldade fundamental: o subproblema de geração de colunas pode perder a sua estrutura quando se introduzem as restrições de ramificação no PM. Uma regra de ramificação adequada deve eliminar as soluções fraccionárias, particionar o espaço de soluções do problema, e permitir que seja possível resolver o subproblema de geração de colunas ao longo da árvore de pesquisa. Passa-se a descrever, em termos genéricos, a estrutura dum algoritmo de partição e geração de colunas, considerando como PM o modelo de Gilmore e Gomory (cf. secção 4.2.1). Considera-se um PMR inicial, definindo um subconjunto de colunas a considerar no PM. Resolve-se a RLPMR, na raiz, por geração implícita de colunas. Na raiz, o subproblema de geração de colunas consiste em v(π) = max{ ∑ π i ai : a coluna admissível } i onde π é o vector das variáveis duais associadas às restrições de procura. A solução deste Problema Saco-Mochila (PSM) define uma coluna cujo custo reduzido 1-v(π) é mínimo. A solução da RLPMR permite estabelecer um limite inferior para o problema z = z LP , onde z LP é o valor da solução linear. Se esta solução for fraccionária, é necessário proceder a pesquisa em árvore com ramificação e limitação, para encontrarmos uma solução óptima do PM. Alguns autores calculam, na raiz, uma solução inteira admissível, através dum procedimento heurístico, o que permite estabelecer um limite superior, z , para o valor da solução do problema. Quando se dá por terminada a geração de colunas num nó da árvore de pesquisa, se a solução for fraccionária e o arredondamento superior do limite linear no nó actual for inferior a z , procede-se à ramificação. Seja x i o valor óptimo da variável associada à coluna i, na solução da RLPMR actual. Alguns autores utilizam ramificação sobre um conjunto de colunas. Para Integração do problema de corte com o problema de planeamento da capacidade 157 tal, determina-se um conjunto de colunas C, para o qual a soma das variáveis associadas, ∑i ∈C x i = α , seja não inteiro, e impõe-se um limite inferior ou um limite superior sobre o valor dessa soma. Ou seja, introduz-se no PM uma das seguintes restrições: ∑i x i ≥ α ou ∑i x i ≤ α . A ramificação sobre uma única coluna consiste em considerar um conjunto C singular, ou seja, determina-se uma coluna k para a qual x k = α , é fraccionário e introduz-se no PM uma das seguintes restrições: x k ≥ α ou x k ≤ α . Uma regra de ramificação clássica pode não garantir uma solução óptima, nem sequer admissível para o PMR actual. Após a introdução duma restrição de ramificação, pode acontecer que algumas das colunas, no PMR actual, deixem de ser admissíveis para o novo nó, ou que exista uma coluna com custo favorável, mas que não esteja presente no PMR. Ou seja, depois da ramificação, pode ser necessário gerar novas colunas e voltar a resolver a RLPMR. A regra de ramificação deve permitir modificar o subproblema, de forma a que continue a ser possível a sua resolução, garantindo que não sejam geradas colunas que se tornaram não admissíveis devido às restrições de ramificação. Um nó da árvore de pesquisa é eliminado quando o arredondamento superior da solução da RLPMR correspondente não for inferior a z . Actualiza-se z , sempre que se encontra uma solução que seja inteira e com valor inferior. O algoritmo termina quando se tem z = z . Alguns autores recorrem ao teorema de Farley, [Farley, 1990], o que permite poupar iterações desnecessárias da geração de colunas, durante a resolução da RLPMR em cada nó. Como as instâncias do PC têm na sua generalidade IRUP, o limite inferior z , que é obtido na raiz, é muitas vezes o valor da solução óptima. A ramificação, tipicamente, não conduz a melhoramentos do limite inferior, mas tem como fim eliminar a fraccionalidade da solução do PM. Alguns autores, após a resolução da 158 raiz, introduzem no PM o corte Capítulo 5 ∑i x i ≥ z ou a restrição ∑i x i = z , poupando a fase de geração de soluções admissíveis não óptimas, para a determinação de limites superiores. Em seguida dar-se-á uma panorâmica geral dos algoritmos de partição e geração de colunas, mais relevantes, desenvolvidos para o PC. Vanderbeck e Wolsey Vanderbeck e Wolsey descrevem um algoritmo geral de partição e geração de colunas para uma classe de problemas formulados em PLI [Vanderbeck e Wolsey, 1996]. A ramificação consiste em definir limites inferiores e superiores na soma das variáveis associadas a um conjunto de colunas. Para o PC, essas colunas são aquelas onde as larguras definidas por um conjunto S ocorrem pelo menos um “determinado número de vezes”. Mostra-se que um conjunto de ramificação pode ser escolhido através da selecção de uma variável fraccionária, cuja coluna associada domine as outras colunas com valor fraccionário, e fixando S como o conjunto das larguras que são cortadas nessa coluna. As restrições de ramificação conduzem à introdução explícita de restrições adicionais no subproblema de geração de colunas. Os autores sugerem transformar o subproblema num problema saco-mochila binário com restrições adicionais. Para o resolver, desenvolveram um algoritmo específico de pesquisa em árvore com ramificação e limitação. Vance Vance – [Vance, 1998] – considera duas formulações de colunas. A primeira deriva da decomposição de Dantzig-Wolfe aplicada a uma formulação para problemas em que os carretéis podem ter diferentes larguras (recorre a variáveis binárias que indicam se um carretel é ou não utilizado; as restrições incluem a satisfação da procura, e a verificação da largura máxima utilizada em cada carretel). A outra é a formulação de Gilmore e Gomory, e é para esta que o algoritmo de Vance (que se descreve em seguida) apresenta maior qualidade. Resolve-se a RLPMR utilizando o procedimento clássico de geração de colunas (como se descreve em 4.2.1). Recorre- Integração do problema de corte com o problema de planeamento da capacidade 159 se ao teorema de Farley. Propõe-se ramificar sobre um conjunto de colunas – S – para as quais uma determinada largura ocorre pelo menos um determinado número de vezes. Sempre que se ramifica, adiciona-se explicitamente uma restrição ao PM. Cada restrição de ramificação adiciona variáveis e restrições ao subproblema. Para simplificar a resolução do subproblema de geração de colunas durante a pesquisa na árvore, Vance sugere utilizar apenas colunas que correspondam a padrões maximais e ramificar sobre uma única coluna. Corrigemse os padrões não maximais adicionando-lhes tantas cópias, quantas as possíveis, do menor item. Esta regra conduz à geração dum conjunto de colunas “proibidas”. Isto implica que num nó pode ser necessário gerar várias colunas até que se encontre uma não proibida. Escolhe-se para ramificar a coluna que tiver o maior número de zeros, cuja variável associada tome um valor fraccionário na solução de PL corrente. Simplifica-se assim a identificação de colunas a eliminar durante a geração. A pesquisa na árvore é feita em profundidade1, pesquisando primeiro o nó em que se impôs um limite inferior. O problema de geração de colunas é um PSM com variáveis adicionais e restrições adicionais. Vance utiliza o algoritmo de Horowitz-Sahni [Horowitz e Sahni, 1974] para PSM binários, com as devidas modificações de forma a considerar as restrições adicionais e de forma a não gerar colunas “proibidas”. Vanderbeck Em [Vanderbeck, 2000b], Vanderbeck explora a reformulação de problemas de PLI através da decomposição de Dantzig-Wolfe, e estende o esquema geral de ramificação apresentado por Vanderbeck e Wolsey. Especificamente, estuda o PC, o problema de bin-packing, e o problema de corte de tiras (cutting strip problem). Propõe transformar o subproblema, um PSM, no seu correspondente binário e 1 Conhecida por depth-first search na literatura anglo-saxónica. Neste algoritmo de pesquisa, mantém-se uma pilha de nós a explorar, isto é, os nós são explorados numa filosofia de último a entrar/ primeiro a sair. Assim a exploração é feita na profundidade da árvore, criando-se um caminho de nós pesquisados, a partir da raiz, tão longo quanto possível. Procede-se ao retrocesso de um nó, para iniciar uma nova exploração, quando não é possível avançar mais no sentido do caminho (em profundidade). 160 Capítulo 5 escolher o conjunto de ramificação definindo as componentes em que as colunas binárias apresentam valor unitário. Esta é uma das regras de ramificação que se consideraram no algoritmo, que se apresenta em 5.3.3, e a transformação binária do subproblema é explicada nessa secção. A regra de ramificação – [Vanderbeck, 1999]1 – consiste em, dada uma solução fraccionária do PMR, encontrar um subconjunto de colunas Qˆ = {q ∈ Q : q k′ = 0 ∀k ∈ O e q k′ = 1 ∀k ∈ P } tal que α = ∑q ∈Qˆ x q é fraccionário, onde Q é o conjunto de colunas admissíveis, q′k é o valor da componente k na transformação binária da coluna q e x q é o valor da variável associada à coluna q na solução. Ramifica-se introduzindo no PM uma das restrições ∑q ∈Qˆ x q ≤ α ou ∑q ∈Qˆ x q ≤ α . . Os subconjuntos O e P caracterizam completamente Q e Vanderbeck mostra que para qualquer solução fraccionária do PM existem sempre os subconjuntos O e P com O + P ≤ log f + 1 para os quais o α associado é fraccionário e onde ( ) f = ∑q ∈Q x q − x q . A introdução das restrições de ramificação altera a estrutura do subproblema que Vanderbeck resolve através dum algoritmo especialmente desenvolvido para o efeito. Para restrições de ramificação onde |O | + |P |= 1 não há necessidade de introduzir uma variável extra no subproblema, pois a modificação pode ser introduzida corrigindo π’, o transformado binário do vector de custos duais. O autor afirma que a sucessiva aplicação da regra mais simples, com |P|=1, que é a menos restritiva, permite a eliminação de todas as soluções fraccionárias para as instâncias do PC. Para as instâncias do problema de binpacking, é muitas vezes necessário utilizar um par de componentes (l, k) para ramificação, ou seja, considerar P com cardinalidade 2. Para ramificar dá-se prioridade às componentes binárias l, para as quais a correspondente largura binária no PSM tenha valor w l′ elevado. 1 Este trabalho vem na sequência de [Vanderbeck, 2000b], apesar de ter data de publicação anterior. Integração do problema de corte com o problema de planeamento da capacidade 161 O sucesso desta abordagem depende bastante da qualidade dos limites inferiores utilizados, e da sua manipulação, assim como da introdução de desigualdades válidas na árvore de pesquisa. Utiliza-se o limite de Farley. Vanderbeck também recorre ao cálculo de limites inferiores a priori, ou seja, limites que se calculam antes de resolver a RLPMR. Calcula a priori L2 , o limite inferior de Martello e Toth [Marthello e Toth, 1990]. Calcula diversas soluções heurísticas e o limite superior é inicializado com o valor da melhor solução inteira encontrada. Na raiz, o PMR é inicializado com as colunas da melhor solução heurística. Se o custo da melhor solução inteira encontrada for igual a L2 , então, o algoritmo termina. Se não, introduz-se o corte trivial ∑q ∈Q x q ≥ L2 , para arredondar para cima a solução de PL, e para garantir que o número de colunas a utilizar seja um inteiro. Explora-se inicialmente o ramo definido pela restrição de limite inferior, e pesquisa-se um sucessor desse nó antes de retornar ao ramo definido pela restrição de limite superior. Processam-se primeiro os nós num nível mais profundo da árvore, de entre os muitos que têm um limite inferior a priori igual ao melhor limite inferior actual. Vanderbeck introduz cortes de admissibilidade sobre o número mínimo de carretéis necessários para satisfazer a procura de cada item. Esse limite é dado pelo arredondamento superior da razão entre o valor da procura e o número máximo de vezes que o item pode ocorrer numa coluna. Outra característica do algoritmo é o cálculo duma solução heurística, em cada nó, por resolução do problema residual (na linha do proposto em [Scheithauer e Terno, 1995a]). Valério de Carvalho Valério de Carvalho utiliza uma formulação de fluxo em arcos num grafo apropriado [Valério de Carvalho, 1999]. Um conjunto de restrições de conservação do fluxo e um conjunto de restrições sobre o fluxo em determinados arcos garantem que são obtidas as quantidades requeridas para os diferentes itens. Esta formulação é equivalente à formulação de Gilmore e Gomory. 162 Capítulo 5 O grafo é construído de forma a que exista um arco entre dois vértices se a diferença entre os índices dos vértices corresponder à largura de um item. Potencialmente têm-se W+1 vértices, onde W é a largura do carretel. O número de variáveis é 2(mW), onde m é o número de diferentes itens. Consideram-se arcos adicionais, (k,k+1) k=0,…,W-1 para representar a largura não utilizada. Um padrão de corte corresponde a um caminho neste grafo e o fluxo que passa nesse caminho é o número de vezes que o padrão é cortado. O grafo é acíclico e um fluxo pode ser decomposto em caminhos orientados ligando os vértices 0 (onde temos uma quantidade z, que é o valor a minimizar) e W (onde temos a quantidade -z). Cada variável xij, o fluxo no arco (i,j), é o número total de itens com largura j-i cortados num padrão a i unidades de distância do início. Assim, as colunas do PM são os arcos do grafo associado e qualquer solução pode ser escrita como uma combinação linear de fluxos em caminhos orientados neste grafo. O espaço de soluções do subproblema é o conjunto de fluxos entre os vértices 0 e W. São apresentados critérios que permitem reduzir a dimensão do grafo e reduzir a complexidade do subproblema. O subproblema consiste em encontrar o caminho mais longo num digrafo acíclico e onde os custos dos arcos dependem do valor das variáveis duais do PMR. Quando numa iteração, um arco está num caminho atractivo, se necessário, o PM é actualizado de forma a incluir as linhas correspondentes às restrições de conservação de fluxo para os vértices associados. De igual forma, todos os arcos no caminho ainda não considerados no PMR são adicionados ao mesmo. Assim, o PM cresce em duas direcções: são adicionados arcos (colunas) e restrições de conservação de fluxo (linhas). O modelo é inicializado com todas as restrições de fluxo relaxadas excepto para os arcos na solução inicial. Estes são obtidos a partir de uma solução heurística. O procedimento foi especialmente concebido tendo em conta que, na generalidade, os problemas de corte têm a propriedade de arredondamento Integração do problema de corte com o problema de planeamento da capacidade 163 superior, IRUP. Esta diferença é reduzida, incluindo no PM o seguinte corte ∑k x k ,k +1 ≥ Lmin , onde Lmin = z LP W − ∑i =1w i d i é o desperdício mínimo, se a m instância tiver IRUP, z LP é o valor da RLPM na raiz, w i e d i são as larguras dos itens e os valores de procura, respectivamente. É feita pesquisa em profundidade e ramifica-se sobre o fluxo num determinado arco, ou seja, as restrições de ramificação são xij ≥ x ij e x ij ≤ x ij . A informação dual associada às restrições de ramificação é utilizada na avaliação do custo reduzido para as variáveis do subproblema. Assim, a estrutura do subproblema mantém-se durante a pesquisa na árvore à custa de se trabalhar com 2(mW) variáveis. Averigua-se se existe uma solução inteira com valor z = z LP . Se essa solução não é encontrada na árvore (a instância não tem a propriedade de arredondamento superior), então z tem de ser incrementado uma unidade, e o procedimento é repetido. Os resultados computacionais revelam que esta abordagem tem uma eficácia comparável com a de Vanderbeck, sendo apresentados resultados para instâncias com procura total de 1000 itens distribuídos por 81 larguras diferentes. Degraeve e Schrage Em [Degraeve e Schrage, 1999] apresenta-se um algoritmo muito idêntico ao desenvolvido por Vance. Considera-se a formulação de Gilmore e Gomory e utilizase o procedimento clássico de geração de colunas. Recorre-se ao teorema de Farley. A ramificação faz-se sobre uma única coluna, conduzindo à geração dum conjunto de colunas “proibidas”. Resolve-se o subproblema por enumeração implícita, mantendo-se uma lista de colunas “proibidas” que permite eliminar a correspondente geração. A pesquisa na árvore é feita em profundidade e ramifica-se sobre a primeira coluna fraccionária que se encontra. Para garantir a geração de colunas “densas” – colunas que representam padrões que cortam vários itens, mas poucas repetições de cada – estabelecem-se limites superiores sobre as variáveis do subproblema. 164 Capítulo 5 Mais tarde, removem-se estes limites e eliminam-se os nós onde o melhor valor já conhecido para uma solução inteira não excede o limite inferior para o PMR, com as restrições de ramificação. Degraeve e Peeters Em [Degraeve e Peeters, 2002] descreve-se um melhoramento do algoritmo de Degraeve e Schrage. Em cada nó, para resolver a RL do PMR, utiliza-se um algoritmo híbrido que combina o método do simplex com um procedimento de “optimização de subgradiente”. Na fase “optimização de subgradiente” resolve-se um problema saco-mochila e gera-se uma nova coluna que corresponde à coluna que se geraria se se estivesse a proceder da forma clássica. Isto, porque os custos duais, que se obtêm pela optimização subgradiente, convergem para os custos duais óptimos da RL do PMR. A vantagem da combinação resulta da rapidez com que a optimização subgradiente gera novas colunas, sem que seja necessário proceder à resolução da RL do PMR para poder avaliar novas colunas. Por outro lado, pode-se interromper a geração de colunas sempre que o limite lagrangeano exceda ou iguale o melhor valor já encontrado para uma solução inteira. No entanto, no final do processamento dum nó tem de se proceder à resolução da RL do PM, de forma a obter uma solução primal, sobre a qual se possa proceder à ramificação. A ramificação processa-se sobre uma única coluna. Na pesquisa em árvore avalia-se primeiro o nó em que se introduziu a restrição de limite inferior. Desta forma, não é necessário voltar a resolver a RL do PMR. Resolve-se então o problema residual associado. Neste caso, o subproblema é um PSM com limites, que se resolve utilizando uma adaptação do algoritmo de enumeração implícita de Gilmore e Gomory, [Gilmore e Gomory, 1963], com a imposição de limites sobre as variáveis e recorrendo aos limites de Martello e Toth, [Martello e Toth, 1990]. Os resultados mostram que o algoritmo tem um bom desempenho, embora para algumas classes de instâncias, seja superado pelo algoritmo de Vanderbeck e pelo algoritmo de Valério de Carvalho. Integração do problema de corte com o problema de planeamento da capacidade 165 5.3.2 Modelo de Programação Linear Inteira Considera-se o sistema produtivo que se descreveu no capítulo 2. Produzem-se carretéis de folha de papel com diversas características, divididos em famílias. Os carretéis são cortados em rolos mais pequenos, que se denominam por itens. Pretende-se determinar um plano das quantidades a produzir de cada família, em número de carretéis, ao longo dum horizonte de planeamento, de forma a satisfazer a procura maximizando a utilização do sistema. Este plano deve permitir a definição precisa de datas de entrega exequíveis, e estimar as consequências da eventual insuficiência de capacidade. Podem-se criar stocks para contornar a insuficiência da capacidade em alguns períodos e para alcançar economias de escala na minimização do desperdício. Por outro lado, o desperdício que resulta do corte constitui uma parte dos carretéis que têm de ser produzidos, e como tal, corresponde ao consumo duma parte da capacidade disponível. Assim, o planeamento da capacidade deve integrar a tomada de decisão relativa ao processo de corte. O modelo resulta duma extensão da formulação de colunas de Gilmore e Gomory. Considera-se a procura acumulada e restrições de satisfação da procura acumulada ao longo dum horizonte temporal de médio prazo. Uma coluna representa um padrão de corte admissível para cortar carretéis duma determinada família, num dado período. Introduzem-se restrições de capacidade limitando o tempo total de processamento dos carretéis a produzir em cada período. Os tempos associados ao processo de corte são desprezáveis e não se consideram. Assume-se que os carretéis são cortados no período em que se produzem. Introduzem-se variáveis de stock inicial, com custos elevados, que garantem a admissibilidade do modelo. A solução expressa a solução de corte a utilizar para cada família e cada período e, em caso de insuficiência da capacidade, quais os itens em falta. i. Formulações Em seguida, apresentam-se as formulações que conduzem ao modelo final. 166 Capítulo 5 Sejam: T : número de períodos no horizonte de planeamento, indexados por t; F : número de diferentes famílias, indexadas por f; mf : número de diferentes itens da família f, pedidos ao longo do horizonte de planeamento; m : número total de itens, pedidos ao longo do horizonte de planeamento, indexados por i, i = 1, f −1 ,m , onde para a família f são pedidos os itens com índice i = ∑k =1 mk + 1, , ∑k =1 mk ; f )(i ) : índice da família a que pertence o i-ésimo item; ,(f ) : conjunto dos índices dos itens da f-ésima família; hi+, hi− : custos unitários de armazenamento e de atraso na entrega, respectivamente, para o i-ésimo item; pf : custo unitário de processamento de carretéis da família f; bf : tempo de processamento de um carretel da família f (em horas); ct : capacidade de produção disponível no período t (em horas); e d it : procura do i-ésimo item a satisfazer no final do período t. As variáveis são: I it+ , I it− : quantidade (em unidades) do i-ésimo item em armazém e em atraso, respectivamente, no final do t-ésimo período; x jft : número de carretéis a cortar de acordo com o j-ésimo padrão para a família f no período t; e aijt : número de vezes que o i-ésimo item é cortado no j-ésimo padrão da respectiva família no período t. O Problema de Corte integrado com o Planeamento da Capacidade (PCPC) pode ser formulado como se segue. [PCPC] min z = ∑ ∑ hi+ I it+ + hi− I it− + ∑ pf ∑ x jft t i f j ( ) (5.1) Integração do problema de corte com o problema de planeamento da capacidade 167 s. a: ∑ aijt x jft + I it+ −1 − I it+ − I it− −1 − I it− = dit ( ) ( ) ∀ i , t , f = )(i ) (5.2) ∀t (5.3) ∀ j, f ,t (5.4) ∀ i, t (5.5) j ∑∑ bf f x jft ≤ ct j x jft ≥ 0 e inteiro I it+ , I it− ≥ 0 e inteiro A função objectivo (5.1) expressa a minimização da soma dos custos totais de armazenamento, atraso na satisfação da procura e utilização dos recursos de produção. Em (5.2) definem-se os fluxos de stock (quantidade em stock e quantidade em atraso), em função do balanço entre a produção e a procura. As restrições (5.3) estipulam que a produção em cada período não excede a respectiva capacidade. As restrições (5.4) e (5.5) asseguram que as variáveis são inteiras e não negativas. Eliminam-se as variáveis de atraso na entrega I it− , considerando a procura efectiva de cada item i, a satisfazer no final de cada período t, e introduzindo variáveis de stock I i+0 , inicial com custos hi+0 . Assim, assegura-se a admissibilidade. Ao permitir que as variáveis de stock inicial possam ser positivas admite-se que pode existir atraso na entrega. Quando os custos de stock inicial hi+0 têm valores elevados, a solução vai reflectir os níveis mínimos de stock inicial necessários para suportar o plano de produção ao longo do horizonte temporal, e não apenas diagnosticar a admissibilidade do problema. Assume-se que no final do horizonte + = 0, ∀i . de planeamento o stock é nulo para todos os itens, I iT Obtém-se a seguinte reformulação do problema. [PCPC] min z = ∑ hi+0I i+0 + ∑ ∑ hi+ I it+ + ∑ pf i t i f ( ) ( ) s. a: ∑ aijt x jft + I it+ −1 − I it+ = dit ( j ) ∑ x jft j ∀ i , t , f = )(i ) (5.6) 168 Capítulo 5 ∑∑ bf f x jft ≤ ct ∀t j x jft ≥ 0 e inteiro ∀ j, f , t I it+ ≥ 0 e inteiro + I iT ∀ i , t = 0, ,T − 1 ∀i =0 Utilizando as restrições (5.6) e considerando valores acumulados, eliminam-se as variáveis de stock I it+ , t = 1,...,T . Passa-se a considerar apenas variáveis de stock inicial I i com custos associados hi dados por hi = hi+0 + ∑t =1 hi+ = hi+0 + (T − 1)hi+ . T −1 O valor da procura acumulada do item i, no período t, é d it = ∑k =1 d ik e a t respectiva produção acumulada é dada por ∑k =1 ∑ j aijk x j)(i )k . t O problema reformulado é então [PCPC] T-1 min z = ∑ (hi I i ) + ∑∑ (( ∑ hi+ ) ∑ aijt x j)(i )t - hi+ d it ) + ∑ ∑ pf ∑ x jft i t i k =t j t f (5.7) j s. a: t ∑ ∑ aijk x j)(i )k + I i k =1 j T ∑ ∑ aijk x j)(i )k + I i k =1 j ≥ d it ∀ i,t ≠ T = d iT ∀i ∑∑bf x jft ≤ ct f ∀t j x jft ≥ 0 e inteiro ∀ j, f , t I i ≥ 0 e inteiro ∀i Pode-se eliminar a constante − ∑ ∑ hi+d it em (5.7), originando a função objectivo t equivalente i min z = ∑ (hi I i ) + ∑∑ ((T-t )hi+ i t i ∑ aijt x j)(i )t ) + ∑ ∑ pf ∑ x jft . j t f j Integração do problema de corte com o problema de planeamento da capacidade 169 Para este modelo, o problema de garantir a admissibilidade a priori pode ser resolvido eficientemente – fazendo I i = ∑t =1 d it . No entanto, a optimização do T modelo é NP-difícil. O problema completo pode ser visto como um conjunto de subproblemas em que cada um destes é um problema de corte. Estes subproblemas estão integrados em dois sentidos: por um lado, as restrições de capacidade fazem a ligação entre os problemas de corte das diferentes famílias para um mesmo período; por outro lado, a estrutura das variáveis (produção acumulada e stock inicial) fazem a ligação nas restrições de satisfação da procura. A formulação do problema expressa o trade-off entre duas políticas aceitáveis, mas antagónicas, que traduzem os objectivos do problema de planeamento de produção: produzir o mais tarde possível e produzir com o mínimo desperdício. Em termos de minimização dos custos de armazenamento, na solução mais vantajosa, em cada período produzir-se-ia apenas a procura a satisfazer nesse período. Mesmo que não existissem restrições de capacidade, este tipo de solução poderia ser inviabilizada por acarretar custos de desperdício muito elevados. Em termos de minimização dos custos de desperdício, a solução mais vantajosa resultaria de uma maior diversidade das larguras a combinar. Esta solução conduziria a um deslocamento da produção para os períodos iniciais, elevando os custos de armazenamento, mas impossibilitada pelo limite da capacidade de produção. Teorema O PCPC é NP-difícil. Prova O problema de corte é um problema NP-difícil. O PCPC é uma extensão do problema de corte, pois integra vários problemas de corte com as decisões relativas aos itens e às respectivas quantidades a produzir para cada um desses problemas. 170 Capítulo 5 Isto significa que o PCPC inclui: 1. as decisões relativas à melhor forma de cortar cada um de vários conjuntos de itens, isto é, vários problemas em que cada um é NP-difícil, e 2. as decisões relativas à composição de cada conjunto de itens, o que por si é NP-difícil pois pode ser reduzido ao problema de partição. Assim, o PCPC é NP-difícil. ❏ A formulação apresentada tem um carácter geral. Passa-se a considerar um subconjunto de instâncias com uma estrutura de custos particular: — o custo de produzir um carretel de qualquer família é unitário, — os custos de armazenamento entre períodos do horizonte são nulos e — os custos de stock inicial são iguais para todos os itens e elevados (por exemplo têm um valor superior ao número total de itens a produzir). Esta estrutura de custos simplifica a resolução do problema – permite controlar mais eficientemente o gap de lineariedade (cf. 5.3.3) – e adequa-se às instâncias reais que se pretendem resolver. Em relação aos custos de processamento não é necessário fazer distinção nas diferentes famílias, pois todos os pedidos devem ser satisfeitos. Não havendo famílias preferenciais são os tempos de processamento que diferenciam a produção das famílias. Os custos de armazenamento podem ser considerados nulos pois terminada a produção os itens em armazém estão atribuídos a algum cliente, ou seja, apenas aguardam a expedição. As variáveis de stock inicial representam as quantidades em falta para garantir a satisfação da procura com o plano solução e como tal o seu custo deve ser suficientemente elevado. Um valor superior ao número total de itens a produzir permite que as variáveis correspondentes só tomem valores positivos quando a capacidade for insuficiente. Apesar dos itens terem valorização diferente, pode considerar-se que a falta não os distingue. A formulação do PCPC é a seguinte. Integração do problema de corte com o problema de planeamento da capacidade 171 [PCPC] min z = ∑ (hi I i ) + ∑∑∑ x jft t f j s. a: i t ∑ ∑ aijk x j)(i )k + I i k =1 j T ∑ ∑ aijk x j)(i )k + I i k =1 j (5.8) ≥ d it ∀ i, t ≠ T (5.9) = d iT ∀i (5.10) ∀t (5.11) ∀ j, f , t (5.12) ∀i (5.13). ∑∑bf x jft ≤ ct f j x jft ≥ 0 e inteiro I i ≥ 0 e inteiro Cada linha do bloco de restrições de satisfação da procura para o último período do horizonte de planeamento (t=T), ou seja, a i-ésima linha em (5.10) contem a informação relativa ao plano de produção para o i-ésimo item. ii. Exemplo Considere-se a seguinte instância onde F = 2 , T = 2 , m = 10 . Os itens da família 1 são indexados em i = 1, ..., 4 e os da família 2 em i = 5, ..., 10 . Os vectores da procura são, respectivamente, — para o primeiro período d1 = (10, 0, 5, 2, 5, 17, 0, 0, 0, 10) T e — para o segundo período d2 = (20, 10, 0, 0, 0, 8, 7, 17, 28, 13)T, dando origem aos respectivos vectores de procura acumulada — d11 = (10, 0, 5, 2, 5, 17, 0, 0, 0, 10) T — d12 = (30, 10, 5, 2, 5, 25, 7, 17, 28, 23) T. O vector das capacidades de produção é c = (72, 72) e o vector dos tempos de processamento é b = (3, 3.5). Na figura 5.1 apresenta-se, em forma de tabela, a matriz das restrições na formulação associada ao PMR, cuja solução da RL é a solução óptima do problema mestre. Apenas se incluem as colunas que estão na base final, e as componentes nulas são omitidas. 172 Capítulo 5 A solução tem custo z * = 37 . Os valores óptimos para as variáveis relativas às colunas apresentam-se na segunda linha e são: * * x111 = 2 , x211 =1 , * * * * * * x121 = 5 , x221 = 6 , x321 = 1 , x421 =1 , x521 = 3 , x621 =2 , * * * x112 = 2 , x212 =1 , x312 =3 , * * * * * x122 = 2 , x222 =1 , x322 =1 , x422 = 5 e x522 =1 . As variáveis relativas ao stock inicial são I i*0 = 0, i = 1,...,10 . Para facilitar a leitura, as restrições relativas à satisfação da procura estão enquadradas por um traço simples, enquanto que as restrições relativas à capacidade, na parte inferior da tabela, se encontram delimitadas por um traço duplo. Enquadram-se também as submatrizes relativas às famílias e aos períodos. Cada valor na primeira coluna indica a restrição a que se refere a linha correspondente. Para cada restrição de satisfação da procura mostra-se o par (i,t) onde i é o índice do item e t é o período. Para cada restrição de capacidade indica-se o respectivo período. Na penúltima coluna temos o tipo da restrição e o respectivo termo independente. Cada um dos valores na última coluna é folga para a respectiva restrição, na solução óptima. A coluna associada à variável x111 representa o padrão (4, 0, 2, 0)T, admissível para cortar carretéis da família 1, e que vai ser utilizado no período 1. Como tal, este subvector ocorre nas linhas referentes às restrições de satisfação da procura da família 1, em ambos os períodos. As restantes componentes da coluna são nulas, excepto a relativa à restrição de capacidade para o respectivo período, o período 1, que toma o valor b1 = 3 . Em relação à coluna correspondente à variável x112 , tem-se o padrão de corte (4, 1, 0, 0)T admissível para a mesma família, e a utilizar no período 2. Este subvector ocorre nas linhas relativas às restrições de satisfação da procura para os itens desta família no período 2. Com excepção da componente na posição relativa à restrição de capacidade no período 2, com o valor b1 = 3 , as restantes componentes desta coluna são nulas. Integração do problema de corte com o problema de planeamento da capacidade 173 A esta solução corresponde um total de 21 carretéis a produzir no período 1: 3 dos quais da família 1, e os restantes 18 da família 2. Durante o período 2, procedese ao corte de 16 carretéis, dos quais 6 são da família 1 e 10 da família 2. No período 1 a capacidade é totalmente utilizada e no período 2 há um excedente de 19 horas de produção. (i,t) x111 2 (1,1) 4 (2,1) (3,1) 2 (4,1) (5,1) (6,1) (7,1) (8,1) (9,1) (10,1) (1,2) 4 (2,2) (3,2) 2 (4,2) (5,2) (6,2) (7,2) (8,2) (9,2) (10,2) 1 2 3 x211 1 4 x121 5 x221 6 x321 1 x421 1 x521 3 1 2 1 2 1 x621 2 x112 2 x212 1 x312 3 4 1 1 2 3 2 x122 2 x222 1 2 1 2 x322 1 x 422 5 1 2 2 1 2 4 1 2 2 4 4 1 2 1 2 2 1 1 2 1 2 4 1 2 3 3.5 3.5 2 3.5 3.5 1 4 3.5 4 4 1 2 3.5 3 3 3 3.5 3.5 3.5 3.5 t x522 d excesso it 1 ≥ 10 2 ≥0 0 ≥5 0 ≥2 0 ≥5 0 ≥ 17 1 ≥0 5 ≥0 12 ≥0 16 ≥ 10 2 =30 =10 =5 =2 =5 1 =25 =7 =17 3 =28 1 =23 ≤ 72 3.5 ≤ 72 ct 0 19 folga Figura 5.1: Restrições no PMR associado à solução óptima A linha relativa à restrição de satisfação da procura do item 1 no período 2, mostra como vão ser obtidas as 30 unidades pedidas ao longo do horizonte. No período 1, o item 1 ocorre 4 vezes num padrão a cortar 2 carretéis, e 4 vezes num outro que corta 1 carretel. Como a procura nesse período é de 10 unidades, 2 unidades vão ser usadas para satisfazer a procura no período 2. Neste período, as restantes 18 unidades são obtidas cortando 2 carretéis, usando um padrão onde ocorrem 4 unidades do item 1, 1 carretel onde esse item é cortado 1 vez, e 3 carretéis onde se cortam 3 unidades. 174 Capítulo 5 É interessante explorar este exemplo e observar que, mantendo os restantes dados, 58 horas é o valor mínimo da capacidade no primeiro período, para o qual é possível obter uma solução onde as variáveis de stock inicial sejam nulas. As colunas associadas a esta solução são expostas na figura 5.2, onde a tabela foi construída da mesma forma que a da figura 5.1. (i,t) x111 2 (1,1) 4 (2,1) (3,1) 2 (4,1) (5,1) (6,1) (7,1) (8,1) (9,1) (10,1) (1,2) 4 (2,2) (3,2) 2 (4,2) (5,2) (6,2) (7,2) (8,2) (9,2) (10,2) 1 2 3 x211 1 4 x121 4 x221 5 x321 3 x421 2 1 2 1 2 x112 2 x212 1 x312 3 4 1 1 2 3 2 x122 2 x222 1 2 1 2 x322 3 x 422 6 x522 1 1 2 2 1 1 2 2 4 1 2 1 2 2 1 1 2 1 1 2 3 3.5 3.5 2 3.5 1 4 4 3 1 2 3.5 3 3 3 3.5 t 3.5 3.5 3.5 3.5 x 622 d excesso it 1 ≥ 10 2 ≥0 0 ≥5 0 ≥2 0 ≥5 0 ≥ 17 1 ≥0 4 ≥0 0 ≥0 9 ≥ 10 0 =30 =10 =5 =2 =5 =25 1 =7 1 =17 1 =28 1 =23 ≤ 58 3.5 ≤ 72 ct 0 5 folga Figura 5.2: Restrições no PMR associado à solução óptima – segundo caso Mesmo neste caso, na solução óptima cortam-se no primeiro período itens que vão ser utilizados para satisfazer a procura no segundo período, tirando partido do corte antecipado. O valor do óptimo nessa situação é z * = 37 , e tem-se uma utilização da capacidade de 58 horas no primeiro período e 67 no segundo. É de referir que, caso os problemas fossem resolvidos independentemente, o valor do óptimo seria z * = 39 , seriam necessárias 58 horas de capacidade de produção no primeiro período e 74 no segundo. Este exemplo ajuda também à compreensão da forma de construir as colunas do PM, que se passa a explicar. Integração do problema de corte com o problema de planeamento da capacidade 175 iii. Composição das colunas do PM Cada coluna tem dimensão mT + T . A coluna correspondente à variável de stock inicial I i é composta por zeros, excepto nas componentes com índices i , m + i , 2m + i , …, m(T −1)+ i , que se referem às restrições de satisfação da procura do item i em cada um dos períodos, onde tem o valor 1. Para as colunas associadas ao corte, as primeiras mT componentes referem-se ao número de vezes que cada item é cortado no padrão associado, “acumulado” ao longo dos períodos. A t -ésima das restantes T componentes indica o consumo unitário da capacidade de produção no período associado ao padrão. Assim, um padrão ( a1 ,..., amf )T admissível para cortar itens da família f , no período t , é representado por uma coluna q onde — q1 = 0, , q m (t −1) = 0 (são as componentes que se referem ao corte em períodos anteriores a t ); — q m (t −1)+1 = 0, = 0 (são as componentes que se referem ao f −1 ∑ k =1 mk corte de itens das famílias com índice inferior a f no período t ); , q m (t −1)+ — q m (t −1)+ f −1 m +1 = a1, ∑ k =1 k = amf (são as componentes que se f ∑ k =1 mk referem ao corte de itens da família f no período t ); — q m (t −1)+ f m +1 = 0, ∑ k =1 k , q m (t −1)+ , q mt = 0 (são as componentes que se referem ao corte de itens das famílias com índice superior a f no período t ); — ( q m (t −1)+1, ( q m (T −1)+1, ,q mt ) T , q mT ) repete-se T em ( q mt +1, T , q m(t +1) ) , …, (são as componentes que se referem ao corte “acumulado” nos períodos com índice superior a t ) e — q mT +1 = = q mT +t −1 = 0, q mT +t = bf , q mT +t +1 = = q mT +T = 0 (são as componentes nas restrições de capacidade). iv. Formulação final do PM A reformulação do problema, que resulta de indexar as variáveis às colunas (como é usual considerar-se na literatura), dá origem ao Problema Mestre (PM) que se passa a apresentar e em relação ao qual se refere a descrição do algoritmo. 176 Capítulo 5 Entende-se por — x q , o número de vezes que a coluna q , q ∈ Q , é utilizada, onde Q é o conjunto de colunas admissíveis para representar padrões de corte; — q k , a k -ésima componente da coluna q . [PM] min z = ∑ (hi I i ) + i ∑ xq (5.14) q ∈Q s. a: ∑ qm(t −1)+ i x q + I i ≥ dit ∀ i, t ≠ T (5.15) ∀i (5.16) ∀t (5.17) x q ≥ 0 e inteiro ∀ q ∈Q (5.18) I i ≥ 0 e inteiro ∀i (5.19). q ∈Q ∑ qm(T −1)+ i q ∈Q ∑ qmT +t q ∈Q x q + I i = d iT x q ≤ ct 5.3.3 Algoritmo de partição e geração de colunas O sucesso de algoritmos de partição e geração de colunas na resolução do PC devese, essencialmente, aos seguintes factos: — existem bons limites inferiores para a solução do PM: limite de Farley para o PC e o limite de Martello e Toth para o bin-packing, — as soluções heurísticas permitem estabelecer limites superiores de qualidade e — a solução da relaxação linear do PM na raiz fornece um limite inferior que é, regra geral, o valor óptimo da solução. Como as instâncias do PC têm, na sua generalidade, IRUP, a pesquisa na árvore relaciona-se mais com a eliminação de soluções fraccionárias do que com a redução do gap de linearidade. Sendo o PCPC uma composição de problemas de corte, perdem-se as características simpáticas das propriedades IRUP e MIRUP, e tornase difícil a obtenção de bons limites superiores. Integração do problema de corte com o problema de planeamento da capacidade 177 Considerem-se as instâncias do PCPC onde a capacidade no período inicial é suficiente para proceder a toda a produção. A sua resolução resume-se a resolver F problemas de corte independentes. Como o gap de linearidade de cada um deles é menor do que dois [Scheithauer e Terno, 1995b], o gap de lineariedade do PCPC está compreendido entre 0 e 2F. Este cenário corresponde à situação mais promissora, onde, para uma classe de instâncias, o gap é de mais fácil estimativa, e varia no intervalo de menor amplitude. Para uma instância geral, gap de linearidade pode ser bastante alargado. Apesar destes factos, optou-se por conceber e estudar o comportamento dum algoritmo de partição e geração de colunas na resolução do problema. A redução do esforço computacional depende da qualidade das soluções admissíveis encontradas e do cálculo de limites inferiores. Nesta perspectiva, na raiz, após a optimização da RLPM na raiz, reprocessa-se o nó para estabelecer um limite inferior de qualidade. Em todos os procedimentos que se descrevem assume-se que na solução actual o valor das variáveis de stock inicial é zero, pois, caso contrário, a solução revela que a capacidade é insuficiente para satisfazer a procura. No entanto, mesmo nessas condições, poder-se-ia resolver o PM até à optimalidade. i. O subproblema de geração de colunas O subproblema de geração de colunas consiste em encontrar o padrão com lucro máximo sobre um conjunto de problemas saco-mochila com restrições adicionais. A determinação do padrão de corte mais atractivo é feita determinando simultaneamente a composição do padrão, a família e o período aos quais está associado. Sejam π it o valor óptimo da variável dual associada à restrição de satisfação da procura (5.15)-(5.16) para o i-ésimo item no período t, na solução da RL do PMR actual, i = 1, ,m e t =1, ,T ; 178 Capítulo 5 σt o valor óptimo da variável dual associada à restrição de capacidade para o t-ésimo período em (5.17), na mesma solução, t =1, wi a largura do i-ésimo item, i = 1, ,T ; ,m ; Wf a largura útil do carretel para a f-ésima família, f = 1, ,F ; W b a largura mínima utilizável do carretel; wst a largura mínima de um item para stock; ws a largura máxima de um item “pequeno”; n s o número máximo de itens “pequenos” a cortar num padrão; n o número máximo de itens a cortar num padrão. As variáveis de decisão são: ai o número de vezes que o item i deve ser cortado no padrão; f a família para a qual o padrão deve ser utilizado; t o período em que o padrão deve ser cortado. Este problema é um problema saco-mochila multifamília multiperíodo, que se formula como T ∑ ∑ π ik ai + σt bf : a ∈ Af i ∈,(f ) k =t max { max { max{ f t }}} onde Af , o conjunto dos padrões admissíveis para a f-ésima família, é dado por { Af = a ∈ N 0mf : a verifica (5.21) W b ≤ ∑i aiwi ≤ Wf ou ∑i ai ≤ n s a ≤ n ∑i :wi ≤w s i } Wf − ∑ aiwi ≥ wst i ≤ a n −1 ∑ i i s se Wf − ∑i aiwi > ws ∑i :wi ≤w s ai ≤ n , s se Wf − ∑i aiwi ≤ ws s a ≤ n −1 , ∑i :wi ≤w i (5.20) (5.21). A condição (5.21) explicita duas situações que podem ocorrer alternativamente: — Ou a largura total cortada no padrão está compreendida entre a largura mínima utilizável do carretel e a largura útil para a respectiva família, e, Integração do problema de corte com o problema de planeamento da capacidade 179 então o número total de itens e o número total de itens “pequenos” cortados não excedem os respectivos limites máximos; ou — A largura não aproveitada tem de ser utilizada para cortar um item adicional, cuja largura é não inferior à largura mínima comercializável, e para tal o número de itens cortados tem de ser inferior ao respectivo limite, e, se a largura não aproveitada só é suficiente para cortar um item “pequeno”, então o número de itens “pequenos” é inferior ao respectivo limite, se não o número de itens “pequenos” não excede esse limite. A solução expressa qual o padrão de corte mais atractivo, de entre todos os padrões de corte admissíveis para todas as famílias, e para todos os períodos do horizonte temporal, assim como a família ( f * ) e o período ( t * ), para os quais esse padrão deve ser utilizado. Este problema envolve F ×T problemas saco-mochila com restrições adicionais, cada um deles associado a uma família e um período. Para a família f e o período t tem-se o seguinte problema [PSM ( f , t ) ] max ∑ ∑k =t T i ∈,(f ) π ik ai + σt bf , a ∈ Af , onde Af é como definido em (5.20). A cada solução (f *,t *, [a]*) do problema de geração de colunas, com 1 ≤ f * ≤ F e 1 ≤ t * ≤ T , onde ai* é o número de vezes que o i-ésimo item é cortado no padrão, corresponde uma coluna q ∈ Q do PM. A componente k desta coluna é dada por qk a* se k div m + 1 ≥ t * ∧ (k − 1) mod m + 1 = i , i ∈ ,(f *) i = bf * , se k = m(T − 1) + t * , caso contrário 0, onde por div e mod se entende, respectivamente, o resultado da divisão inteira e o resto da divisão inteira. 180 Capítulo 5 A expressão k div m + 1 indica o período a que corresponde a componente k e (k − 1) mod m + 1 é o índice do respectivo item. Assim, relativamente ao bloco de restrições (5.15) e (5.16) do PM, a componente k está associada à restrição de satisfação da procura do item (k − 1) mod m + 1 no período k div m + 1 . Uma coluna q associada a um período t * e uma família f * , é candidata a entrar na base se T ∑ * ( ∑ * π ik ) q i + (t * −1)m + σt * bf * > 1 i ∈,(f ) k =t ou seja, se o seu custo reduzido for negativo. Como tal, não é necessário resolver o problema até à optimalidade, basta encontrar uma solução para a qual a coluna correspondente do PM verifique a desigualdade acima. O conjunto de soluções admissíveis para o PSM ( f , t ) pode ser redefinido, de forma a evitar a expressão de condições alternativas. Introduzem-se duas variáveis auxiliares binárias y e y ′ , com o seguinte significado: y =1 , se e apenas quando y ′ =1 , se e só se ∑i aiwi ∑i aiwi < Wb ∧ < Wb , ∑i aiwi < Wf −ws . O conjunto dos padrões admissíveis para a família f é dado pelos vectores [ai ] que verificam ∑i aiwi < yW b + (1 − y) (Wf +1) ∑i aiwi ≥ (1 − y)W b ∑i aiwi ≤Wf − ywst ∑i ai ≤ n − y ∑i:w ≤w ai ≤ ns − (1 − y′) ∑i aiwi < y′ (Wf −ws )+ (1− y′)(Wf +1) ∑i aiwi ≥ (1− y′)(Wf −ws ) s (5.22) (5.23) (5.24) (5.25) (5.26) i y′ ≤ y y, y′∈{0,1} , ai ∈ N 0 , ∀i . (5.27) (5.28) (5.29) Integração do problema de corte com o problema de planeamento da capacidade 181 Assim, quando — ∑i aiwi ≥ W b , obtém-se y = 0 , caso contrário, em virtude de (5.22) ter-se-ia ∑i aiwi < W b ; (5.22) e (5.24) explicitam a mesma condição: ∑i aiwi ≤Wf ; por (5.29) y′ = 0 e (5.27) é redundante; as soluções são as correspondentes à primeira condição de (5.22). — ∑i aiwi < W b , obtém-se y =1 , caso contrário, por (5.23), ter-se-ia ∑i aiwi ≥ W b ; (5.23) é redundante; as soluções são as definidas pela segunda alternativa em (5.22); — se ∑i aiwi < Wf −ws então y′ = 1 , se não ter-se-ia ∑i aiwi ≥ Wf −ws , por (5.28); ∑i:w ≤w ai ≤ s ns por (5.26); e i (5.28) é redundante; — caso contrário, tem-se y′ = 0 , se não viria ∑i:w ≤w ai ≤ s i ∑i aiwi < Wf −ws , por (5.27); ns −1 por (5.26), e (5.27) é redundante. Optou-se por não utilizar esta transformação e concebeu-se um algoritmo específico para resolver os PSM ( f , t ) . Assim, para cada família, e cada período, resolvemos o PSM associado gerando, caso exista, a coluna mais atraente (ou a primeira coluna atraente que for encontrada). Na prática revelou-se vantajoso, quando se procede à geração de colunas, gerar colunas para os diferentes pares ( f , t ) e introduzir no PM as apropriadas, em alternativa a introduzir uma única coluna em cada iteração. Muitas vezes, para uma mesma família, o mesmo padrão de corte é atractivo para diferentes períodos, e consequentemente introduzem-se no PM as colunas correspondentes que representam o corte desse padrão em períodos diferentes. Assim, nem todas as colunas geradas entram na base quando se procede à reoptimização do PMR resultante. De acordo com Martello e Toth, o modo mais efectivo de resolver um problema saco-mochila limitado é transformá-lo no caso 0-1 e utilizar um dos algoritmos apropriados [Martello e Toth, 1990]. Esta é também a proposta de Vanderbeck e 182 Capítulo 5 Wolsey. Os PSM ( f , t ) inteiros envolvidos não se formulam como limitados, mas acabam por sê-lo, pois as componentes são limitadas e a procura também é limitada. Dado que os respectivos limites são razoavelmente pequenos, o número de variáveis 0-1 mantém-se tratável. Estes problemas transformam-se nos problemas binários correspondentes, de acordo com o proposto por Vanderbeck. Para transformar o PSM ( f , t ) inteiro na forma 0-1, consideram-se apenas os itens i ∈ ,(f ) para os quais o lucro associado ρi = ∑k =t π ik > 0 . Os itens são T reindexados nos índices ~ i = 1,... , m f (5.30). Calcula-se o valor máximo que se pode considerar em cada componente { { } min d it , W f / w i , n , se w i > w s ~ , aimax = , i = 1,..., m f min d it , W f / w i , n s , caso contrário } ~ m o número de componentes no problema transformado mf′ = ∑i =f1 e i , onde e i = log2(aimax + 1) é o número de componentes binárias associadas ao i-ésimo ~ . item do problema original, i = 1,..., m f ~ para referir os itens originais, e o Por convenção utiliza-se o índice i = 1,..., m f índice l = 1,..., mf′ para referir as componentes 0-1 do problema modificado. Por cada item i do problema inteiro consideram-se ei itens binários com multiplicidades1 w i , 2w i , 20, 21, , 2e i −1 , lucros ρi , 2ρi , , 2e i −1 ρi , e larguras , 2e i −1 w i . Assim no problema binário, ao item l está associada a multiplicidade v l = 2k , o lucro ρl′ = 2k ρi , e a largura w l′ = 2kw i para l = k + ri , i −1 onde k = 0,..., e i − 1 e ri = 1 + ∑k =1 e k . O procedimento de transformação tem complexidade 2(m′f ) , tal como o procedimento associado à subsequente transformação da solução binária em inteira. O vector binário a′ ∈ {0,1}mf′ associado à coluna admissível a é definido pela e −1 ~ , onde r = 1 + i −1 e . É de notar que este relação ai = ∑ki =0 2k ak′ + ri , i = 1,..., m ∑k =1 k i f 1 Por multiplicidade dum objecto binário entende-se o número de réplicas do objecto que no problema inteiro lhe corresponde. Integração do problema de corte com o problema de planeamento da capacidade 183 processo de transformação não introduz redundâncias, pois cada variável original ai é representada univocamente. De modo a garantir que o valor máximo de cada componente inteira não é excedido, é necessário introduzir no PSM 0-1 as restrições ∑l =r ri + ei −1 i ~ . vlal′ ≤ aimax , i = 1,... , m f Na raiz, a solução do PSM(f, t) equivale à solução do problema binário equivalente: mf′ max{ ∑ ρ ′j a′j : a′ ∈ Af′ [PSMB(f, t)] j =1 } onde A′f , o conjunto dos padrões binários admissíveis para a f-ésima família, é dado por { Af′ = a′ ∈ {0,1}mf′ : a′ verifica (5.31) e (5.32) ri + ei −1 ~ v a′ ≤ a max , i = 1,... , m ∑l =r i l l (5.31) f i W b ≤ ∑ j a′jw′j ≤ Wf ∑ j a′jvj ≤ n s ∑ j:w′j /v j ≤ws a′jvj ≤ n } ou Wf − ∑ a′jw′j ≥ wst j ′ a v ∑ j j j ≤ n −1 s se Wf − ∑ j a′jw′j > ws ∑ j:w′j /v j ≤ws a′jv j ≤ n , s s ′ ′ ′ ∑ j:w′j /v j ≤ws a jv j ≤ n −1 , se Wf − ∑ j a jw j ≤ w (5.32). Sem perda de generalidade, consideremos que m′f é o número de componentes binárias necessárias para representar os objectos do PSM(f, t), isto é, sem proceder à indexação prévia em (5.30). Consideremos ainda que m′ é o número de itens binários na transformação de m . Cada coluna binária, com dimensão T ×m′ , é composta por T subvectores de dimensão m′ , cada um deles associado a um período. Estes subvectores, por sua vez, podem ser decompostos em F subvectores cada um associado a uma família. O subvector associado à família f tem dimensão m′f . A componente k da coluna binária q′ , correspondente ao padrão a′* , solução do PSMB(f, t), pode ser obtida de acordo com a seguinte fórmula a *, k div m′ + 1 ≥ t q k′ = l′ 0, caso contrário ∧ (k − 1) mod m′ f −1 + 1 = l + ∑ j =1 m′j , 184 Capítulo 5 onde div e mod são, respectivamente, o resultado da divisão inteira e o resto da divisão inteira. A expressão k div m′ + 1 indica o período a que corresponde a k -ésima componente binária e (k − 1) mod m′ + 1 é o índice do objecto binário no conjunto global dos objectos binários. Redefinindo o conjunto de soluções admissíveis, o problema pode-se reformular como mf′ max{ ∑ ρ ′j a′j : a′ ∈ Af′ [PSMB(f, t)] j =1 { onde Af′ = a′ ∈ {0,1}mf′ : a′ verifica (5.34) - (5.38) ∑ j a′jw′j ≤ Wf } } ∑ j a ′j v j ≤ n ∑ j:w′ /v ≤w a′jvj ≤ ns s j ∑l =r (5.34) (5.35) (5.36) j ri + ei −1 i (5.33) ~ vlal′ ≤ aimax , i = 1,... , m f ∑ j a ′j w ′j ≥ W b Wf − ∑ a′jw′j ≥ wst j ′ a v ∑ j j j ≤ n −1 ou se Wf − ∑ j a′jw′j > ws ∑ j :w′ /v ≤w s a′jv j ≤ ns , j j s s ∑ j :w′j /v j ≤w s a′jv j ≤ n −1 , se Wf − ∑ j a′jw′j ≤ w (5.37) (5.38). Apesar de este se poder caracterizar como um problema saco mochila 0-1 multidimensional com as restrições adicionais (5.38), vamos tratá-lo como um problema saco mochila 0-1 unidimensional com restrições adicionais (5.35) a (5.38). Para o resolver utiliza-se um algoritmo de pesquisa em árvore com ramificação e limitação baseado no algoritmo de Horowitz e Sahni, [Horowitz e Sahni, 1974], com alterações, de modo a garantir a admissibilidade das soluções e a acelerar a pesquisa. O algoritmo de Horowitz e Sahni pressupõe que os objectos estão pré-ordenados por ordem não decrescente de lucro por unidade de largura (ordenação “gulosa”). A pesquisa na árvore é feita em profundidade: a ordem de ramificação sobre as variáveis é predeterminada e faz-se por ordem lexicográfica, cada variável é fixa a Integração do problema de corte com o problema de planeamento da capacidade 185 1, se possível, e só depois a 0. Um determinado nó de profundidade t da árvore de pesquisa corresponde a uma solução parcial em que foram considerados os t objectos iniciais. Um movimento de avanço consiste em introduzir sequencialmente o maior número possível de objectos na solução actual. Um movimento de retrocesso consiste em remover da solução o último objecto introduzido, ou seja, retrocede-se na árvore até ao maior nível k , em que o objecto k esteja na solução, e fixa-se a 0 a variável correspondente. Quando um movimento de avanço é interrompido calcula-se o limite superior associado à melhor expansão da solução parcial actual. Para uma solução no nível t , seja ∑ j=t +1w′j > Wf −Ŵ k k o menor índice que verifica ∧ t +1 ≤ k ≤ m′f , onde Ŵ é a largura já utilizada. Um limite superior para o lucro da melhor expansão da solução actual é dado por ( ub1 = ẑ + ∑ j =t +1 ρ ′j + Wf −Ŵ − ∑ j =t +1w′j k −1 k −1 )wρ′′ , k k onde ẑ é o lucro da solução actual. Testa-se se a continuação de movimento de avanço pode levar a uma solução melhor, ou seja, avalia-se se ub1 > z * e, nesse caso, retoma-se o movimento de avanço. Caso contrário, procede-se a um movimento de retrocesso. Se após um movimento de avanço, se atingiu a profundidade máxima da árvore (consideraramse todos os objectos), deixa de ser possível estender a solução parcial actual. Caso o seu lucro seja superior ao melhor já encontrado, esta solução é candidata a óptima e utiliza-se para actualizar a melhor solução já encontrada. Em seguida procede-se a um movimento de retrocesso. A solução parcial é actualizada e volta-se a calcular o limite superior ub1 . Se esse valor não é superior ao lucro da melhor solução já encontrada, não compensa pesquisar a extensão da solução actual, e retorna-se ao movimento de retrocesso. Caso contrário, progride-se para um movimento de avanço. O algoritmo termina quando não é possível efectuar mais nenhum movimento de retrocesso, ou seja, a pesquisa retrocede até à raiz e o objecto de índice 1 já está excluído da solução actual. 186 Capítulo 5 Este algoritmo pode ser facilmente adaptado para resolver um PSM com restrições adicionais introduzindo a verificação das restrições adicionais na actualização da melhor solução encontrada. Para reduzir o número de soluções não admissíveis que são geradas nesse processo, utiliza-se apenas a restrição de largura mínima (5.38), como pré-condição para a actualização da solução óptima actual, pois esta restrição só pode ser avaliada para soluções completas. Na geração das soluções inclui-se a verificação das outras restrições adicionais: apenas se fixa uma variável a 1, quando tal não viole as condições relativas aos limites sobre o número de objectos de um determinado tipo, especificados em (5.35) a (5.37). O valor ub1 é um majorante do limite superior associado a estender uma solução no nível t , porque apenas considera uma dimensão. O seu cálculo é efectuado antes dum movimento de avanço para prevenir movimentos de avanço desnecessários. Adicionalmente, após um movimento de avanço, é recalculado um limite superior ub sobre o lucro de qualquer extensão da solução actual, que se descreve adiante. Os itens são reindexados de acordo com as seguintes relações: ρ ′j ρ ′j +1 ρ′ ρ′ ≥ , e ν j ≥ ν j +1, se j = j +1 , w ′j w ′j +1 w ′j w ′j +1 j = 1,..., mf′ − 1 , ou seja, por ordem não crescente dos valores de lucro por unidade de largura e não crescente dos valores de multiplicidade para objectos com iguais valores de lucro por unidade de largura. A transformação do problema inteiro em binário gera vários itens com igual valor de lucro por unidade de largura. A adição da segunda relação na ordenação “gulosa”, não aumenta a complexidade da ordenação, e dá precedência aos itens com maior valor de lucro, para introdução na solução. Numa solução parcial no nível t estão fixas as variáveis a1′ ,..., ât′ , o lucro é ẑ = ∑ j =1 ρ ′jâ′j , a largura utilizada tem o valor Ŵ = ∑ j =1w′jâ′j , o número total de t t objectos já introduzidos na solução é n̂ = ∑ j =1v jâ′j dos quais n̂s = ∑ j =1,...,t :w′ /v ≤w s v jâ′j t j j Integração do problema de corte com o problema de planeamento da capacidade 187 são objectos “pequenos” e âi ≤ aimax , onde âi é o número de objectos do tipo i no ~ . problema inteiro correspondente, i = 1,... , m f Esta solução verifica as restrições (5.33) a (5.37) e tem associado o seguinte problema residual max{ mf′ ∑ ρ ′j a′j : a′ ∈ Aˆf′ } j =t +1 ˆ , o conjunto dos vectores admissíveis para o problema residual, é dado por onde A′ f { Aˆf′ = a′ ∈ {0,1}mf′ −t : a′ verifica (5.39) a (5.43) } ∑ j a′jw ′j ≤ W f −Ŵ ∑ j a′jv j ≤ n − n̂ ∑ j :w ′ /v ≤w a′jv j ≤ ns − n̂s (5.39) (5.40) (5.41) s j j ~ ∑ j:i =i v ja′j ≤ aimax − âi , i =1,...,m f (5.42) j Wf −Ŵ − ∑ a′jw′j ≥ wst j ∑ j a′jv j ≤ n − n̂ −1 (5.43) ∑ j a′jw ′j ≥ W b −Wˆ ou ∑ j :w′ /v ≤ws a′jv j ≤ ns − n̂s , se Wf −Ŵ − ∑ j a′jw′j > ws j j s s s ∑ j :w′j /v j ≤ws a′jv j ≤ n − n̂ −1 , se Wf −Ŵ − ∑ j a′jw′j ≤ w sendo il o índice do objecto no problema inteiro a que está associado o objecto binário de índice l . O pseudo-código (algoritmo 5.2) apresenta o algoritmo modificado. A função que concretiza o movimento de retrocesso descreve-se em Retrocesso. ′ ′f = 0 , a1′* = 0,...,am ′*′f = 0 , ẑ = 0 , z * = 0 , Ŵ = 0 , O algoritmo inicia com a1′ = 0,..., âm * n̂ = 0 , n̂s = 0 , a1 = 0, ,âm~f = 0 , a1* = 0, ,am ~ = 0 . Considere-se uma solução parcial no f nível t , e seja j ≥ t o índice dum objecto. Se v j > n − n̂ , então em qualquer extensão desta solução a′j = 0 , pois a introdução do objecto j viola a restrição relativa ao número máximo de objectos. Da mesma forma, a′j = 0 , se v j > ns − n̂s e o item j corresponde a um item “pequeno”, ou se v j > aimax − âi e o item j representa parte do objecto inteiro i . 188 Capítulo 5 Assim, num movimento de avanço, um objecto só é inserido se a sua introdução verifica o limite do número de objectos (5.40),e o limite do número de réplicas associado no problema inteiro (5.42). No caso de se tratar dum objecto “pequeno”, avalia-se ainda se a sua introdução respeita o limite do número de objectos “pequenos” na solução (5.41). Caso contrário, a respectiva variável é fixa a 0, e passa-se ao objecto seguinte sem se interromper o movimento de avanço. Se o número máximo de objectos é atingido, n̂ = n , deixa de ser possível estender a solução actual, e esta condição reforça a exaustão do movimento. Nesse caso, testa-se então se a solução actual é candidata a óptima. No final de um movimento de avanço, dado k o índice do objecto que provocou a exaustão do movimento, calcula-se o limite superior associado a expandir a solução actual dado por ub (5.44). Quando uma solução completa não é admissível, por não verificar a restrição de largura mínima, procede-se a um movimento de retrocesso. Resultado: Considere-se uma solução de nível k −1 , com lucro ẑ , com n̂ objectos e onde o objecto k não pode ser introduzido porque wk′ > Wf −Ŵ ou n̂ = n . Então, um limite superior sobre o lucro de qualquer extensão da solução é ( ) ẑ + Wf −Ŵ ρk′ /wk′ , se k ≤ m′f ∧ n̂ < n ub = ẑ , caso contrário (5.44). Prova: Se n̂ = n , a solução está completa e ẑ é o seu custo. Se n̂ < n , na expansão ideal, a largura remanescente, Wf −Ŵ , seria totalmente ocupada com objectos verificando as restrições adicionais. Dada a ordenação dos ( ) objectos, Wf −Ŵ ρk′ /wk′ majora o maior acréscimo ao lucro actual que pode ser obtido por expansão. ❏ Integração do problema de corte com o problema de planeamento da capacidade 189 Algoritmo HS_modificado Retrocesso(k, a′ , â , ẑ , Ŵ , n̂ , ρ ′ , w′ , v ) Encontrar o maior valor de j tal que a′j = 1 e j ≤ k ; k=j; Se (k>0) então {* remoção do objecto k *} ẑ = ẑ − ρk′ ; Ŵ = Ŵ −w′k ; n̂ = n̂ −vk ; Se wk′ /vk ≤ ws então n̂s = n̂s −vk ; âik = âik − vk ; a′k = 0 ; Fim de Retrocesso Início de HS_modificado k=0; z * = 0 ; ẑ = 0 ; Ŵ = 0 ; n̂ = 0 ; n̂ s = 0 ; Para ( i =1 até i = m′f ) ai′* = 0 ; ai′ = 0 ; ~ ) a* = 0 ; â = 0 ; Para ( i =1 até i = m i f i Fazer Fazer l = k +1 ; B = true; Calcular o valor ub1 ; Se ( ub1 > z * ou z * = 0 ) então { * movimento de avanço *} Enquanto ( l ≤ m′f e n̂ < n e B) fazer B = wl′ +Ŵ ≤ Wf ; Se B então Se ( n̂ + vl ≤ n e (( wl′/vl ≤ ws e n̂s + vl ≤ ns ) ou wl′/vl > ws ) e âil + vl ≤ aimax ) {* a inclusão não viola as restrições do número máximo de objectos *} então {* introduz o objecto l na solução actual actualizando os indicadores *} ẑ = ẑ + ρl′ ; Ŵ = Ŵ + wl′ ; n̂ = n̂ + vl ; Se wl′ / vl ≤ w s então n̂s = n̂s + vl ; âil = âil + vl ; al′ = 1 ;k=l; senão al′ = 0 ; l =l +1 ; Se (B=false e n̂ < n ) então ub = ẑ + ( Wf −Ŵ ) ρl′ / wl′ senão ub= ẑ ; senão ub= ub1 ; B=( ub≤ z * ); Se B então {* faz movimento de retrocesso *} Retrocesso(k, a′ , â , ẑ , Ŵ , n̂ , ρ ′ , w′ , v ) enquanto (B e k>0); Se ( k > 0 ou z * = 0 ) então {* continuação do movimento de avanço *} k = l; Se ( k > m′f ou n̂ = n ) então {* não pode expandir *} Se ( Ŵ ≥W b ou ( Ŵ <W b e Wf −Ŵ ≥ w st e n̂ < n e (( n̂ s ≤ n s e Wf −Ŵ > ws ) ou ( n̂s < ns e Wf −Ŵ ≤ ws )))) então {* a solução verifica a restrição de largura mínima - actualizar a melhor solução*} z* = ẑ ; Para ( i =1 até i = m′f ) ai′* = ai′ ; ~ ) a* = â ; Para ( i =1 até i = m f i i k= m′f ; senão k= m′f ; Retrocesso(k, a′ , â , ẑ , Ŵ , n̂ , ρ ′ , w′ , v ); senão a′k = 0 ; enquanto (k>0); fim de HS_modificado Algoritmo 5.2: Algorimo de Horowitz-Sahni modificado 190 Capítulo 5 ii. Processamento do nó raiz Para construir o conjunto de colunas relativas ao corte no PMR inicial, na raiz, considera-se que a procura em cada período é satisfeita a partir exclusivamente da produção no próprio período ou do stock inicial. Assim, os problemas de corte para cada família e cada período assumem-se como independentes, e considera-se apenas a procura em cada período. Experimentou-se aproveitar o processo de inicialização das colunas para construir uma solução admissível inicial, e consequentemente inicializar o valor do limite superior z , com um reduzido acréscimo do esforço computacional. No entanto, a solução obtida nesta fase é de fraca qualidade. Isto acontece porque a geração de colunas permite tirar partido da estrutura do problema, antecipando o corte de alguns itens. Abandonou-se o cálculo da primeira solução admissível, na inicialização. Inicialização Para cada período t , cada família f , e por cada item i introduz-se no PMR: 1. uma coluna associada à variável de stock inicial I i ; 2. uma coluna que representa o padrão onde o item i é cortado uma única vez; e 3. uma coluna que representa o padrão admissível e maximal, onde o item i é cortado o número máximo de vezes. As colunas do tipo 1 têm o valor zero em todas as componentes, excepto nas componentes de índices m(k − 1) + i , k = 1, ,T , onde têm o valor 1. As únicas componentes não nulas das colunas do tipo 2 são q m(k −1) + i = 1 , k = t, ,T , e q mT +t = bf . Para construir as colunas do tipo 3, começa-se por calcular aimax , o número máximo de vezes que o item i pode ocorrer num padrão { } min d it , W f / w i , n , se w i > w s aimax = , para i =1,...,mf . min d it , W f / w i , n s , caso contrário { } Integração do problema de corte com o problema de planeamento da capacidade 191 Avalia-se se o padrão que corta aimax vezes o item i verifica a condição de admissibilidade (5.21). Caso tal não aconteça, ajusta-se aimax de acordo com as seguintes condições: Se aimaxwi < W b e Wf − aimaxwi ≥ wst , então se wi > ws e aimax = n faz-se aimax = n −1 se não se wi ≤ ws e aimax = ns e Wf − aimaxwi ≤ ws faz-se aimax = ns −1 . Faz-se ai = aimax . Em seguida completa-se o padrão de forma a torná-lo maximal. Pesquisam-se os itens j da mesma família, por ordem decrescente de largura, e insere-se uma cópia de cada item, fazendo a j = 1 , enquanto se verificarem as condições de admissibilidade. No final, avalia-se a condição de largura mínima e, em caso de não se verificar, remove-se a cópia do último item introduzido. As colunas do tipo 3 são da forma q m(k −1) + j = a j , k = t , ,T , j = 1, ,m , q mT +t = bf e q k = 0 , nos restantes casos. Experimentou-se outra versão em que se considera a procura total acumulada. Assume-se que toda a procura pode ser satisfeita a partir da produção no período inicial, ou seja, apenas se introduzem colunas de corte referentes ao período inicial. Para esta versão os resultados foram piores, sendo a convergência mais lenta. Tal acontece, porque o conjunto de colunas inicial é mais restrito, e, portanto, é necessário gerar mais colunas. Para se proceder à geração de colunas é necessária a existência duma solução para a RLPM. Após a introdução das restrições de ramificação num determinado nó é necessário voltar a optimizar a RL do PM resultante, mas pode acontecer que este não tenha solução, dado o conjunto actual de colunas. Para contornar este aspecto, introduz-se na formulação uma variável artificial que garante a existência duma solução admissível. Esta variável está associada a uma coluna, cujas componentes tomam o valor unitário nas posições correspondentes a restrições do tipo “maior ou igual”, valor –1 nas restrições do tipo “menor ou igual”, e valor 0 nas 192 Capítulo 5 restantes. O custo desta variável é um valor elevado. Se depois da geração de colunas a variável permanecer na base o seu custo é multiplicado por 10 e repetese a geração de colunas. Repete-se este processo em duas iterações, e se esta variável artificial se mantém na base com valor não nulo, então o nó é considerado sem solução admissível e é eliminado. iii. Limites inferiores e determinação de soluções admissíveis Seja ( x *, I *) a solução obtida para a RLPM na raiz. Seja Q f o conjunto das colunas que representam padrões admissíveis para cortar carretéis da família f . O número total de carretéis a cortar para a família f é ∑q ∈Q f x q* . Um limite inferior trivial para este valor é zf = ∑q ∈Q f x q* . Introduzem-se no problema, os cortes ∑q ∈Q f x q ≥ z f , f = 1, ,F (5.45). * Volta-se a resolver a RLPMR. Seja z LP o valor da solução assim obtida. O limite inferior sobre o valor da solução do PM é dado por * . z = z LP Introduz-se no PM o seguinte corte, que impõe um limite inferior sobre o valor da solução z ≥z (5.46). A introdução dos cortes (5.45) no PM altera o subproblema e é necessário entrar em conta com a informação dual associada às restrições correspondentes. Seja λf o valor óptimo da variável dual associada à restrição de corte sobre a família f. Uma coluna q ∈ Q ft , onde Q ft é o conjunto das colunas admissíveis para representar padrões para a família f cortados no período t, só é atractiva se T ( ∑ π ik ) q i + m (t −1) + σt bf + λf > 1 . i ∈,(f ) k =t ∑ Integração do problema de corte com o problema de planeamento da capacidade 193 Numa fase inicial da concepção do algoritmo, experimentou-se a introdução de cortes sobre o número de carretéis cortados para cada família, em cada período, conforme se descreve em [Respício e Captivo, 2001]. No entanto, a introdução deste tipo de cortes interfere com a afectação da capacidade, em cada período, à produção das diferentes famílias. A experiência computacional revelou que, para instâncias em que a capacidade disponível é aproximadamente igual à capacidade efectivamente necessária, esta estratégia funciona mal. Nessas situações, a introdução dos cortes vai alterar o comportamento das variáveis I * , e torna-se difícil gerir a conveniência de introdução dos cortes. A experiência mostrou também que, na generalidade dos casos, o valor da solução óptima do PM é igual a z , o valor do limite inferior que se obtém pelo reprocessamento da raiz. Também por este motivo, abandonou-se o cálculo de soluções admissíveis não finais. Em versões iniciais, experimentou-se determinar uma solução admissível a partir da solução actual da RLPMR, após a resolução da RLPM na raiz. Para tal, aplicou-se uma heurística de arredondamento baseada naquela que se descreve em [Scheithauer e Terno, 1995a] para a resolução exacta do problema de corte clássico. Uma solução parcial pode ser obtida fixando todas as variáveis nos valores correspondentes aos arredondamentos inferiores. O problema residual pode-se resolver pesquisando colunas que correspondam à satisfação máxima da procura residual, e fixando a sua utilização. Devido à presença das restrições de capacidade, pode acontecer que na solução se obtenham valores não nulos para as variáveis de stock inicial. Isto acontece, especialmente, para as instâncias em que os valores de capacidade disponível são iguais, ou aproximadamente iguais, aos valores mínimos de capacidade necessária. Nestes casos, o cálculo duma solução admissível não final acaba por ser inútil, pois o limite superior para a solução é pouco adequado. iv.Regras de ramificação Uma “boa” regra de ramificação deve dar origem a árvores de pesquisa equilibradas, ou seja, particiona o espaço de soluções em conjuntos de 194 Capítulo 5 cardinalidade aproximadamente igual. Por outro lado, é necessário que a fraccionalidade da solução seja eliminada, num número finito de passos, garantindo a obtenção duma solução inteira, ou provando a sua inexistência. A combinação com a geração implícita de colunas exige que o subproblema se mantenha tratável, ou seja, que se consiga incorporar nele a informação relativa à ramificação. Devem ser evitadas regras de ramificação que restrinjam muito um dos ramos e pouco o outro. Algoritmos baseados em regras não equilibradas são pouco estáveis, pois para algumas instâncias o óptimo é rapidamente atingido, mas para outras têm execuções muito longas. Ramificar sobre as variáveis do problema mestre, fixando ou limitando o número de vezes que uma determinada coluna pode ser utilizada é um exemplo que pode levar a árvores de pesquisa não equilibradas. Em [Vanderbeck, 2000b] este assunto é explorado e propõe-se um esquema de ramificação para o PC que considera a representação binária das colunas, de acordo com a transformação que se apresentou. Nesse esquema, encontra-se um subconjunto de colunas que tenham o valor 1 num subconjunto de componentes, e para o qual a soma das variáveis associadas a essas colunas seja fraccionária. A ramificação é feita impondo um limite inferior sobre a soma das respectivas variáveis, dado pelo arredondamento superior do valor actual dessa soma, ou estabelecendo um limite superior para essa soma, dado pelo arredondamento inferior do valor actual da soma. Vanderbeck afirma que para o PC, a fraccionalidade pode ser eliminada considerando apenas subconjuntos de componentes com cardinalidade 1. Esta é a segunda regra de ramificação que se adoptou, com as devidas modificações, para a adequar ao PM a resolver. A ramificação faz-se a dois níveis. Numa primeira fase, utiliza-se a Regra 1, para tentar assegurar que o número de carretéis cortados para cada família, em cada período, é um inteiro. Numa segunda fase, recorre-se à Regra 2, para ramificar sobre a soma das variáveis associadas às colunas que apresentam o valor 1 numa determinada componente da sua representação binária. Integração do problema de corte com o problema de planeamento da capacidade 195 Regra 1 Seja ( x *, I *) a solução obtida para a RLPM no nó actual. Seja Q ft o conjunto das colunas que representam padrões admissíveis para cortar carretéis da família f durante o período t. Quando para algum par ( f , t ) se tem ∑ x q* = β , q ∈Q ft com β fraccionário, ramifica-se adicionando explicitamente ao PM uma das restrições ∑ x q ≥ β q ∈Q ft ou ∑ x q ≤ β (5.47). q ∈Q ft No nó u da árvore de pesquisa, depois de se terem incluído restrições de ramificação do tipo (5.47) no problema mestre, a RLPM tem a forma da RLPM na raiz, com as restrições adicionais ∑ x q ≥ βftLu ∀ f, t (5.48) ∑ x q ≤ βUu ft ∀ f, t (5.49) q ∈Q ft q ∈Q ft são, respectivamente, o maior dos limites inferiores e o menor onde β ftLu e βUu ft dos limites superiores obtidos para a soma do número de carretéis cortados da família f no período t, por ramificação usando desigualdades do tipo (5.47) que definem o problema no nó u. Cada restrição de ramificação do tipo (5.47) introduz ou altera no PMR um limite sobre o valor que pode tomar a soma das variáveis associadas a um conjunto de colunas. Assim, é necessário avaliar no subproblema de geração de colunas o respectivo valor da variável dual que lhe está associada. No nó u, depois de se terem incluído restrições de ramificação do tipo (5.47) no problema mestre, a função objectivo do subproblema de geração de colunas tem a forma 196 Capítulo 5 max { max { max{ f t T ∑ ( ∑ π ik )ai + σt bf i ∈,(f ) k =t + λf + υft + τ ft : a ∈ Af }}} onde — υft ∈ + e τ ft ∈ - são os valores óptimos das variáveis duais associadas, respectivamente às restrições (5.48) e (5.49), correspondentes à família f e ao período t, para a RLPMR actual, e — Af como se definiu em (5.20). Os coeficientes binários ρ ′ a utilizar na função objectivo do PSMB(f, t) calculam-se T considerando os pesos ∑π ik para k =t i =1,...,mf . Uma coluna admissível q ∈ Q ft tem custo reduzido negativo se T ( ∑ π ik ) q i + m (t −1) + σt bf + λf + υft + τ ft > 1 . i ∈,(f ) k =t ∑ O conjunto C das colunas que têm o valor 1 num subconjunto de componentes binárias pode ser definido como C = { q : q l′ = 1, l ∈ P ∧ q l′ = 0, l ∈ O }. É de notar que apenas interessam as componentes binárias relativas às restrições da satisfação da procura, ou seja, O , P ⊂ {1,...,Tm′} , onde m′ é o número de componentes binárias necessárias para representar os m itens do problema. Regra 2 Seja ( x *, I *) a solução obtida para a RLPM no nó actual. Quando para um determinado conjunto C se tem ∑ q ∈C x q* = α , com α fraccionário, ramifica-se impondo ∑ q ∈C x q ≥ α ou ∑ q ∈C xq ≤ α (5.50). Integração do problema de corte com o problema de planeamento da capacidade 197 Esta regra de ramificação equivale a, por cada conjunto de componentes binárias, introduzir no problema mestre uma variável auxiliar que conta o número de vezes que se utilizam colunas com o valor 1 nessas componentes. A regra actua sobre estas variáveis auxiliares forçando-as a tomar um valor inteiro. Para conjuntos de ramificação onde | P |> 2 , deixa de ser possível resolver o subproblema como um problema saco-mochila. Para conjuntos de ramificação com | P |= 1 , as alterações no subproblema são muito fáceis de manipular. A modificação nos custos pode ser introduzida corrigindo o vector de pesos binários ρ ′ no correspondente PSMB(f, t). Por outro lado, escolher uma única componente binária para ramificar reduz o número de variáveis auxiliares que é necessário introduzir no PM, e simplifica o controlo sobre este tipo de variáveis. Quando apenas se considera uma das componentes binárias, restringe-se pouco as combinações possíveis para padrões de corte admissíveis, tendo assim maior liberdade na elaboração das colunas mais atractivas. Como já se referiu, adaptou-se a estratégia que Vanderbeck utilizou para o PC. Na prática, apenas se utilizaram conjuntos de ramificação C para os quais |P |= 1 . A RLPM no nó u tem a forma da RLPM na raiz, com as eventuais restrições de ramificação resultantes da aplicação das regras 1 e 2 ∑ x q ≥ βftLu ∀ f, t (5.48) ∑ x q ≤ βUu ft ∀ f, t (5.49) q ∈Q ft q ∈Q ft ∑ xq ≥ αl ∀ l ∈H u (5.51) ∑ xq ≤ αl ∀ l ∈G u (5.52) q ∈C l q ∈C l onde — βftLu e βftUu são, respectivamente, o maior dos limites inferiores, e o menor dos limites superiores obtidos para a soma do número de carretéis cortados da família f, no período t, por ramificação e usando desigualdades derivadas da regra 1; 198 Capítulo 5 — Os conjuntos C l são os conjuntos de ramificação, derivados da regra 2, em que se considerou P = {l } , e que conduzem respectivamente a • restrições de limite inferior α l , l∈ H u e • restrições de limite superior α l , l∈G u ; e — H u e G u são os conjuntos das restrições resultantes da ramificação pela regra 2 que definem o problema no nó u. A introdução das restrições de ramificação origina modificações no subproblema. Estas são tratadas entrando em linha de conta com os valores óptimos das variáveis duais associadas às restrições introduzidas. Este procedimento afecta o cálculo dos lucros binários nos PSMB e o cálculo do custo reduzido da coluna, ou das colunas, em geração. Sempre que se tenha introduzido alguma restrição de ramificação sobre a componente binária l , o peso do objecto binário l , ρl′ , é corrigido somando-lhe os valores óptimos das variáveis duais associadas às respectivas restrições. Caso existam, sejam ν j e µ j os valores duais óptimos associados, respectivamente, às restrições (5.51) e (5.52) sobre a componente l. Ou seja, o valor de ρl′ a considerar no correspondente PSMB é ρl′ + ν j + µ j . O subproblema de geração de colunas passa então a ser max { max { max{ f t ∑ (ρl′ al′ ) + l =1, , mf′ t bf + λl + ft + ft : a′ ∈ Af′ }}} onde — ρ1′ ,... ,ρm ′ f′ é a representação binária de ρ1,...,ρm~f , ( ρi = ∑k =t π ik ), com as T respectivas correcções para as componentes associadas a restrições de ramificação derivadas da regra 2, ou seja, para l∈ H u , ρl′ é substituído por ρl′ + v j , e para l∈Gu , por ρl′ + µ j , onde j é o índice da respectiva restrição de ramificação, e ν j e µ j são os valores duais óptimos associados às respectivas restrições; Integração do problema de corte com o problema de planeamento da capacidade 199 — υ ft e τ ft são os valores óptimos das variáveis duais associadas às restrições de ramificação sobre o número de carretéis cortados para a família f no período t (derivadas da aplicação da regra 1); — A′f como definido em (5.33). Conforme se adicionam ao PM as restrições de ramificação, aumenta-se a dimensão das colunas com componentes adicionais, de forma a cobrir as linhas que correspondem às restrições introduzidas. Cada uma destas componentes deve ter o coeficiente adequado, ou seja, toma o valor 1 • nas componentes que correspondem a restrições dos tipos (5.48) e/ou (5.49) para o par ( f , t ) a que está associada, e • nas componentes relativas a restrições do tipo (5.51) e/ou (5.52) que envolvam índices de componentes que na representação binária têm o valor 1, e toma o valor 0 nos restantes casos. Quando o processamento dum nó conduz a ramificação, testa-se se se está em condições de usar a regra 1, ou seja, dá-se-lhe prioridade. Para ramificar dá-se prioridade ao par (f , t ) para o qual o valor do número total de carretéis associado se afaste mais do seu arredondamento inferior. Introduz-se primeiro um limite inferior sobre a soma das respectivas variáveis e explora-se esse ramo. Caso o número de carretéis associado a qualquer par (f , t ) seja inteiro, aplica-se a regra 2. Na regra 2, a escolha da variável auxiliar para ramificar faz-se da seguinte forma. Consideram-se as componentes binárias ordenadas por ordem decrescente dos períodos associados, e por ordem não crescente dos valores de largura binária. Percorre-se a lista de componentes assim ordenadas e ramifica-se sobre a primeira para a qual o valor da variável auxiliar que lhe corresponde tome um valor não inteiro. Como as colunas são constituídas por subvectores que se repetem ao longo dos períodos subsequentes, consideram-se primeiro as componentes que se referem a períodos de maior índice, na perspectiva de restringir o mínimo possível o espaço 200 Capítulo 5 de soluções. Experimentou-se dar prioridade às componentes binárias com maior valor de lucro binário, após as devidas transformações para entrar em linha de conta com os valores das variáveis duais associadas às restrições de ramificação, e os resultados foram piores. v. Detalhes do algoritmo principal O algoritmo principal descreve-se em algoritmo 5.4. Na raiz, com base na solução da RLPMR, para cada família, introduz-se no PMR o corte que impõe um limite inferior sobre a quantidade a produzir ao longo do horizonte temporal. Volta-se a resolver a RLPMR resultante, e o valor óptimo dessa solução permite encontrar o limite inferior z . Introduz-se o corte que impõe z como limite inferior para o valor da solução. Não se calculam soluções admissíveis intermédias. Ou seja, o algoritmo estabelece que o limite superior é z = z . A pesquisa concentra-se em encontrar uma solução inteira com valor óptimo z * = z . Se a árvore é toda pesquisada e não se encontra uma solução com esse valor, então, incrementa-se z de uma unidade e actualiza-se o respectivo corte. Potencialmente, este processo pode ser repetido 2F vezes. Considera-se um limite superior para o número de nós gerados, dado por MaxNos. No processamento dos nós (passo 3) experimentaram-se várias alternativas para a introdução de colunas no PMR. Pode-se introduzir • a coluna mais atractiva (com custo reduzido negativo) que se encontre na resolução do subproblema, e esta opção implica resolver o subproblema até à optimalidade, ou • a primeira coluna atractiva que se encontre na resolução do subproblema, e, neste caso, abandona-se o subproblema assim que ela for encontrada, ou • as F ×T colunas mais atractivas, uma por cada par ( f , t ) , ou • as “primeiras” F ×T colunas atractivas, uma por cada par ( f , t ) . Integração do problema de corte com o problema de planeamento da capacidade 201 Algoritmo de partição e geração de colunas 1. Inicialização da raiz. Inicializar o PMR. Colocar o problema inicial com a formulação P 0 na lista, correspondendo ao nó 0. Inicializar o valor do limite superior z = +∞ , o valor do limite inferior z = 0 , e a melhor solução já encontrada (x *, I *) como inexistente. Fazer r =0 (avaliador do reprocessamento da raiz). 2. Se a lista de nós estiver vazia e (x *, I *) é inexistente, incrementar z e z . 3. Escolher o último problema P i introduzido na lista, que corresponde ao nó i, e resolver a relaxação linear de P i . 3.1. Resolver a RLPMR actual. 3.2. Dada a solução dual óptima, resolver o subproblema de geração de colunas de forma a pesquisar a existência de colunas atractivas. 3.3. Se existir pelo menos uma coluna atractiva, acrescentá-la ao conjunto de colunas da RLPMR e voltar a 3.1. Caso contrário, a solução actual é uma solução óptima para a RLPM neste nó. Se r = 2 , seguir para 4. 3.4. Reprocessamento da raiz. Se r = 0 , introduzir os cortes de limite inferior sobre as quantidades das famílias, fazer r = 1 e voltar a 3.1. Se r = 1 , z = z = z i , introduzir o corte z ≥ z , fazer r = 2 e voltar a 3.1. 4. Se não existe solução, eliminar o nó i, por inadmissibilidade, e voltar a 2. 5. Seja (x i , I i ) a solução da RLPMR. Se zi ≥ z , eliminar o nó i, por limitação, e voltar a 2. 6. Se (x i , I i ) é inteira, actualizar a melhor solução encontrada x * = x i , I * = I i e terminar. 7. Se i ≤ MaxNos , ramificar, dando origem a dois novos problemas P i +1 e P i + 2 , colocá-los na lista e voltar a 2. Se não, terminar. Algoritmo 5.3: Algoritmo de partição e geração de colunas A experiência mostrou que a estratégia mais favorável é, em cada iteração, caso exista uma coluna atractiva, introduzir uma coluna por cada família e período. Na 202 Capítulo 5 versão final do algoritmo, inserem-se as F ×T colunas mais atractivas, uma por cada par ( f , t ) , desde que existam. No passo 7, a introdução dos problemas resultantes da ramificação na lista de problemas faz-se de forma a que o nó com índice mais elevado corresponda ao problema em que se considerou a restrição que impõe um limite inferior, independentemente da regra que se tenha utilizado. Adoptou-se uma estratégia de pesquisa em profundidade para processar os nós que vão sendo gerados por ramificação, processando em primeiro lugar os nós que correspondem à introdução duma restrição de “maior ou igual”. 5.3.4 Experiências computacionais O algoritmo principal e o algoritmo para resolução dos subproblemas foram codificados na linguagem C. Como ambiente de desenvolvimento utilizou-se a componente Visual C++ 6.0 do Microsoft Visual Studio 6.0. Para resolver os problemas de Programação Linear utilizou-se o CPLEX 7.0. Recorreu-se à aplicação das rotinas da biblioteca dinâmica do CPLEX, para integrar a resolução dos problemas de PL no código principal. Efectuaram-se todos os testes num computador pessoal com processador Pentium IV, 1600MHz e 256Mb de memória RAM. i. Descrição das instâncias A realização das experiências computacionais visa avaliar o desempenho do algoritmo, as suas limitações, e a adequação da abordagem para a resolução de problemas reais. O modelo permite tirar partido duma situação em que o mesmo item é pedido para entrega em períodos diferentes, como acontece na situação do caso em estudo. Analisou-se um histórico dos registos de encomendas referente a um período com duração de um ano e extraiu-se informação de forma a construir instâncias com dados reais. Integração do problema de corte com o problema de planeamento da capacidade 203 Consideram-se fixos os seguintes valores para os parâmetros: MaxNos = 20000 – número máximo de nós pesquisados pelo algoritmo; hi = 10000 – o custo associado às variáveis de stock inicial I i ; bf = 1 – o tempo de processamento, em horas, de um carretel da família f ; W f =W = 420.0 – a largura útil de um carretel da família f , constante; W b = 410.0 – a largura mínima a utilizar do carretel; w st = 10.5 – a largura mínima de um item para stock; w s = 33.0 – a largura máxima de um item “pequeno”; n s = 4 – o número máximo de itens “pequenos” a cortar num padrão; n =8 – o número máximo de itens a cortar num padrão. As experiências foram conduzidas numa perspectiva de avaliar a redução de custos que se obtém por utilizar o modelo integrado, relativamente à situação em que os diferentes problemas de corte são resolvidos em separado, de forma independente. Começa-se por resolver, para cada instância, os problemas de corte para cada período, de forma independente e sem as restrições de capacidade. As respectivas soluções permitem determinar qual o valor mínimo de capacidade em cada período, para que se possa satisfazer a procura sem antecipações de produção. Em seguida, resolve-se a instância do problema integrado, fixando o valor de capacidade de produção disponível em cada período t, ct , no mínimo necessário predeterminado. Para avaliar a extensão das poupanças que se podem alcançar por um acréscimo da capacidade, gera-se em seguida a solução que corresponde a fixar os valores de capacidade, considerando uma capacidade extra de 10% sobre a capacidade mínima. ii. Resultados e discussão O nome das instâncias é da forma “FxT_i”, onde “F” é o número de famílias, “T” é o número de períodos e “i” é o índice da instância. Na tabela 5.5, que apresenta as características de instâncias, o significado das colunas é o seguinte: m é o número de itens; 204 Capítulo 5 m/F é o número médio de itens por família; mpT é o número médio de itens pedidos por período; r é o número médio de vezes que um mesmo item é pedido ao longo do horizonte; m’ é o número de componentes binárias resultantes de transformar m; min d é o número mínimo de unidades pedidas de um item; max d é o número máximo de unidades pedidas de um item; med d é o número médio de unidades pedidas de um item; minw é o valor mínimo das larguras pedidas; maxw é o valor máximo das larguras pedidas; medw é o valor médio das larguras pedidas ponderado pelas quantidades pedidas ∑t ∑i dit .w i / ∑t ∑i dit . ; minw/W é o valor mínimo da razão entre as larguras pedidas e W; maxw/W é o valor máximo da razão entre as larguras pedidas e W; e medw/W é a razão entre medw e W. Prob 2x2_1 2x2_2 2x2_3 2x2_4 2x2_5 4x2_6 4x2_7 6x2_8 7x2_9 7x2_10 7x2_11 8x2_12 2x3_13 2x3_14 2x3_15 2x3_16 2x3_17 5x3_18 7x3_19 9x3_20 m m/F mpT 42 31 28 37 41 45 62 87 69 90 65 90 35 42 44 47 52 70 79 114 21.0 15.5 14.0 18.5 20.5 11.3 15.5 14.5 9.9 12.9 9.3 11.3 17.5 21.0 22.0 23.5 26.0 14.0 11.3 12.7 23.5 17.5 16.0 22.0 24.5 25.5 36.5 53.0 37.5 49.0 35.0 49.5 15.3 19.0 17.7 21.0 22.3 32.0 30.3 56.0 r m’ 1.12 1.13 1.14 1.19 1.20 1.13 1.18 1.22 1.09 1.09 1.08 1.10 1.31 1.36 1.20 1.34 1.29 1.37 1.15 1.47 214 162 140 200 212 230 314 444 342 450 340 454 270 333 339 369 411 555 594 879 min d 2 3 1 2 1 1 3 1 1 1 3 1 3 1 2 2 1 1 1 1 max d 390 99 302 1561 521 945 268 519 1115 945 1151 1246 302 333 390 1561 521 1208 1115 519 med d 59.7 26.8 36.7 113.5 58.2 85.3 34.9 57.5 96.2 72.8 72.4 65.7 36.5 66.8 58.4 103.8 54.6 83.9 91.2 59.4 min w 10.5 13 10.5 10.5 10.5 10.5 10.5 10.5 10.5 10.5 10.5 10.5 13.0 10.5 11.0 10.5 10.5 10.5 10.5 10.5 max w 162 167 142 142 153 142 153 153 153 260 240 210 167 142 162 153 162 210 153 153 med w 90.7 98.0 91.6 85.2 95.3 85.3 79.8 91.0 96.1 86.1 82.0 87.2 84.4 46.3 89.8 79.2 79.3 80.9 98.5 95.9 Tabela 5.5: Características das instâncias min w/W 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 max w/W 0.39 0.40 0.34 0.34 0.36 0.34 0.36 0.36 0.36 0.62 0.57 0.50 0.40 0.34 0.39 0.36 0.39 0.50 0.36 0.36 med w/W 0.22 0.23 0.22 0.20 0.23 0.20 0.19 0.22 0.23 0.20 0.20 0.21 0.20 0.18 0.21 0.19 0.19 0.19 0.23 0.23 Integração do problema de corte com o problema de planeamento da capacidade 205 Nas tabelas 5.6, 5.7 e 5.8 o significado das colunas é o seguinte: z LP z é o valor da solução da RLPM na raiz; é o limite inferior para o valor da solução, após o reprocessamento da raiz; z* é o valor da solução óptima; #nós é o número total de nós gerados; prof é a profundidade máxima da árvore de pesquisa; #LPs é o número total de vezes que se resolve a RLPMR; #LPs_r é o número total de vezes que se resolve a RLPMR na raiz; #cols é o número de vezes que se procede à geração duma coluna; #colsa é o número total de colunas atractivas geradas; %colsa é a percentagem, arredondada, de colunas atractivas geradas; tempo(s) é o tempo total de execução, em segundos; t_cols(s) é o tempo total, em segundos, consumido na resolução do subproblema; t_cols(%) é a percentagem, arredondada, de tempo consumido na resolução do subproblema; poup(%) é a percentagem de poupança em relação à solução que se obtém por resolver os problemas sem integração. Os resultados que se referem à resolução dos problemas em separado, por períodos, mostram-se na tabela 5.6. Nesta tabela, omitem-se as colunas z LP , z , prof e poup(%). As restantes colunas, com excepção das relativas a valores em percentagem, apresentam a soma dos valores correspondentes nos vários problemas. A tabela 5.7 mostra os resultados para a solução do modelo integrado, em que a capacidade em cada período foi fixa no mínimo necessário, para que não exista antecipação. As células marcadas com um traço indicam que não foi possível encontrar o respectivo valor, por não se ter conseguido resolver a instância associada gerando um máximo de 20000 nós de pesquisa. Na tabela 5.8 apresentam-se os resultados do modelo integrado, quando a capacidade em cada período é cerca de 110% da capacidade mínima. 206 Capítulo 5 Prob z* #nós #LPs #LPs_r #cols #colsa %colsa 2x2_1 2x2_2 2x2_3 2x2_4 2x2_5 4x2_6 4x2_7 6x2_8 7x2_9 7x2_10 7x2_11 8x2_12 2x3_13 2x3_14 2x3_15 2x3_16 2x3_17 5x3_18 7x3_19 9x3_20 579 222 237 985 565 547 520 1363 1426 1543 1135 1427 360 715 673 1257 708 1789 2057 2378 186 88 120 192 204 164 276 388 676 3032 262 346 146 268 271 280 298 410 728 694 236 130 160 227 157 225 321 426 618 3186 330 441 204 320 301 363 373 485 683 719 245 157 134 252 275 309 573 1093 1987 9675 926 1990 195 289 474 363 386 1057 2267 3179 75 47 47 75 91 48 60 65 30 94 32 50 59 96 84 126 117 63 39 85 176 92 95 153 159 123 211 298 187 343 185 313 125 210 252 239 237 258 215 483 72 59 71 61 58 39 37 27 9 4 20 16 64 73 53 66 61 24 10 15 tempo (s) 2.297 1.672 1.656 2.344 2.234 2.061 2.782 5.171 2.844 38.171 3.390 5.233 2.359 3.156 3.657 3.469 3.375 3.546 6.421 9.446 t_ cols (s) 0.610 0.299 0.249 0.829 0.691 0.514 0.934 2.096 1.405 15.770 1.237 2.735 0.374 0.922 1.001 1.184 1.035 1.724 3.168 5.237 t_cols (%) 27 18 15 35 31 25 34 40 49 41 37 52 16 29 27 34 31 49 49 55 Tabela 5.6: Resultados da resolução sem integração Os resultados mostram que o valor da solução que se obtém a partir do modelo integrado é, no geral, inferior ao valor que se obtém resolvendo os problemas em separado. Em média, considerando apenas as instâncias que se conseguiram resolver, essa redução é da ordem de 2%. Isto vem demonstrar a tese de que a integração do problema de corte com o problema de planeamento da capacidade é vantajosa. A redução do valor dos custos explica-se pela maior variação de larguras que existe no problema integrado, e, em consequência, um maior número de combinações de larguras para gerar padrões de corte admissíveis. Apesar das poupanças relativas serem, aparentemente, pequenas (em termos percentuais), em termos absolutos essas poupanças são significativas. Note-se o caso da instância 4x2_7, em que na integração o valor da solução pode ser reduzido em 31 unidades (horas de produção). Para seis instâncias não se conseguiu encontrar uma solução inteira no limite de nós estabelecido. Isto decorre do aumento de complexidade do problema: ou quando se vai aumentando o número de períodos, ou o número de famílias. Mesmo para as instâncias com 2 famílias, quando o número de períodos aumenta de 2 para 3, dentro dos limites de capacidade mínima o algoritmo tem mais dificuldade Integração do problema de corte com o problema de planeamento da capacidade 207 em convergir. Este aspecto está, provavelmente, mais relacionado com a componente do problema que se refere ao planeamento da capacidade. A percentagem do esforço computacional despendido na geração de colunas é bastante elevada – cerca de 45% – tendo em conta que de todas as colunas geradas apenas cerca de 35% são atractivas. Prob 2x2_1 2x2_2 2x2_3 2x2_4 2x2_5 4x2_6 4x2_7 6x2_8 7x2_9 7x2_10 7x2_11 8x2_12 2x3_13 2x3_14 2x3_15 2x3_16 2x3_17 5x3_18 7x3_19 9x3_20 z LP 576.2 220.5 217.5 973.5 561.7 532.2 486.4 1355.2 1407.5 1513.9 1029.8 1386.3 341.8 692.4 662.9 1236.7 694.6 1624.7 2037.2 2349.5 z 578 222 219 975 563 534 489 1358 1412 1518 1034 1391 343 693 664 1238 696 1628 2041 2355 z* 578 222 219 975 563 535 489 1359 1412 1521 1392 693 664 2041 - #nós prof #LPs #LPs_r 246 122 86 696 172 284 512 446 438 702 348 286 950 782 434 120 393 59 190 42 154 165 933 76 228 124 359 133 856 213 619 218 399 239 952 158 505 142 358 219 1396 296 1312 157 618 #cols #colsa %colsa 61 999 27 375 39 373 70 820 51 521 52 1578 33 3251 56 3236 27 2230 65 7440 29 3836 72 1085 66 3513 36 13519 49 3055 433 197 200 309 234 371 1182 932 325 1203 837 665 1393 2848 795 43 53 54 38 45 24 36 29 15 16 22 61 40 21 36 tempo (s) 8.047 2.125 1.843 4.625 3.406 5.750 12.047 16.344 7.343 23.328 13.140 9.704 45.984 43.313 14.071 t_ cols (s) 3.838 0.828 0.594 1.116 1.393 2.762 7.328 8.338 3.307 14.706 5.550 4.035 10.075 21.562 6.1022 t_cols poup (%) (%) 48 0.2 39 0.0 32 7.6 24 1.0 41 0.1 48 2.2 61 5.9 51 0.3 45 1.0 63 1.4 42 2.5 42 3.1 22 1.3 50 0.8 43 1.9 Tabela 5.7: Resultados do modelo integrado – valores de capacidade mínima Para o modelo integrado com capacidade mínima, os tempos de execução são bastante variáveis e não dependem da dimensão do problema. Note-se, por exemplo, o caso da instância 2x3_15, que consome cerca de 45 segundos. Neste caso, o tempo de execução é basicamente consumido na ramificação e pesquisa de nós a eliminar. Já para a instância 7x2_10 o tempo de execução é essencialmente gasto na geração de colunas. Considerando um valor de capacidade adicional de cerca de 10%, face à capacidade mínima necessária para resolver os problemas em separado (tabela 5.8), alcança-se uma poupança média da ordem de 4%. Apesar de se terem considerado situações bastante diferentes, em relação às quantidades globais a 208 Capítulo 5 produzir, em termos absolutos a poupança corresponde a quantidades significativas – em média 26 horas de produção por instância. O caso mais evidente, desta poupança absoluta, é a instância 7x2_11, em que se poupam 130 horas de produção. Prob 2x2_1 2x2_2 2x2_3 2x2_4 2x2_5 4x2_6 4x2_7 6x2_8 7x2_9 7x2_10 7x2_11 8x2_12 2x3_13 2x3_14 2x3_15 2x3_16 2x3_17 5x3_18 7x3_19 9x3_20 z LP 575.9 219.9 217.3 973.3 557.2 530.3 485.8 1348.2 1401.9 1492.5 1001.2 1366.7 338.1 692.1 662.3 1236.3 691.2 1621.3 2028.3 2337.4 z 577 221 218 975 559 532 488 1351 1406 1497 1005 1370 339 693 664 1238 692 1625 2031 2342 z* 577 221 218 975 559 532 488 1352 1406 1497 1005 1370 339 693 664 1238 692 1625 2031 2342 #nós prof #LPs #LPs_r 1184 116 78 230 232 254 234 440 368 556 346 480 2228 414 558 888 3300 466 666 1064 511 162 58 39 115 112 123 117 211 158 259 173 163 72 206 274 334 179 229 293 364 140 1823 134 102 269 270 430 346 646 452 806 428 689 4027 471 606 843 5604 569 754 1650 778 56 32 43 40 49 48 46 56 42 61 29 37 34 53 52 42 73 34 35 38 45 #cols #colsa %colsa 4621 236 261 564 545 2176 1317 3574 2753 6978 2814 6074 12169 1224 1669 2114 13543 3631 9286 23203 3236 949 149 149 226 242 512 569 1049 409 1494 627 1214 4312 704 859 635 4529 1195 1060 5317 900 21 63 57 40 44 23 43 29 15 21 22 20 35 58 52 30 34 33 12 23 35 tempo (s) 48.656 1.125 1.516 3.953 4.046 8.516 6.484 16.390 8.750 21.781 9.422 16.203 101.790 9.906 14.203 16.266 333.710 15.609 25.234 102.750 19.467 t_ cols t_cols poup (s) (%) (%) 31.865 65 0.35 0.424 38 0.45 0.563 37 8.01 1.875 47 1.02 1.296 32 1.06 3.852 45 2.74 3.294 50 6.15 7.784 47 0.81 4.595 52 1.40 12.186 56 2.98 4.245 45 11.45 10.363 64 3.92 44.628 44 5.83 4.318 44 3.08 4.942 35 1.34 6.411 40 1.51 74.710 22 2.26 6.482 42 9.16 14.934 59 1.26 52.780 51 1.51 9.377 48 3.63 Tabela 5.8: Resultados do modelo integrado – valores de capacidade extra mínima Neste caso, observa-se uma melhor convergência do algoritmo. A existência de uma maior folga confere mais flexibilidade na geração das soluções, para as diferentes famílias, em cada período. O algoritmo consome em média 18 segundos de CPU, o que não é muito atraente, dado o bom desempenho dos algoritmos de partição e geração de colunas para o problema de corte. Por outro lado, também não se pode considerar excessivo, dadas as vantagens da integração. O caso mais desfavorável ocorre para a instância 2x3_17, em que se consomem aproximadamente 6 minutos. A percentagem média de tempo consumido na geração de colunas é de 48%. Ou seja, cerca de metade do tempo de execução é consumido a resolver o subproblema. Apenas 35% das colunas avaliadas são atractivas, mas, em cada iteração da geração de colunas, é necessário avaliar se existe uma coluna atractiva, para cada Integração do problema de corte com o problema de planeamento da capacidade 209 família, em cada período. No entanto, não é evidente uma relação entre a percentagem de colunas atractivas geradas e o número de famílias e períodos. 5.3.5 Comentários e perspectivas O modelo que se apresentou é, tal como se referiu, um modelo inovador e de grande aplicação em problemas reais. Os resultados mostram que a sua utilização é vantajosa e que esta abordagem permite melhorar a exploração da capacidade de produção. No que respeita a resolver vários problemas de corte independentes, a integração adequa-se melhor à realidade, em que as peças a cortar são limitadas por restrições de capacidade. Adicionalmente, a integração permite obter reduções nos custos, devido a um maior aproveitamento das peças a cortar, que decorre de tirar partido de uma maior gama de larguras a combinar. Para adaptar ainda mais o modelo à realidade do caso de estudo seria necessário considerar a existência de tolerância na satisfação da procura, tal como se fez no capítulo 4. Não se seguiu esta opção, porque se estabeleceu como primeira meta testar a viabilidade de resolução do modelo integrado. A introdução de tolerância, para além de aumentar a complexidade do modelo, dificulta a comparação das soluções. O algoritmo que se desenvolveu, apesar de apresentar um bom desempenho para várias instâncias, está ainda aquém de se poder considerar adequado para utilização numa situação real. As experiências computacionais mostram que existem muitas instâncias, para as quais não é possível encontrar uma solução dentro dum limite de tempo razoável para a pesquisa. Isto ocorre, especialmente, nos casos em que a capacidade disponível é aproximadamente igual à capacidade mínima para produzir as quantidades pedidas, sem antecipação da produção. Existem várias hipóteses que podem explicar as evidentes deficiências do algoritmo. Por um lado, não é claro que a aplicação sucessiva da regra de ramificação proposta por Vanderbeck, que se utilizou como regra 2, possa eliminar todas as soluções não inteiras. Foram testadas algumas instâncias para as quais, no decorrer do algoritmo, se encontraram nós onde a ramificação não foi possível por não existir uma componente binária sobre a qual aplicar a regra 2. Também 210 Capítulo 5 não é evidente que a combinação das duas regras de ramificação seja a mais adequada. Dadas as restrições de capacidade, ao introduzir uma restrição de limite inferior sobre o número de carretéis cortados para uma família num dado período, está-se a condicionar também todas as variáveis relativas ao corte para as restantes famílias, nesse período. Na regra 2, apesar de se terem testado diferentes prioridades para a selecção da componente a considerar na ramificação, pode existir outra estratégia mais vantajosa, que ficou por explorar. Este aspecto pode condicionar bastante o desempenho do algoritmo. O algoritmo necessita também de outro tipo de melhoramentos. Não se explorou a introdução de cortes de admissibilidade sobre o número mínimo de carretéis para cortar cada item, como faz Vanderbeck. Podem-se ainda obter eventuais melhoramentos pela introdução de cortes duais, como sugere Valério de Carvalho [Valério de Carvalho, 2002]. Todos estes eventuais melhoramentos referem-se a estratégias desenvolvidas em especial para o problema de corte. Outra estratégia que pode melhorar o algoritmo é a introdução de cortes, especialmente desenvolvidos para os problemas de planeamento da capacidade. É a primeira vez que este problema é abordado na literatura. Na geração dos padrões de corte consideraram-se as restrições de admissibilidade específicas do caso em estudo. Apesar de ambiciosa, esta pode não ter sido a melhor estratégia, pois confere maior complexidade ao subproblema de geração de colunas. Seria também interessante utilizar os problemas de teste (benchmark problems), que têm sido utilizados na literatura, para os combinar e construir instâncias do modelo integrado. Este procedimento pode permitir separar a complexidade do problema de corte da complexidade do problema de planeamento da capacidade. Apesar das deficiências do algoritmo, a abordagem que se apresentou constitui uma contribuição importante, quer pela inovação da formulação, quer pelo desafio de gerar soluções exactas para um problema tão complexo, ainda não explorado na literatura. Capítulo 6 O Sistema de Apoio à Decisão Neste capítulo apresenta-se o Sistema de Apoio à Decisão (SAD) que foi desenvolvido e concretizado para resolver o problema do caso de estudo. Inicia-se com uma panorâmica da evolução do conceito de SAD e nomeiam-se outros tipos de sistemas informáticos utilizados para apoiar a tomada de decisão. Descrevem-se ainda outros sistemas informáticos de apoio à construção de planos e programas de produção especialmente concebidos para a indústria papeleira. Em seguida, apresentam-se as principais funcionalidades disponibilizadas pelo SAD que se desenvolveu. Descrevem-se alguns aspectos da implementação e expõe-se a integração do SAD no sistema informático da empresa, em termos de arquitectura. O capítulo termina com algumas conclusões relativamente à experiência deste caso prático. 6.1 Introdução Há mais de duas décadas, Keen e Morton [Keen e Morton, 1978] definiam SAD como “um sistema informático que assiste os gestores nos seus processos de decisão, em tarefas semi-estruturadas, com o objectivo de apoiar e não substituir o gestor, melhorando mais a eficácia do que a eficiência da tomada de decisão”. Neste contexto, eficácia envolve identificar o que deve ser feito e assegurar que o critério 212 Capítulo 6 escolhido é o relevante. Eficiência envolve a realização duma tarefa o melhor possível de acordo com um determinado critério de desempenho. Nesta linha seguiram-se outras definições, demasiado vagas e pouco inteligíveis. O conceito de tarefa ou problema semi-estruturado é vago e a noção de que a eficácia deve ser valorizada, em relação à eficiência, é também muito discutível. É do conhecimento geral que qualquer utilizador “desespera” quando o sistema não responde rapidamente aos seus pedidos. Mais recentemente Sauter [Sauter, 1997] descreve um SAD como “um sistema informático que apoia a escolha, auxiliando o AD a organizar a informação e a modelar resultados”. Esta definição expande-se no mesmo texto: “Os SAD são sistemas informáticos que congregam informação de várias fontes, ajudam a organização e análise da informação, e facilitam a avaliação de assunções através do uso de modelos específicos, ou seja, os SAD disponibilizam o acesso aos dados relevantes da organização, à medida que o AD precisa de os avaliar, para fazer escolhas. Os SAD permitem analisar facilmente os dados gerados pelos sistemas de processamento de transacções e por outras fontes internas de informação. Adicionalmente, os SAD podem facultar o acesso a informação externa à organização. Finalmente, os SAD possibilitam a análise da informação de uma forma útil, para uma decisão particular, e fazem-no interactivamente.” Esta é uma definição focada no conceito de processamento da informação, numa perspectiva organizacional. O avanço tecnológico, o crescimento do número de utilizadores da Internet e os desenvolvimentos no comércio electrónico conferem novas características aos sistemas de apoio à decisão. Refira-se o trabalho de [Keskinocak et al, 2001], que apresenta um SAD instalado num “mercado electrónico”, para a venda de artigos de papel. Anonimamente, os vendedores disponibilizam stocks e capacidade de produção disponível, e os clientes relatam artigos e capacidade que pretendem adquirir. O SAD funciona como um avaliador das transacções e também sugere algumas possibilidades de transacções. O sistema de apoio à decisão 213 No âmbito dos sistemas informáticos que apoiam a tomada de decisão de uma forma interactiva podemos encontrar outros sistemas, como os Sistemas de Gestão de Informação (SGI), os Sistemas de Gestão de Bases de Dados (SGBD), os sistemas OLAP (On-Line Analytical Processing), e alguns sistemas de base de conhecimento. O que distingue um SAD destes outros sistemas é a integração de modelos quantitativos formais, que permitem gerar alternativas. Os SGI e os SGBD permitem extrair informação relativa ao passado e ao presente, enquanto que um SAD permite determinar soluções a implementar no futuro. No entanto, funcionalidades dos SGI e dos SGBD devem ser incluídas num SAD, pois apoiam a extracção de informação relativa a determinados parâmetros permitindo a sua verificação e possível modificação. Alguns SAD são orientados aos dados e englobam técnicas de prospecção de dados (data mining) e técnicas de extracção de conhecimento. Tradicionalmente, o apoio à decisão é orientado a modelos [Kersten, 1999], e identifica-se o problema de decisão, na fase de percepção do problema. Desenvolve-se um modelo apropriado à geração de soluções alternativas. Os parâmetros do modelo obtêm-se a partir dos dados armazenados nas bases de dados da empresa, e dos dados que o utilizador introduz. Este tipo de SAD centra-se na interacção do utilizador com o modelo. Os modelos utilizam-se para gerar soluções óptimas ou satisfatórias, ou para pesquisar um conjunto de soluções admissíveis com determinadas características. A figura 6.1 apresenta a sequência de actividades no apoio à decisão orientado a modelos. A interacção, entre o problema de decisão e o modelo, descreve a selecção e a adequação do modelo à resolução do problema. Os dados são utilizados para determinar os parâmetros do modelo. Problema de Decisão Modelo Solução Dados Figura 6.1: A sequência de actividades no apoio à decisão orientado a modelos Capítulo 6 214 Segundo Sauter, um SAD é adequado quando o objectivo é ajudar os AD’s a: − Considerar um maior conjunto de opções para resolver um problema; − Resolver problemas complicados; − Gerar alternativas de qualidade; − Responder rapidamente a situações cuja análise é complicada; − Perceber outras consequências que resultam da implementação de uma decisão; − Utilizar simulação de cenários diversos para resolver um problema; − Ter um maior conhecimento do problema e evitar a avaliação prematura de opções; − Aceder aos dados, com uma organização mais apropriada; − Tirar maior partido de modelos matemáticos para resolver o problema. 6.2 Aspectos do desenvolvimento de SAD’s Em [Adenso-Díaz, González e García, 1998], descrevem-se algumas dificuldades, relativas a aspectos humanos, na implementação dum SAD para o planeamento da distribuição diária de leite. Os promotores de vendas, apesar de reconhecerem que precisavam do SAD, sentiam-se ameaçados, temendo que o sistema os substituísse nas suas funções de tomada de decisão, e que em consequência perdessem o seu poder de influência. Por outro lado, não confiavam que um sistema informático pudesse fornecer resultados válidos. Para superar esta questão, as soluções propostas pelo sistema são modificações de uma solução que o agente de decisão possa compreender, permitindo a comparação de soluções. A literatura inclui vários exemplos de SAD’s para o planeamento e escalonamento da produção ao nível operacional, como por exemplo, os apresentados por [Woerlee, 1991] e [Schutten, 1996]. Exemplos de SAD’s para o planeamento hierárquico de produção descrevem-se nos trabalhos [Özdamar, Bozyel e Birbil, 1998] e [Carravilla e Sousa, 1995]. O sistema de apoio à decisão 215 Existem vários produtos comerciais direccionados para o planeamento da produção na indústria do papel. As funções disponibilizadas por estes produtos são bastante semelhantes entre si, e incluem planeamento e programação da produção, programação do corte, gestão do armazém, distribuição e logística. A Honeywell Hi-Spec Solutions – www.iac.honeywell.com – comercializa o Fastrim III para a programação do corte. Aparentemente, as maiores vantagens deste sistema são o sequenciamento automático dos padrões para minimizar o número de movimentos das navalhas e a sugestão automática de larguras para obter poupanças no desperdício. A Greycon – www.greycon.com – comercializa um pacote que recentemente, passou a integrar um sistema web-based, que permite a colaboração entre diferentes fábricas. Este módulo permite a previsão das encomendas dum conjunto de clientes e a distribuição das encomendas pelas fábricas, de acordo com uma análise da capacidade disponível. O conjunto de programas comercializados pela Majiq – www.majiq.com – destaca-se nas funcionalidades relativas ao planeamento da produção da pasta. Os métodos e técnicas que permitem obter soluções por estes produtos comerciais são omitidos. Uma correcta avaliação do seu desempenho só seria possível por comparação de resultados. Na literatura, encontram-se referências a outros sistemas informáticos desenvolvidos para o mesmo fim. O mais relevante é um SAD baseado em agentes, que segue uma abordagem de optimização multi-critério, [Keskinocak et al., 1998] e [Murthy et al., 1999]. Considera-se um ambiente de produção com várias máquinas de corte. Abordam-se os seguintes problemas: afectação das encomendas às várias máquinas; sequenciamento da produção em cada máquina; sequenciamento de padrões de corte e carregamento dos veículos para a distribuição. A resolução de alguns problemas combina técnicas de Investigação Operacional com técnicas de Inteligência Artificial. Capítulo 6 216 Em [Pickard e Yeager, 1997] apresenta-se um sistema para o planeamento e sequenciamento da produção, que tem como objectivos a minimização dos custos de sequenciamento e de desperdício. Os autores referem que utilizaram uma abordagem de programação linear para tratar o problema de corte e que optimizam o sequenciamento de padrões para minimizar o número de movimentos das navalhas. No entanto, não se apresentam quaisquer modelos nem algoritmos de resolução. Para o sequenciamento da produção referem que geram uma quantidade de cenários admissíveis, escolhendo depois aquele a que corresponde o menor custo. O SAD que se desenvolveu no âmbito do caso de estudo, e que se apresenta neste capítulo, foi concebido de acordo com o modelo hierárquico de tomada de decisão que se apresentou no capítulo 3. Relativamente ao desenho desse modelo (cf. secção 3.5), as funcionalidades de planeamento e escalonamento da capacidade, que se descrevem em 6.3.1, destinam-se a apoiar a tomada de decisão pelo nível superior. As funcionalidades referentes à programação do corte, apresentadas em 6.3.2, destinam-se a apoiar a tomada de decisão pelo nível inferior. O SAD tem como principais vantagens: − disponibilizar o suporte no processo de aceitação de encomendas, o que assegura uma melhor coordenação entre as áreas funcionais do “marketing” e da “produção”; − assegurar a coerência dos planos de produção devido à integração das decisões relativas ao corte nos algoritmos utilizados para o planeamento e escalonamento da capacidade; − permitir a elaboração dos programas de corte, gerando soluções heurísticas bastante satisfatórias, e possibilitando a introdução de “preferências” e a manipulação das soluções geradas; − disponibilizar a integração dum módulo de previsão. O módulo de previsão (cf. 6.3.3) permite ao “marketing” monitorar a evolução da procura, e apoia a “produção” nas decisões relativas ao planeamento e O sistema de apoio à decisão 217 escalonamento da capacidade, à elaboração de programas de corte e à gestão de stocks. Os benefícios incluem: − uma redução do custo de perda de oportunidade – devido à eventual perda de encomendas, em períodos de elevada procura, e em que o máximo da capacidade de produção é atingido; − uma utilização mais racional da capacidade de produção em períodos de baixa procura; uma redução dos tempos de entrega; − uma redução do desperdício nos programas de corte, por sugestão de um maior número de alternativas para “completar” padrões de corte em que a largura não aproveitada é suficiente para cortar bobinas adicionais. 6.3 Funcionalidades do SAD 6.3.1 Planeamento e escalonamento da capacidade Afectação de stock livre a encomendas Afecta-se o stock livre a encomendas, utilizando uma regra de prioridade definida pelo critério “data de fim de produção mais cedo”. As linhas de encomenda são tratadas por ordem não decrescente de data de fim de produção, afectando a cada encomenda a maior quantidade possível de itens livres, e com os atributos requeridos. Este processo conduz à determinação da procura efectiva e como tal precede sempre a elaboração de qualquer plano. Na figura 6.2 apresenta-se um exemplo de janela com o resultado desta funcionalidade. O utilizador pode sempre cancelar parte ou a totalidade da afectação. Capítulo 6 218 Figura 6.2: Resultado da afectação de stock livre a encomendas Análise da utilização da capacidade Considera-se a procura efectiva agregada e parametriza-se a perda de produção esperada (resultante do desperdício do corte e da mudança de famílias). Ao longo de um horizonte temporal discreto analisa-se a relação entre a procura acumulada e a capacidade acumulada corrigida pela perda de produção esperada. Sugerem-se eventuais adiamentos ou ajustamentos nas quantidades pedidas quando a capacidade é insuficiente. As sugestões são elaboradas de forma a proceder a um mínimo de alterações e com o menor impacto possível. Alterações não aceites são substituídas por outras e o processo repete-se até que a capacidade seja suficiente para responder à procura. Este processo interactivo, que se ilustra na figura 6.3, depende exclusivamente do modelo interiorizado pelo agente de decisão, e é o primeiro passo no processo de aceitação de encomendas. O sistema de apoio à decisão 219 Figura 6.3: Diálogo de sugestões de adiamento de linhas de encomenda Problema de Planeamento e Escalonamento da Capacidade Para resolver o problema de planeamento e escalonamento da capacidade, utilizase a heurística que se apresenta na secção 5.3, e que integra as decisões relativas ao corte. O agente de decisão selecciona o horizonte temporal para o qual pretende obter o plano de produção e pode introduzir ou alterar os parâmetros referentes aos valores de capacidade disponível, custos e tempos de processamento. Para a solução encontrada calculam-se alguns indicadores que se apresentam em conjunto com o plano de produção, como se exemplifica na figura 6.4. Figura 6.4: Exemplo de uma janela resultado de um plano agregado O calendário de produção mostra, relativamente à data e hora inicial do horizonte de planeamento a ordem dos programas para as várias famílias – que se Capítulo 6 220 identificam pelas colunas “Pr.” (produto) e “Gr.” (gramagem), e para cada programa: − a hora relativa de início, a data de início e a duração – nas colunas “Horas”, “Data” e “Duração”, respectivamente, − o peso total do programa – na coluna “Peso Corte (t)” – e o desperdício associado – em termos absolutos na coluna “Desp. Corte (t)” e em termos percentuais na coluna “Perda Corte (%)”, − o peso associado à mudança de família subsequente – dado pela coluna “Peso Setup (t)” e − as datas mais cedo e mais tarde de conclusão das tarefas em cada programa – que se exibem nas colunas “Data mais cedo” e “Data mais tarde”, respectivamente. Paralelamente cria-se um ficheiro em que a informação relativa ao plano é desagregada nos programas de corte que originaram a solução. Esta informação permite aos responsáveis pelo planeamento identificar programas onde se pode proceder a eventuais melhoramentos por antecipação de produção. 6.3.2 Programação do corte Problema de Corte Para resolver o problema de corte utiliza-se o algoritmo que se descreve em 4.2.3. O agente de decisão selecciona um conjunto de linhas de encomenda, ou partes de linhas de encomenda, a considerar nos dados correspondentes aos pedidos. Para facilitar esta tarefa, o sistema disponibiliza funcionalidades de selecção, extracção e criação de ficheiros de dados, com os pedidos agregados por larguras. A figura 6.5 apresenta um ecrã obtido durante a construção duma solução de corte. Pode acontecer que a introdução no programa de alguns itens adicionais não aumente o número de carretéis a cortar, conduzindo a economias de escala, nomeadamente quando em alguns dos padrões na solução de corte se usa parte da O sistema de apoio à decisão 221 largura do carretel não aproveitada para produzir itens adicionais. Para determinar as larguras mais convenientes para esse aproveitamento, o SAD disponibiliza uma funcionalidade de extracção de dados que pesquisa todas as linhas de encomenda ainda não satisfeitas, que podem ser cortadas no programa em elaboração. Adicionalmente, em caso de falta de pedidos nessas condições, o AD pode recorrer ao módulo de previsão para determinar larguras convenientes. Figura 6.5: Exemplo de uma solução de corte Analisando a solução na figura 6.5, verifica-se que é possível aproveitar o desperdício de alguns padrões de corte. Assim, aproveitou-se o desperdício (coluna “Desp.”) de 50 centímetros que ocorre em 69 carretéis (coluna “Bob.”) para proceder ao corte de 15 itens dessa largura, destinados a uma encomenda que se previu vir a ocorrer “em breve”. Para os restantes carretéis (54), a cortar utilizando o mesmo padrão, o aproveitamento foi feito cortando 4 “tiras” de 12 centímetros para armazenar. No padrão que tinha um desperdício de 20 centímetros introduziu-se também o corte de um item, de largura 12 centímetros, destinado a armazém. Na figura 6.6 apresenta-se o ecrã associado à solução final. Capítulo 6 222 Figura 6.6: Solução de corte final O módulo de optimização da solução de corte disponibiliza ainda funcionalidades que permitem: − alterar os dados – por exemplo, introduzindo bobinas adicionais na solução de corte, ou alterando o valor da tolerância a observar na satisfação dos pedidos, − e gerar soluções de corte alternativas – por exemplo, o agente de decisão pode sugerir um padrão de corte da sua preferência e a solução é recalculada, sendo determinado o número de vezes que o padrão sugerido deve ser cortado, ou mesmo impor na solução um padrão de corte e o número de vezes que ele deve ser cortado. Afectação dos itens na solução de corte Dada uma solução de corte, estabelece-se a correspondência entre cada um dos itens que a constituem e o destino respectivo. Como objectivo considera-se a minimização da dispersão na produção das encomendas. Utiliza-se a heurística que se descreve em 4.2.4. A figura 6.7 apresenta parte do programa de corte resultado da solução de corte cuja construção se exemplificou nas figuras 6.5 e 6.6. O sistema de apoio à decisão 223 Figura 6.7: Exemplo de um programa de corte Dado que a solução de corte não é exacta, após o processo de afectação automática, pode acontecer que algumas linhas de encomenda não estejam completamente satisfeitas, e/ou existam itens por afectar. Na elaboração de programas de corte, o agente de decisão é responsável pelo tratamento destas questões. As faltas controlam-se durante a construção da solução de corte e os excedentes são afectos interactivamente, após a aplicação do algoritmo de afectação. 6.3.3 Previsão de encomendas Uma descrição dos modelos que se utilizaram para concretizar o módulo de previsão pode-se consultar em [Captivo, Respício e Rodrigues, 2000]. Estes modelos foram desenvolvidos fora do âmbito desta dissertação e resultam, em parte, do trabalho que se apresenta em [Carmo e Rodrigues, 2002]. O AD selecciona o tipo de artigo para o qual pretende estudar a respectiva série temporal de procura. A título de exemplo, na figura 6.8 apresenta-se um tipo de gráficos particularmente útil no apoio à tomada de decisão. Capítulo 6 224 Figura 6.8: Um dos ecrãs de resultados do módulo de previsão O gráfico mostra os valores mais recentes da procura observada, bem como os valores previstos para a procura acumulada futura — para os 3 meses posteriores à última encomenda. No eixo horizontal, o dia “zero” refere-se à data de consulta do sistema. A leitura do gráfico permite saber que: − a última encomenda foi pedida há 17 dias atrás (a altura desse segmento deve ser "lida" na escala vertical da esquerda, ou, com maior precisão, na tabela inferior); − as encomendas têm uma média ponderada de 52 toneladas, que é o valor previsto para a próxima encomenda; − prevê-se que a próxima encomenda surja dentro de poucos dias (os 2 dias indicados não devem ser interpretados literalmente, pois só esporadicamente essa previsão estará totalmente correcta); O sistema de apoio à decisão − 225 a procura total mensal (assinalada 30 dias após a última encomenda) é estimada em cerca de 82 toneladas (ou, correspondentemente, 245 toneladas por trimestre). 6.4 Análise e desenho do sistema O SAD funciona em computadores pessoais, em ambiente Windows. O sistema funciona localmente partilhando dados com o STCPC (Sistema Técnico-Comercial do Papel de Cacia). O respectivo diagrama de contexto apresenta-se na figura 6.9, que mostra as interacções entre o sistema e os actores intervenientes no processo. Um processo activado localmente importa a partir do STCPC os dados referentes a: — um histórico dos registos de linhas de encomenda (PCLEP versão histórico), — registos de linhas de encomenda aceites ou propostas em análise (PCLEP), e — registos de bobinas em stock livre (PCSTK). Estes ficheiros são actualizados diariamente e também a pedido do utilizador. Alterações que possam comprometer o plano de produção actual – por exemplo, o cancelamento duma encomenda de dimensão razoável – são transmitidas aos responsáveis pelo planeamento da produção por correio electrónico ou por telefone. STCPC registos de linhas de encomenda registos de bobinas em stock PCLEP PCSTK SISTEMA LOCAL SADPHP ordens de corte PCOCR pedidos de acção resultados da acção afectações de stock PCAFT AD alterações a linhas de encomenda aceites e propostas PCCPR STCPC Figura 6.9: Diagrama de contexto (comunicações) Capítulo 6 226 Em resultado das opções pedidas pelo utilizador são gerados os ficheiros de ordens de corte (PCOCR), de afectações de stock livre a linhas de encomenda (PCAFT), e de alterações a linhas de encomenda aceites ou propostas (PCCPR). Um processo local faz a exportação destes ficheiros, conduzindo à actualização das respectivas bases de dados, no âmbito do STCPC. A exportação do ficheiro de registos de ordens de corte dá início à produção do respectivo plano na máquina de corte. Gestão de dados Nas diferentes fases de tomada de decisão, o AD pode recorrer a funcionalidades de gestão de dados, que apoiam a interacção com os modelos, tais como: — pesquisa, extracção e ordenação de informação, relativa a encomendas e existências, com diferentes níveis de agregação, e segundo vários critérios; — partição de linhas de encomenda e “transferência” global e/ou parcial de linhas de encomenda para programação de corte (útil para a geração e subsequente avaliação de diferentes soluções de corte); — alteração a linhas de encomenda (quantidades e datas de entrega) – útil para experimentar diferentes cenários de distribuição da produção no processo de avaliação de propostas e planeamento da capacidade (análise o-que-se); — manutenção e actualização dos parâmetros do sistema; — monitorização e alteração de parâmetros relativos ao processo produtivo, tais como capacidade de produção disponível, ritmo de produção, perdas esperadas, restrições na máquina de corte e outros. Arquitectura O sistema está fisicamente instalado em computadores pessoais atribuídos às pessoas responsáveis por tomar as decisões nas várias áreas funcionais, nomeadamente na Direcção Comercial e de Marketing, no Departamento de Produção, e na área de Operação, como se ilustra na figura 6.10. Todos os computadores estão ligados numa rede e a transferência de dados é feita através do O sistema de apoio à decisão 227 Sistema de Informação central (SI). É recorrendo a essa rede e à transferência de dados, via SI, que se processam os fluxos de dados entre os diferentes níveis de tomada de decisão, conforme o modelo hierárquico que se descreveu na secção 3.5. Base de Local dados Data local Base Base de dados da empresa PC (Dept. Marketing) Base de Local dados Data local Base PC (Dept. Produção) SistemaCentral Base de Local dados Data local Base Máquina de corte PC (Operação) Impressora de códigos de barras Figura 6.10: Parte da arquitectura do SI da empresa – PC’s onde o sistema está instalado A informação relativa às encomendas mantém-se actualizada na base de dados da empresa. O SAD é executado localmente e os resultados do processo de tomada de decisão são guardados localmente. A transferência de dados faz-se através de processos que se executam localmente e que conduzem à actualização da base de dados central. Para evitar a vulnerabilidade do sistema e assegurar a integridade dos dados (cf. secção 3.2), atribuíram-se permissões aos diferentes tipos de utilizadores, no acesso à base de dados central. As permissões para alterar a aceitação, preços e datas de entrega das encomendas foram atribuídas ao responsável pela aceitação de encomendas, que é um funcionário do “marketing” e, que, no modelo hierárquico em 3.5, desempenha o papel de Agente de Decisão no nível Médio de Gestão. O responsável pelo planeamento pode alterar o estado das encomendas, relativamente ao seu estado de produção: quantidades planeadas, programadas e produzidas. Este agente de decisão é um funcionário da “produção”, e, no modelo hierárquico, corresponde ao Agente de Decisão no nível Baixo de 228 Capítulo 6 Gestão. Na zona de operação, o SAD apenas disponibiliza acesso a funcionalidades referentes à determinação de programas de corte. A sua utilização permite a correcção de erros na satisfação dos programas predeterminados pela “produção”, que ocorrem devido a eventuais falhas na máquina de corte ou falhas de qualidade dos produtos acabados. A produção dos itens, na máquina de corte, é comunicada ao computador na área de operação e, posteriormente, reenviada para o sistema central, permitindo a actualização dos dados na base de dados da empresa. 6.5 Conclusões e reflexão O SAD constitui uma ferramenta interactiva e de fácil utilização, com as usuais funcionalidades de gestão de dados, e com a capacidade de gerar e avaliar soluções alternativas para os diferentes subproblemas de tomada de decisão. Providencia-se ao AD a possibilidade de tirar partido do seu conhecimento e especialização sobre os problemas a tratar e poder incorporar esse conhecimento nas soluções geradas. A tomada de decisão e a consequente implementação torna-se mais rigorosa e eficaz, dada a elevada qualidade das soluções geradas pelos modelos. O sistema fornece também um maior grau de coordenação entre as diferentes fases do problema e promove a cooperação entre o “marketing” e a “produção” reduzindo os conflitos entre diferentes áreas funcionais com objectivos antagónicos. A utilização do SAD não veio substituir a responsabilidade e autoridade das pessoas envolvidas no processo de tomada de decisão, mas sim apoiá-las a executar as suas tarefas, com uma maior qualidade. Este é um aspecto determinante no sucesso da implementação dum SAD numa organização. Por outro lado, a utilização do sistema conduz a um melhoramento da interacção entre pessoas das diferentes áreas funcionais. Uma maior coordenação dos processos permite reduzir o tempo de interacção que se consumia para atingir um compromisso entre o “marketing” e a “produção”, no processo de aceitação de encomendas. Os agentes de decisão, das várias áreas funcionais, podem concentrarse na discussão de assuntos mais importantes. O sistema de apoio à decisão 229 Os benefícios para a empresa consistem numa redução dos custos globais. No curto prazo, esta redução é atingida pela elevada qualidade das soluções e pela redução de tempo gasto na geração destas soluções. A mais longo prazo, a redução dos custos decorre duma melhor organização da informação relativa à produção, uma maior coordenação dos processos, reduções nos tempos de entrega das encomendas, e, consequentemente, um melhoramento do serviço aos clientes. A empresa não foi capaz de dar uma estimativa das reduções de custos ou dos melhoramentos na qualidade do negócio que se alcançaram. A utilização do sistema permitiu a sua validação. A “sobrevivência” do SAD mostrou que ele é vantajoso. 230 Capítulo 6 Capítulo 7 Conclusões O trabalho que se apresentou nesta dissertação tem duas vertentes. Por um lado, o desenvolvimento de ferramentas informáticas adequadas à resolução de vários problemas de planeamento e escalonamento da produção, que ocorrem num sistema produtivo real da indústria papeleira. Esta vertente orientou-se para a resolução do caso de estudo, que se descreve no capítulo 2. Por outro lado, essa experiência motivou o estudo de problemas relacionados e a concepção de novos algoritmos para a sua resolução. Passa-se a recapitular a organização do texto, dando especial relevância às contribuições e resultados inovadores, que se apresentaram em cada capítulo. No primeiro capítulo é dada uma panorâmica geral da dissertação. Descrevemse as dificuldades associadas a resolver problemas reais na área de planeamento e escalonamento da produção. Perspectivam-se as abordagens que se utilizaram, e enumeram-se as várias contribuições. 230 Capítulo 7 No capítulo 2, descreve-se o problema geral que constitui o caso de estudo. Identifica-se o processo de tomada de decisão, as responsabilidades das unidades funcionais intervenientes e modelaram-se as hierarquias necessárias à coordenação. Neste problema, intervêm agentes de decisão posicionados em diferentes áreas organizacionais. Estão presentes diversos objectivos, alguns dos quais conflituosos, e um elevado número de restrições operacionais. Existe a necessidade de coordenar as interacções entre os diferentes níveis funcionais e operacionais. O sistema é muito dinâmico e instável. Para responder a elevados níveis da procura é necessário explorar ao máximo a capacidade disponível, que é limitada. À minimização de perdas de produção, inerentes ao processo de fabrico, correspondem problemas de grande complexidade. Nestas condições, são necessários mecanismos de planeamento adequados, eficientes e eficazes, mas também suficientemente flexíveis para lidar com situações de instabilidade. No capítulo 3 apresenta-se e discute-se o desenho do modelo de decisão hierárquico, de dois níveis, que representa o processo de decisão para o planeamento e escalonamento da produção. O modelo representa uma coordenação eficiente das áreas funcionais da organização, e a coerência das interdependências resultantes. Existe uma hierarquia bem definida, na medida em que, em termos temporais, as decisões do “marketing” antecedem as da “produção”, e condicionamnas. No entanto, é ao nível da “produção” que se verificam as restrições, o que lhe confere um elevado poder de reacção em relação às instruções do “marketing”. Isto significa que não se está face a uma hierarquia top-down pura, e as decisões do nível superior devem antecipar as do nível inferior, de forma a garantir a sua coerência e exequibilidade. A principal contribuição/inovação é a tese de que em situações de tomada de decisão hierárquica e em presença de objectivos conflituosos, pode ser útil a partilha dum modelo pelos diferentes níveis de tomada de decisão. Os diferentes agentes de decisão podem utilizar o mesmo modelo base, mas com perspectivas diferentes. O modelo partilhado funciona assim como um mediador dos conflitos. Neste caso, em concreto, partilha-se o modelo de Conclusões 231 planeamento da capacidade. Esta estratégia permite uma redução dos conflitos entre o “marketing” e a “produção”. O capítulo 4 dedica-se à programação do corte, e nele abordaram-se o problema de corte e os problemas de sequenciamento de padrões de corte. Apresenta-se a formulação matemática que se utilizou para modelar o problema de corte do caso em estudo. Modificou-se a formulação de colunas clássica, [Gilmore e Gomory, 1963], introduzindo limites superiores nas restrições de satisfação da procura. Este tipo de estratégia, pouco usual na literatura, permite obter soluções sem sobreprodução, e a consequente geração de stocks, aspecto relevante nas aplicações práticas do problema. O procedimento de resolução é uma heurística que integra a técnica de geração implícita de colunas. Concretizou-se esta heurística num ambiente de apoio à decisão, que permite ao responsável pela elaboração dos programas de corte, face à análise das soluções geradas, aproveitar a largura não utilizada para produzir itens adicionais. Outro aspecto particular deste modelo diz respeito às condições muito específicas de admissibilidade dos padrões a gerar, o que obrigou a desenvolver um algoritmo de geração de colunas adaptado. Um programa de corte obtém-se recorrendo a uma heurística que procede à afectação dos itens nas soluções de corte às encomendas dos clientes. Concebeu-se este algoritmo com o objectivo de minimizar o espalhamento das encomendas no programa, e concretizou-se num ambiente interactivo. Fora do âmbito do caso de estudo, desenvolveu-se um procedimento heurístico para o problema de minimização do número de padrões numa solução de corte. Os resultados mostraram a sua superioridade, face a outros algoritmos heurísticos que se apresentam na literatura. Abordou-se o problema de sequenciamento de padrões, com o objectivo de minimização do número de movimentos das navalhas num programa de corte. Desenvolveram-se várias heurísticas para a sua resolução, e os resultados das experiências demonstram a sua aplicabilidade em situações reais. 232 Capítulo 7 Estudou-se o problema de sequenciamento de padrões bi-objectivo, que considera a minimização do número máximo de pilhas abertas e a minimização do espalhamento médio das encomendas. Esta é uma abordagem inovadora, pois a literatura refere-se apenas aos problemas de objectivo único [Respício e Captivo, 2002a]. Para obter soluções, adaptou-se um algoritmo evolutivo de optimização multi-objectivo, e concebeu-se um algoritmo híbrido que integra mecanismos de pesquisa local no algoritmo evolutivo. A experiência computacional mostrou que as soluções são muito superiores às que se obtêm por uma das melhores heurísticas de Yuen [Yuen, 1995]. Apesar dos algoritmos apresentarem tempos de execução elevados, justifica-se a sua concretização em situações reais. O sequenciamento de padrões é o passo que antecede a implementação dum programa de corte. A análise do conjunto de soluções potencialmente não dominadas permite um conhecimento amplo das possíveis alternativas, que não se poderia alcançar resolvendo os respectivos problemas de objectivo único. Enriquece-se assim a capacidade de escolha do responsável pelo planeamento. Por outro lado, o estudo deste problema permitiu estabelecer uma relação entre os dois objectivos, relação sobre a qual a literatura apresenta algumas conjecturas teóricas. Concluiu-se que o valor dum dos objectivos não varia significativamente se se optimizar esse ou o outro objectivo. No capítulo 5 aborda-se a integração do problema de corte com o problema de planeamento e escalonamento da capacidade. Esta é uma orientação inovadora e parte da hipótese que, numa indústria de corte, o problema de planeamento da capacidade deve integrar-se com o problema de corte. Concebeu-se e concretizou-se uma nova heurística para resolver o problema do caso de estudo. Este procedimento começa por determinar as quantidades a produzir, num horizonte temporal discreto, e depois procede à formação de lotes e ao seu sequenciamento. O sequenciamento e escalonamento faz-se gerando várias soluções através duma regra de prioridade, e escolhendo a solução que minimiza a duração total do programa e o número de tarefas em atraso. Esta estratégia é especialmente Conclusões 233 adaptada à realidade, onde muitas vezes a capacidade de produção não é suficiente para produzir as encomendas aceites. Formulou-se um novo problema que estende o problema de corte a uma situação multiproduto e multiperíodo, introduzindo restrições de capacidade nos períodos e variáveis de stock inicial [Respício e Captivo, 2001]. Este modelo representa a realidade dos sistemas produtivos, em que a produção e corte de peças, com diferentes características, é afectada à capacidade de produção disponível, que é limitada. Desenvolveu-se um algoritmo de partição e geração de colunas para resolver este problema. O algoritmo tira partido da utilização de um limite inferior para limitar superiormente o valor da solução a pesquisar. A ramificação faz-se utilizando duas regras, ambas multicoluna. A experiência computacional mostra que a integração dos problemas é vantajosa. O modelo permite explorar uma maior variedade de larguras a combinar e identificar os itens, e respectivas quantidades, para os quais é vantajosa a produção antecipada. Garante-se a admissibilidade das soluções assim geradas através das restrições de capacidade. Os resultados são promissores, mas o algoritmo apresenta deficiências para as instâncias em que a capacidade disponível é igual à capacidade mínima necessária para satisfazer a procura em cada período. Ou seja, exigem-se alguns melhoramentos prévios à concretização deste algoritmo em aplicações reais. Eventuais melhoramentos referem-se à adequação de outras estratégias de ramificação e/ou à introdução de cortes de admissibilidade, ou cortes duais. O capítulo 6 expõe o Sistema de Apoio à Decisão que se concretizou para resolver o problema do caso em estudo [Respício, Captivo e Rodrigues, 2002]. O recurso a modelos complicados, integrado com a extracção e ordenação de informação, permite a geração e a análise de vários cenários. As soluções dos modelos são apresentadas como sugestões e o agente de decisão pode interagir com os modelos, introduzindo a sua experiência e preferências na resolução dos problemas. Disponibilizam-se mecanismos que permitem alterar as soluções de forma a gerar e avaliar alternativas. O sistema é uma ferramenta, e o agente de 234 Capítulo 7 decisão é totalmente responsável pelas opções que decide implementar. A utilização é partilhada por agentes com diferentes objectivos e perspectivas, o que confere ao sistema uma função de mediador na tomada de decisão. Como conclusões finais, poder-se-á dizer que este trabalho é relevante pela importância da sua componente aplicacional e pela sua originalidade. Concebeu-se uma abordagem robusta e eficaz para apoiar a tomada de decisão por vários agentes, que trabalham em âmbitos diversos, em diferentes áreas funcionais, com múltiplos objectivos, conflituosos, e com um elevado número de restrições. A resolução dos subproblemas foi integrada num Sistema de Apoio à Decisão permitindo a interacção entre o agente de decisão e os modelos. Para garantir a coerência das decisões nos níveis superiores, e reduzir conflitos funcionais, adoptou-se uma estratégia de integração de problemas a diferentes níveis. Em termos de originalidade, contribuiu-se com a concepção e concretização de novas heurísticas para vários problemas já explorados na literatura, propuseram-se dois novos problemas, e conceberam-se algoritmos para a sua resolução. A saber, o problema de sequenciamento de padrões bi-objectivo, e o problema de planeamento da capacidade integrado com o problema de corte. Bibliografia [Adenso-Díaz, González e García, 1998] Adenso-Díaz, B., González, M. e García, E., 1998, “A hierarchical approach to managing dairy routing”, Interfaces, 28, pp 21-31. [Allwood e Goulimis, 1988] Allwood, J. e Goulimis, C., 1988, “Reducing the number of cutting patterns in one-dimensional cutting stock problems”, Control report EE/CON/IC/88/10, Electrical Engineering Department, Imperial College, London, 8 páginas. [Amaro, Hendry e Kingsman, 1999] Amaro, G., Hendry, L. C. e Kingsman, B., 1999, “Competitive advantage, customisation and a new taxonomy for non make-to-stock companies”, International Journal of Operations & Production Management, 19, pp 349-371. [Anderson, 1992] Anderson, T., 1992, “Step into my parlor: a survey of strategies and techniques for effective negotiation”, Business Horizons, May-June, pp 71-76. [Axsäter, 1981] Axsäter, S., 1981, “Aggregation of product data for hierarchical production planning”, Operations Research, 35, pp 744-756. [Belov e Scheithauer, 2002] Belov, G. e Scheithauer, G., 2002, “A cutting plane algorithm for the onedimensional cutting stock problem with multiple stock lengths”, European Journal of Operational Research, 141, pp 274-294. 236 Bibliografia [Bitran e Tirupati, 1993] Bitran, G. R. e Tirupati, D., 1993, “Hierarchical Production Planning” in Graves, S. C., Rinnooy Kan, A. H. e Zipkin, P.H. (eds.), Logistics of Production and Inventory, Handbooks in Operations Research and Management Science, 4, North-Holland. [Brehmer, 1991] Brehmer, B., 1991, “Modern information technology: timescales and distributed decision making”, in Rasmussen, J., Brehmer B. and Leplat, J. (eds.), Distributed Decision Making: Cognitive Models for Cooperative Work, John Wiley & Sons Ltd. [Captivo, Respício e Rodrigues, 2000] Captivo M. E., Respício A. e Rodrigues A. J., 2000, “Um sistema de apoio à decisão para o planeamento hierárquico da produção de bobinas de papel”, em Antunes, C. H. e Tavares, L. V. (eds), Casos de Aplicação da Investigação Operacional, McGraw-Hill Portugal. [Carmo e Rodrigues, 2002] Carmo, J.L. e Rodrigues, A.J., 2002, “Identificação de redes neuronais gaussianas como modelos de previsão”, Investigação Operacional, 22, pp 43-57. [Carravilla e Sousa, 1995] Carravilla, M.A., e Sousa, J. P., 1995, “Hierarchical production planning in a make-to-order company: A case study”, European Journal of Operational Research, 86, pp 43-56. [Coello, 2000] Coello, A.C.C., 2000, An updated survey of GA-based multiobjective optimization techniques, ACM Computing Surveys, 32, pp 109-143. [Dauzère-Péres e Lasserre, 1994] Dauzère-Péres, S. e Lasserre, J. B., 1994, An integrated approach in production planning and scheduling, Lecture Notes in Economics and Mathematical Systems 411, Springer-Verlag, Berlin, Germany. [Degraeve e Peeters, 2002] Degraeve, Z., e Peeters, M., 2002 (to appear), “Optimal integer solutions to industrial cutting-stock problems: part 2, benchmark results”, INFORMS Journal on Computing. [Degraeve e Schrage, 1999] Degraeve, Z., e Schrage, L., 1999, “Optimal integer solutions to industrial cuttingstock problems”, INFORMS Journal on Computing, 11, pp 406-419. [Desrochers, Desrosiers e Solomon, 1992] Desrochers, M., Desrosiers, J. e Solomon, M., 1992, “A new optimization algorithm for the vehicle routing problem with time windows”, Operations Research, 40, pp 342-354. Bibliografia 237 [Desrosiers, Soumis e Desrochers, 1984] Desrosiers, J., Soumis, F., e Desrochers, M., 1984, “Routing with time windows by column generation”, Networks, 14, pp 545-565. [Dowsland e Dowsland, 1992] Dowsland, K. A. e Dowsland, W. B., 1992, “Packing problems”, European Journal of Operational Research, 56, pp 2-14. [Drexl e Kimms, 1997] Drexl, A. e Kimms, A., 1997, “Lot sizing and scheduling – survey and extensions”, European Journal of Operational Research, 99, pp 221-235. [Dyckhoff, 1990] Dyckhoff, H., 1990, “A typology of cutting and packing problems”, European Journal of Operational Research, 44, pp 145-159. [Dyson e Gregory, 1974] Dyson, R. G., e Gregory, A. S., 1974, “The cutting stock problem in the flat glass industry”, Operational Research Quarterly, 25, pp 41-54. [Easwaran et al, 1996] Easwaran, A. M., Drossopoulou, S. e Goulimis, C., 1996, “A genetic algorithm approach to the knife change minimisation problem”, Department of Computing, Imperial College, Report Number 16/96, 21 páginas. [Eliashberg e Steinberg, 1993] Eliashberg, J. e Steinberg, R., 1993, “Marketing-production joint decision-making” in Eliashberg, J. e Lilien, G. L. (eds.), Marketing, Handbooks in Operations Research and Management Science, 5, North-Holland. [ESGWI, 1996] 29th European Study Group With Industry, 1996, “Pattern reduction in paper cutting”, Greycon, Mathematical Institute, Oxford University, 15 páginas. [Faggioli e Bentivoglio, 1998] Faggioli, E. e Bentivoglio, C.A., 1998, “Heuristic and exact methods for the cutting sequencing problem”, European Journal of Operational Research, 110, pp 564-575. [Farley, 1990] Farley, A. A., 1990, “A note on bounding a class of linear programming problems, including cutting stock problems”, Operations Research, 38, pp 922-923. [Fink e Voss, 1999] Fink, A. e Voss, S., 1999, “Applications of modern heuristic search methods to pattern sequencing problems”, Computers and Operations Research, 26, pp 17-34. 238 Bibliografia [Fischetti, Salazar e Toth, 1997] Fischetti, M., Salazar, J. e Toth, P., 1997, “A branch-and-cut algorithm for the symmetric generalized travelling salesman problem”, Operations Research, 45, pp 378-394. [Foerster e Wäscher, 1998] Foerster, H. e Wäscher, G., 1998, “Simulated annealing for order spread minimization problem in sequencing cutting patterns”, European Journal of Operational Research, 110, pp 272-281. [Garey e Johnson, 1979] Garey, M. R. e Johnson, D. S., 1979, Computers and Intractability, Freeman. [Gilmore e Gomory, 1961] Gilmore, P. C. e Gomory, R. E., 1961, “A linear programming approach to the cutting-stock problem”, Operations Research, 9, pp 849-859. [Gilmore e Gomory, 1963] Gilmore, P. C. e Gomory, R. E., 1963, “A linear programming approach to the cutting-stock problem - part II”, Operations Research, 11 , pp 863-887. [Goulimis, 1990] Goulimis, C., 1990, “Optimal solutions for the cutting stock problem”, European Journal of Operational Research, 44, pp 197-208. [Günther, 1986] Günther, H. O., 1986, “The design of an hierarchical model for production planning and scheduling”, in Axsäter, S., Schneeweiss, C., and Silver, S. (eds.), Multi-Stage Production Planning and Inventory Control, Lecture Notes in Economics and Mathematical Systems, Springer-Verlag, 266, pp 225-260. [Haessler, 1971] Haessler, R. W., 1971, “A heuristic programming solution to a nonlinear cutting stock problem”, Management Science, 17, pp B793-B802. [Haessler, 1975] Haessler, R. W., 1975, “Controlling cutting pattern changes in one-dimensional trim problems”, Operations Research, 23, pp 483-493. [Haessler e Talbot, 1983] Haessler, R. W. e Talbot, F. B., 1983, “A 0-1 model for solving the corrugator trim problem”, Management Science, 29, pp 200-209. [Hax e Meal, 1975] Hax, A. C., e Meal, H. C., 1975, “Hierarchical integration of production planning and scheduling”, in M. Geisler (ed.), Logistics, TIMS Studies in Management Science, 1, Elsevier, Amsterdam, pp 53-69. Bibliografia 239 [Hendry, 1998] Hendry, L. C., 1998, “Applying world class manufacturing to make-to-order companies: problems and solutions”, International Journal of Operations & Production Management, 18, pp 1086-1100. [Hendry, Fok e Shek, 1996] Hendry, L., Fok, K. e Shek, K., 1996, “A cutting stock and scheduling problem in the copper industry”, Journal of the Operational Research Society, 47, pp 38-47. [Hinxman, 1980] Hinxman, A. I., 1980, “The trim-loss and assortment problems: a survey”, European Journal of Operational Research 5, pp 8-18. [Holland, 1995] Holland, J. H., 1995, Hidden order: how adaptation builds complexity, AddisonWesley Publishing Company, Inc . [Horn, 1997] Horn J., 1997, “Multicriterion decision making”, In Handbook of Evolutionary Computation, Back, T., Fogel, D.B. e Michalewicz, Z. (eds.), Publishing and Oxford University Press, F1.9, pp 1-15. [Horowitz e Sahni, 1974] Horowitz, E. e Sahni, S., 1974, “Computing partitions with applications to the knapsack problem”, Journal of the ACM, 21, pp 277-292. [Johnston, 1984] Johnston, R. E., 1984, “Cutting patterns and cutter schedules”, ASOR Bulletin, 4, pp 3-13. [Johnston, 1986] Johnston, R. E., 1986, “Rounding algorithms for cutting stock problems”, AsiaPacific Journal of Operational Research, 3, pp 166-171. [Johnston, 1990] Johnston, R. E., 1990, “Reducing cardinality in linear programmed cutting stock solutions”, Asia-Pacific Journal of Operational Research, 7, pp 1-8. [Johnston, 1995] Johnston, R. E., 1995, “’Seamless’ production scheduling in the paper industry”, artigo apresentado no TIMS XXXIII International Meeting, Singapore, 7 páginas. [Kantorovich, 1960] Kantorovich, L. V., 1960, “Mathematical methods of organising and planning production”, Management Science, 6, pp 366-422. 240 Bibliografia [Keen e Morton, 1978] Keen, P. e Morton, M., 1978, Decision Support Systems: an organizational perspective, Addison-Wesley Publishing Company, United States of America. [Kersten, 1987] Kersten, G., 1987, “On two roles decision support systems can play in negotiations”, Information Processing & Management, 23, pp 605-614. [Kersten, 1999] Kersten, G., 1999, “Decision making and decision support”, in Kersten, G., Mikolajuk, Z. e Yeh, A. G. (eds.), Decision Support Systems for Sustainable Development: a Resource Book of Methods and Applications, International Development Research Centre and Kluwer Academic Publishers, United States of America. [Kersten e Cray, 1996] Kersten, G. E., e Cray, D., 1996, “Perspectives on representation and analysis of negotiation: towards cognitive support systems”, in Shakun, M. F. (ed.), Negotiation Processes: Modeling Frameworks and Information Technology, Kluwer Academic Publishers, United States of America. [Keskinocak et al, 2001] Keskinocak, P., Goodwin, R., Wu, F., Akkiraju, R. e Murthy, S., 2001, “Decision support for managing an electronic supply chain”, Electronic Commerce Research, 1, pp 15-31. [Keskinocak et al, 1998] Keskinocak, P., Wu F., Goodwin, R., Murthy, S., Akkiraju, R., Kumaran, S. e Derebail, A., 1998, “Scheduling solutions for the paper industry”, Research Report RC21279, IBM, 30 págs. [Koopman e Pool, 1991] Koopman, P. e Pool, J., 1991, “Organizational decision making: models, contingencies and strategies”, in Rasmussen, J., Brehmer B. e Leplat, J. (eds.), Distributed Decision Making: Cognitive Models for Cooperative Work, John Wiley & Sons Ltd. [Kuik, Salomon e van Wassenhove, 1994] Kuik, R., Salomon M., e van Wassenhove, L. N., 1994, “Batching decisions: structure and models”, European Journal of Operational Research, 75, pp 243-263. [Lasserre e Mercé, 1990] Lasserre, J. B. e Mercé, C., 1990, “Robust hierarchical production planning under uncertainty”, Annals of Operations Research, 26, pp 73-87. Bibliografia 241 [Linhares e Yanasse, 2002] Linhares A e Yanasse H.H., 2002, “Connections between cutting-pattern sequencing, VLSI design, and flexible machines”, Computers & Operations Research, 29, pp 1759-1772. [Madsen, 1988] Madsen, O., 1988, “An application of travelling-salesman routines to solve patternallocation problems in the glass industry”, Journal of Operational Research Society, 39, pp 249-256. [Marcotte, 1985] Marcotte, O., 1985, “The cutting stock problem and integer rounding”, Mathematical Programming, 35, pp 82-92. [Marcotte, 1986] Marcotte, O., 1986, “An instance of the cutting stock problem for which the rounding property does not hold”, OR Letters, 4, pp 239-243. [Martello e Toth, 1990] Martello, S. e Toth, P., 1990, Knapsack problems: algorithms and computer implementations, Wiley, New York. [Martinich, 1997] Martinich, J. S., 1997, Production and operations management: an applied modern approach, John Wiley & Sons, Inc., United States of America. [McCulloch e Pitts, 1943] McCulloch, W. e Pitts, W., 1943, “A logical calculus of the ideas immanent in nervous activity”, Bulletin of Mathematical Biophysics, 7, pp 115-133. [Michalewicz, 1994] Michalewicz, Z., 1994, Genetic Algorithms + Data Structures = Evolution Programs, Springer-Verlag, United States of America. [Miller, 2001] Miller, T., 2001, Hierarchical Operations and Supply Chain Planning, SpringerVerlag, Great Britain. [Monma e Potts, 1989] Monma, C. L. e Potts, C. N., 1989, “On the complexity of scheduling with batch setup times”, Operations Research, 37, pp 798-804. [Mukhopadhyay e Gupta, 1998] Mukhopadhyay, S. K. e Gupta, A. V., 1998, “Interfaces for resolving marketing, manufacturing and design conflits – a conceptual framework”, European Journal of Marketing, 32, pp 101-124. 242 Bibliografia [Murthy et al, 1999] Murthy, S., Akkiraju, R., Goodwin, R., Keskinocak, P., Rachlin, J., Wu, F., Yeh, J., Fuhrer, R., Kumaran, S., Agarwal, A., Sturzenbecker, M., Jayaraman, R. e Daigle, R., 1999, “Cooperative multiobjective decision support for the paper industry”, Interfaces, 29, pp 5-30. [Nemhauser e Park, 1991] Nemhauser, G. e Park, S., 1991, “A Polyhedral Approach to Edge Coloring”, Operations Research Letters, 10, pp 315 -322. [Nonas e Thorstenson, 2000] Nonas, S. L. e Thorstenson, A., 2000, “A combined cutting-stock and lot-sizing problem”, European Journal of Operational Research, 120, pp 327-342. [Noon e Bean, 1991] Noon, C. E. e Bean, J. C., 1991, “A lagrangian based approach for the asymmetric generalized traveling salesman problem”, Operations Research, 39, pp 623-632. [Özdamar, Bozyel e Birbil, 1998] Özdamar, L., Bozyel M. A., e Birbil, S. I., 1998, “A hierarchical support system for production planning (with case study)”, European Journal of Operational Research, 104, pp 403-422. [Pickard e Yeager, 1997] Pickard, G. e Yeager, R., 1997, “Paper machine scheduling yields gains at James River Naheola Mill”, Pulp and Paper, 71, pp 125-129. [Pierce, 1970] Pierce, J. F., 1970, “Pattern sequencing and matching in stock cutting operations”, Tappi, 53, pp 668-678. [Potts e Van Wassenhove, 1992] Potts, C. N. e Van Wassenhove, L. N., 1992, “Integrating scheduling with batching and lot-sizing: a review of algorithms and complexity”, Journal of the Operational Research Society, 43, pp 395-406. [Potts e Kovalyov, 2000] Potts, C. N. e Kovalyov, M. Y., 2000, “Scheduling with batching: a review”, European Journal of Operational Research, 120, pp 228-249. [Rasmussen, 1991] Rasmussen, J., 1991, “Modelling distributed decision making”, in Rasmussen, J., Brehmer B. and Leplat, J. (eds.), Distributed decision making: cognitive models for cooperative work, John Wiley & Sons Ltd. [Respício, 1994] Respício, A., 1994, “Um sistema de apoio à decisão no planeamento de produção”, Investigação Operacional, 14, pp 184-205. Bibliografia 243 [Respício e Captivo, 2001] Respício, A. e Captivo. M.E., 2001, “Integrating the cutting stock problem in capacity planning”, Actas de Optima 2001 - IV Congreso Chileno de Investigación Operativa, Chile, 9 páginas. [Respício e Captivo, 2002a] Respício, A. e Captivo, M.E., 2002, “A bi-objective approach to sequencing cutting patterns”, em revisão no Journal of Multiple Criteria Decision Analysis. [Respício e Captivo, 2002b] Respício, A. e Captivo, M.E., 2002, “Cutting stock within a production planning problem: exact solutions”, comunicação apresentada em SICUP 2002, IFORS 2002, the 16-th triennial conference of the International Federation of Operational Research Societies, Escócia. [Respício, Captivo e Paixão, 1996] Respício, A., Captivo, M. E. e Paixão, J., 1996, “Scheduling of cutting orders in paper rolls manufacturing”, comunicação apresentada no Symposium on Combinatorial Optimization (CO96), Imperial College of Science, Technology and Medicine, England. [Respício, Captivo e Rodrigues, 2002] Respício, A., Captivo, M. E. e Rodrigues, A. J., 2002, “A DSS for production planning and scheduling in the paper industry”, Decision making and decision support in the internet age - Proceedings of the DSIAge2002, pp 298-308. [Sauter, 1997] Sauter, V., 1997, Decision Support Systems: an applied managerial approach, John Wiley & Sons, Inc, USA. [Scheithauer e Terno, 1995a] Scheithauer, G. e Terno, J., 1995, “A branch and bound algorithm for solving onedimensional cutting stock problems exactly”, Applicatione Mathematikae, 23, pp 151-167. [Scheithauer e Terno, 1995b] Scheithauer, G. e Terno, J., 1995, “The modified integer round-up property of the one-dimensional cutting stock problem”, European Journal of Operational Research, 84, pp 562-571. [Scheithauer et al, 2001] Scheithauer, G., Terno, J., Müller, A. e Belov, G., 2001, “Solving one-dimensional cutting stock with a cutting plane algorithm”, Journal of the Operational Research Society, 52, pp 1390-1401. [Schneeweiss, 1995] Schneeweiss, C., 1995, “Hierarchical structures in organisations – a conceptual framework”, European Journal of Operational Research, 86, pp 5-31. 244 Bibliografia [Schneeweiss, 1999] Schneeweiss, C., 1999, Hierarchies in Distributed Decision Making, SpringerVerlag, Germany. [Schilling e Georgiadis, 2002] Schilling, G. e Georgiadis, M.C., 2002, “An algorithm for the determination of optimal cutting patterns”, Computers & Operations Research, 29, pp 1041-1058. [Schutten, 1996] Schutten, J. M. J., 1996, Shop floor scheduling with setup times - efficiency versus leadtime performance, Ph.D. thesis, Twente University, Twente, The Nederlands. [Söhner e Schneeweiss, 1995] Söhner, V. e Schneeweiss, C., 1995, “Hierarchically integrated lot size optimization”, European Journal of Operational Research, 86, pp 73-90. [Swamidass, Baines e Darlow, 2001] Swamidass, P. M., Baines T. e Darlow, N., 2001, “The role of manufacturing and marketing managers in strategy development – Lessons from three companies”, International Journal of Operations and Production Management, 21, pp 933-948. [Szczepánski e Wierzbicki, 2002] Szczepánski M. e Wierzbicki A.P., 2002, “Multiple criteria evolutionary algorithms in relation to reference point approaches and nadir estimation”, artigo apresentado em MCDM Winter Conference 2002-16th MCDM world conference, Austria, 30 páginas. [Thomas e McClain, 1993] Thomas, L. J. e McClain, J. O., 1993, “An overview of production planning” in Graves, S. C., Rinnooy Kan, A. H. G e Zipkin, P.H. (eds.), Logistics of Production and Inventory, Handbooks in Operations Research and Management Science, 4, North-Holland. [Valério de Carvalho, 1999] Valério de Carvalho, J. M., 1999, “Exact solution of bin-packing problems using column generation branch-and-bound”, Annals of Operations Research, 86, pp 629659. [Valério de Carvalho, 2002] Valério de Carvalho, J. M., 2002, “LP models for bin packing and cutting stock problems”, European Journal of Operational Research, 141, pp 253-273. [Vance, 1993] Vance, P., 1993, Crew scheduling, cutting stock, and column generation: solving huge integer programs, Ph.D. thesis, Georgia Institute of Technology, Atlanta. Bibliografia 245 [Vance, 1998] Vance, P., 1998, “Branch-and-price algorithms for the one-dimensional cutting stock problem”, Computational Optimization and Applications, 9, pp 211-228. [Vance et al., 1996] Vance, P., Barnhart, C., Johnson, E., e Nemhauser, G., 1996, “Solving binary cutting stock problems by column generation and branch-and-bound”, Computational Optimization and Applications, 3, pp 111-130. [Vanderbeck, 1998] Vanderbeck, F., 1998, “Lot-sizing with start-up times”, Management Science, 44, pp 1409-1425. [Vanderbeck, 1999] Vanderbeck, F., 1999, “Computational study of a column generation algorithm for bin packing and cutting stock problems”, Mathematical Programming, 86, pp 565594. [Vanderbeck, 2000a] Vanderbeck, F., 2000, “Exact algorithm for minimising the number of setups in the one-dimensional cutting stock problem”, Operations Research, 48, pp 915-926. [Vanderbeck, 2000b] Vanderbeck, F., 2000, “On Dantzig-Wolfe decomposition in integer programming and ways to perform branching in a branch-and-price algorithm”, Operations Research, 48, pp 111-128. [Vanderbeck e Wolsey, 1996] Vanderbeck, F. e Wolsey, L., 1996, “An exact algorithm for IP column generation”, Operations Research Letters, 19, pp 151-159. [Veldhuizen e Lamont, 1998] Veldhuizen D.A.V. e Lamont G.B., 1998, “Multiobjective evolutionary algorithm research: A history and analysis”, Technical Report TR-98-03, Air Force Institute of Technology, Wright-Patterson AFB: Ohio, 88 páginas. [Wang e Wäscher, 2002] Wang, P. e Wäscher, G., 2002, “Cutting and packing”, European Journal of Operational Research, 141, pp 239-240. [Wäscher e Gau, 1996] Wäscher, G. e Gau, T., 1996, “Heuristics for the integer one-dimensional cutting stock problem – a computational study”, Operations Research-Spektrum, 18, pp 131-144. [Whang, 1995] Whang, S., 1995, “Coordination in operations: a taxonomy”, Journal of Operations Management, 12, pp 413-422. 246 Bibliografia [Woerlee, 1991] Woerlee, A. P., 1991, Decision support systems for production planning, Ph.D. Thesis, Econometric Institute, Erasmus University Rotterdam, The Netherlands. [Wolsey, 1998] Wolsey, L. A.,1998, Integer Programming, John Wiley & Sons, Inc, United States of America. [Yanasse, 1997] Yanasse, H., 1997, “On a pattern sequencing problem to minimize the maximum number of open stacks”, European Journal of Operational Research, 100, pp 454463. [Yuen, 1991] Yuen, B. J., 1991, “Heuristics for sequencing cutting patterns”, European Journal of Operational Research, 55, pp 183-190. [Yuen, 1995] Yuen, B. J., 1995, “Improved heuristics for sequencing cutting patterns”, European Journal of Operational Research, 87, pp 57-64. [Yuen e Richardson, 1995] Yuen, B. J., e Richardson, K., 1995, “Establishing the optimality of sequencing heuristics for cutting stock problems”, European Journal of Operational Research, 84, pp 590-598. [Zitzler, 2002] Zitzler E., 2002 (to appear), “Evolutionary algorithms for multiobjective optimisation”, em EUROGEN 2001 - Evolutionary Methods for Design, Optimisation and Control with Applications to Industrial Problems, Giannakoglou, K., Tsahalis D., Periaux, J., Papailiou, K. e Fogarty, T. (eds.), 8 páginas. [Zitzler, Deb e Thiele, 2000] Zitzler E., Deb K. e Thiele L., 2000, “Comparison of multiobjective evolutionary algorithms: empirical results”, Evolutionary Computation, 8, pp 173-195. [Zitzler, Laumanns e Thiele, 2002] Zitzler E., Laumanns M. e Thiele L., 2002 (to appear), “SPEA2: Improving the Strength Pareto Evolutionary Algorithm for Multiobjective Optimisation”, em EUROGEN 2001 - Evolutionary Methods for Design, Optimisation and Control with Applications to Industrial Problems, Giannakoglou, K., Tsahalis, D., Periaux, J., Papailiou, K., Fogarty, T. (eds.), 6 páginas.