UNIVERSIDADE DO NORTE FLUMINENSE TESE DE DOUTORADO GERENCIAMENTO DE PROJETO: META-HEURÍSTICAS PARA OTIMIZAÇÃO DO ESCALONAMENTO DE ATIVIDADES NA EXPLORAÇÃO E PRODUÇÃO DE PETRÓLEO SÉRGIO VASCONCELLOS MARTINS [email protected] CAMPOS DOS GOITACAZES - RJ Abril - 2000 Centro de Ciência e Tecnologia Laboratório de Engenharia de Produção ♥ Sérgio Vasconcellos Martins 2000 vi GERENCIAMENTO DE PROJETO: META-HEURÍSTICAS PARA OTIMIZAÇÃO DO ESCALONAMENTO DE ATIVIDADES NA EXPLORAÇÃO E PRODUÇÃO DE PETRÓLEO SÉRGIO VASCONCELLOS MARTINS “Tese apresentada ao Centro de Ciências e Tecnologia, da Universidade Estadual do Norte Fluminense, como parte das exigências para obtenção do título de Doutor em Ciências de Engenharia na área de concentração de Engenharia de Produção” Orientador: Prof. Geraldo Galdino de Paula Júnior, D.Sc. CAMPOS DOS GOITACAZES - RJ Abril - 2000 vii GERENCIAMENTO DE PROJETO: META-HEURÍSTICAS PARA OTIMIZAÇÃO DO ESCALONAMENTO DE ATIVIDADES NA EXPLORAÇÃO E PRODUÇÃO DE PETRÓLEO SÉRGIO VASCONCELLOS MARTINS “Tese apresentada ao Centro de Ciências e Tecnologia, da Universidade Estadual do Norte Fluminense, como parte das exigências para obtenção do título de Doutor em Ciências de Engenharia na área de concentração de Engenharia de Produção” Aprovada em 06 de Abril de 2000. Comissão Examinadora: Prof. Nelson Maculan, Ph.D. – UFRJ Prof. Nélio Domingues Pizzolato, Ph.D. – PUC-RJ Prof. José Ramon Arica Chavez, D.Sc. – UENF Prof. David Mauricio Sanchez, D.Sc. – UNMSM, PUCP Prof. Geraldo Galdino de Paula Jr., D.Sc. – UENF Orientador viii À minha família, com todo afeto. ix Mais importante é como gerenciamos o nosso projeto de vida... x Agradecimentos À minha mãe, Iza Vasconcellos, mestra de minha vida, cujos inspirados conselhos sempre iluminaram o gerenciamento de meu projeto de vida. À minha mulher, Andréa, pela insuspeitada paciência com que suportava minhas ausências, tão envolvido estava em meu projeto. A toda minha família, cujo vibrante encorajamento sempre me animou ao longo de toda minha vida. Ao meu orientador, Prof. Dr. Geraldo Galdino, pelo prestimoso suporte e admirável disposição com que me ouvia sempre. Ao meu co-orientador, Prof. Dr. David Mauricio, pelo extraordinário estímulo e invencível dedicação, minha mais sentida gratidão. Ao meu primeiro orientador, Prof. Dr. José Arica, vocação invulgar para a pesquisa e o magistério. Aos demais membros da comissão examinadora, Prof. Dr. Nelson Maculan e Prof. Dr. Nélio Pizzolato, por emprestarem seu prestígio a este trabalho e pelas sábias sugestões que muito contribuíram para aprimorá-lo. Ao Prof. Dr. Rainer Kolisch, da Universidade de Kiel, Alemanha, pela sua decisiva e sempre precisa orientação via e-mail. A todos o professores do Laboratório de Engenharia de Produção da UENF. Aos muitos amigos conquistados durante o curso, cuja agradável convivência se traduziu em precioso incentivo, representados aqui por Carlos Leonardo, por sua gentil colaboração na etapa inicial da elaboração de meu código computacional. Aos funcionários da UENF, especialmente ao bibliotecário Antônio Soares, cujo interesse e disposição para ajudar concorreram para a minimização do makespan do meu projeto. Ao CEFET Campos, à UENF e à Petrobras, que de fato viabilizaram este projeto. Por último, mas não por fim, ao proprietário destas instituições, o povo brasileiro, cuja generosidade nunca conheceu limites. xi Centro de Ciência e Tecnologia................................................................................vi Laboratório de Engenharia de Produção..................................................................vi Prof. Nelson Maculan, Ph.D. – UFRJ..................................................................viii Prof. José Ramon Arica Chavez, D.Sc. – UENF.................................................... viii Prof. Geraldo Galdino de Paula Jr., D.Sc. – UENF.................................................viii Introdução....................................................................................................................1 1.1 O Gerenciamento de Projeto no Brasil e no Mundo............................................1 1.2 Produção de Petróleo e Gerenciamento de Projeto...........................................3 1.3 Escalonamento de Projeto e Otimização Matemática ....................................... 5 1.4 O Caso Estudado................................................................................................5 1.5 Objetivos da Pesquisa.........................................................................................6 1.6 Organização do texto...........................................................................................6 Capítulo 2.....................................................................................................................8 O Gerenciamento de Projeto......................................................................................8 2.1 Estrutura Geral do Gerenciamento de Projeto....................................................8 2.1.1Conceituação Básica.....................................................................................8 2.1.2 O Gerenciamento de Projeto......................................................................11 2.1.3 Fases e Ciclo de Vida do Projeto ...............................................................13 2.2 Processos do Gerenciamento de Projeto..........................................................14 2.2.1 Processo de Iniciação.................................................................................15 2.2.2 Processos de Planejamento.......................................................................15 2.2.3 Processos de Execução..............................................................................16 2.2.4 Processos de Controle................................................................................16 2.2.5 Processos de Encerramento.......................................................................17 2.3 Áreas de Conhecimento do Gerenciamento de Projeto....................................18 2.3.1 Gestão da Integração do Projeto................................................................18 2.3.2 Gestão do Escopo do Projeto.....................................................................18 2.3.3 Gestão dos Tempos do Projeto..................................................................19 2.3 4 Gestão dos Custos do Projeto....................................................................21 2.3.5 Gestão da Qualidade do Projeto.................................................................21 2.3.6 Gestão dos Recursos Humanos do Projeto............................................... 22 2.3.7 Gestão das Comunicações do Projeto....................................................... 22 2.3.8 Gestão dos Riscos do Projeto.................................................................... 23 2.3.9 Gestão das Contratações do Projeto..........................................................23 2.4 Sistemas Comerciais de Gerenciamento de Projeto ....................................... 23 2.5 Avanços no Campo do Gerenciamento de Projeto...........................................25 O Problema de Escalonamento de Projeto - PSP..................................................27 3.1 Definições para Ambiente de Job shop.............................................................28 3.2O Problema de Escalonamento de Projeto........................................................30 3.2.1 Elementos do PSP......................................................................................31 3.2.2Descrição do PSP .......................................................................................34 3.2.3 Modelo Conceitual do PSP.........................................................................36 3.2.4 Modelo Matemático MIP do PSP Multiprojeto............................................38 3.2.5 Representação de um PSP........................................................................ 41 3.2.6 Notação e Classificação do PSP................................................................43 3.2.7 Medidas Regulares de Desempenho......................................................... 44 3.2.8 Classificação de Escalonamentos: Viável, Ativo, Semi-ativo e Sem-atraso ..............................................................................................................................45 xii 3.3 Métodos para Resolução do PSP..................................................................... 47 3.3.1 Algoritmos de Solução Exata para o RCPSP.............................................51 3.3.2Algoritmos de Solução Aproximada para o RCPSP....................................53 3.3.3 Algoritmos de Solução Exata para o MRCPSP..........................................55 3.3.4Algoritmos de Solução Aproximada para o MRCPSP.................................55 3.4 O Caso do PSP com Duração Estocástica das Atividades...............................58 3.5 O Caso do PSP com Tarefas Preemptivas ......................................................59 3.6 Novos modelos para o PSP ..............................................................................60 O PSP de Alocação de Recursos Críticos na E&P de Petróleo .......................... 62 4.1 Modelagem do Problema...................................................................................64 4.1.1 Modelo Físico..............................................................................................64 4.1.2 Modelo Matemático.....................................................................................66 4.2 Conjuntos e Geradores de Instâncias ..............................................................67 4.3 O Gerador de Instâncias ProGen......................................................................68 4.3.1 Parâmetros de Problema............................................................................69 4.4 Instâncias Geradas para Teste das Heurísticas............................................... 71 Heurísticas Desenvolvidas para o MRCPSP em Estudo.......................................77 5.1. Esquemas de Geração de Escalonamento .....................................................78 5.1.1 SGS em série...........................................................................................78 5.1.2 SGS paralelo............................................................................................80 5.2 Regras de Prioridades.......................................................................................81 5.3 Algoritmos do tipo Aleatório Puro......................................................................83 5.3.1 Algoritmo Aleatório Proposto...................................................................84 5.4 GRASP..............................................................................................................84 5.4.1 Algoritmo GRASP Proposto.....................................................................85 5.5 Algoritmos Evolucionários.................................................................................88 5.5.1Genética, Evolução e Otimização................................................................89 5.5.2 Algoritmo Genético Proposto...................................................................91 5.5.2 Heurística Híbrida Proposta.....................................................................97 Experimentos Numéricos.........................................................................................98 6.2 Configuração das Meta-heurísticas...................................................................98 6.1.1 Ajuste dos parâmetros................................................................................99 GRASP J50 - 30 s......................................................................................................99 AG J50 - 30 s............................................................................................................100 6.1.2 Definição do Operador Mutação ..............................................................101 AG J50 - 30s – POP = 20, Pmut = 0,4 ....................................................................101 6.2 Experimentos Numéricos Comparativos.........................................................102 6.2.1 Testes com o conjunto J50.......................................................................102 J50 - 30 s..................................................................................................................102 6.2.2 Testes com o conjunto J100.....................................................................102 J100 - 120 s..............................................................................................................103 6.2.3 Testes com o conjunto J200.....................................................................103 J200 - 300 s..............................................................................................................103 J200 – 480 s.............................................................................................................104 6.2.4 Eficiência dos Algoritmos..........................................................................104 J200 – 480 s.............................................................................................................104 xiii J200 – 480 s.............................................................................................................105 6.2.5 Efeitos dos Parâmetros de Problema RF e RS........................................106 6.3 Considerações Finais......................................................................................109 Conclusões, Recomendações e Futuras Pesquisas...........................................110 7.1 Conclusões......................................................................................................110 7.2 Recomendações .............................................................................................112 7.3 Futuras Pesquisas...........................................................................................112 Simbologia & Definições........................................................................................114 Bibliografia.........................................................................................................116 Anexo........................................................................................................................127 Análise de Complexidade do PSP.........................................................................127 Transformação Polinomial e Prova de Complexidade...................................... 129 Teorema.............................................................................................................130 O problema de viabilidade do MRCPSP é NP-completo para |N| ≥ 2 e Mj ≥ 2, 1 ≤ j ≤ J.....................................................................................................................130 Lista de Tabelas Tabela 3.1: Modelo Conceitual do PSP............................................................. 37 Tabela 3.2: Modelo Matemático MIP do PSP multiprojeto................................ 38 Tabela 4.1: Modelo Matemático MIP do MRCPSP em estudo.......................... 66 Tabela 4.2: Combinação dos parâmetros RF-RS............................................... 72 Tabela 4.3: Parâmetros básicos do conjunto de instâncias com 50 tarefas..... 72 Tabela 4.4: Parâmetros básicos do conjunto de instâncias com 100 tarefas... 72 Tabela 4.5: Parâmetros básicos do conjunto de instâncias com 200 tarefas... 72 Tabela 5.1: Regras de prioridade...................................................................... 83 Tabela 6.1: Calibração do parâmetro κ............................................................. 99 Tabela 6.2: População inicial, POP, e Probabilidade de Mutação, Pmut ............. 100 Tabela 6.3: Teste comparativo entre operadores mutação............................... 101 Tabela 6.4: Teste comparativo entre as heurísticas com o conjunto J50......... 102 Tabela 6.5: Teste comparativo entre as heurísticas com o conjunto J100....... 103 Tabela 6.6: Teste comparativo entre as heurísticas com o conjunto J200 em xiv Tabela 6.7: Tabela 6.8: Tabela 6.9: 300 s............................................................................................... 103 Teste comparativo entre as heurísticas com o conjunto J200 em 480 s............................................................................................... 104 Desvio médio das heurísticas em relação ao limitante inferior CPM................................................................................................ 104 Número médio de escalonamentos avaliados pelas heurísticas em 480 s......................................................................................... 105 xv Lista de Figuras Figura 2.1: Custo como função do prazo do projeto........................................ 13 Figura 3.1: Métodos de representação para o PSP: (a) gráfico de Gantt; (b) rede do tipo atividade-no-arco (AOA); (c) rede do tipo atividadeno-vértice (AON)............................................................................. 42 Figura 4.1: Modelo AON genérico do PSP em estudo..................................... 65 Figura 4.2: Exemplo de arquivo de entrada para o gerador ProGen para instância com 8 tarefas reais.......................................................... 75 Exemplo de arquivo de saída do ProGen com instância de 8 tarefas reais.................................................................................... 77 Esquema de geração de escalonamento em série (SSS).............................................................................................. 80 Esquema de geração de escalonamento em paralelo (PSS).............................................................................................. 81 Figura 5.3: Pseudocódigo da fase de construção da GRASP.......................... 87 Figura 5.4: Pseudocódigo da fase de melhoria da GRASP.............................. 88 Figura 5.5: Pseudocódigo do algoritmo genético proposto.............................. 94 Figura 6.1: Instância vs. makespan comparando todas as heurísticas............ 107 Figura 6.2: Resultados do makespan com todas as heurísticas para as 30 primeiras instâncias........................................................................ 108 Figura 4.3: Figura 5.1: Figura 5.2: xvi Resumo O estudo do Gerenciamento de Projeto, como um conjunto de ações integradas de planejamento, programação e controle das atividades de um projeto com vista à consecução eficaz de seus objetivos, ainda se encontra numa fase incipiente no Brasil. Em contraste, as nações desenvolvidas dedicam ao tema mais e mais atenção, como medida de sobrevivência em meio à frenética disputa entre as organizações pela primazia no lançamento de produtos e serviços. No estratégico setor petróleo, a meta brasileira é de elevação da produção interna, objetivando a auto-suficiência e conseqüente independência energética. Nesse campo, com a recente flexibilização do monopólio estatal, a competição só faz recrudescer, culminando com novos e grandes projetos, que obrigam condução eficiente no que tange a custo, tempo e qualidade, fatores decisivos de sucesso. Utilizando como veículo o caso da alocação de recursos críticos nas intervenções marítimas de exploração e produção de hidrocarbonetos na bacia de Campos, RJ, este trabalho contribui com um estudo do problema multimodo de escalonamento de projeto com restrição de recursos (MRCPSP), integrante da área de conhecimento da gestão dos tempos de um projeto e sabidamente intratável. O problema real é descrito e modelado matematicamente. Três conjuntos de instâncias de teste são criados com o uso de um gerador computacional já existente, num total de 1080 problemas artificiais que, com a adequada modulação de parâmetros específicos, buscam reproduzir as condições práticas das operações de exploração e produção da indústria de petróleo. São propostas e experimentadas três meta-heurísticas de solução: Algoritmo Genético, GRASP e uma Heurística Evolucionária Híbrida – as duas últimas inéditas. Um algoritmo puramente aleatório também é implementado, como forma de produzir soluções de referência para os experimentos numéricos dos métodos. Por fim, tem-se uma breve discussão acerca da complexidade, sob o prima da pesquisa operacional, do problema de escalonamento de projeto (PSP), classificado como NP-difícil. xvii Abstract The study of Project Management as an array of integrated actions of planning, scheduling, and controlling of project activities to effectively meet its objectives completion is still incipient in Brazil. Conversely, the developed nations devote more and more attention to the matter as survival measure within the frenetic struggle among organizations to be ahead on releasing products and services. At the strategic petroleum sector, the brazilian goal is to expand the internal production until achieving self-sufficiency and consequent energetic independence. On this field, with the recent state monopoly flexibility, the competition tends to increase followed by large projects requesting effective management with respect to cost, time, and quality, decisive factors of success. By using as a vehicle the case of critical resources allocation to the petroleum offshore exploration and production interventions in Campos basin, RJ, this work contributes with a study of the multi-mode resource constrained project scheduling problem (MRCPSP), a component of the project time management knowledge area and notoriously intractable. The real problem is described and mathematically modeled. Three test instances data sets are created via an existing computational generator, resulting in a total of 1,080 artificial problems that, with suitable modulation of specific parameters, are intended to reproduce the practical conditions of petroleum industry projects. Furthermore, three meta-heuristic approaches for solution are proposed and experimented: Genetic Algorithm, GRASP and a Hybrid Evolutionary Heuristic – two latter are new. A pure random algorithm is implemented as well, as mean of producing benchmark solutions for the numerical experiments of the methods. Finally, this work briefly discusses the complexity of the project scheduling problem (PSP), rather under operational research point of view, classified as NP-hard. xviii Simbologia & Definições CPM : método do caminho crítico PERT : técnica de revisão e avaliação de programa JSP : problema de job shop PSP : problema de escalonamento de projeto RCPSP : problema de escalonamento de projeto com restrição de recursos MRCPSP : problema multimodo de escalonamento de projeto com restrição de recursos p = 1, ..., P : projetos πj (εj) : release date (due date) da tarefa j πp (εp) : release date (due date) do projeto p cjmt : fluxo de caixa induzido pela tarefa j no modo m e término em t cp : custo por período se o projeto p se concluir após seu prazo devido α : campo referente ao ambiente das máquinas (recursos) β : campo referente ao processamento e às restrições γ : campo referente ao critério de desempenho FJp (LJp) : numero da primeira (última) tarefa do projeto p J : conjunto das tarefas j, |J|=J+2 J : número de tarefas reais (i. é, não-fictícias) j = 0 (J+1) : única fonte (sumidouro) da rede Pj (Sj) : conjunto dos predecessores (sucessores) imediatos da tarefa j At : conjunto das tarefas ativas (em execução) no tempo t ESTj (LSTj) : tempo mais cedo (mais tarde) de início da tarefa j EFTj (LFTj) : tempo mais cedo (mais tarde) de conclusão da tarefa j STj : tempo de início da tarefa j FTj : tempo de conclusão da tarefa j xix SC : vetor com uma permutação viável das tarefas j ∈ J ST : vetor escalonamento com os tempos de início STj FT : vetor escalonamento com os tempos de conclusão FTj M : vetor de designação dos modos de execução mj T : limitante superior do makespan do projeto (horizonte de tempo) R(N,D) : conjunto dos recursos renováveis (não-renováveis, duplamente restritos) r ∈ R(N,D) : índice do recurso demandado (consumido) Mj : número de modos pelos quais a tarefa j pode ser executada mj = 1, ..., Mj : modo de execução da tarefa j djm : duração da tarefa j executada no modo m ρ k jmr : uso por período do recurso renovável (duplamente restrito) r exigido para executar a tarefa j no modo m k νjmr : consumo total do recurso não-renovável (duplamente restrito) r para executar a tarefa j no modo m K rρ : disponibilidade por período do recurso renovável (duplamente restrito) r K νr : disponibilidade total do recurso não-renovável (duplamente restrito) r RF : fator recurso de um PSP RS : potência de recursos de um PSP κ : parâmetro de relaxação da GRASP RCL : lista restrita de candidatos da GRASP Pmut : probabilidade de mutação para AG e HH SGS : esquema de geração de escalonamento AP : algoritmo puramente aleatório GRASP : Greedy Randomized Adaptive Search Procedure AG HH : algoritmo genético : heurística evolucionária híbrida xx Capítulo 1 Onde se argumenta sobre o tema e se tem a sinopse da dissertação Introdução N os dias que correm, vive-se um ambiente de atordoante competição entre as organizações, fruto da mundialização da economia, que exorbita tudo quanto se viu antes na história humana. Na quadra de transição da sociedade pós-industrial para a do conhecimento, agora que o século finda, é lícito antever que esta dinâmica atinja ritmo paroxístico. Como todo organismo vivo, o conjunto das organizações e empresas está em permanente estado transiente, de transformação, perseguindo a própria sobrevivência. Isso obriga administração marcada pela mutabilidade em seu métodos, processos, serviços e produtos em benefício da adaptação e da subsistência – aliás, o cenário evoca o darwinismo, mais adiante rapidamente tratado neste trabalho, mas por razões outras. Qualidade, custo e prazo assumem relevo como nunca dantes. Naturalmente, todos os agentes envolvidos disso se dão conta, e o componente diferencial torna-se então a excelência e a agilidade com que são conduzidas as mudanças, buscando sobretudo tornar disponíveis produtos e serviços de maior utilidade e menor preço em um tempo concorrencialmente competitivo. Mas, qualquer que seja a direção das transformações e sua natureza, quase sempre implicarão um projeto. Como motor de inovações, os projetos são componentes críticos na órbita das organizações, de importância que não pode ser exagerada. Parece óbvio ser imprescindível o constante aperfeiçoamento da metodologia e dos processos voltados para boa condução dos projetos como um todo. É precisamente dessa matéria que é feito o gerenciamento de projeto. 1.1 O Gerenciamento de Projeto no Brasil e no Mundo A experiência brasileira não tem sido exatamente de boa memória. Alguns exemplos pregressos conjuguem exasperante negligência com inexcedível incompetência. A 1 esse propósito, apenas na área de energia, despontam casos notórios tais como as usinas nucleares de Angra dos Reis e a hidrelétrica de Porto Primavera, em São Paulo, os quais converteram-se em prejuízos colossais. No mundo desenvolvido, também alguns exemplos de falhas graves e fracassos podem ser pinçados, como o caso do gasoduto do Alasca (Lewis, 1998) ou o conhecido como projeto Taurus (Drummond, 1999). Este, havido na renomada City de Londres, antes do seu inexplicável naufrágio, já se notabilizava pela surpreendente inabilidade gerencial. O complexo nuclear de Angra dos Reis teve orçamento original de US$ 3 bilhões, mas consumiu US$ 12 bilhões apenas para concluir um terço do projeto. A usina de Porto Primavera foi orçada em US$ 1,4 bilhão para um prazo previsto de conclusão de seis anos. Entrou em operação comercial finalmente em janeiro de 1999, acabou custando US$ 10,3 bilhões após dezoito anos de obras – e ainda faltando instalar quinze turbinas. A obra foi seis vezes interrompida, o contrato foi renegociado dezenas de vezes, houve falhas gritantes no cronograma e o custo com a desapropriação dos terrenos resultou em US$ 500 milhões além do planejado. Em função do atraso, US$ 2 bilhões foram destinados ao armazenamento dos equipamentos e US$ 5 bilhões gastos em juros. O projeto Taurus envolveu cifras mais modestas. Foi apenas um retumbante fiasco do tamanho de quase US$ 1,0 bilhão para a Bolsa de Valores de Londres e corretoras locais. Tivera como intento agilizar as operações de securitização dos títulos. Mesmo alertados no decorrer do projeto que o fracasso seria inevitável, seus gerentes e as partes envolvidas, com inquebrantável teimosia, perseveraram adiante. Foi finalmente cancelado em março de 1993, após cinco anos de percalços. Fez-se célebre como o pior fracasso do gênero na Europa em todos os tempos. Formam um fascinante campo de estudo os motivos pelos quais alguns projetos fracassam e o modo como o fazem. De saída, é bom dizer que se deve a priori estabelecer os critérios para se caracterizar o fracasso de um projeto. Isso não é consenso universal e deve ser explicitado ainda na fase de planejamento e estudo de viabilidade. Nem sempre um projeto muito atrasado pode ser considerado um projeto fracassado. São diversos os estudos nesta área e não há unanimidade a respeito; alguns autores antes preferem dar um enfoque menos depreciativo e falar dos fatores de sucesso dos projetos. Não importa, por ora o que se pretende aqui é apenas sublimar a importância do bom gerenciamento de projeto, notadamente com relação aos 2 seus tempos. Afinal, ao contrário da Torre de Babel, nenhum projeto malogra por desígnio divino. No mundo desenvolvido, o gerenciamento de projeto vem sendo reconhecido cada vez mais como uma disciplina distinta da administração. Programas na matéria, do tipo MBA e em nível de pós-graduação stricto sensu, são oferecidos pelas universidades em número crescente. As corporações já começam a exigir de firmas contratadas certificados do tipo PMP1 para profissionais que vão chefiar seus projetos. O Brasil não conta com cursos de formação de gerentes de projetos, ao contrário de alguns outros países. O indivíduo que aqui exerce este papel pretende ser, por assim dizer, componente ad hoc, o que costuma acarretar perda de um bom técnico e aquisição de um pseudogerente. Em boa medida pela gestão inepta dos recursos humanos. (Um traço marcante deste cargo é ter muita responsabilidade sem poder contar com autoridade na mesma proporção. Isso impõe a habilidade com as relações humanas como atributo principal de um gerente de projeto). Em verdade, não há sequer um estudo formal e sistemático de gerenciamento de projeto no ambiente universitário brasileiro, onde é abordado apenas mediatamente, em iniciativas esporádicas e esparsas na forma de cursos de extensão. Também carecemos de associações e institutos que congreguem os profissionais do ramo. Soa agora e evidente a aguda necessidade da formalização e disseminação do aprendizado do gerenciamento de projeto em nosso pais, combinado com mais pesquisa no campo de otimização de escalonamento2 de projeto. Daí a oportunidade de trabalhos nesse campo também tencionando voltar a atenção da comunidade acadêmica e especialistas para a relevância da matéria. Tudo isso compõe o que se poderia considerar a motivação para o tema de estudo da presente tese: otimização do escalonamento dos recursos críticos na exploração e produção (E&P) de petróleo. 1.2 Produção de Petróleo e Gerenciamento de Projeto Nos últimos anos, o Brasil experimentou espetacular incremento na capacidade de produção e de refino de hidrocarbonetos fluidos mas, ainda assim, não tem sido o bastante para fazer frente às necessidades internas. Os preços internacionais do petróleo, de ordinário tão gravosos e sempre impactando tão diretamente a economia 1 Project Management Professional, conferido pelo Instituto de Gerenciamento de Projeto (Project Manegement Institute, PMI) americano. 2 Neste texto, o termo escalonamento refere-se tanto ao ato quanto ao efeito da programação das atividades de um projeto. Corresponde no inglês às palavras scheduling (ato) e schedule (efeito). 3 interna, autorizam supor maciços investimentos nesta área. Atingir a auto-suficiência, ficando a salvo da dependência externa, significa aumentar em muito o grau de liberdade de ações no setor, com repercussão imediata beneficiando toda a cadeia econômica. Mas os tempos são outros, o modelo de exclusividade para apenas uma companhia de petróleo como agente administrador do monopólio3 estatal do petróleo não mais vigora e empresas congêneres entram em cena, disputando o mercado. Inevitavelmente, o próximo século assistirá a renhida competição em todos os segmentos da indústria de petróleo: E&P, refino, transporte, comercialização e distribuição. Compelidas de um lado pela natural premência em se descobrir e produzir petróleo rumo à auto-suficiência para suprir as demandas energéticas brasileiras e, de outro, pela inescapável necessidade de exploração dos blocos das bacias sedimentares brasileiras que lhes couberem, as companhias de petróleo correm contra o tempo. Por via de conseqüência, suas carteiras de projetos mais e mais tendem a crescer. Assim sendo, o gerenciamento de projeto de qualidade, com ações centradas na eficiência e redução de custos, desempenhará papel de destaque no retorno para a sociedade e maximização da remuneração de capital dos seus acionistas. Projetos no setor petróleo são particularmente importantes em vista do traço estratégico de que se revestem. O que está em jogo, em última análise, é a disponibilidade de energia, imprescindível para fruição dos bens e serviços de uma sociedade industrializada, que a ciência e a tecnologia não cessam de suscitar e dispor. Em particular, a região de Campos, no norte fluminense, tem especial interesse pelo setor. Sua bacia sedimentar offshore é a que mais produz hidrocarbonetos no país e exibe indícios auspiciosos, dando conta de que continuará sendo alvo de grandes projetos. Com isso, a questão ganha contornos ainda mais complicados, visto que no ambiente marinho, notadamente de águas profundas, como é o caso, todas as operações são muito mais laboriosas e demasiado dispendiosas. Outra vez, os fatores tempo e custo são determinantes se se objetivam preços competitivos, o que torna decisiva sua boa gerência. De qualquer modo, os benefícios de se lograr antecipar a produção de dezenas de poços, mesmo que em uns poucos dias, fruto de uma programação otimizada de utilização dos recursos envolvidos – todos excessivamente caros – nos projetos, podem importar receita antecipada da ordem de milhões de dólares. É exatamente disso que trata a presente pesquisa: otimização do escalo3 O mandato de ação exclusiva da Petrobras na administração do monopólio estatal do petróleo foi invalidado pelo Congresso Nacional, em 1995, por emenda constitucional. 4 namento dos recursos na E&P de petróleo, com conseqüente redução de custos e tempos. Isso materializa o estudo de caso do trabalho, formatado como o problema de escalonamento de projeto (Project Scheduling Problem, PSP) 1.3 Escalonamento de Projeto e Otimização Matemática O senso comum erroneamente presume que gerenciamento de projeto se reduz apenas à programação de suas atividades (escalonamento). Isto está longe de ser verdade, conquanto seu mérito não deva ser minimizado. O escalonamento é um dos processos do gerenciamento de projeto e na verdade é melhor estudado nos domínios da pesquisa operacional como um problema de otimização combinatória. Otimização significando maximizar ou minimizar uma dada função matemática – referida como função-objetivo – refletindo algum critério de desempenho de um problema sujeito a determinadas restrições (Chong, 1996). Otimização combinatória é o ramo da matemática aplicada que combina técnicas de análise combinatória, programação linear e teoria dos algoritmos para resolver problemas de otimização sobre estruturas discretas (Nemhauser & Wolsey, 1988; Cook et al., 1998). 1.4 O Caso Estudado Estudos do PSP no âmbito acadêmico, não raro, são algo descolados da realidade, seja nas suas singularidades, seja no limitado porte dos problemas com que trabalham, daí a oportunidade de pesquisas conectadas com projetos reais. O estudo de caso empreendido se refere ao ambiente real da Petrobras na bacia de Campos. O caso é modelado como um PSP. Sondas e navios são cotados como recursos críticos, em virtude de sua escassez e alto custo. As intervenções nos poços são tomadas como as atividades do projeto. Um complicador é que, em razão de determinados recursos terem sua atuação condicionada à lâmina d’água da locação, as atividades acabam por dispor de modos alternativos de execução, cada um dos quais implicando trade-off entre duração e recursos. Semelhante problema de otimização tem o seguinte enunciado: “Alocar os K recursos renováveis a cada uma das J atividades do projeto multimodo de maneira a minimizar sua duração total”. Com isso, o PSP é modelado como o denominado “problema multimodo de escalonamento de projeto com restrição de recursos” – MRCPSP. Problemas de otimização matemática inteira dessa natureza estão entre 5 os de mais difícil tratamento, sendo classificados como NP-completos. Algoritmos de solução exata existem apenas para os casos de instâncias de pequeno porte (até 15 atividades). Tipicamente, problemas reais envolvem centenas de intervenções. As instâncias que aproximam condições reais são construídas através de um programa gerador de instâncias. Quatro heurísticas, i.é, procedimentos de solução aproximada, são sugeridas e implementadas em código computacional. O critério de performance é a minimização da duração total do projeto (makespan). Experimentos numéricos com os quais se comparar o desempenho destes algoritmos são conduzidos e relatados. Antes, porém, o caso é situado em seu contexto, na esfera de ação do gerenciamento de projeto, de maneira que permita ser apreendido em toda sua plenitude. 1.5 Objetivos da Pesquisa À luz de quanto foi dito, os objetivos principais deste trabalho podem ser assim resumidos: • Despertar a comunidade acadêmica e especialistas para a importância do estudo regular do gerenciamento de projeto; • Investigar para efeito de aplicação, o estado da arte dos métodos de solução dedicados ao PSP; • Modelar casos reais, de grande porte, do PSP; • Desenvolver, implementar e experimentar métodos matemáticos aproximados de otimização voltados para solução de tais problemas. 1.6 Organização do texto. Como se viu, o leitmotiv da presente pesquisa diz respeito à gestão dos tempos de um projeto. Mais detidamente, referido a um estudo de caso da Petrobras no que tange à otimização de alocação de recursos críticos às intervenções no poços de óleo e gás. Com isso, o restante deste documento se organiza da seguinte maneira: O capítulo 2 expõe o estado da arte do gerenciamento de projeto. Seus fundamentos e metodologia são apresentados e tendências são identificadas e comentadas neste capítulo, que também se presta à inserção do PSP em seu contexto. 6 O capítulo 3 faz uma descrição detalhada do PSP. Seus elementos e modelos são apresentados, bem como sua representação, classificação e notação. Comenta-se sobre os métodos mais comuns empregados para sua solução exata e aproximada. Termina com exposição de alguns casos especiais e de modelos que emergiram recentemente. O capítulo 4 expõe e modela física e matematicamente o caso em estudo. Geradores de instancias são tratados juntamente com os conjuntos mais comuns atualmente disponíveis. Os chamados parâmetros de problemas de escalonamento são discutidos e, ao final, se descrevem os conjuntos de instâncias geradas para emular o caso real e submeter as heurísticas codificadas a experimentos computacionais. No capítulo 5 são descritas detalhadamente quatro meta-heurísticas propostas para solução aproximada do PSP em causa, nomeadamente Algoritmo Aleatório Puro, GRASP, Algoritmo Genético e Heurística Evolucionária Híbrida. Antes, os algoritmos básicos, ditos esquemas de geração de escalonamento, SGS, são estudados e as chamadas regras de prioridade são introduzidas . O capítulo 6 discorre sobre os resultados dos experimentos computacionais cumpridos com as meta-heurísticas desenvolvidas para a solução do PSP objeto de estudo. Inicialmente o parâmetro de relaxação da GRASP e a probabilidade de mutação dos algoritmos evolucionários são devidamente calibrados. Um entre dois operadores mutação é criteriosamente selecionado para uso nos testes. Os ensaios englobam os três conjuntos produzidos e definem a heurística de maior eficiência. Experimentos com respeito aos efeitos dos chamados parâmetros de problema também são efetuados. Por fim, o capítulo 7 mostra as ilações extraídas a partir do trabalho e conclui com algumas recomendações e sugestões julgadas úteis para futuros trabalhos na área. A dissertação também inclui um anexo, no qual se examina muito brevemente a complexidade dos problemas de otimização, com enfoque de pesquisa operacional, particularmente daqueles da família do difícil problema de escalonamento de projeto. 7 Capítulo 2 Onde se trata do contexto do Problema de Escalonamento de Projeto O Gerenciamento de Projeto M uito brevemente faz-se aqui uma incursão pelo gerenciamento de projeto. A partir de conceituação básica e descrição de seus métodos e processos, tem-se uma visão panorâmica do tema, mais que nunca indispensável à boa condução de empreendimentos na órbita do moderno mundo corporativo. Pretende-se com isso cumprir dois objetivos: ao mesmo tempo em que se busca difundir os fundamentos do gerenciamento de projeto, situa-se o problema de escalonamento de projeto, PSP – detalhadamente tratado nos capítulos subseqüentes –, em seu contexto, mais precisamente na área de conhecimento da gestão dos tempos do projeto. Sempre com respeito ao gerenciamento de projeto, o capítulo obedece ao seguinte roteiro: a seção 2.1 apresenta sua estrutura geral, introduzindo sua conceituação e algumas de suas definições básicas; a seção 2.2 trata dos seus grupos convencionais de processos: iniciação, planejamento, execução, controle e encerramento; na seção 2.3, suas áreas de conhecimento são brevemente abordadas; a seção 2.4 discute resumidamente os recursos e limitações dos sistemas comerciais com esse fim; na seção 2.5, finalmente, os avanços e perspectivas nesta área são enfocados. 2.1 Estrutura Geral do Gerenciamento de Projeto 2.1.1 Conceituação Básica Prevenindo-se quanto ao risco de confusão, é oportuno desde já situar os significados de administração, gerência e gestão adotados neste texto. Observando o que 8 preconiza Valeriano (1998), estes termos se distinguem segundo seu nível de competência: • Administração: diz respeito a ações em nível organizacional: finanças e contabilidade, vendas e marketing, pessoal e etc.; • Gerenciamento: sinônimo de gerência, situa-se ao nível do próprio projeto: planejamento, controle e etc.; • Gestão: refere-se aos subníveis do gerenciamento, i.é, parcelas específicas das atribuições do gerente de projeto: da qualidade, dos tempos, dos custos e etc. (cf. seção 2.4) Projeto Projetos no mais das vezes são componentes críticos da estratégia de negócios de uma organização. Projeto é uma seqüência de atividades com começo e fim limitadas por tempo, recursos e resultados. Pode-se dizer que a mais distintiva marca de um projeto4 seja o seu caráter inovador. Uma vez concluído o projeto, a organização dispõe de algo realmente novo. As operações rotineiras de uma empresa ou organização compartilham muitos traços em comum com um projeto. O que distingue ambos é que enquanto as operações são progressivas e repetitivas, os projetos são transitórios e únicos. A melhor definição para projeto talvez seja que “projeto é um esforço temporário empreendido para criar um produto – ou serviço – que é único”. Temporário estabelecendo que o projeto tem começo e fim bem definidos; único significando que o produto – ou serviço – incorpora uma característica que não divide com nenhum outro similar. Tipicamente, um projeto origina-se a partir de uma ou mais das contingências a seguir: • Exigência do cliente • Demanda de mercado • Avanço tecnológico • Necessidades do negócio • Obrigações legais 4 O termo projeto, de que trata o presente estudo, referir-se-á sempre ao seu sentido estrito, sob um ponto de vista organizacional. 9 Usualmente a equipe envolvida é temporária, i.é, existe enquanto o projeto existir. Exemplos são: viagem a Marte, elaboração de um novo produto, o desenvolvimento de um campo de petróleo, aquisição um novo sistema de comunicação, construção de uma unidade fabril, implantação de um novo procedimento nos negócios, pesquisa de um novo medicamento e etc. Se um empreendimento reúne as cinco características a seguir, pode-se assumir que se trata de um projeto: (1) Começo e fim bem definidos; (2) Tem recursos que foram especificamente alocados para aquele fim; (3) Os resultados finais têm metas especificas de qualidade e desempenho; (4) Segue uma predeterminada abordagem planejada e organizada para alcançar seus objetivos; (5) Geralmente envolve uma equipe formada para aquele fim. Certos tipos de empreendimentos são similares a projeto. Um programa é um grupo de projetos gerenciados de modo coordenado para obter benefícios que não estariam ensejados por um projeto individualmente (p. ex., o programa nuclear brasileiro). Um subprojeto resulta da divisão de um projeto que o supera e o comporta. Em geral, são contratados de uma outra empresa ou de outra unidade funcional das organizações (e.g., testes automatizados de programas de computador num projeto de desenvolvimento de software). Recursos São o tempo, pessoas, dinheiro, máquinas, equipamentos e instalações utilizados para implementação de um projeto. Segundo disponibilidade e consumo, podem ser enquadrados em quatro categorias: renováveis, não-renováveis, duplamente restritos e parcialmente renováveis (cf. subseção 3.2.1) Escopo5 O escopo pode se referir tanto ao produto quanto ao projeto: • Escopo do produto: características e funções que devem ser agregadas ao produto (ou serviço); 5 Do inglês “scope”: alcance, raio de ação. Não se deve confundir com a acepção comum deste vocábulo em português: alvo, intuito; intenção. 10 • Escopo do projeto: todo o trabalho que deve ser empreendido de modo a gerar um produto (ou serviço) com as características e funções especificadas. Atividade ou Tarefa Até o momento não há consenso entre os especialistas acerca da relação entre os termos atividade e tarefa em gerenciamento de projeto. Neste documento, ambos os temos são aplicados indistintamente. Uma atividade (ou tarefa) real sempre consome tempo e, quase sempre, recursos e pode ser entendida como uma unidade de trabalho do projeto. Stakeholders6 do Projeto São os indivíduos e organizações que estão ativamente envolvidos com o projeto ou cujos interesses podem ser positiva ou negativamente afetados como conseqüência da execução do projeto ou por sua exitosa completação. Uma das mais destacadas atribuições da equipe de gerenciamento de projeto é identificar os stakeholders, determinar seus interesses e expectativas e então influenciar de modo a ter um projeto bem-sucedido. O gerente do projeto, os clientes, os beneficiários, a empresa hospedeira do projeto, os financiadores do projeto e representantes de agências governamentais formam alguns exemplos de stakeholders. Talvez um dos maiores desafios do gerenciamento de projeto seja encontrar solução para os pleitos conflitantes de alguns stakeholders. Em geral, incompatibilidades de demandas e necessidades de stakeholders devem ser decididas em favor dos clientes. 2.1.2 O Gerenciamento de Projeto A aplicação pioneira dos métodos e processos do gerenciamento de projeto tal como aqui se apresenta é atribuída à construção do primeiro submarino nuclear pela Marinha dos EEUU, em meados da década dos 50. A visão geral é a de que o gerenciamento de projeto é nada além de programação (ou escalonamento) das tarefas. Nada mais falso. A programação das tarefas é tãosomente um dos processos da gestão dos tempos do projeto, que sequer deve ser considerado como o mais relevante de todos. 6 Intraduzível, posto que não há termo correspondente no vernáculo. 11 O gerenciamento de projeto deve ser entendido como a aplicação de conhecimentos, habilidades e técnicas para dirigir as atividades de modo a alcançar ou mesmo exceder as necessidades e expectativas dos stakeholders. Os projetos diferem das operações ordinárias das organizações e reclamam técnicas especiais de gerência para chegarem a bom termo. Decorre daí que boa parte do conhecimento aplicado ao gerenciamento de projeto é exclusiva. A especial atenção ao escalonamento das atividades, p. ex., é uma característica que diferencia o gerenciamento de projeto do administração geral. A despeito disso, esta última compartilha com o gerenciamento de projeto diversos conhecimentos, tais como técnicas de planejamento e previsões financeiras, por exemplo. Na verdade, a administração geral fornece indispensáveis conhecimentos para o gerenciamento de projeto. Há muitas habilidades desenvolvidas para a administração geral e que, muito provavelmente, afetam qualquer projeto. Como exemplo, liderança, comunicação, negociação, entre outros. Projetos são, tipicamente, parte de organizações maiores do que eles – corporações, agências governamentais e associações profissionais, entre outras. A estrutura especifica de cada organização tende a influenciar o próprio projeto. A natureza desta influência varia sobremodo. Organizações baseadas em projeto, como as firmas de engenharia, têm operações primariamente voltadas para projetos. Nesse caso, tais organizações têm sistemas de administração que favorece o gerenciamento de projeto. Como exemplo, sua contabilidade é formatada de modo a considerar projetos múltiplos e simultâneos. Nos demais tipos de organização – companhias de petróleo, montadoras, etc. –, isso não é tão sistematizado, o que torna o gerenciamento de projeto mais difícil. Essas organizações apenas podem contar, às vezes, com departamentos ou divisões que na verdade operam como organizações baseadas em projeto. Características socio-econômicas também podem afetar muito o gerenciamento de projeto – legislação local, idioma, diferenças culturais, políticas, e étnicas e etc. Objetivos do Gerenciamento de Projeto Segundo Lewis (1997), o gerenciamento de projeto resume-se em “planejamento, programação e controle das atividades do projeto para atingir seus objetivos”. Estes objetivos se traduzem em metas de: • Custo; 12 • Desempenho; • Escopo; • Tempo; Os quatro objetivos se relacionam da seguinte forma: Custo = f (Desempenho, Escopo, Tempo). O custo é função do desempenho, do escopo e do tempo. O custo é diretamente proporcional ao desempenho e ao escopo: o custo cresce, se um ou ambos crescem. Todavia, a relação com o tempo não é linear. Até um valor ótimo para o tempo, o custo aumenta à medida que se diminui o prazo de conclusão do projeto; em contrapartida, o custo tende a aumentar para prazos crescentes a partir desse ponto. Existe, então, um prazo de conclusão ótimo para o projeto, no qual ocorre a melhor performance de todos os recursos. O gráfico da figura 2.1 ilustra tal relação. Custo vs . Tempo do Projeto 120 100 Custo 80 60 40 20 0 1 2 3 4 5 6 Tempo 7 8 9 10 Figura 2.1: Custo como função do prazo do projeto. 2.1.3 Fases e Ciclo de Vida do Projeto . Como todo projeto é sempre um empreendimento inédito, envolve um certo grau de incerteza. A organização detentora (ou hospedeira) do projeto usualmente vai dividilo em várias fases de modo a melhor controle de sua administração e interação com outras de suas operações. Como é feita essa divisão, depende de especificidade de cada organização. Uma fase se distingue pela conclusão de um produto de trabalho tangível e verificável tal como um estudo de viabilidade ou a execução de um protótipo. A caracterização das fases não é algo rígido e universal, mas cada empresa 13 pode ter seu próprio método para estabelecer e denominar cada fase. Ilustrativamente, numa forma compacta e muito difundida pelos compêndios, pode-se dividir o projeto em cinco fases: iniciação ou conceptual, planejamento, implementação ou execução, controle e encerramento. Neste caso, as fases não são estanques e sucessivas, mas se superpõem parcialmente em algum período, no decurso do projeto, havendo alternância no predomínio de cada uma delas, conforme o trabalho avança. As fases do projeto, quando tomadas em conjunto, recebem o nome de ciclo de vida do projeto, o qual circunscreve seu período de início e término. Os ciclos de vida de projetos, via de regra, compartilham algumas características: • Os níveis de custo e pessoal são baixos no início, bem mais altos no estágio intermediário e caem vertiginosamente com a proximidade do fim do projeto; • Os riscos e as incertezas são mais expressivos no início. A probabilidade de sucesso cresce enquanto o projeto progride; • O poder dos stakeholders de influenciar o produto final e os custos do projeto diminui à medida que o projeto tem seu curso, porque os custos de alteração crescem com o progresso do projeto. 2.2 Processos do Gerenciamento de Projeto O gerenciamento de projeto traduz-se em um esforço integrado onde qualquer ação – ou omissão – em uma área pode afetar outras de suas áreas componentes. Suas interações e seu concatenamento devem ser diretos e bem entendidos, sob pena de suscitar atrasos e equívocos. Por exemplo, uma mudança no escopo quase sempre afeta os custos e pode afetar ou não a qualidade do produto. Essas interações implicam trade-offs entre os objetivos do projeto: pode ser que o desempenho de uma área será melhorado apenas em detrimento de outra. Entendendo um processo como uma sucessão de ações visando a um resultado, o gerenciamento de projeto assume a dinâmica de processos específicos, que interagem continuamente. Isso dá a medida da natureza integrativa do gerenciamento de projeto. Conforme estabelece o Project Management Institute (1996) no seu Corpo de Conhecimento do Gerenciamento de Projeto – PMBOK7 –, os processos atinentes ao gerenciamento de projeto e que são aplicáveis à maioria dos projetos na maior parte 7 Aprovado como normalização americana ( American National Standard) para gerenciamento de projeto pelo ANSI (American National Standards Institute) em setembro de 1999. 14 do tempo, podem ser dispostos em cinco grupos, de um ou mais processos. Cada uma das cinco subseções a seguir trata de um desses grupos. 2.2.1 Processo de Iniciação Essencialmente, diz respeito ao reconhecimento de que um projeto – ou uma de suas fases – deve ser autorizado e implica o compromisso em fazê-lo. Essa iniciação formal conecta o projeto com as operações rotineiras da organização. Muitas vezes, requer tomada de decisão com relação ao projeto de maior prioridade entre outros do portfólio da organização. Isso feito, há que se definir metas especificas para o projeto e identificar os riscos e restrições que podem vir a lhe causar problemas, uma vez iniciado. Este grupo tem um único processo, que lhe dá o nome e cujas ações típicas são: • Reconhecimento que um projeto deve ser implementado; • Determinar o que o projeto deve empreender; • Definição das metas globais do projeto; • Definição de expectativas gerais dos stakeholders; • Definição do escopo geral do projeto; • Seleção dos membros iniciais da equipe, inclusive o gerente de projeto. 2.2.2 Processos de Planejamento Em razão do ineditismo de um projeto, o grupo de planejamento é o que, em geral, apresenta maior numero relativo de processos. Trata dos processos que se voltam para definição de recursos requeridos para completar o projeto, elaboração da programação das tarefas e desenvolvimento do orçamento. Podem Inclui também definição das necessidades dos stakeholders e são estabelecidos os meios para satisfazê-las. Alguns dos processos mais representativos deste grupo são: • Refinamento do escopo do projeto, o que obriga balanço entre resultados, tempo e recursos; • Listagem e seqüenciamento das atividades integrantes do projeto de modo o mais eficiente; • Desenvolvimento da programação de tarefas trabalhável e elaboração de orçamento visando à alocação de recursos; • Elaboração do plano de projeto, formalizado em um documento; • Obtenção de aprovação do plano pelo stakeholders. 15 Os ditos processos de facilitação, embora intermitentes e executados conforme a necessidade durante o planejamento de projeto, também interagem e não são facultativos. Como exemplos, podem ser citados os processos de planejamento de qualidade, comunicação e risco. 2.2.3 Processos de Execução Neste grupo estão os processos diretamente relacionados com o gerenciamento da equipe e de outros recursos objetivando o cumprimento do que foi planejado. Alguns processos deste grupo são descritos a seguir: • Execução do plano de projeto, o que implica o cumprimento propriamente dito das atividades do projeto conforme planejadas; • Verificação do Escopo, que é a formalização da aceitação do escopo do projeto; • Garantia de Qualidade, na forma de avaliação global e continuada da performance do projeto de modo a assegurar que o projeto vai satisfazer os padrões de qualidade estipulados; • Capacitação dos recursos humanos, com desenvolvimento individual ou em grupo da qualificação da equipe, visando a realçar a performance do projeto; • Disseminação da Informação, disponibilizando tempestivamente a informação para os stakeholders; • Seleção de Fornecedores via escolha entre fontes potenciais; • Gerência de contratos e relacionamento com os fornecedores. 2.2.4 Processos de Controle Este grupo de processos se dedica, grosso modo, à vigilância do projeto. Assegura que os objetivos do projeto são alcançados ao monitorar e medir o progresso confrontando com o planejado e tomando ações corretivas quando necessário. Com isso, alguns imprevistos de atraso, custo e escopo são contornados. O gerente de projeto deve optar, entre algumas alternativas, aquela que melhor corrija a questão. Por exemplo, uma atividade com atraso obriga decisão entre manter equipe em hora-extra e sobrecarregar o custo ou alterar o cronograma, previamente concebido, e ter repercussão no prazo de alguma das várias fases do projeto. Controle também implica tomada de decisões preventivamente, antecipando-se a alguns problemas possíveis. Alguns dos processos que se destacam neste grupo são assim descritos: 16 • Controle de alterações globais, que coordena mudanças intercorrentes em geral, inclusive aquelas afetas ao escalonamento, aos custos e à resposta aos riscos do projeto; • Controle de alterações do escopo; • Controle de custo, em função do que consta do orçamento; • Controle da programação das atividades, comparando com o escalonamento predefinido; • Controle de Qualidade, ao monitorar resultados específicos do projeto vis-àvis os padrões de qualidade e identificar e eliminar causas de desempenho insatisfatório. 2.2.5 Processos de Encerramento Nesse grupo estão incluídos os processos que formalizam a aceitação da materialização do projeto – ou de uma de suas fases – e o conduzem ordenadamente para um término. Um projeto deve ser bem concluído, no sentido ser objeto de análise e discussões, também porque as técnicas, os procedimentos e os processos que nele foram empregados eventualmente podem ser melhorados e adaptados para projetos futuros. Além disso, o próprio produto gerado pelo projeto em causa pode demandar, posteriormente, registros que, se bem relatados e analisados, contribuem para seu bom desempenho. Os principais processos deste grupo são: • Conferir realizações e resultados; • Fechar operações e dispensar equipes; • Aprender pela experiência do projeto; • Revisão dos processos e efeitos do projeto nos stakeholders; • Elaboração do relatório final. Como ultimo comentário acerca do assunto, os grupos de processos estão conectados pelos efeitos que produzem: o resultado de um torna-se o insumo (input) de outro. Os grupos de processos não são meramente um evento, mas atividades que se interpenetram e ocorrem em variados níveis de intensidade através de cada fase de um projeto. Embora não tão evidente, isso também acontece com os processos de iniciação e encerramento, ainda que em menor grau. 17 2.3 Áreas de Conhecimento do Gerenciamento de Projeto Ainda com base no enfoque processual adotado pelo Project Management Institute (1996), assume-se que o gerenciamento de projeto encerra aplicação sistematizada de um elenco de práticas e conhecimentos, os quais podem ser enquadrados em áreas, segundo seus processos componentes. Estes últimos interagem e demandam esforços, individuais ou de equipe, em função das necessidades do projeto. As assim chamadas áreas de conhecimento do gerenciamento de projeto se agrupam em nove módulos de gestão específica: Integração, Escopo, Tempos, Custos, Qualidade, Recursos Humanos, Comunicações, Riscos e Contratações. Por incluir o tema central do presente trabalho, a área de gestão dos tempos do projeto merece abordagem um pouco mais detalhada. 2.3.1 Gestão da Integração do Projeto Inclui os processos requeridos para assegurar que os vários elementos do projeto sejam adequadamente coordenados. A integração pode ser dar em vários níveis como com as operações rotineira da organizações, os escopos do produto e do projeto, os resultados gerados por diferentes especialidades funcionais – p. ex. informática, elétrica, mecânica. Isso também pode exigir decisões que envolvem balanceamento de trade-offs entre objetivos e alternativas que são intrinsecamente conflitantes. Os processos seguintes, por serem primordialmente integrativos, são os mais importantes desta área: desenvolvimento do plano do projeto, execução do plano do projeto e controle de mudanças globais do projeto. 2.3.2 Gestão do Escopo do Projeto Considera os processos indispensáveis para que o projeto inclua todo o trabalho requerido, e somente o trabalho requerido, para sua exitosa consecução . Primordialmente, refere-se à definição e controle do que está ou não está incluído no projeto. Um projeto consiste de um único produto, mas este último pode incluir elementos subsidiários, cada qual com seu escopo exclusivo, porém todos interdependentes. A ferramenta básica para explicitação do escopo é a chamada estrutura de decomposição do trabalho (EDT). Consiste em listagem detalhada discriminando os elementos constitutivos do projeto, que organiza e define seu escopo total: o trabalho não incluído na EDT está automaticamente fora do escopo do projeto. A EDT é produzida no processo de definição do escopo (cf. Lewis e Dennis). Os processos referidos 18 ao escopo são, principalmente: iniciação, planejamento, definição, verificação e controle de alterações. 2.3.3 Gestão dos Tempos do Projeto Integram a gestão dos tempos de um projeto os processos requeridos para garantir a sua conclusão dentro do prazo planejado. No que concerne ao cronograma das tarefas, é o próprio foco da pesquisa de tese presente, traduzido no Problema de Escalonamento de Projeto (PSP). Os principais processos envolvidos na gestão dos tempos do projeto são: Definição das Atividades A definição das atividades envolve identificação e documentação das atividades especificas que devem ser conduzidas visando ao cumprimento do elementos do projeto discriminados na EDT. Implícito neste processo é a necessidade de se definir as atividades de modo que os objetivos do projeto sejam alcançados. Ao final deste processo, tem-se uma listagem de todas as atividades integrantes do projeto. Seqüenciamento das Atividades Este processo reflete o encadeamento lógico das atividades, considerando as restrições de precedência, e trata de identificar e documentar as interdependências entre as atividades. Da precisa condução deste processo depende a elaboração de um escalonamento realista e de boa qualidade. Como insumos, este processo recebe a lista de atividades, a descrição do produto, as dependências das atividades. Ao final deste processo ter-se-á o diagrama de rede do projeto (cf. figura 3.1 (c) e (b)), quase sempre gerado por computador, expressando as dependências entre as tarefas. Estimação de Duração das Atividades Envolve estimativa, por especialistas, do provável período de trabalho necessário para completar cada tarefa listada. São levados em conta, para tanto, dados históricos e requisitos e disponibilidades de recursos, entre outros fatores. Uma das técnicas empregadas é a simulação, como a Analise de Monte Carlo (Hillier, 1995). Ao cabo deste processo, ter-se-á cada atividade com seu quantitativo de períodos estimados para sua duração. 19 Desenvolvimento da Programação das Atividades É precisamente neste processo que se insere o problema de escalonamento de projeto, PSP. Neste texto, o escalonamento (ou programação das atividades) significa a definição completa, mediante uso de ferramentas e técnicas, das datas inicial e final de execução de cada atividade, tomando em conta as restrições de recursos e de precedência – estas também ditas lógicas ou tecnológicas – entre as atividades (cf. subseção 3.2.8). Este processo freqüentemente deve ser repetido – juntamente com os processos relativos às estimativas de duração e de custo – antes que se tenha o efetivo escalonamento empregado no projeto. No decurso do projeto, além disso, deve ser atualizado quando imprescindível, no processo de controle adiante mencionado. Como ferramentas e técnicas coadjuvantes na montagem do escalonamento, tem-se PERT, CPM, simulação, nivelamento, compressão das atividades e heurísticas, entre outras, quase todas incorporadas em aplicativos comerciais de gerenciamento de projeto, os quais vão de fato gerar o escalonamento. Enquanto se dedica a próxima seção a estes sistemas comerciais, a seguir se comenta sobre PERT e CPM8 Tais ferramentas executam o cálculo. teórico do tempos mais cedo (EST e EFT) e tempos mais tarde (LST e LFT) de inicio e fim de uma atividade, sem levar em conta limitações de recursos. Calculam tão-somente o caminho crítico (cf. subseção 3.2.5) e a janela de tempo em que cada atividade deve ser executada, quando posteriormente se consideram as restrições de recurso. Conseqüentemente, seu resultado não pode ser considerado o escalonamento do projeto. Método do Caminho Critico (Critical Path Method, CPM). Calcula as datas determinísticas com base na lógica da rede, nas durações predefinidas – mais prováveis – de cada tarefa e em dado horizonte de tempo do projeto, T , que, p. ex., pode ser obtido pelo somatório das durações das atividades. O algoritmo é útil para o cômputo das chamadas folgas das tarefas e definição do caminho crítico (cf. subseção 3.2.5). Técnica de Revisão e Avaliação de Programa (Program Evaluation and Review Technique, PERT). Igualmente se vale das restrições de precedência expressas no diagrama de rede. Entretanto, computa o período de conclusão do projeto a partir da 8 E.I. Du Pont Company em meados da década dos 50, nos EUA, desenvolveu o CPM para gerenciamento do projeto de uma grande planta química; pouco depois, num esforço conjunto para desenvolvimento do míssil Polaris, a marinha americana e a empresa de consultoria Booz, Allen, and Hamilton criaram o PERT. Comum na Europa e análogo ao CPM é o MPM, Metra-Potencial Method. 20 estimação da duração média ponderada das atividades que figuram no caminho crítico, num processo probabilístico. Portanto, difere do CPM essencialmente pelo uso do valor esperado para as durações, em vez do mais provável. O PERT propriamente dito raramente é usado hoje em dia porque, entre outras limitações, tende a subestimar a duração média do projeto (cf. Morton, 1993). Como resultado final deste processo, tem-se o escalonamento básico do projeto, que deve incluir, no mínimo, as datas previstas de começo e fim de cada atividade. Pode ser apresentado na forma tabular ou gráfica, nos formatos de diagrama de rede ou gráfico de Gantt (figura 3.1(a)). Controle da Programação das Atividades Este processo deve ocorrer integrado com outros processos de controle das outras áreas. Resulta em atualizações e revisões do escalonamento básico, com conseqüentes ações corretivas e lições aprendidas. Basicamente, tenta influenciar os fatores que produzem alterações no cronograma, garantindo que as mudanças serão benéficas e gerencia tais mudanças. 2.3 4 Gestão dos Custos do Projeto Inclui todos os processos que garantem a conclusão do projeto dentro dos parâmetros do orçamento aprovado. Volta-se precipuamente para os custos dos recursos necessários para completação das tarefas, mas também se refere aos custos das decisões do projeto no que tange ao uso de seu produto. As diferentes necessidades de informação dos stakeholders igualmente devem ser consideradas. Uma descrição, definindo tipos e quantidades, dos recursos requeridos para cada elemento da EDT é resultante desta área. Compõe-se de vários processos, dos quais os mais importantes são: planejamento de recursos, estimação de custos, orçamentação de custos e controle de custos. 2.3.5 Gestão da Qualidade do Projeto Abrange aqueles processos requeridos para a segurança de que o projeto vai corresponder às necessidades com as quais está comprometido. Inclui “todas as atividades da função gerencial que determinam a política da qualidade, os objetivos e as responsabilidades e os implementam por meios tais como planejamento da qualida21 de, controle da qualidade, garantia da qualidade e melhoria da qualidade, dentro do sistema da qualidade”, conforme a gestão da qualidade é conceituada pelas normas da série ISO 9000, que norteia esta área de conhecimento, em conjunto com a série ISO 10000. A propósito, Icmeli e Rom (1998), a partir de uma ampla enquête com gerentes de projeto dos EUA, concluem que a mais importante função-objetivo de um projeto é aquela que tem a qualidade como critério de performance (cf. subseção 3.2.1). Os principais processos pertinentes à gestão da qualidade são: planejamento da qualidade, garantia da qualidade e controle da qualidade. 2.3.6 Gestão dos Recursos Humanos do Projeto Esta área comporta os processos que visam ao mais efetivo uso das pessoas envolvidas no projeto, incluindo os stakeholders. Um ingrediente decisivo no sucesso de um projeto é ter as pessoas certas no trabalho e gerenciá-las apropriadamente. A par das técnicas gerais de RH aplicáveis no âmbito organizacional e de ampla literatura (incorporar novos paradigmas, desenvolver novas tecnologias e formular estratégias flexíveis alinhadas com a organização), o gerenciamento de projeto tem especificidades com respeito aos recursos humanos que exigem tratamento especial e não devem ser negligenciadas. Por exemplo, o caráter efêmero do projeto implica que as relações pessoais e organizacionais, além de novas, são igualmente temporárias. O gerente de projeto deve adotar técnicas que sejam adequadas para esta singularidade do relacionamento. Os processos mais relevantes na gestão dos recursos humanos são: planejamento organizacional, seleção do pessoal e desenvolvimento da equipe. 2.3.7 Gestão das Comunicações do Projeto A gestão das comunicações comporta os processos necessários para, tempestiva e apropriadamente, assegurar geração, coleta, disseminação, estocagem e disponibilidade final da informação do projeto. Provê ligações críticas entre pessoas, idéias e informações que são necessárias ao êxito do projeto. Envolve um corpo de conhecimentos, não exclusivos do gerenciamento de projeto, voltados para elementos tais como seleção dos meios de comunicação, estilo de redação, liderança de reuniões, técnicas de apresentação, entre outros. Seus processos principais são: planejamento das comunicações, distribuição da informação, relatório de desempenho e encerramento gerencial. 22 2.3.8 Gestão dos Riscos do Projeto O risco deve ser entendido como a possibilidade de ocorrência de efeitos indesejáveis como resultado de um evento qualquer. Como todo projeto implica algo novo, envolve razoável grau de incerteza, o que potencializa a exposição ao risco. A gestão dos riscos compreende os processos atinentes à identificação, análise e resposta ao riscos potenciais do projeto. Essencialmente, objetiva maximizar os resultados de eventos benéficos e minimizar as conseqüências dos eventos adversos (Tavares, 1998). Esses processos são: identificação do risco, quantificação do risco, desenvolvimento de resposta ao risco e controle de resposta ao risco. 2.3.9 Gestão das Contratações do Projeto Aplica-se aos processos exigidos para aquisição de produtos e serviços externos necessários à execução do projeto. Abrange as relações de contratos, compras e suprimentos. Também pode incluir as relações cliente/fornecedor com outras unidades da organização hospedeira. Seus principais processos são: planejamento do aprovisionamento, seleção de fornecedores e contratados e gerência de contratos. 2.4 Sistemas Comerciais de Gerenciamento de Projeto Introduzidos a partir da década dos 60, os últimos anos testemunharam a emergência de um sem número de software comerciais voltados para o gerenciamento de projeto. Variam em capacidade desde aqueles para simples geração de gráfico de Gantt até outras aplicações para mainframe, que trabalham integrados com outros sistemas de gerenciamento corporativo; mas a diferença entre eles é menor a cada dia. Atualmente, torna-se muito difícil, para alguns projetos mais complexos, prescindir do concurso de instrumentos que automatizem alguns métodos e processos do gerenciamento de projeto, que de outra forma seria extremamente trabalhoso e tedioso. Deixar que o computador se encarregue de suporte táticos na forma de cálculo de caminho crítico, planilhas de orçamentação, gráficos e diagramas, propicia ao gerente maior disponibilidade de tempo para pensar os processos inerentes ao projeto. Como agravante, o gerenciamento de projeto em si é um formidável gerador de relatórios, e disso os software se incumbem de modo inigualável, com grande flexibilidade para elaboração de modelos sob medida para diferentes projetos e diferentes exi23 gências dos stakeholders. Contudo, mesmo os mais sofisticados pacotes não substituem a boa liderança ou a tomada de decisão judiciosa e, de per si, são incapazes de resolver conflitos, seja de tarefas seja de pessoal. A despeito disso, tanto para elaboração quanto para a atualização de alguns processos, os aplicativos hoje existentes tornam-se indispensáveis, notadamente para ambiente multiprojeto. Alinhamse entre os tipos de software mais vendidos no mundo. As pesquisas no campo dos sistemas comerciais de gerenciamento de projeto costumam acontecer em duas vertentes: análise da capacidade geral de gerenciamento de projeto do aplicativo e sua capacidade de alocação de atividade/recursos, a saber, geração de escalonamento de boa qualidade em face das restrições do projeto. Trabalhos do primeiro tipo podem ser encontrados , por exemplo, em (Assad, 1986 e de Wit, 1990). Todavia, as peculiaridades de recursos funcionais destes programas não são aqui examinadas9. O que se pretende, em vista do interesse do estudo em causa, é concisamente discuti-los sob o ponto de vista da otimização matemática. Os pacotes comerciais são, evidentemente, proprietários, de código fechado, com o que a metodologia de solução neles embutida não é de conhecimento geral. Mas sabe-se que todos eles , via o assim – inapropriadamente – chamado nivelamento (leveling), meramente calculam uma solução viável para o escalonamento (Pyron, 1997). Para este fim, empregam diferentes algoritmos baseados em alguma regra de prioridade (cf. seção 5.2), e não geram necessariamente o escalonamento mínimo no que tange ao prazo de encerramento do projeto – makespan (cf. subseção 3.2.1). Apenas em anos recentes pesquisas do segundo tipo vieram à tona (Johnson, 1992; Maroto, 1994; Farid, 1996). Isso decorreu da ausência de capacidade de alocação de recursos nos aplicativos anteriores à década dos 90. Além disso, os pesquisadores não dispunham de métodos de solução exata com que derivar soluções benchmark para instâncias de porte realista com as quais cotejar seus resultados (cf. seção 3.3). O estudo mais recente deve-se a Kolisch e Hempel (1996), onde o desempenho de sete aplicativos comerciais é aferido comparativamente. Testes estatísticos nesse trabalho detectaram um desvio médio de até 9,76% da solução ótima, para instâncias simples e de pequeno porte (variando em conjuntos de 10, 20 e 30 tarefas, num total de 160 instâncias), tendo como função-objetivo a minimização do makespan. A performance dos aplicativos é fortemente influenciada por alguns parâmetros de problema (cf. subseção 4.3.1). Por exemplo, os resultados se deterioram 9 Entidades tais como o Project Management Institute periodicamente divulgam avaliações destes programas. 24 fortemente à medida que o número de tarefas do projeto cresce. Conquanto tenham evoluído muito nos últimos anos, também com relação à capacidade de geração de escalonamentos de melhor qualidade, estes software estão ainda longe dos resultados obtidos por heurísticas divulgadas mais recentemente, mencionadas no capítulo 3. 2.5 Avanços no Campo do Gerenciamento de Projeto Muito da eficácia do gerenciamento de projeto está condicionado à sua habilidade em identificar e integrar o vasto inventário de informações e conhecimentos gerados nas últimas décadas nesta área. Nesse particular, avanços espetaculares têm acontecido. Em seu dia-a-dia, um gerente de projeto é permanentemente instado a tomar decisões, todas acabando por repercutir nos objetivos do projeto: custo, tempo, escopo e desempenho. Na maioria das vezes, bom senso basta para julgar as melhores opções. Todavia, tanto melhor se, em lugar de mera intuição, o gerente puder dispor de instrumentos para subsidiá-lo, quantitativa e quantitativamente, e guiá-lo em direção à melhor escolha entre as várias existentes. Os métodos de análise de decisão são concebidos para ajudar no ordenamento de complexas alternativas com base em critérios antes tangíveis que subjetivos. Graças aos implacáveis avanços da tecnologia em geral e, em particular, a dos computadores e também à evolução de métodos e modelos, presentemente já se pode contar com os Sistemas de Apoio à Decisão (DSS) dedicados ao gerenciamento de projeto. Tais sistemas facultam ao usuário a tomada de decisão mais acertada, com base em conhecimentos previamente adquiridos de uma forma integrada. Enquanto muito das ferramentas e produtos hoje disponíveis sustentam tomada de decisão individual, surgem continuamente sistemas coadjuvantes na decisão para grupos e organizações. Adicionalmente, essas ferramentas estão estendendo as fronteiras de pesquisa e aplicação ao incorporar capacidade de inteligência artificial nas deliberações das gestões de contratações, custos, riscos e tempos do projeto (cf. Lewis, 1998). No que se refere especificamente à gestão dos tempos do projeto, Antonisse et al. (1988) estão entre os primeiros a perceber que o escalonamento de projeto é uma área fértil para o apoio à decisão. Desde então, um grande número de protótipos acadêmicos vem surgindo. Os esforços bem sucedidos em combinar Machine Learning (cf. Langley, 1996) e abordagens de otimização na tomada de decisão na ma25 nufatura sugeriram aplicações correlatas em escalonamento de projeto. Outras iniciativas são relatadas em Davis (1992), Slowiński (1994), Jüngen, (1995) e Norbis, (1996). O capítulo não estaria suficientemente completo se não mencionasse a emergência da Internet como vetor de ampliação dos horizontes do gerenciamento de projeto, como de resto de todos os campos do conhecimento. E este fenômeno esta apenas começando. O uso da rede global (WWW) e tecnologias da Internet para coletar, organizar e dispor componentes de DSS para pesquisa e prática vem experimentando progresso sem paralelo. O amplo alcance da rede internacional favorece troca de conhecimentos nas áreas de dados, modelos e soluções benchmark para pesquisadores em todo o mundo. O longo tempo decorrido entre os resultados alcançados e sua disponibilidade para os especialista tem encurtado dramaticamente. Caminham nessa direção as iniciativas acadêmicas do tipo MMM (Günther, 1997), na Alemanha e DecisionNet (Bhargava, 1996), nos EUA, protótipos de sistemas de difusão mundial de componentes de software e tecnologia de decisão. Outro exemplo é site ftp da Universidade de Kiel (Kolisch e Sprecher, 1996), na Alemanha, que serve como repositório de conjuntos de dados e programas geradores de instâncias do PSP, para propósito de testes computacionais, amplamente utilizado no presente trabalho (cf. seção 4.3). Some-se a isso que a troca de informações com os fornecedores para suprimentos do projeto também estão sendo sensivelmente afetadas pela rede mundial, com conseqüentes reflexos nos tempos do projeto. Colocações de pedido, pagamentos de faturas, notificações de despacho e muitas outras transações rotineiras no gerenciamento de projeto já podem ser efetuadas usando padrões de mensagens do tipo intercâmbio eletrônico de dados (eletronic data interchange, EDI), que agiliza e aperfeiçoa a troca de informações entre empresas, aproximando fronteiras globais e reduzindo substancialmente o volume de burocracia e papel. 26 Capítulo 3 Onde se apresentam os fundamentos do Problema de Escalonamento de Projeto O Problema de Escalonamento de Projeto - PSP O s processos integrantes da gestão dos tempos de um projeto envolvem primordialmente ações direcionadas ao escalonamento (ou programação) das tarefas. Escalonamento e seqüenciamento são formas de tomada de decisão que se referem à alocação racional de recursos escassos a atividades dependentes no decurso do tempo. Esta área, mais do que qualquer outra da pesquisa operacional, se caracteriza por virtualmente ilimitados tipos de problemas e tem sido alvo de densa pesquisa desde a década dos 50, tendo como conseqüência um expressivo número de artigos. Tal fascínio se prende ao elevado nível de dificuldade na solução exata dos modelos, aliado a sua larga possibilidade de aplicação prática, o que faz surgir uma miríade de modelos e estratégias de solução. Com os recentes avanços ao longo dos anos, os pesquisadores têm relaxado muitos dos pressupostos restritivos do problema original e introduzido novas e mais realistas características de problemas. Num primeiro momento, os problemas dispunham de recursos infinitos. Mais tarde, o modelo incorporou a possibilidade de limitação de recursos e daí surgiu o problema de escalonamento de projeto com restrição de recursos, RCPSP. Mais recentemente, com a noção de modos de execução de tarefas, este último estendeu-se para o caso mais geral do MRCPSP. O estudo do PSP, além de ser útil para a prática do gerenciamento de projeto, também se aplica a sistemas de planejamento e programação da produção e ambiente de manufatura automatizada. O restante deste capítulo se organiza tal como se segue: visto que tudo começou com a programação de tarefas de manufatura, na seção 3.1 tem-se uma breve descrição de casos afetos a este ambiente; na seção 3.2, o problema de escalonamento de projeto propriamente dito é caracterizado, com muito mais detalhes, antes que 27 seus métodos de solução sejam discutidos, o que ocorre na seção 3.3; as seções 3.4 e 3.5 se dedicam aos casos estocáticos e preemptivos, respectivamente, também de grande importância para o gerenciamento de projeto. O capítulo se conclui com a seção 3.6, na qual dois novos modelos de PSP, julgados de interesse, são sucintamente descritos. 3.1 Definições para Ambiente de Job shop Quando a programação de tarefas é um processo que existe em sistemas de manufatura e produção, bem como em ambientes de processamento de dados, é referida como problema de job shop, JSP – também se usa a expressão machine scheduling. Consiste de um grupo de diferentes máquinas que executam operações em jobs. Dado um conjunto de jobs a serem processados em um dado ambiente de máquinas, o problema é seqüenciar os jobs, sujeitos a determinadas restrições, de maneira que um (ou mais) critério de desempenho seja otimizado. Cada job tem uma ordem especificada de processamento pelas máquinas, i.e., um job se traduz por uma lista de operações seqüenciadas, cada operação definida pela máquina requerida e tempo de execução. Adicionalmente, há algumas restrições relacionadas com JSP. Por exemplo, não há precedência entre operações de diferentes jobs e uma operação não pode ser interrompida e retomada tempos depois (não-preemptiva). É perfeitamente conhecido tratar-se de problema NP-difícil dos mais intratáveis (Lenstra e Rinnooy Kan, 1979). Para uma investigação aprofundada das técnicas de solução dedicadas ao JSP, convencionais e avançadas, consulte-se Blażewicz et al. (1996). O seguinte esquema de classificação de problemas do JSP (Grahan et al., 1979 e Pinedo, 1995) tem experimentado ampla aceitação. Um problema de escalonamento é descrito por um terno α | β | γ . O campo α diz respeito ao ambiente das máquinas e contém um único dado; o campo β refere-se a características do processamento e restrições e pode conter um ou mais dados ou mesmo nenhum dado; os detalhes acerca do critério de desempenho (cf. subseção 3.2.1) se encontram no campo γ, que geralmente contém uma única entrada. Segue-se uma seleta de modelos para JSP, com. as correspondentes entradas, entre parêntesis, para o campo α: 28 Job shop (Jm). Cada job tem sua própria rota a percorrer através das m máqui- nas. São de dois tipos: um job pode visitar qualquer máquina apenas uma vez ou pode ser reprocessado em mais de uma máquina, assim permitindo-se recirculação. Flow shop (fm). As máquinas são disposta em série e todas as tarefas (job) têm de ser processadas em cada uma das m máquinas. Todos os jobs têm o mesmo itinerário e devem ser processados em seqüência, primeiro na máquina 1, depois na máquina 2 e assim por diante. Após completado em um processador, um job deve aguardar na fila. Via de regra, usa-se o padrão FIFO (first in first out – o primeiro a chegar será o primeiro a ser atendido) para a fila, i.e., um job não pode furar a fila. Flexible flow shop (FFs). Trata-se de generalização do ambiente flow shop. Em vez de m máquinas em série, há s estágios em série, contendo determinado número de máquinas em paralelo cada um deles. Em cada estágio um job requisita uma única máquina e, na maior partes das vezes, qualquer máquina pode processar qualquer job. Open shop (Om). Análogo ao flow shop puro, exceto que agora os jobs po- dem ter tempo de processamento nulo e, também, seguir qualquer rota no ambiente de máquinas, quer dizer, diferentes jobs podem ter diferentes rotas. Algumas possíveis entradas para o campo β , que se referem às restrições do processamento, são: Preempções (prmp). o processamento do job pode ser interrompido em qual- quer tempo e retomado mais tarde, conforme conveniência do escalonamento. Enquanto isso, um outro job toma lugar na máquina. Restrições de precedências (prec). Obriga que um ou mais jobs tenham que ser completados antes que determinado job possa ter permissão para iniciar seu processamento. Para o campo γ, referente ao objetivo a ser minimizado, algumas possíveis entradas podem ser: 29 Makespan (Cmax). Se se consideram n jobs, e Cj é o tempo de processamento do job j, o makespan é definido como máx(C1 ,...,Cn), equivalente ao tempo de conclusão do último job a deixar o sistema. Tempo total ponderado de completação (∑wjCj). A soma dos tempos pondera- dos de completação fornece uma indicação do custo de se manter os jobs no sistema em dado escalonamento. O peso wj é um fator de prioridade relativa entre o job j e os demais. A soma dos tempos de completação também se diz tempo de fluxo, com o que ∑wjCj pode ser referido como tempo de fluxo ponderado. Como ilustração da notação, J2||Cmax denota um problema de job shop com duas máquinas e makespan como critério de desempenho ao passo que P3|prmp|∑wjCj descreve uma instância10 com 3 máquinas idênticas em paralelo nas quais os jobs podem ter seu processamento interrompido e o tempo de fluxo ponderado é o objetivo a ser minimizado. O problema de escalonamento de projeto é mais geral do que o JSP. Com efeito, problemas tais como os relacionados com o flow shop, open shop e job shop representam de fato casos particulares do PSP. 3.2 O Problema de Escalonamento de Projeto Os processos componentes da gestão dos tempos de um projeto (cf. seção 2.x) guardam relação direta com o problema de escalonamento de suas tarefas. Nos primórdios dos estudos, os problemas de escalonamento de projeto contemplavam apenas casos em que as tarefas podiam ser executadas de um único modo, a saber, demandando uma configuração fixa de recursos e com duração imutável. Este modelo denomina-se Problema de Escalonamento de Projeto com Restrição de Recurso - RCPSP. Somente em fins da década dos 70 (Elmaghraby, 1977) foi introduzida a possibilidade de as atividades serem praticadas de vários modos tal que possibilitasse o consumo de diferentes recursos com reflexos no seu tempo de execução e, consequentemente, seu custo. Dessa forma, a modelagem pôde capturar o ambiente multiprojeto mais geral com condução de atividades cujo desempenho seria função discreta dos recursos, com modelos implicando trade-offs dos tipos recurso-recurso e recurso-tempo (Sprecher, 1994). As atividades podem ser executadas de um dentre vári10 O conjunto de dados de entrada numéricos de um problema estabelece uma instância em particular. 30 os modos, os quais vão refletir combinações alternativas entre tipos e quantidades de recursos destinados a cada uma delas. Substituindo-se um tipo de recurso por outro, pode-se alterar o tempo de execução de uma atividade (trade-off de recursorecurso) ou, alternativamente, aumentando-se a quantidade de determinado recurso, pode-se diminuir o tempo de execução de uma tarefa (trade-off de tempo-recurso). O modelo que daí surge, mais geral e mais realista, é denominado Problema Multimodo de Escalonamento de Projeto com Restrição de Recurso- MRCPSP. 3.2.1 Elementos do PSP Em qualquer caso, o PSP se constitui de interações entre atividades, recursos, relações de precedência e medida de desempenho. Assume-se que todos os dados são disponíveis, deteminísticos e inteiros (Kolisch e Padman, 1997). O modelo resultante é uma extensão daquele tradicionalmente empregado no JSP. Atividades Todo projeto envolve atividades (também se diz tarefas ou jobs), as quais devem ser executadas para cumpri-lo com êxito. As atividades podem ser executadas de um ou vários modos, os quais determinam sua duração, as exigências de recursos de várias categorias e, possivelmente, fluxo de caixa. Uma tarefa se classifica como preemptiva se seu processamento, por interesse do escalonamento, for suscetível a interrupção, com posterior retomada; no caso contrário, a tarefa se diz não-preemptiva. Por vezes a interrupção, com subseqüente alocação do recurso a outra tarefa, é benéfica à otimização. Relações de precedência Restrições tecnológicas impõem, freqüentemente, que uma atividade j somente possa ter inicio após uma outra, dita precedente, já ter sido concluída. Nesse caso, a tarefa j diz-se dependente. Recursos Geralmente, as atividades, para sua completação, reclamam recursos, que podem ser classificados de acordo com categorias, tipos e valor. Por categorias, os recursos podem ser: renováveis, não-renováveis, duplamente restritos e parcialmente renováveis. 31 Renováveis. São restritos numa base periódica (hora, dia, semana, mês), i.e., independentemente do tamanho do projeto, os recursos renováveis são sempre disponível em cada unidade de tempo de projeto. A disponibilidade por período pode ser constante ou variar de período para período. Maquinas, equipamentos e mão-deobra são exemplos desta categoria; Não-renováveis. Considerando o horizonte de tempo inteiro para o projeto, tais recursos são limitados, i.e., o projeto (ou fase do projeto) dispõe de uma quantidade inteira para toda sua execução, sem restrição dentro de cada período isolado. O exemplo clássico é o orçamento do projeto. Matéria prima também pertence a esta categoria. Duplamente restritos. Sofrem a dupla restrição de serem limitados baseados em período de tempo e no horizonte de planejamento. Um exemplo seria um orçamento total do projeto que estipula um valor para o desembolso periódico. Mão-de-obra especializada também pode ser enquadrar como recurso duplamente restrito se, e.g., um trabalhador especializado pode permanecer apenas um limitado número de períodos no projeto. Via de regra, tal categoria não é explicitamente considerada, em vista de poder ser enquadrada simultaneamente em um recurso renovável e um não-renovável que são então acrescentados às suas categorias correspondentes. Parcialmente renovável. Introduzida mais recentemente, esta categoria limita a uti- lização dos recursos dentro de um subconjunto do horizonte de planejamento. Como exemplo, pode-se citar o de mão-de-obra especializada somente disponível em um dado período no projeto (cf. seção 3.6). A classificação por tipo é especifica para cada projeto e aprofunda a distinção dos recursos de cada categoria segundo suas funções. Por fim, cada tipo de recurso tem um valor associado, representando a quantidade disponível. Sempre que pelo menos uma categoria de recursos apresenta alguma restrição de disponibilidade, o PSP é rotulado problema de escalonamento com restrição de recursos. 32 Critérios de Desempenho do PSP Nos domínios da otimização matemática, uma medida (ou critério) de desempenho (ou performance) diz respeito ao que se pretende otimizar – minimizar ou maximizar. Refere-se, portanto, diretamente à função objetivo e, quando dois ou mais valores são comparados, funciona como uma medida para aferir a qualidade da solução, e. g., de um problema de escalonamento. A seguir são enumerados alguns dos mais comuns dentre os vários critérios de desempenho empregados para o PSP. Minimização de Makespan. Trata-se do mais pesquisado e largamente aplicado objetivo da programação de tarefas de um projeto. O makespan se define como o tempo decorrido entre o inicio da primeira tarefa e o fim da ultima tarefa a ser completada. É, portanto, a própria duração de todo o projeto. Uma vez que usualmente se assume o instante de tempo t=0 para o inicio do projeto, minimizar o makespan reduz-se a minimizar o máximo dos tempos de conclusão de todas as tarefas e tomar o tempo de conclusão da última como o valor do makespan. A minimização do makespan é classificada como medida regular de performance cuja definição vai mais adiante. Maximização do Valor Presente Liquido. Quando nível significante de fluxo de caixa está presente, representando desembolso para cobrir despesas de iniciação e progresso do projeto, o Valor Presente Liquido (Net Present Value – NPV) é a medida mais apropriada como critério de performance do projeto. Refere-se ao balanço entre as despesas para consecução da tarefa e a receita auferida após sua conclusão. A solução de modelos matemáticos deste tipo resulta nos tempos ótimos de inicio para cada tarefa e também no NPV ótimo do projeto. Dada a complexidade desse problema combinatório, a saber, dificuldade na obtenção de modelos matemáticos e sua solução, métodos exatos de solução aplicam-se somente a pequenas instâncias. Mais sobre o tema encontra-se em Herroelen et al. (1997), que conduzem uma imersiva revisão da literatura sobre a maximização do NVP como critério de performance, a partir do trabalho pioneiro de Russell (1970). Maximização da Qualidade. Icmeli e Ron (1998), em seu trabalho 99, onde exa- minam empiricamente o ambiente de projetos nos EUA, detectaram que o mais im33 portante dos objetivos, na expectativa do gerente de projeto, é maximizar a qualidade. Com base nisso, em um estudo pioneiro (Icmeli e Ron, 1997), os autores introduzem um modelo de programação linear mista dedicado a maximizar a qualidade do projeto. A qualidade de um dado projeto é mensurada baseado na quantidade de tempo e dinheiro despendidos em retrabalho de atividades que não atendem as especificações dos stakeholders. Minimização do Custo. Em vista de sua larga aplicação prática, este objetivo tem atraído enorme atenção dos pesquisadores nos últimos tempos. Os objetivos baseados em custo apresentam duas vertentes: (a) custo das atividades e (b) custo dos recursos. Em objetivos visando ao primeiro caso, a via pela qual as atividades são executadas, a saber, o tempo de inicio e/ou os modos escolhidos, resulta em custos diretos que são minimizados. Exemplos são os tradicionais problemas, contínuos, do tipo tempo/custo trade-off, e suas extensões discretas (Demeulemeester et al., 1996). Com objetivos voltados para o custo dos recursos, o escalonamento das atividades influencia o custo indiretamente, via recursos. Como exemplo, pode-se citar o caso clássico de nivelamento de recursos, onde se minimiza o desvio entre o estado de distribuição de recursos contra um estado desejável (Bandelloni et al., 1994). De forma combinada, o problema também pode ser multicritério, onde duas ou mais destas medidas de performance são simultaneamente otimizadas (cf. Slowiński et al., 1994 e Deckro & Hebert, 1990). 3.2.2 Descrição do PSP Antes de tudo descreve-se aqui o modelo mais geral, para o ambiente multiprojeto e, em seguida, suas simplificações. Consideram-se P projetos, cada um com seus prazos específicos de liberação (release date), πj, e de entrega (due date), εj. O (super-) projeto global se constitui de um conjunto J = {0,1,...,J,J+1} de atividades (tarefas, jobs) a serem executadas. Duas tarefas fictícias, j=0 e j=J+1 representam, respectivamente, a tarefa única de partida (fonte) e a única de encerramento (sumidouro) do projeto global. Ambas executáveis de um único modo, associado com duração zero e consumo nulo de recursos. A cada tarefa j correspondem dois conjuntos, Pj e Sj, que reúnem suas tarefas predecessoras imediatas e sucessoras imediatas, respectivamente. As atividades são topologicamente numeradas, com o que um predeces34 sor de j tem um rótulo menor que j. Além disso, em cada projeto as tarefas são rotuladas consecutivamente com FJp (LJp) sendo a primeira (última) tarefa do projeto p. Desse modo, o projeto p tem FJp-LJp+1 tarefas. Três categorias de recursos são empregadas para condução do (super-)projeto: o conjunto dos recursos renováveis, R, o conjunto dos recursos não-renováveis, N, e o conjunto dos recursos duplamente restritos, D. Cada recurso r ∈ R tem capacidade periódica de Κ ρ r e cada recurso r ∈ N tem uma capacidade total no projeto de Κ ν r . Recursos da categoria duplamente restrito são limitados com respeito à capacidade periódica, Κ ρ r , e capacidade total, Κ ν r . Cada tarefa real j pode ser processada em um dentre m = 1, ... , Mj modos diferentes. Assume-se que os modos sejam alinhados na ordem não-crescente das durações. Um modo define de forma única uma duração e uma demanda de recursos. Se a tarefa j é praticada no modo m, sua duração não-preemptiva é de djm11 períodos, seu uso de recurso renovável (duplamente restritos) r ∈ R em cada período em que está em execução é de κ ρ jmr unidades e seu consumo de recursos não-renováveis (duplamente restritos) r ∈ N é de κ ν jmr unidades ao longo de seu processamento. Observe-se, portanto, que os recursos duplamente restritos não são levados em conta explicitamente, mas incorporados às outras duas categorias. Os parâmetros são assumidos inteiros e sumariados na tabela 3.1. Uma solução viável do problema mais geral deve escalonar cada atividade em um de seus modos de maneira que as restrições de precedência e as de demanda de recursos escassos sejam respeitadas. Mínimo e Máximo Time Lags Na prática é freqüentemente necessário considerar intervalos de tempo específicos entre execuções das tarefas e não meramente a relação de precedência pura. Define-se então mínimo e máximo time lag para situações do tipo em que execução simultânea ou sem atraso de várias atividades é exigida; prazos para subprojetos ou atividades individuais são prescritos; existem janelas de tempo para disponibilidade 11 O subscrito m é suprimido na notação dos parâmetros nos casos em que a atividade dispõe de apenas um modo de execução. Destarte, para os modelos do RCPSP, djm denotar-se-á simplesmente dj. 35 de recursos; ou em escalonamentos voltados para ambientes de produção sob encomenda – make-to-order production. Com isso, entre os inícios de duas atividades, time lags mínimos e máximos podem ser especificados. Em geral, estes parâmetros dependem do modo de execução que se atribui a cada atividade. Sejam i,j ∈ J duas atividades diferentes executadas nos mín modos mi e mj , respectivamente. Um time lag mínimo d imi jm j ≥ 0 significa que entre os instantes de início das atividade i e j deve ser observado um intervalo de, no mínimín máx mo, d imi jm j unidades de tempo; Um time lag máximo d imi jm j ≥ 0 quer dizer que entre os instantes de início das atividade i e j deve ser observado um intervalo de, no mámín máx ximo, d imi jm j unidades de tempo. Um mínimo time lag d imi jm j = d imi , equivalente à du- ração da atividade i, implica que apenas restrição de precedência simples existe entre as atividades i e j enquanto que time lags em geral indicam restrição de tempo. Nos chamados problemas com restrição de precedência, nenhum máximo time lag tem que ser observado e qualquer mínimo time lag corresponde à restrição de precedência. Os time lags também podem ter como referência uma outra combinação entre o início e o fim das duas atividades consideradas. Assim, podem assumir as modalidades início-início, início-fim, fim-início e fim-fim. 3.2.3 Modelo Conceitual do PSP No caso mais geral, um PSP implica otimizar um dado critério de desempenho, função dos tempos de início e atribuição dos modos. Isso exige, para cada atividade j ∈ J, determinar o tempo de início e um modo de execução mj ∈ Mj tal que o uso de recursos renováveis pelas atividades executadas simultaneamente não exceda a capacidade destes recursos em qualquer tempo, o consumo dos recursos não-renováveis se restrinja às suas disponibilidades e os time lags, mínimo e máximo, sejam observados. Um escalonamento pode ser especificado por um vetor F, dos tempos de conclusão de cada atividade j ∈ J, F = (FT0, FT1, ... , FTJ+1) e um vetor m das designações de modos, m = ( m0, m1, mj, ... , mJ+1). 36 Minimizar f(F,m) s. a FTh ≤ FTj - djm (1) j = 1,...,J+1; h ∈ Pj ∑ kjmr ≤ Kr r∈R;t ≥ 0 ∑ kjmr ≤ Kr r∈N j∈ A ( t ) j∈ J (2) (3) (4) F ≥ 0 (5) Tabela. 3.2 Modelo Conceitual do PSP Uma vez dado um escalonamento, o conjunto de atividades que estão em progresso (ativas) no tempo t é dado por A(t) = { j ∈ J | FTj – djm ≤ t < FTj }. Conceitualmente, um modelo para o PSP (Talbot e Patterson,1978) envolvendo um único projeto, pode ser representado conforme se exibe na tabela 3.2. (1) define a função objetivo f(F,m) como função dos tempos de conclusão e da designação dos modos; (2) é a restrição que estabelece os time lags mínimos e máximos que devem ser observados; (3) garante que o emprego dos recursos renováveis a cada período não exceda sua capacidade; (4) assegura que as restrições de consumo dos recursos não-renováveis sejam obedecidas; (5) finalmente, define o domínio das variáveis de decisão. Obviamente, a formulação (1)-(5) é apenas um modelo conceitual, em vista de não contemplar dispositivo para atribuição dos modos e, além disso, ser o conjunto A(t) função das variáveis de decisão. Isso obstaculiza a solução do problema por técnicas da programação inteira mista (MIP), utilizando ferramentas do tipo LINDO ou CPLEX. De modo a se contornar este impeditivo, uma solução deve ser tentada a partir da formulação 0-1, descrita na próxima seção. O PSP com modos alternativos de execução das tarefas cujo objetivo seja min f(F,m):= FTn+1 diz-se Problema de Escalonamento de Projeto Multimodo com Restrições de Recursos com mínimo e máximo time lags e usualmente se denota MRCPSP/max. Um MRCPSP/max com uma única opção de processamento por atividade é chamado Problema de Escalonamento de Projeto com Restrições de Recursos com mínimo e máximo time lags , resumidamente RCPSP/max. De outra forma, se todas as restrições de tempo em MRCPSP/max e RCPSP/max são do tipo 37 que reflitam meramente as precedências das tarefas, então se obtêm o RCPSP, Problema de Escalonamento de Projeto com Restrições de Recursos, e o MRCPSP, Problema de Escalonamento de Projeto Multimodo com Restrições de Recursos, respectivamente. 3.2.4 Modelo Matemático MIP do PSP Multiprojeto Seja dado um limitante superior T para o makespan do (super-)projeto correspondente a um horizonte de tempo de planejamento, usualmente sendo calculado pelo somatório das durações máximas das tarefas. Podem ser usadas as relações de precedência e os modos de menor duração para derivar uma janela de tempo, i.e., o intervalo [EFTj, LFTj] que contém os tempos de conclusão viáveis no que tange à precedência, empregando o tempo mais cedo, EFTj, e o tempo mais tarde, LFTj, de conclusão de cada tarefa j, j = 0, ...,J+1. Os tempos EFTj e LFTj são calculados pelo MJ+1 ∑ minimizar φ ( x ) = LFTJ + 1 ∑ tx J + 1,mt m = 1 t = EFTJ + 1 sujeito a: Mj LFT j ∑ ∑ m = 1 t = EFT j Mj LFT j ∑ ∑ m = 1 t = EFT j Mj LFT j ∑ ∑ m = 1 t = EFT Mi LFTi ∑ ∑ m = 1 t = EFTi J Mj j= 1 m= 1 J Mj j= 1 m= 1 ∑ ∑ ∑ ∑ x jmt = 1 j = 0, ...,J+1 (6) p = 1, ..., P; j = FJp, ... , LJp (7) p = 1, ..., P; j = FJp, ... , LJp (8) j = 0, ...,J+1, i ∈ Pj (9) x jmq ≤ K rtρ r ∈ R ∪ D ; t = 1, ... , T (10) x jmt ≤ K νr r ∈N ∪ D (11) j = 0, ...,J+1, m=1, ..., Mj, t = EFTj, ...,LFTj (12) ( t − d jm ) x jmt ≥ π tx jmt = ε t ximt ≤ ρ k jmr k νjmr xjmt ∈ {0,1} ∑ q= t LFT j ∑ t = EFT j p Mj LFT j ∑ ∑ m = 1 t = EFT j t + d jm − 1 p ( t − d jm ) x jmt Tabela 3.3 Modelo Matemático MIP do PSP multiprojeto método tradicional de recursão avante e em retrocesso, conforme se mostra em Morton e Pentico (1993). Este mesmo método também computa os tempos mais 38 cedo, ESTj, e mais tarde, LSTj, de início para cada atividade. Com as janelas de tempo tal como exposto, reduz-se substancialmente o número de variáveis do problema, que agora já pode ser declarado como um problema de programação linear inteira mista, conforme introduzido por Pritsker et al. (1969) e estendido por Talbot (1982). Para tanto, são usadas variáveis de decisão binárias do tipo: 1, se a atividade j é completada no perído t e modo m x jmt = 0 , noutro caso nas quais j = 0, ...,J+1, m = 1, ..., Mj e t = EFTj , ..., LFTj . Se o objetivo é encontrar um escalonamento das tarefas de mínimo makespan, i.e., tendo o makespan como medida de desempenho, o modelo derivado é aquele exibido na tabela 3.3 , para ambiente multiprojeto sem restrição de time lags específicos. Como no (super-)projeto têm-se uma única tarefa final (j=J+1, sumidouro), minimizando-se a função objetivo φ ( x ) referida a esta tarefa, de fato minimiza-se o makespan . Com respeito às restrições associadas, tem-se que: (6) garante que a cada tarefa sejam designados exatamente um modo e um tem- (7) po de completação dentro de sua janela temporal [EFTj, LFTj]; assegura que nenhuma atividade se inicie antes da data de liberação (release (8) date) de seu projeto correspondente; obriga que nenhuma tarefa se conclua depois do prazo devido (due date) de seu projeto associado; (9) força obediência às relações de precedência; (10) previne o modelo contra inviabilidade no uso dos recursos renováveis e daqueles duplamente restritos; (11) limita o consumo de recursos não-renováveis e dos duplamente restritos às suas disponibilidades preestabelecidas; (12) finalmente, define todas as variáveis de decisão como sendo binárias. Observe-se que, como já foi apontado, os recursos duplamente restritos não têm de, explicitamente, ser formulados, de vez que podem ser facilmente tomados em conta apenas aumentando apropriadamente o conjunto dos recursos renováveis e não-renováveis. Esta formulação incorpora alguns problemas de escalonamento com restrições, de precedência e de recursos. Se se tem um único projeto, a classe de problema do 39 tipo RCPSP , no qual cada tarefa dispõe de um único modo de execução, estaria caracterizada tomando-se P =1, Mj=1, N=D=0, πp = 0 e εp = T . Igualmente para um único projeto, se cada tarefa pode ser processada em mais de um modo, tem-se o MRCPSP, o qual seria modelado fazendo P =1, πp = 0 e εp = T . Ainda, os problemas de escalonamento de produção do tipo job shop, flow shop e open shop bem como aqueles com uma ou múltiplas máquinas estão incluídos. Com efeito, pode-se demonstrar que o problema de job shop (JSP) clássico, onde m equivale ao número de máquinas, corresponde a um RCPSP com |R| = m recursos renováveis, cada um dos quais tendo disponibilidade de uma unidade por período (Sprecher et al., 1995). Assim, o problema faz parte da classe NP-difícil (Kolisch e Sprecher, 1996). Além disso, se |N| > 1 mesmo o problema de viabilidade para (6)-(12) é NP-completo (cf. Anexo). A mais comum das medidas desempenho é minimização do makespan, que é classificada como regular (cf. subseção 3.2.7). Contudo, outras podem ser consideradas. Apenas a título de ilustração e sem descer a detalhes, seguem-se algumas outras medidas: Denotando πj (εj) a data de liberação (prazo devido/prometido) da tarefa j e fazendo cmjt o fluxo de caixa produzido pela tarefa j quando processada no modo m e concluída no período t, têm-se: Minimização dos atrasos ponderados: 1 J+ 1 φ (x) = ∑ J + 1 j= 0 Mj LFT j ∑ ∑ m= 1 t = ε + 1 ( t − ε j ).x jmt Minimização do tempo de fluxo médio ponderado: φ (x) = 1 J+ 1 ∑ J + 1 j= 0 Mj LFT j ∑ ∑ m= 1 t = ε + 1 ( t − ε j ).x jmt Maximização do valor presente líquido (NPV): φ (x) = J+ 1 Mj LFT j j= 0 m = 1 t = EFT j ∑ ∑ ∑ c jmt .x jmt Dos três exemplos, apenas a maximização do NPV é classificada como medida nãoregular. Outras medidas de performance, regulares e não-regulares, são discutidas em Brucker et al. (1998a). 40 3.2.5 Representação de um PSP Além do gráfico de Gantt, como se apresenta na fig. 3.1 (a), em geral dois tipos de representação são empregados para traduzir a idéia de diagrama de rede de um projeto: atividade-no-arco(ativity-on-arc, AOA), conforme a fig. 3.1 (b), baseado em eventos e atividade-no-vértice (activity-on-node, AON), como mostrado na fig. 3.1 (c), baseado em atividades. Na representação do tipo AOA, os nós representam eventos e os arcos representam as atividades. Atividades fictícias são acrescentadas para representar o começo e o término de um projeto além de servir para preservar as relações de precedências entre as tarefas, como é caso da atividade G na fig. 3.1 (b). Em redes do tipo AON, as atividades e seus parâmetros são representados pelos nós enquanto arcos direcionados indicam suas relações de precedência. Diferentemente do gráfico de Gantt, as representações de rede citadas retratam graficamente as interdependências entre as tarefas. PSP’s cujo objetivo seja minimizar o makespan quase sempre adotam redes do tipo AON (cf. fig. 4.1), porque dispensam acréscimos de atividades fictícias para registrar a relação de precedência, o que contribui para minorar o esforço computacional. Não é por outra razão que software profissionais de gerenciamento de projeto preferem esta modalidade. Essa vantagem pode ser decisiva quando se consideram grandes projetos. Em verdade, o problema de modelar uma rede AOA de mínimo número de atividades fictícias que corresponda a um dado projeto é NP-difícil (Garey & Johnson, 1979). As razões da superioridade da representação AON sobre a AOA podem ser encontradas em Neumann e Schwindt (1995). O emprego de arcos partindo do fim de uma atividade até o início de outra (arcos tipo fim-início) com peso nulo constitui apenas a forma mais simples de utilização de redes AON . Significa que tão logo todas suas predecessoras estejam concluídas, a atividade j pode ter início com respeito à precedência. Quando indispensável, time lags são introduzidos pela utilização de pesos. Mínimos time lags são marcados por pesos positivos nos arcos enquanto máximo time lags recebem pesos negativos. Além daqueles do tipo fim-início, os arcos também podem ser dos tipos fim-fim, início-início e início-fim (Neumann e Schwindt, 1995). 41 tarefa B D A (a) F C 1 2 3 E 4 5 6 tempo 7 8 3 (b) 1 B tarefa A 2 2 duração 3 10 11 12 13 D G C 4 9 4 5 E 4 F 6 2 1 D B tarefa (c) 4 3 A 2 duraç E C 1 F 2 4 Figura 3.1 Métodos de representação para o PSP: (a) gráfico de Gantt; (b) rede do tipo atividade-no-arco (AOA); (c) rede do tipo atividade-no-vértice (AON). Em vista do exposto, tipicamente, um PSP é representado por uma rede AON acíclica e numericamente rotulada de modo que uma atividade j recebe um índice maior que o de todas as suas predecessoras (cf. figura 4.1). Com isso se tem o chamado grafo de precedência das tarefas. Diferentemente do PSP com mínimo makespan como objetivo, quando se lida com o problema de maximizar o NPV, a representação apropriada da rede é indispensável, porque a lógica dos fluxos de caixa exige registro preciso. Numerosos artigos estudam e sugerem representação sob medida para situações específicas. Detalhes podem ser encontrados em Kolisch e Padman (1997). 42 Caminho critico Caminho crítico, em um diagrama de rede do PSP, é definido como o caminho no grafo de precedência de maior comprimento entre as atividades fictícias de início e de fim do projeto quando as restrições de recursos são relaxadas. Seu comprimento corresponde ao makespan para o caso do PSP de recursos ilimitados calculado com o método CPM (cf. subseção 2.3.3). Nesse caso, todas as atividades, cujos ESTj|LSTj (ou EFTj|LFTj ) assumam valores que diferem, apresentam as chamadas folgas, representadas pela diferença entre estes tempos. Por extensão, uma atividade incluída no caminho crítico se diz atividade crítica. Da definição de caminho crítico, decorre que uma atividade crítica apresenta folga nula. 3.2.6 Notação e Classificação do PSP Conforme já salientado, o PSP corresponde ao caso mais geral dos problemas de escalonamento, em razão de os modelos do JSP (machine scheduling) serem casos particulares do escalonamento de projeto. Até o trabalho de Brucker et al. (1998a), não havia nenhum esquema de classificação para o PSP que fosse também compatível com o que é comumente aceito para o machine scheduling [cf. seção 3.1]: diferentes pesquisadores usavam diferente simbologia para representar um mesmo problema. Havia então uma lacuna entre os dois tipos de problemas de escalonamento com respeito a uma notação unificada bem como a um esquema de classificação. Sucede que o PSP representa uma generalização dos problemas de escalonamento de atividades (jobs) em ambientes do tipo job shop e flow shop. A nomenclatura então existente para o JSP (cf. seção 3.1) é adaptada e ampliada pelos os autores citados de modo a abranger os casos do PSP e identificar precisamente seus problemas. Além de uma notação comum, eles sugerem um esquema de classificação, i.e., uma descrição do ambiente de recursos (campo α ), das características das atividades (campo β ) e das medidas de desempenho (campo γ ), com o qual se podem enquadrar os modelos mais importantes. Como exemplo, empregando o esquema proposto sem exatamente detalhar todas as possíveis entradas para os campos, alguns modelos de escalonamento de projeto que aqui são discutidos recebem a seguinte nomenclatura: • PS|prec|Cmax : RCPSP, i.e., PSP monomodo, com makespan como função objetivo; • MPS|prec|Cmax : MRCPSP, i.e., PSP multimodo, com makespan como função objetivo; 43 • PS|temp|Cmax : RCPSP/máx, i.e, PSP com mínimo e máximo time lags, com makespan como função objetivo. • F PS|temp| ∑ c j β FT j : PSP com objetivo maximizar o NPV onde β é o fator de des- F conto por período e c j é o fluxo de caixa associado à atividade j cuja conclusão é assumida ocorrer no período FTj = Sj + dj. O fluxo de caixa pode ser positivo, para pagamento recebido, ou negativo, para custo incorrido. 3.2.7 Medidas Regulares de Desempenho Quando se tem uma medida regular de desempenho, dois escalonamentos que diferem somente no tempo final de uma atividade permitem comparação para um dado problema e se pode, por conseguinte, afirmar que o escalonamento que tem o menor tempo de conclusão para esta atividade é no mínimo tão bom quanto o outro, quer dizer, aquele domina este. Esta seção define medida regular de desempenho para o caso monomodo (RCPSP) que facilmente se estende para o caso multimodo, de maior amparo na realidade. Definição 1 (Sprecher et al. 1995). Sejam, respectivamente, FTo, ..., FTJ+1 os tempos de conclusão das atividades 0, ..., J+1. Uma medida de desempenho é um mapeamento φ : ≥J 0+ 2 → ≥ 0 que associa a cada (J+2)-upla (FTo, ..., FTJ+1), dos tempos de conclusão, um valor de desempenho φ ( FT0 , , FTJ + 1 ) . Quando se pretende a minimização, uma medida de desempenho diz-se regular se φ é monotonicamente crescente com respeito ao ordenamento vetorial dos compo' ' nentes, i.e., para φ ( FT0 , , FTJ + 1 ) > φ ( FT0 , , FTJ + 1 ) implica FT j ≥ FT j' ∀ j , 0 ≤ j ≤ J + 1 e FT j > FT j' ∃ j , 0 ≤ j ≤ J + 1 . Como já observado, a medida regular de desempenho mais comumente utilizada para o PSP é a minimização do makespan. A noção de medida regular de desempenho pode ser imediatamente estendida ao MRCPSP. Nesse caso, cada atividade pode ser processada de vários modos, indicando as interações entre custo, duração e recursos. Uma vez que a cada atividade j seja atribuído um modo, a classificação do escalonamento reduz-se àquela do RCPSP ora apresentada. 44 3.2.8 Classificação de Escalonamentos: Viável, Ativo, Semi-ativo e Sem-atraso Antes do trabalho pioneiro de Sprecher et al. (1995), que introduz uma classificação precisa e geral, na qual se baseia esta seção , a maioria dos pesquisadores não fazia menção à tipificação dos escalonamentos utilizados nos problemas do gerenciamento de projeto. Em alguns casos, apenas se lança mão diretamente da classificação convencional utilizada no contexto do JSP, sem qualquer adaptação. ”A razão disso é, de certo modo, explicada pela forma como o assunto é apresentado pelos livros-textos mais freqüentemente citados (Baker, 1974 e French, 1982), nos quais as definições são mais ilustrativas do que formais e assim suscetíveis de ambigüidades no caso mais geral do RCPSP”, argumentam Sprecher et al. (1995). Entretanto, uma adequada classificação dos escalonamentos é útil para o estudo do PSP, porque configura critério coadjuvante na categorização dos procedimentos para sua solução baseada nos tipos de escalonamento para os quais se voltam. Ao cabo disso, a metodologia estendida se aplica também ao JSP. Um escalonamento pode ser definido como uma (J+2)-upla S = (ST0 , ..., STJ+1) na qual STj denota o tempo de início da atividade j, 0 ≤ j ≤ J+1. Considerem-se A(t) o conjunto das atividades ativas, i.e., cujo processamento está em curso no período t, 0≤ t≤ T , A(t) := { j ∈ J | STj ≤ t < STj + dj }. e Pj o conjunto das tarefas predecessoras imediatas de j. Extraídas de Sprecher et al. [1995], têm-se as seguintes definições: Definição 2 Um escalonamento S é dito viável se obedece às relações de precedência enquanto observa as restrições de recursos. Isto é, STi + d i ≤ ST j , j = 1,...,J+1, i ∈ Pj e ∑ j∈ A( t ) k jr ≤ K rρ r ∈ R, t = 0 ,...,T . Definição 3 Um left shift da atividade j, 0 ≤ j ≤ J+1, é uma operação em um escalonamento viável ' S que resulta um outro escalonamento viável S’ de modo que STi = STi para i, 45 0 ≤ i ≤ J + 1, i ≠ j . Se, após o left shift, STj - ST j' = 1, a operação se diz left shift de período unitário. Definição 4 Uma operação do tipo local left shift em j, 0 ≤ j ≤ J+1, é aquela que se obtém após aplicar-se sucessivamente um ou mais left shift de período unitário no escalonamento viável S . Definição 5 Um left shift global da atividade j, 0 ≤ j ≤ J+1, é aquele que não pode ser obtido pela aplicação de um left shift local. Definição 6 Um escalonamento viável é semi-ativo se nenhuma das atividades j, 0 ≤ j ≤ J+1, é passível de operação left shift. local. Definição 7 Um escalonamento viável é ativo se nenhuma das atividades j, 0 ≤ j ≤ J+1, é passível de operação left shift., local ou globalmente. Cada RCPSP pode ser unicamente transformado em outro do tipo RCPSP de duração de período unitário (UTDRCPSP) no qual cada atividade j, 1 ≤ j ≤ J, é subdividida em dj atividades, cada qual com duração unitária (Davis e Heidorn, 1971) . Desta forma, um escalonamento viável S de um RCPSP corresponde de modo único a um escalonamento viável UTDS do UTDRCPSP. Definição 8 Para o RCPSP, um escalonamento viável S se diz sem-atraso (non-delay) se seu correspondente escalonamento UTDS é ativo. 46 Teorema Seja SC o conjunto dos escalonamentos, SV o conjunto dos escalonamentos viáveis, SSA o conjunto dos escalonamento semi-ativos, SA o conjunto dos escalonamentos ativos e SND o conjunto dos escalonamento sem-atraso. Então, vale a seguinte relação: SND ⊆ SA ⊆ SSA ⊆ SV ⊆ SC. Observações: • Se se considera uma medida regular de desempenho φ e um escalonamento S’ se obtém a partir de outro, S, por uma operação left shift de uma atividade j, 0 ≤ j ≤ J + 1 , então S é dominado por S’ com respeito a φ . • Dentro de um left shift local, cada escalonamento intermediário tem de ser viável, por definição. • ' Um left shift global de j, 0 ≤ j ≤ J+1, obriga STj - ST j > 1 • Um escalonamento semi-ativo, em geral não único, pode ser gerado a partir de um escalonamento viável por uma sucessão de left shift locais. Finalizando a seção, é de importância salientar que Sprecher et al. (1995) provam que, quando se considera uma medida regular de performance, o conjunto dos escalonamentos sem-atrasos pode não conter um escalonamento ótimo. 3.3 Métodos para Resolução do PSP Se o PSP é irrestrito no que se refere aos recursos e tão somente restrições de precedência devem ser observadas, o problema torna-se polinomialmente solucionável por um simples algoritmo de recursão avante, no qual cada atividade é programada em seu tempo mais cedo, tendo em conta as relações lógicas da rede associada. Em razão disso, esta seção trata apenas de solução do problema restrito no sentido amplo, tema central do presente trabalho. Adiante se faz uma breve revisão das estratégias mais eficazes difundidas pelos pesquisadores, com ênfase nos anos 90, inicialmente para o RCPSP seguido do MRCPSP. Para um histórico do assunto até o início da década dos 70, veja-se o minudente trabalho de Davis (1973). A partir dos 70 e até início dos 90, sugere-se como fonte de consulta o artigo de Icmeli et al. (1993). Circunscreve-se a investiga47 ção aos métodos que se dedicam àqueles problemas cujo objetivo é a minimização do makespan que, como se vê nos próximos capítulos, é o escopo do estudo de caso. Ademais, por igual motivo, métodos de solução heurística são discutidos mais detidamente. Os métodos de solução do PSP, para efeito didático, podem ser enquadrados em uma dentre duas vertentes: exatos e aproximados. Métodos de Solução Exata Nesse caso, a meta é o calculo da solução ótima da função objetivo. Os métodos de solução exata (ou, simplesmente, métodos exatos) têm sido usados mais freqüentemente para geração de soluções benchmark, em face da natural dificuldade de cálculo da solução ótima do problema (cf. Anexo). As estratégias até agora utilizadas para a minimização do makespan são do tipo: programação dinâmica, programação zero-um e esquemas de enumeração implícita com branch & bound. Ultimamente, em razão de seus resultados superiores, há um nítido predomínio dos métodos enquadrados neste último tipo, o qual pode ser resumidamente descrito como se segue: Método branch&bound Suponha-se o problema de seqüenciar n tarefas independentes em um processador, dispondo-se de uma função com a qual se possa calcular o valor numérico da solução, i. é, a qualidade do escalonamento. O método branch&bound inicia por gerar uma árvore de decisão com n ramos, representando as n opções possíveis para o primeira tarefa a ser executada, compondo assim o primeiro nível. Ato contínuo, cada ramo do primeiro nível se ramifica (branch) também, nesse caso n-1 vezes, construindo o segundo nível, para cobrir todas as possíveis alternativas das n-1 tarefas remanescentes como a segunda a ser processada. Prosseguindo-se dessa forma, sucessivamente, até o n-ésimo nível, a árvore atinge n! ramos, um número que pode ser gigantesco, a depender, obviamente, da quantidade de tarefas. Em vez, portanto, de avaliar todas as soluções, o procedimento identifica e suprime (poda) regiões da árvore nas quais se pode provar não haver solução ótima e, assim, diminui o espaço de enumeração. Essa fase está associada à operação de fixação de limites (bounding), ao envolver o cálculo de limitantes inferiores/superiores para a solução ótima em cada um dos nós gerados na fase anterior (branching). Sucessiva48 mente analisando e podando partes da árvore, o método termina por encontrar a solução exata (se não se esgotar antes o tempo computacional preestabelecido). Métodos de Solução Aproximada Os procedimentos cujo propósito é o cômputo de soluções tão próximas quanto possível da solução exata dizem-se métodos de solução aproximada (ou, simplesmente, métodos aproximados ou sub-ótimos). Também, freqüentemente, são referidos meramente como heurísticas. Heurística é uma técnica que tenta a resolução de problemas matemáticos via busca de soluções sub-ótimas, em um razoável custo computacional, sem ser capaz de garantir otimalidade, nem indicar o quão próximo do ótimo a solução encontrada está. Anos atrás, decidir-se por abordagem heurística era encarado como, por assim dizer, admissão de derrota. Mas, de há muito, já se sabe que a maioria dos problemas combinatórios de escalonamento são inescapavelmente intratáveis (Garey & Johnson, 1979). “Se se insiste em algoritmos que garantidamente encontrem soluções ótimas, o atual estado da arte tem somente respostas exponenciais para oferecer. Por isso, é sem surpresa que a maior parte dos algoritmos para escalonamento são heurísticos por natureza”, argumenta Schirmer, 1998. Estratégias heurísticas para o PSP, tendo makespan como objetivo, basicamente enquadram-se em quatro metodologias: escalonamento baseado em regra de prioridade, branch&baund truncado, conceitos de arcos disjuntivos e abordagens metaheurísticas12. Métodos baseados em regra de prioridade Ainda representam a classe mais importante, a despeito de serem já bastante antigos. Isso se deve, entre outras razões, à sua facilidade na elaboração e implementação e baixo custo computacional, em termos de tempo e memória. Essa característica permite integrá-los como sub-rotinas rápidas em abordagens meta-heurísticas mais sofisticadas. Em verdade, a imensa maioria de programas comerciais de gerenciamento de projeto basea-se em simples regras de prioridades (Kolisch 1996a). Uma estratégia desse tipo para solução do PSP é formada por dois componentes: uma regra de prioridade e um esquema de geração de escalonamento. Quanto aos 12 Procedimentos que, tipicamente, exploram o conhecimento adquirido com a avaliação de soluções previamente visitadas. 49 esquemas de geração de escalonamento, dois tipos se distinguem (cf. seção 5.x): o método em série ou serial e o método em paralelo. Compostos de J estágios, ambos terminam por gerar um escalonamento viável, à medida que acrescentam atividades a um escalonamento parcial. A cada estágio, o esquema constrói o conjunto de todas as atividades escalonáveis, chamado conjunto de decisão. Uma atividade é então tomada desse conjunto, utilizando como critério de escolha uma regra de prioridade específica. Kolisch – 1996b demonstra que, enquanto o esquema em série gera escalonamentos ativos, o esquema em paralelo produz escalonamentos sematrasos. A depender do número de escalonamentos gerados, um procedimento baseado em regras de prioridade pode ser classificado em monopasse, produzindo apenas uma solução, ou multipasse, para geração de mais de uma solução. Branch&bound truncado Análogo ao esquema enumerativo branch&bound já descrito mas, em vez de rastrear toda a árvore de enumeração, conduz apenas uma exploração parcial. Desse modo, o processamento é interrompido tão logo seja atingido um critério de parada e retorna a melhor solução, não necessariamente a exata (e.g., Alvares-Valdés & Tamarit, 1996). Algoritmos de arcos disjuntivos Utilizam a metodologia desenvolvida por Balas–1969 [13] para o JSP. A idéia básica por trás das abordagens derivadas é estender as relações de precedência (o conjunto dos arcos conjuntivos) ao se acrescentarem arcos adicionais (os arcos disjuntivos). Essa fase se dá de maneira que os conjuntos de atividades tecnologicamente independentes, mas que não podem ser escalonadas simultaneamente por limitação de recursos (conjuntos proibidos mínimos) sejam destruídos. Desse modo, o escalonamento de menor tempo mais cedo se mantém viável em precedência e recursos. Estratégias meta-heurísticas exploram o espaço viável de modo global e surgiram em anos recentes. As de maior destaque são Busca Tabu (TS) –Tabu ou Taboo Search – , Simulated Anealing (SA), GRASP (Feo e Resende, 1994) e Algoritmos Genéticos (GA) (Goldberg, 1989). Estas duas últimas são descritas no capítulo 5, enquanto adiante se faz um resumo funcional das duas primeiras. Busca Tabu 50 Trata-se de um método de busca local que surgiu a partir do trabalho precursor de (Glover, 1989 e 1990). Uma lista tabu é um conjunto de soluções definidas por informações das últimas iterações do procedimento. O número de elementos desse conjunto é um valor fixo ou estipulado pela estado da busca ou de um problema em particular. Dada uma solução e sua vizinhança, o algoritmo faz mover para uma outra solução da vizinhança que apresenta melhor valor para a função objetivo. Contudo, movimentos que levam a uma solução da lista tabu são proibidos, i.e., são tabu, o que previne que o método reexamine soluções mais recentemente visitadas. Se não houver movimento que melhore a solução corrente, a busca tabu executa aquele que introduz menor mudança no valor da função objetivo. Um elemento básico na busca tabu é o chamado critério de aspiração, o qual define quando um movimento, embora constante da lista tabu, é permitido. Todo esse mecanismo permite avaliar maior número de ótimos locais, o que faz crescer a possibilidade de cálculo de solução ótima global. Um critério de parada, além do tempo de execução e número total de iterações, pode ser imposto por um limite no número de movimentos consecutivos com os quais não se produz mais nenhuma melhoria. Simulated Anealing O método foi proposto por Kirkpatrick et al. (1983) e tem sido amplamente aplicado na solução aproximada de problemas de otimização. É inspirado na analogia entre a mecânica estatística e a otimização combinatória e, portanto, tem origem bem diversa da busca tabu mas, em comum, ambos os métodos são fundamentalmente concebidos para evitar ou escapar de ótimos locais. O termo annealing refere-se ao resfriamento e recristalização de material em processos de sistemas térmicos. A matéria, inicialmente aquecida além de seu ponto de fusão, tem sua temperatura baixada paulatinamente, com base em uma programação específica (annealing scheduling), até que a vizinhança da temperatura de solidificação seja alcançada, na qual o sistema atinge o seu estado de energia mínima (ground state). Em última análise, o método SA é uma simples abordagem Monte Carlo (cf. Hillier, 1995) que simula o comportamento do sistema para alcançar o equilíbrio térmico a uma determinada temperatura em uma dada programação de resfriamento. 3.3.1 Algoritmos de Solução Exata para o RCPSP Exemplos de procedimentos elaborados para minimização do makespan são: 51 • programação dinâmica (Carruthers & Battersby, 1966); • programação zero-um (Pritsker et al.,1969 e Patterson & Huber, 1974); • esquemas de enumeração implícita com branch&bound (Talbot & Patterson, 1978; Stinson et al., 1978; Christofides et al.,1987; Demeulemeester et al., 1996; Simpson & Patterson, 1996). Segue-se uma rápida discussão a respeito de alguns algoritmos que foram ou são estado-da-arte e dedicados ao PS | prec | Cmax. No algoritmo de enumeração de Talbot & Patterson (1978) as atividades são ordenadas numa lista respeitando as relações de precedência. Partindo da primeira tarefa da lista, o processo de enumeração tenta escalonar a próxima atividade da lista o mais cedo possível dentro de sua janela temporal e observando limitações de precedência e recursos. A enumeração básica é incrementada por cortes de redes que facultam podar uma parte da árvore de enumeração. Simpson & Patterson (1996) implementam este algoritmo em processadores paralelos. O algoritmo de Stinson et al. (1978) é do tipo branch & bound baseado na árvore de enumeração desenvolvida originalmente para o RCPSP com recurso único. Cada nó da árvore representa um escalonamento parcial viável. A seleção dos nós é governada por um conjunto de seis regras de prioridades. Demeulemeester et al. (1996) apresentam uma extensão da abordagem de Christofides et. al. (1987). Comparado com o método anterior, de Stinson, se diferencia principalmente pela árvore de enumeração, na qual novos nós são criados considerando o conjunto das atividades que são adiadas, em vez daquelas que são escalonadas. Brucker et. al. (1998b), valendo-se da experiência adquirida em trabalho para o ambiente job shop , sugerem uma abordagem branch & bound completamente nova, quando introduzem um conceito inédito de relações para pares de tarefas: conjuntiva, para pares que não apresentam precedência; disjuntiva para tarefas que não podem ser processadas simultaneamente por limitações de recursos; paralela, para pares que têm que ser executados simultaneamente pelos menos em um período e, finalmente, flexibilidade, para pares que não guardam nenhuma das relações anteriores. O método utiliza três tipos de limitantes inferiores: programação linear com relaxação de restrições; metodologia de job shop de duas máquinas ; e seqüência critica de Stinson et al. (1978). 52 Sprecher (1997) adapta seu procedimento exato originalmente criado para o PSP multimodo e o aplica para o caso RCPSP, sendo o método mais competitvo hoje disponível. 3.3.2 Algoritmos de Solução Aproximada para o RCPSP Apresenta-se uma revisão sucinta dos algoritmos desenvolvidos para minimização do makespan: Procedimentos baseados em regras de prioridades Referências de trabalhos onde se utilizam os esquemas em série e em paralelo, tanto monopasso quanto o multipasso, podem ser encontrados no alentado trabalho de Kolisch & Padman (1997). O emprego do método paralelo em um único passo é mais freqüente do que o serial. Kolish & Drexl (1996) propõem um procedimento de busca adaptativa que é uma variação do caso multipasso baseado nos esquemas de geração em série e em paralelo. Mausser & Lawrence, (19XX), empregam o método paralelo para gerar uma solução viável em conjunto com estrutura de blocos para melhorar o makespan do escalonamento. Na tentativa de diminuir o tamanho do projeto, o procedimento basicamente reescalona blocos individuais. Procedimentos baseados em branch & bound truncado Em Alvares-Valdés & Tamarit (1996), os nós consistem de conjuntos de atividades que têm que ser atrasadas. Em vez de enumerar todos os nós descendentes, o procedimento, implícita ou explicitamente, elege um nó. Basicamente, nessa heurística o mecanismo de geração da árvore de enumeração é o mesmo daquele mostrado em Demeulemeester & Herroelen (1992) e sugerido em sua essência por Christofides et al. (1987). Procedimentos baseados em Arcos disjuntivos Exemplos de aplicação podem ser encontrados em Shaffer et al. (1965), Bell & Han (1991) e Alvares-Valdés & Tamarit (1996). Shaffer et. al. (1965) restringem o escopo para os conjuntos proibidos nos quais todas as atividades no escalonamento mais cedo são processadas ao mesmo tempo. Alvares-Valdés & Tamarit (1996) sugerem quatro diferentes modos de destruir o conjunto mínimo proibido. Bell & Han (1991) 53 apresentam um algoritmo de duas fases. A primeira fase é similar à estratégia de Shaffer et al. (1965) e a segunda tenta melhorar o resultado gerado na primeira ao remover arcos redundantes, cancelar as atividades do caminho crítico e repetir a primeira fase. Procedimentos meta-heurísticos A abordagem de busca local desenvolvida por Storer et al. (1992) para o ambiente job shop é explorada nos trabalhos de, e.g., Leon & Balakrishnan (1995) e Cho & Kim (1997), de modo a adaptá-la ao RCPSP. Essencialmente, se codifica a solução como uma lista de números que atribui a cada atividade um valor de prioridade. Ao se utilizar essa lista em um esquema de geração de escalonamento obtêm-se uma solução viável e um valor para o makespan. Este tipo de codificação pode ser aproveitado para diferentes tipos de métodos de busca local tais como busca tabu, simulated annealing, algoritmo genético e GRASP. Hartmann (1997b) propõe um algoritmo genético cuja codificação é baseada em permutação que contém conhecimento específico do problema e o compara favoravelmente com outros dois: o algoritmo genético de Lee & Kim (1996), que utiliza uma codificação baseada no valor da prioridade e com o método de Özdamar (1996), adaptado para o RCPSP, que se baseia numa representação de regras de prioridade. Baar et al. (1997) propõem dois algoritmos de busca tabu que diferem pelas vizinhanças. Um codifica uma solução como uma lista de atividades que pode ser convertida em um escalonamento fazendo uso do esquema de geração em série; o outro algoritmo gera sua vizinhança a partir da solução utilizando o método de Brucker et al. (1998b). Relatos de comparação entre os métodos aproximados dão conta de que atualmente os que apresentam melhores resultados são o algoritmo de busca adaptativa de Kolisch e Drexl (1996), a busca tabu de Baar et al. (1997), o algoritmo genético de Hartmann (1997b) e o método de simulated annealing de Bouleimen & Lecocq (1998). Segundo resultados de testes conduzidos por Kolish & Hartmann (1998), avaliando performance de heurísticas em instâncias maiores, os algoritmos de Hartmann (1997b) e Bouleimen e Lecocq (1998) são os mais promissores entre os aqui examinados. Não obstante, mais recentemente, Hartmann (1999) idealizou uma heurística evolucionária que supera em desempenho todos os métodos até agora 54 disponíveis para solução do PS | prec | Cmax. Trata-se de um algoritmo genético que, ao mesmo tempo em que avalia uma solução e tende a computar outra de melhor qualidade, também escolhe automaticamente o procedimento mais adequado para resolver o problema, com base no conhecimento específico da instância e, por isso, recebeu o qualificativo de auto-adaptável. 3.3.3 Algoritmos de Solução Exata para o MRCPSP Todos os procedimentos exatos para o problema MPS | prec | Cmax são extensões de métodos branch&bound originalmente propostos para solução do PS | prec | Cmax. Com base em seu trabalho anterior (Talbot & Patterson, 1978), Talbot (1982) propõe uma estratégia de solução heurística de duas fases. Na fase um, tarefas, modos e recursos renováveis são selecionados de sorte que se possa acelerar o procedimento de enumeração da fase seguinte. Na fase dois se emprega uma lista de atividades e se escolhe a próxima atividade da lista para ter início o mais cedo e em seu modo de menor duração. Alguns trabalhos posteriores são refinamentos deste método. Hartmann & Drexl (1997) generalizaram o procedimento exato de Stinson et al. (1978) para o contexto multimodo. Sprecher et al. (1997) estendem o esquema de enumeração de Demeulemeester & Herroelen (1992) para o caso multimodo, sendo o método que atualmente apresenta melhor desempenho. Muito embora amplamente estudados, tais métodos têm apenas limitada aplicação em vista de sua incapacidade para resolução de problemas de grande porte, mais comuns no mundo real. Em geral, falham ao tentar resolver instâncias com mais de 15 atividades (Kolisch & Drexl, 1997), daí mais largo emprego de métodos heurísticos. 3.3.4 Algoritmos de Solução Aproximada para o MRCPSP Heurísticas para este caso, no mais das vezes, empregam: • regras de prioridade; • simulated annealing; • algoritmo genético. 55 Procedimentos baseados em regras de prioridades Boctor (1993), em seu método do tipo multipasso, emprega um esquema de geração em paralelo modificado, no qual uma atividade está no conjunto de decisão se for viável nos recursos em pelo menos um modo. A escolha das tarefas é governada pelos modos de menor duração e pela regra de prioridade MSLK (cf. seção 5.2). Drexl & Grünewald (1993) sugerem uma abordagem de amostragem aleatória tendenciosa referida como regret-based. O valor regret de um candidato j mede, no pior caso, as conseqüências que poderiam advir da escolha de outro candidato. Valemse da regra de prioridade SPT e do esquema de geração em série e é considerado o esquema de amostragem de melhor desempenho. Slowiński et al. (1994) sugerem uma estratégia multicritério em seu sistema de apoio à decisão (DSS) para o MRCPSP com objetivos de tempo e custo. O método é fundamentado em três tipos de heurísticas com base em regras de prioridade, simulated annealing e branch & bound. Seu ponto chave é a lista de atividades, viável em precedência, e construída a partir de uma entre doze regras de prioridades. O DSS foi proposto antes como um protótipo, com o que não se relata nenhum experimento computacional rigoroso. Özdamar & Ulusoy (1995) ampliam sua abordagem de análise baseada em restrição local para resolver o caso multimodo com |N|=1. O método usa um esquema de escalonamento paralelo para decidir via as assim chamadas condições essenciais qual par atividade-modo deve ser escolhido. Os autores relatam resultados que são consistentemente melhores que métodos monopasso baseados em regra de prioridade e também superior a um do tipo multipasse. A abordagem baseada em restrição sofre de duas desvantagens: (1) a complexidade no tempo do pior caso é exponencial e (2) mostra-se inadequada para problemas mais restritos no que tange a múltiplos recursos não-renováveis. Kolisch & Drexl (1997) apresentam um procedimento de busca local que especialmente leva em conta recursos não-renováveis escassos. O método inicialmente obtém uma atribuição de modos viável seguido de uma busca local executada na designação dos modos. Cada atribuição viável dos modos é avaliada pelo algoritmo de busca adaptativa dos mesmos autores (1996). 56 Procedimentos meta-heurísticos Slowiński et al. (1994) foram o pioneiros na tentativa de utilizar o simulated anealing para solução do PSP multimodo. Com base na lista de escalonamento, eles sugerem uma vizinhança de intercâmbio aos pares onde uma nova lista é gerada ao permutar as posições de duas atividades escolhidas aleatoriamente que não sejam dependentes. O esquema de geração de escalonamento em série é utilizado para converter a lista num escalonamento. Boctor (199X) também sugere um método baseado em simulated annealing que opera em uma lista de escalonamento. A abordagem é de substituição de vizinhança, na qual uma tarefa eleita ao acaso é deslocada para uma nova posição na lista que seja viável em precedência. Özdamar (1996) elabora um algoritmo genético que parte de idéias de Storer et al. (1992). Uma solução é representada por duas listas, cada um das quais com J+1 componentes. A primeira define o modo de execução para cada tarefa; a segunda lista especifica, para cada uma das J+1 iterações do esquema de geração em paralelo, a regra de prioridade com a qual uma atividade é selecionada do conjunto de decisão. No algoritmo genético de Hartmann (1997a), um indivíduo é representado também por duas listas. Uma lista de atividades viáveis em precedência e a segunda de designação dos modos. Com base em ambas as listas, o procedimento produz um escalonamento fazendo uso do esquema de geração em série. Novos indivíduos são criados por cruzamento ao se extrair parte da informação genética da “mãe” e a parte complementar a partir do “pai”. O método genético de Mori & Tseng (1997) é análogo. Hartmann (1997a) registra excelentes resultados obtidos com seu algoritmo evolucionário. Ele o compara com os algoritmos de Kolisch e Drexl (1997) e Özdamar (1996). O método de Hartmann produz um desvio médio de 0,22% do makespan ótimo de um conjunto de instâncias-padrão de teste. As estratégias de Kolisch & Drexl (1997) e Özdamar (1996). apresentaram desempenhos semelhantes com desvio médio de mais de 0,8%. Assim, o algoritmo genético de Hartmann exibe um desvio médio que se mostra aproximadamente 4 vezes inferior ao dos outros dois métodos heurísticos cotejados. É o método aproximado que computa os melhores resultados atualmente para solução do MRCPSP. 57 Para concluir a subseção, registre-se que, em menor medida, heurísticas baseadas em programação inteira também têm sido utilizadas. Como exemplo, veja-se Oğuz & Bala (1994). Além disso, os últimos tempos têm assistido à emergência de estratégias para solução de problemas de Pesquisa Operacional fundadas em abordagens concebidas para o campo da Inteligência Artificial (IA) (cf. Wall, 1996). No que se refere a escalonamento de tarefas, e.g., Schimer (1998) desenvolve um método de seleção de algoritmos para solução do RCPSP que compila experiência e subsídios de casos passados (ou seja, instâncias) para solução de novos casos. Trata-se de aplicação do chamado case-based reasoning (CBR) , que originalmente não foi desenvolvido para problemas matemáticos. Com o emprego do CBR, Schirmer (1998) demonstra os benefícios da seleção algoritmo mais adequado para uma dada instância, função de alguns de seus parâmetros como tamanho e fator recurso (RF). 3.4 O Caso do PSP com Duração Estocástica das Atividades Até aqui, todos os métodos e modelos examinados assumem tempos determinísticos de execução das tarefas do projeto. Contudo, muitas vezes, em projeto da vida real, não basta calcular bons escalonamentos baseados em tempos determinísticos de execução porque tal pressuposto raramente se confirma, i.e., os tempos de processamento diferem substancialmente do previsto. Tais tempos são apenas estimação e, portanto, sujeitos a inúmeros imprevistos que os afetam, gerados por fatores intercorrentes (atrasos de toda ordem, e.g., condições climáticas e impedimentos legais ). De modo a contornar os inconvenientes emanados do imponderável, assume-se que o tempo de execução é uma variável aleatória dj com o que se tem d = (d1, d2 ,..., dJ) como vetor (aleatório) dos tempos de processamentos com distribuição de probabilidade P (GG joint probability distribuition), suposta conhecida a priori, embora haja métodos de solução que dispensam este pressuposto. Adicionalmente, entre os diferentes tempos individuais dj pode haver dependências estocásticas que são representadas pela distribuição P. O problema estocástico de escalonamento daí resultante se denota PS | prec, pj = sto | Cmax. A importância de se tomar em conta a natureza probabilística das durações no planejamento do projeto fica patente quando se observa que, nos métodos deteminísticos, há uma sistemática subestimação do valor do makespan, mesmo quando se 58 dispõe de recursos ilimitados. O makespan determinístico, computado a partir do valor esperado dos tempos de processamento, E(dj), é menor que o valor esperado do makespan, ou seja, Cmax(E(d1), ... E(dJ)) ≤ E(Cmax (d1, ... ,dJ)), que pode se tornar arbitrariamente grande com o aumento do número de atividades reais J, ou, para J fixado, com o incremento da variância dos tempos de processamento (Heller, 1981). É de se notar que a técnica PERT (cf. subseção 2.3.3) tenta capturar aproximadamente a natureza estocástica das durações das tarefas para casos de recursos infinitos, portanto pouco realistas. Para uma revisão abrangente dos modelos e métodos para casos probabilísticos, com recursos limitados ou ilimitados, veja-se Brucker et. al. (1998a). Conquanto de especial relevância, casos estocásticos não se incluem no escopo do presente trabalho. 3.5 O Caso do PSP com Tarefas Preemptivas Um pressuposto fundamental nos modelos e métodos ótimos e sub-ótimos discutidos até agora é que as tarefas são não-preemptivas. Melhor dizendo, os modelos clássicos de PSP não consideram os casos de preempção, em que as tarefas podem ser interrompidas numa fase intermediária de sua execução e, posteriormente, retomadas. Como conseqüência, muito pouco se conhece dos benefícios em potencial que eventualmente poderiam surgir com esta possibilidade de interrupção no processamento. A introdução de preempção nos problemas de escalonamento de tarefas aumenta extraordinariamente o número de soluções viáveis. A literatura sobre este assunto é quase inexistente. Digno de nota é o trabalho de Demeulemeester & Herroelen (1996), que desenvolvem um procedimento B&B para o RCPSP sob disponibilidade constante e variável dos recursos e que permanece como um dos poucos procedimentos dedicados ao modelo. Considera-se que o processamento das atividades pode ser suspenso temporariamente, a qualquer instante de tempo discreto, e reassumido posteriormente com zero custo de tempo de set up13. Slowiński (1980) e Weglarz (1981) também sugerem métodos exatos para o caso preemptivo. Contudo, consideram o modelo que prevê tempo contínuo de execução, e não discreto, para o processamento das diferentes tarefas, o que pode não 13 No caso, tempo de set up compreende o período que vai da decisão de se reiniciar a execução de uma tarefa até sua retomada efetiva, i.e., tempo de preparação. 59 ser válido em circunstâncias reais. Considerações de ordem prática podem exigir tempos discretos de execução das tarefas. Até onde se sabe, a literatura não registra pesquisa que cuide do caso PSP multimodo e tarefas preemptivas. 3.6 Novos modelos para o PSP Recentemente idealizados, existem dois modelos que retratam de forma mais precisa duas condições de tarefas não-preemptivas de projetos que ocorrem com freqüência na prática (Drexl et al., 1998). Trata-se dos casos em que se têm (1) recursos parcialmente renováveis e (2) identidade de modo de tarefas. Ambos são noções que implicam substancial extensão dos conceitos comuns de programação de atividades. (1) Quando se tem que observar disponibilidade variável de recursos, a saber, restrição de capacidade dos recursos para subconjuntos de períodos, o modelo construído é referido como problema de escalonamento de projeto com restrição de recursos parcialmente renováveis (RCPSP/π). Isso constitui uma generalização dos modelos mais comuns de PS | prec | Cmax e substitui com vantagens todos os tipos de recursos escassos, tais como os renováveis e os não-renováveis. O conceito torna-se ferramenta valiosa para, e.g., facilitar a solução de problemas de escalonamento de horário (timetable) e turnos de revezamento. Além disso, Schirmer & Drexl (1997) demonstram que recursos parcialmente renováveis podem ser empregados para expressar numerosos tipos de relações lógicas no escalonamento de tarefas. Também vários requisitos práticos podem ser modelados, tais como cotas mínimas e máximas, bem como matéria referente a calendário. 60 (2) A identidade de modo significa uma expressiva ampliação no tratamento do caso multimodo, onde o conjunto de todas as atividade é particionado em subconjuntos disjuntos compreendendo todas as atividades que devem ser processadas em um mesmo modo. No caso convencional, todas as atribuições de modos são mutualmente independentes no sentido de que, designando um modo a uma tarefa j, não obriga que qualquer outra tarefa seja executada de um modo específico. Por vezes, isso não é interessante e, na prática, ocorrem situações em que mais de uma atividade devem ser executadas de um mesmo modo. Isso deu ensejo ao assim chamado problema de escalonamento de projeto com restrição de recursos e identidade de modo (MIRCPSP), introduzido na literatura de escalonamento de projeto por Salewski et al. (1996). Nesse artigo também se prova que o MPS | prec | Cmax é caso especial daquele mais geral, com identidade de modo. Como exemplo, a situação de escalonamento de estafe de auditores é uma aplicação mais imediata. 61 Capítulo 4 Onde se modela o caso em estudo e se geram as instâncias de teste O PSP de Alocação de Recursos Críticos na E&P de Petróleo E m vista das peculiaridades geológicas de seu território, os novos projetos de exploração e produção (E&P) da indústria de petróleo no Brasil compartilham, entre outras, duas tendências marcantes: crescimento em número e, cada vez mais, locações marítimas, notadamente em águas ultraprofundas. Sucede que a exploração e a produção nessas circunstâncias é sempre muito complexa e dispendiosa. Como desde sempre, os recursos mais escassos continuam sendo os financeiros e baixar custo torna-se crucial no acúmulo de vantagens competitivas entre as empresas em geral, particularmente as companhias de petróleo. Nestas últimas, a maior parte do orçamento se destina às atividades diretas de E&P, principalmente com dispêndios para contratações, de serviços e de equipamentos, via de regra pagas em moeda forte. De outro lado, o fator tempo nos projetos atuais assume especial relevância, também em face das exigências contratuais, por parte da ANP14, vinculadas a prazos de pesquisa das áreas de concessão nas bacias sedimentares. É precisamente isso que torna oportuno o presente estudo de caso de uma companhia de petróleo: otimização da programação dos recursos críticos no gerenciamento de projetos de E&P com conseqüente redução de tempos e custos. Melhor dizendo, o caso do PSP objeto de estudo se traduz na definição do melhor seqüenciamento das operações em campos15 marítimos de petróleo, com vistas a atender as metas de produção e estratégia de implantação dos novos projetos, implicando tempos e custos mínimos. Esses temas – gerenciamento de projeto e otimização –, 14 Agência Nacional do Petróleo, autarquia reguladora da indústria do petróleo. Campo de petróleo é uma área produtora com vários poços. Província petrolífera é a denominação para uma determinada região produtora, que reúne campos de petróleo e/ou gás natural. 15 62 quando focados em petróleo, têm despertado crescente interesse nos pesquisadores. Os trabalhos de Chung & Carroll (1995), Harding (1997), Zaver (1998), Cortes (1998) e Turner et al. (1998) são exemplos disso. Indispensáveis à execução das atividades mencionadas, os – assim chamados no contexto dos projetos de E&P em consideração – recursos críticos são extremamente caros e, por isso, exigem especial atenção no que concerne ao controle dos gastos globais do projeto. Como exemplo, algumas unidades flutuantes de perfuração. Trata-se de equipamento de vanguarda tecnológica e porte gigantesco, contratado de firmas estrangeiras, cujo custo diário pode alcançar cifras além de US$ 150,000.00. Objetivando rigor descritivo e entendimento preciso, sempre que surgem no texto, os termos da indústria de petróleo sublinhados a seguir devem ser entendidos conforme a definição oficial que se lhes sucede: • Exploração: conjunto de operações ou atividades destinadas a avaliar áreas, objetivando a descoberta e a identificação de jazidas de petróleo ou gás natural; • Desenvolvimento: conjunto de operações e investimentos destinados a viabilizar as atividades de produção de um campo de petróleo ou gás; • Produção: conjunto de operações coordenadas de extração de petróleo ou gás natural de uma jazida e de preparo para sua movimentação. Doravante se tem um detalhamento do PSP estudado e das instâncias criadas para reproduzi-lo. Para tanto, o capítulo assume a estrutura seguinte: na seção 4.1 o problema é modelado física e matematicamente; um breve histórico de conjuntos de instâncias fictícias de testes para problemas correlatos e sobre seus software geradores é feito na seção 4.2; na seção 4.3, o código gerador empregado, denominado ProGen, tem suas características funcionais descritas juntamente com os parâmetros de problemas inerentes; por fim, detalham-se na seção 4.4 as instâncias de testes produzidas sob medida para o caso em estudo e com o intuito de verificação de desempenho das heurísticas implementadas, de que trata o capítulo próximo. 63 4.1 Modelagem do Problema Com o propósito de posteriormente se reproduzir nas instâncias de teste, com suficiente fidelidade, sua real estrutura, o PSP considerado tem sua modelagem física e matemática nos seguintes termos: 4.1.1 Modelo Físico A caracterização se refere a projetos de exploração e desenvolvimento de campos produtores da plataforma continental, tais como os da bacia de Campos, localizada na costa nordeste do estado do Rio de Janeiro e maior província petrolífera do Brasil, responsável por três quartos de sua produção de hidrocarbonetos. Portanto, somente locações no mar (offshore) são levadas em conta. As atividades típicas inerentes ao problema são: • Perfuração de poços; • Completação16 de poços; • Instalação de Arvore de Natal Molhada17 (ANM); • Lançamento de dutos; • Interligação de poços. Exemplos dos principais recursos críticos (processadores) utilizados para a consecução das atividades são: • Plataformas de perfuração; • Navios de perfuração; • Barcos de lançamento de linha. Levando em conta sua natureza não-consumível, todos os recursos são enquadrados na categoria dos renováveis (cf. seção 3.2.1). Plataformas e navios de perfuração são referidos indistintamente como sondas. As atividades são supostas com duração determinística discretizada em quantidades inteiras, definida a priori como dado de entrada. Um diagrama de rede genérico, do tipo AON, aplicável ao caso é delineado na figura 4.x. Em geral, as atividades guardam relação de precedência; por exemplo, a completação somente pode ocorrer uma vez perfurado o poço. Todavia, quando as atividades de intervenção citadas se dão em locações distintas, tornam-se independentes, ou seja, não envolvem relação de precedência. Por isso, a rede associada é do 16 Soma de algumas atividades intermediárias conduzidas entre a perfuração e a produção de um poço. 17 Conjunto submerso de válvulas, acoplado à cabeça do poço produtor para manobras de movimentação de fluidos. 64 Figura 4.1: Modelo AON genérico do PSP em estudo. tipo em série (ou em cadeia), não apresentando precedência “cruzada”. Uma seqüência de atividades começando em j=0 e terminando em j=J+1 representa um poço, que disputa recursos com os demais. Essa característica, como se comenta adiante, faz crescer demasiadamente o espaço de busca do problema de otimização associado. Tome-se como exemplo uma instância monomodo18 de pequeno porte: supondo 7 poços, cada um com 4 tarefas, num total de J = 28 tarefas, o número de escalonamentos viáveis existentes equivaleria a (7(28-7).7!) = 2,815.1021. Seja tentar resolver tal problema por enumeração explícita, i.é, varrer todo o espaço viável em busca da solução ótima, utilizando um computador capaz de avaliar um escalonamento em 10-9 s (um nano-segundo) – apenas por digressão, visto que uma máquina tão rápida certamente não estará disponível a médio prazo. Nessas circunstâncias, o processo exigiria mais de 892 séculos para encontrar a solução. Um problema real de gerenciamento de projeto numa indústria de petróleo, num horizonte de tempo T equivalente a um ano, pode facilmente englobar centenas de intervenções. Claramente, a solução exata de problemas combinatórios dessa complexidade é pouco sensível à evolução na tecnologia de hardware computacional. 18 J Se tratado como multimodo, conforme a condição real, o total deve ser multiplicado por ∏ M j . j= 1 65 4.1.2 Modelo Matemático minimizar φ ( x) = MJ+1 ∑ LFTJ + 1 ∑ tx J + 1,mt (1) m = 1 t = EFTJ + 1 sujeito a: Mj LFT j ∑ ∑ x jmt = 1 m = 1 t = EFT j Mi LFTi ∑ ∑ m = 1 t = EFTi J Mj j= 1 m= 1 ∑ ∑ t ximt ≤ k ρ jmr Mj ∑ ∑ m = 1 t = EFT j t + d jm − 1 x jmt ∈ {0,1} ∑ q= t LFT j (t − d jm ) x jmt x jmq ≤ K rρ j = 0, ...,J+1 (2) j = 1, ...,J+1, i ∈ Pj (3) r ∈ R, t = 1, ... T (4) j = 0, ...,J+1, m=1, ..., Mj, t = EFTj, ...,LFTj (5) Figura 4.2: Modelo Matemático MIP do MRCPSP em estudo. As diferentes locações offshore, alvo das intervenções, apresentam profundidade que tendem atingir algo em torno de 2000 m. As sondas são de atuação diferenciada, conforme sua capacidade de operação, em pequena, média e grande profundidade. As sondas de posicionamento dinâmico, projetadas para operar em poços mais profundos, também podem ser empregadas nas menores lâminas d’água mas, logicamente, o contrário não pode acontecer. Conseqüentemente, uma operação, a depender da profundidade do poço, pode ser executada de até três modos diferentes, refletindo a variação da duração como função dos recursos destinados para executá-la. É precisamente isso que define os diferentes modos de execução das atividades e caracteriza o caso como MRCPSP Sintetizando, semelhante problema de otimização inteira, de código MPS|prec|Cmax, tem o seguinte enunciado: “Alocar os K recursos renováveis a cada uma das J tarefas do projeto multimodo de maneira a minimizar sua duração total”. A formulação matemática correspondente é representada na figura 4.2. O objetivo de minimizar o makespan é expresso por (1); a restrição (2) obriga a atribuição de modo e a execução de cada atividade; a obediência às restrições de precedência é imposta pela restrição (3); em (4), a demanda por período de recursos é limitada à sua disponibilidade. Sua nomenclatura é MPS|prec|Cmax, i.é, problema de escalonamento multimodo tendo o makespan mínimo como função objetivo. 66 4.2 Conjuntos e Geradores de Instâncias Nos últimos anos, à medida que eficientes procedimentos computacionais de solução de problemas eram desenvolvidos, surgiu a necessidade de criação de instâncias de dados de problemas fictícias com que compará-los. Consequentemente, programas geradores de instâncias apareceram ultimamente de modo a automatizar e acelerar o processo, grande parte dos quais não experimentou divulgação e liberação. A princípio mais simples, os geradores lançados mais recentemente incorporam significantes parâmetros de problemas, úteis na sua estruturação. A coleção de instâncias que guardem determinados característicos em comum forma os conjuntos que, uma vez reunidos, compõem os chamados bancos de conjuntos de dados. Conjuntos de instâncias de teste Davis, (1971), com suas 89 instâncias, foi o precursor na geração de problemas artificiais do PSP para testes e benchmark. Mas, até há pouco tempo, as tradicionais instâncias de teste para o RCPSP compiladas por Patterson (1984) eram as mais utilizadas nos trabalhos de escalonamento de projeto (e.g, Bell & Han, 1991; Kolish & Drexl, 1996; Harding, 1997). Para o objetivo de mínimo makespan, Patterson também calculou as soluções ótimas utilizando os algoritmos disponíveis à época. Num total de 110 instâncias, resultou da coleção de trabalhos anteriores – como o de Davis (1971), que, com suas 89 instâncias, detém o pioneirismo na geração de problemas artificiais do PSP para testes e benchmark. Essas 110 instâncias, referidas como problemas de Patterson, prestam-se apenas para estudos de minimização do makespan do RCPSP e sabe-se hoje, são de baixa dificuldade e já não podem ser consideradas como benchmarck (Demeulemeester & Herroelen, 1992). Além de ter possibilitado a disponibilidade dos valores ótimos para o makespan, outro benefício do advento dos problemas de Patterson foi a ampliação do uso do conjunto de teste para avaliação do métodos ótimos e sub-ótimos. Apresentam, contudo, também a desvantagem de as instâncias não terem sido geradas com base em parâmetros de problemas bem definidos. Tal fato levou Alvares-Valdés & Tamarit (1996) a produzirem um novo conjunto de teste, contendo 144 instâncias, utilizando cinco diferentes parâmetros associados aos problemas. Em resposta à necessidade de problemas completamente parametrizados, Kolisch et al. (1995) produziram conjuntos de testes para o RCPSP mono e multimodo, o primeiro com 480 e o último com 640 instâncias. Posteriormente, Kolisch & Sprecher 67 (1996) expandiram esses conjuntos para um total de 10000 instâncias benchmark para o PSP, atualmente os mais completos disponíveis e amplamente utilizados. Boctor (1993) também apresenta um conjunto para testes, somente aplicável ao problema multimodo com recursos renováveis e já pouco utilizado. Geradores de Instâncias de teste O precursor foi o trabalho de Demeulemeester et. al. (1993), específico para redes de representação AOA, com forte componente aleatório para um dado número de arcos e nós. Agrawal et. al. (1996) também introduziu um gerador de instâncias para redes do tipo AOA onde custos, durações e demanda de recursos associados às atividades são gerados aleatoriamente a partir de uma distribuição uniforme. No Brasil, Cavalcante (1998) desenvolveu um gerador específico para o chamado problema de escalonamento com restrição de mão-de-obra, SPLC, e disponibiliza suas 23 instâncias, que buscam reproduzir problemas reais. Em seu imersivo trabalho, com as instâncias geradas para o SPLC, somadas a mais duas antes já existentes, estuda limitantes e avalia métodos exatos e meta-heurísticas para o problema citado, também se valendo de processamento em paralelo. 4.3 O Gerador de Instâncias ProGen Kolisch et. al. (1995), da Universidade Christian-Albrechts de Kiel, Alemanha, com o chamado ProGen, foram os primeiros a propor um software gerador de instâncias de projeto do tipo general purpose, para uma classe geral de diferentes problemas em uma representação de rede do tipo AON. Graças a sua versatilidade e abrangência, tal programa cada dia vem ganhando preferência na utilização de problemas específicos. Pode ser reputado como o mais abrangente e versátil gerador para problemas de escalonamento de projeto de que se pode dispor na atualidade. Apresenta a vantagem de poder reproduzir instâncias sob medida para uma ampla variedade de projetos, porque é plenamente adaptável às inúmeras especificidade das suas variedades da prática. O programa é capaz de gerar projetos sujeitos a parâmetros de problema bem definidos, o que permite discriminar instâncias fáceis daquelas mais difíceis. Diversas funções-objetivo podem ser consideradas para PSP mono- ou multimodo, ao fazer distinção entre as categorias dos recursos. O ProGen é citado como fonte de instâncias de problemas – com características outras que não aquelas originalmente pro68 duzidas por Kolisch et al. (op. cit.) – em numerosos artigos (cf. Kolisch & Padman, 1997). Para o caso alvo do presente trabalho, também foi empregado o ProGen. 4.3.1 Parâmetros de Problema Nesta seção, os chamados parâmetros típicos de problemas, exigidos como dados de entrada pelo gerador de instâncias ProGen, são brevemente apresentados. Três conjuntos de teste, para reprodução de problemas de projeto que emulem as condições real situação do PSP em consideração, com 50, 100 e 200 atividades, foram produzidos e utilizados neste trabalho para avaliação de performance relativa das estratégias heurísticas de solução concebidas, descritas no próximo capítulo. Faz-se a seguir apenas uma sinopse de definições dos parâmetros empregados para a criação das instâncias de teste pelo código gerador e, no que se refere à demanda de recursos, apenas a categoria dos renováveis é levada em conta, por ser a única demandada no PSP de interesse. Uma descrição pormenorizada dos parâmetros dos problemas de escalonamento pode ser encontrada em Kolisch et al. (1995), fonte primária de consulta da presente seção. Os parâmetros considerados são: J mín ( J máx ): mínimo (máximo) número de atividades reais (não-fictícias) do projeto; máx M mín ( M j ): mínimo (máximo) número de modos pelos quais uma atividade j pode j ser executada (j=1,...,J). d mín ( d máx ): mínima (máxima) duração de qualquer atividade j (j=1,...,J). R mín ( R máx ): mínimo (máximo) número de recursos renováveis considerados. N mín ( N máx ): mínimo (máximo) número de recursos não-renováveis considerados. S mín 0 (S máx 0 ): mínimo (máximo) número de atividades de “partida” da rede. máx P J +mín 1 ( P J + 1 ): mínimo (máximo) número de atividades de “chegada” da rede. S máx j (P j máx ): máximo número de sucessores (predecessores) de uma atividade j (j=1,...,J). NC - Complexidade de Rede (Network Complexity) : reflete as restrições na topologia da rede, i.é, número médio de arcos não-redundantes por vértice e inclui as ativi69 dades fictícias. Foi sugerida por Pascoe (1966) para redes tipo AOA e adaptada por Davis (1975) para a representação AON. Expressa-se por: NC = 1 J+ 1 ∑ Pj . J + 2 j= 1 Adicionando-se mais restrições de precedência a uma rede, faz-se diminuir o número de escalonamentos viáveis para um dado horizonte de tempo. Isso reduz a árvore de enumeração e torna o problema de mais fácil solução. Com o passar dos anos, estudos computacionais comprovaram que o problema torna-se mais fácil à medida que o valor de NC aumenta, com o que o termo complexidade aqui soa inadequado e causa espécie. Não obstante, vem sendo mantido por vários pesquisadores. QRmín ( Q Rmáx ): mínimo (máximo) número de diferentes recursos da categoria R – renováveis – demandados pela combinação modo-atividade [j,m], (j=1,...,J).e m=1,...,Mj. U rmín ( U rmáx ) : mínimo (máximo) nível de uso por período do recurso r ∈ R, por uma combinação atividade-modo [j,m]. RF : Fator recurso (Resource Factor): real que mede a porção média exigida pela combinação atividade-modo [j,m] dos diferentes recursos da categoria considerada e equivale à densidade da matriz tridimensional dos kjmr. Foi introduzido por Pascoe (1966) e para os recursos renováveis r ∈ R, se calcula por RFR = 1 1 J R J ∑ j= 1 1 Mj Mj ∑ ∑ m= 1 r∈ R 1 se k jmr > 0 0 , noutro caso . Dessa forma, RF é normalizado no intervalo [0,1]. Se RF = 1, então cada atividade requisita todos os diferente recursos; se RF = 0, então nenhuma atividade requisita qualquer recurso, degenerando para o caso irrestrito CPM. RS - Potência de recurso (Resource Strength): real que reflete a relação entre a demanda e a disponibilidade dos recursos, isto é, mede os efeitos da escassez de uma dada categoria de recursos. Instituído por Cooper (1976), posteriormente foi normalizado para o intervalo [0,1] (Kolisch et al., 1995). Define-se como o parâmetro de escala na combinação convexa dos níveis mínimo e máximo de demanda do recurso r, K rmín e K rmáx respectivamente, que computa sua quantidade disponível Kr: 70 Kr = K rmín + RS ( K rmáx - K rmín ). Desse modo, se RS = 0 , a disponibilidade dos recursos está em seu nível viável mínimo; se RS = 1, a quantidade dos recursos torna-se grande o suficiente para o problema tornar-se irrestrito em recursos, como o caso do CPM. Para o caso dos recursos renováveis, a demanda mínima se calcula como ρ {k jmr } . K rmín = max min i= 1 m= 1 J Mj A utilização máxima K rmax é calculada como a demanda de pico para o caso do escalonamento viável no qual as atividades dependem de recursos para sua execução e comecem em seu tempo mais cedo. Cada atividade é executada em seu modo de menor índice – menor duração – que utilize demanda máxima por período do recurso considerado. A demanda máxima por período de recurso r por parte da atividade j é expressa por k * jr Mj { } ρ , = max k jmr m= 1 sendo que o modo de menor duração com esta demanda é Mj { } ρ m*jr = min m k jmr = k *jr . m= 1 K rmax é determinado pelo pico de utilização por período do recurso r , ou seja, K max r = max t= 1 FTJr+ 1 k jm* r , jr j∈ A t ∑ onde At é o conjunto das atividades ativas no tempo t do escalonamento citado. 4.4 Instâncias Geradas para Teste das Heurísticas Idealmente, os algoritmos deveriam ser aplicados a problemas reais das companhias de petróleo. Todavia, em face da inacessibilidade de dados dessa natureza, foram gerados problemas fictícios que melhor capturem as condições corporativas. Com intuito de testar o desempenho relativo dos procedimentos meta-heurísticos elaborados e implementados computacionalmente para solução sub-ótima do caso em estudo, foram gerados três conjuntos de instâncias de teste. A faixa dos valores dos parâmetros empregados para criação das instâncias estão nas tabelas 4.1 a 4.4 a seguir: 71 RF RS 0,2 0,25 0,4 0,6 0,2 0,50 0,4 0,6 0,75 0,4 0,6 0,2 0,2 1,0 0,4 0,6 Tabela 4.1: Combinação dos parâmetros RF-RS. Mj 1 dj 1 |R| mín J 50 máx 50 3 10 QR 1 S1 Sj PJ Pj 4 UR 1 10 1 1 10 6 10 6 10 1 1 10 Tabela 4.2: Parâmetros básicos do conjunto de instâncias com 50 tarefas. J Mj dj |R| UR QR S1 Sj PJ Pj mín 100 1 1 4 1 1 20 1 1 20 máx 100 3 15 6 14 6 20 1 1 20 Tabela 4.3: Parâmetros básicos do conjunto de instâncias com 100 tarefas. J Mj dj |R| UR QR S1 Sj PJ Pj mín 200 1 1 4 1 1 40 1 1 40 máx 200 3 15 6 14 6 40 1 1 40 Tabela 4.4: Parâmetros básicos do conjunto de instâncias com 200 tarefas. Os três conjuntos de teste são: J50, contendo problemas de 50 tarefas; J100, com 100 tarefas e J200, com 200 atividades cada instância. A cada rodada, o gerador criava 30 instâncias com base nos parâmetros predefinidos no arquivo de entrada, conforme se apresenta na figura 4.3. O RF e o RS se combinavam como é mostrado na tabela 4.1, num total de 4x3 =12 arranjos, perfazendo 30x12=360 instâncias para cada conjunto. Ao final, foi produzido um total de 3x360 = 1080 instâncias para ensaio das heurísticas. Os arquivos correspondentes são codificados em J*[1...360]. Com isso, p. ex., a vigésima quinta instância do conjunto contendo MRCPSP’s de 200 tarefas recebeu o código J20025. A ordem de criação obedeceu à combinação dos parâmetros RFRS conforme aparece na tabela 4.1, da esquerda para a direita. Dessa forma, as 30 72 primeiras instâncias de cada conjunto, e.g., J10015, têm como base RF=0,25 e RS=0,2, e assim sucessivamente. Configuração das instâncias • Todos os problemas têm complexidade de rede NC = 1, em razão de os problemas reais apresentarem como representação num diagrama de rede esta complexidade, i.é, as redes são do tipo em série (cf. fig. 4.1). Isso significa que, na prática, não há precedência cruzada e cada atividade tem no máximo um predecessor e um sucessor, o que mantém coerência com a condição real. • RF (resource factor) foi modulado entre 0,25 e 1 (tabela 4.1). Assim foi feito porque, com RF menor que 0,25, a solicitação dos recursos se dá num nível baixo e os problemas se tornam de mais fácil solução. • RS (resource strength) assume no máximo o valor 0,6 porque, além disso, a escassez de recursos diminui e os problemas tornam se menos difíceis e até triviais, como é o caso para RS = 1, para o qual podem ser considerados irrestritos. • Os três conjuntos de teste J50, J100 e J200 contêm instâncias de 50, 100 e 200 tarefas respectivamente. Trata-se, portanto, de problemas de médio para grande porte, o que implica grande dificuldade. Problemas de pequeno porte não são tratados, portanto. Pretendeu-se com isso submeter as heurísticas a ambiente de maior complexidade e, ao mesmo tempo, retratar a realidade. • Mj varia de 1 até 3 modos (tabelas 4.2, 4.3 e 4.4), de novo para espelhar as condições reais, nas quais algumas intervenções podem ser conduzidas de até 3 modos, como já explicado. • Em vista de limitações do código, a duração das tarefas dj vai de 1 a 15 dias, no máximo, menor que nos casos reais. Com efeito, atividades como as citadas, típicas em locações offshore, podem durar até um mês. Contudo apresentam, aproximadamente, a mesma diferença entre a duração máxima e a mínima, quer dizer, ordem de grandeza de 14 dias. Com isso, tal discrepância não parece provocar efeitos importantes na complexidade dos problemas e, por via de conseqüência, no desempenho das meta-heurísticas experimentadas. • O número de recursos renováveis distintos, |R|, varia de 4 a 6, valores bem próximos dos caso reais, de vez que as sondas e os navios são de tipos diversos. 73 1 3 1 15 : 4 : 4 : 1 : 4 : 4 : 1 : 1. LABILITY : 4 : 6 : 0 : 14 : 4 : 6 : 1. : .6 : : : : : 1 : 8 : 8 : 0 : 0.0 74 minimal maximal minimal maximal number of modes number of modes duration duration requested requested resources resources Figura 4.3: Exemplo de arquivo de entrada para o gerador ProGen para instância com 8 tarefas reais. minimal number of renewable maximal number of renewable minimal (per period) demand maximal (per period) demand minimal number of resources maximal number of resources & resource factor & resource strength & & & & & & & minimal number of start activities per project & maximal number of start activities per project & maximal number of successor per activity & minimal number of end activities per project & maximal number of end activities per project & maximal number of predecessors per activity & complexity of network & & & & & number of projects & minimal number of jobs per project & maximal number of jobs per project & maximal release date & maximal due date SAMPLEFILE BASEDATA PROJEKTS NrOfPro MinJob MaxJob MaxRelDate DueDateFactor MODES MinMode MaxMode MinDur MaxDur NETWORK MinOutSource MaxOutSource MaxOut MinInSink MaxInSink MaxIn Complexity RESSOURCEREQUEST/AV Rmin Rmax RminDemand RmaxDemand RRMin RRMax RRF RRS • A demanda UR é bem maior que a real, o que confere um caráter mais genérico aos problemas testados, como um todo. Assim sendo, não apenas se avalia a performance comparada dos algoritmos em problemas específicos, mas também em casos mais gerais. • Os número de recursos diferentes solicitados ao mesmo tempo, QR, foi bem maior que a realidade. Muito embora haja manobras conjuntas na prática, nunca ocorre de, e.g., 4 recursos diferentes serem usados simultaneamente.(O número de plataformas de exploração – também conhecidas como sondas de perfuração marítima – varia de acordo com a carteira de projetos das companhias). Mais uma vez, isso foi feito visando a propiciar maior grau de liberdade ao código gerador, com o que aumentar a diversidade das instâncias. Com isso, os resultados das heurísticas se tornam mais abrangente. • Como se trata de rede com características seriais, cada tarefa real tem precisamente um predecessor e um sucessor. Por isso, Sj = Pj = 1 em todas as instâncias. • Por igual motivo, a quantidade de tarefas de “partida” S1 – sucessoras imediatas da tarefa fictícia j=0 – e a de atividades de “chegada” PJ – predecessoras imediatas da tarefa fictícia de encerramento J+1 – sempre coincide. Também, buscouse impor, em média, 5 atividades por poço em cada instância, o que tem amparo na vida real. Assim, e.g., para J100, S1 = PJ = 20, o que provoca uma média de 5 tarefas executadas em cada poço. Aliás, por vezes ocorre na prática de algumas atividades serem desdobradas segundo exigências tecnológicas do equipamento instalado. Para concluir e apenas a título de ilustração, a figura 4.4 mostra os dados de saída do gerador de instâncias com base no arquivo da figura 4.3, o qual é lido como os dados de entrada pelos algoritmos desenvolvidos. Por brevidade, a instância exibida tem apenas 8 tarefas reais. 75 file with basedata : exemplo.bas initial value random generator: 1427924141 ************************************************************* jobs (incl. supersource/sink ): 10 horizon : 78 RESOURCES - renewable : 5 R - nonrenewable : 0 N - doubly constrained : 0 D ************************************************************* PROJECT INFORMATION: pronr. #jobs rel.date duedate tardcost MPM-Time 1 8 0 20 5 20 ************************************************************* PRECEDENCE RELATIONS: jobnr. #modes #successors successors 0 1 4 1 2 3 4 1 1 1 5 2 3 1 8 3 1 1 6 4 1 1 7 5 3 1 9 6 2 1 9 7 2 1 9 8 2 1 9 9 1 0 ************************************************************* REQUESTS/DURATIONS: jobnr. mode duration R 1 R 2 R 3 R 4 R 5 ------------------------------------------------------------0 1 0 0 0 0 0 0 1 1 11 10 1 3 1 4 2 1 9 13 10 6 12 4 2 9 9 11 6 12 7 3 14 0 10 6 11 1 3 1 4 7 11 6 7 3 4 1 9 10 2 3 9 10 5 1 9 13 6 2 14 11 2 12 13 5 1 9 8 3 14 13 3 1 5 7 6 1 6 12 3 6 5 12 2 13 10 2 3 5 7 7 1 2 6 10 10 8 11 2 5 5 6 3 6 9 8 1 5 4 2 3 5 2 2 8 1 2 0 5 1 9 1 0 0 0 0 0 0 ************************************************************* RESOURCEAVAILABILITIES: R 1 R 2 R 3 R 4 R 5 32 19 16 22 24 Figura 4.4: Exemplo de arquivo de saída do ProGen com instância de 8 tarefas reais. 76 Capítulo 5 Onde se descrevem os métodos propostos para abordagem do estudo de caso Heurísticas Desenvolvidas para o MRCPSP em Estudo D e posse dos conjuntos de instâncias de teste detalhados no capítulo precedente, os quais guardam estreita relação paramétrica com o problema de es- calonamento de projeto (PSP) em estudo, aqui são expostas em seus pormenores as quatro heurísticas desenvolvidas e implementadas para sua solução: • Algoritmo Aleatório Puro – AP; • GRASP; • Algoritmo Genético – AG; • Heurística Evolucionária Híbrida – HH. Seus fundamentos são enfocados, algumas técnicas e alguns conceitos são abordados e se segue uma explanação acerca de suas características funcionais. Antes, entretanto, trata-se de esquemas de geração de escalonamento e regras de prioridades, imprescindíveis ao tema. O capítulo assume, com isso, a seguinte seqüência: na seção 5.1, dois algoritmos clássicos para geração de escalonamento (SGS’s) são descritos e explicados, um dos quais integra, como sub-rotina, todas as heurísticas implementadas; a seção 5.2 trata de regras de prioridade, componentes indispensáveis para alocação de tarefas na maioria dos métodos subótimos; as seções 5.3, 5.4, 5.5 e 5.6 são dedicadas diretamente às quatro heurísticas desenvolvidas, respectivamente, AP, GRASP, AG e HH. 77 5.1. Esquemas de Geração de Escalonamento Tipicamente, os métodos aproximados voltados para solução do PSP apresentam como procedimento básico um esquema de geração de escalonamento (SGS). O SGS começa do zero e constrói uma solução à medida que acrescenta tarefas a um escalonamento parcial, aquele contendo apenas um subconjunto das J+2 tarefas. Há dois tipos usuais de SGS, os quais se distinguem por incremento de atividade ou de tempo e ambos são atribuídos a Kelley (1963). O assim chamado SGS em série (SSS) executa incremento de atividade a partir de uma lista ordenada e alocando a atividade em seu tempo mais cedo, respeitando as restrições. De outro modo, o SGS em paralelo (PSS) procede ao incremento temporal, considerando todo o horizonte de planejamento, no que cada estágio i está associado a um período ti. Em cada período ti, escalonam-se todas as atividades que já podem ter seu processamento iniciado, aquelas que são viáveis em precedência e recursos. Quando aplicados a instâncias (viáveis) do RCPSP19, ambos os esquemas geram escalonamentos viáveis, já que tomam em conta as restrições de precedência e recursos. Se a instância é irrestrita em recursos, tal como o problema expresso por (1), (2) e (5) da tabela 3.2, os esquemas SSS e PSS resumem-se em uma simples recursão avante e derivam soluções exatas em tempo polinomial. 5.1.1 SGS em série Discute-se apenas o caso do PSP de interesse, para o qual apenas recursos renováveis são considerados. O SGS em série (ou serial) consiste de i = 1,...,J estágios, em cada qual um atividade é selecionada e escalonada – seu pseudocódigo é exibido na tabela 5.1. Associados a cada estágio, há dois conjuntos disjuntos: no conjunto escalonado, SCi, estão aquelas atividades que já foram alocadas e, portanto, já fazem parte do escalonamento parcial, e o conjunto de decisão, Di , do qual constam as atividades ainda não escalonadas mas cujos predecessores já o foram. É, por isso, o conjunto das atividades elegíveis e, em cada estágio, uma atividade de Di deve ser selecionada com um critério estabelecido por alguma regra de prioridade (empates podem ser decididos optando-se pela atividade de menor índice, por exemplo) e alocada em seu menor período viável, considerando precedência e disponibilidade de recursos – linha 2d no pseudocódigo. Isto feito, a atividade escolhida é 19 Recorde-se que, uma vez definidos os modos de execução, todo MRCPSP reduz-se a um RCPSP. 78 removida do conjunto de decisão, Di, e anexada ao conjunto escalonado, SCi. Esta operação acaba por liberar mais atividades para o conjunto de decisão, de vez que agora todas suas tarefas predecessoras estão escalonadas. Ao fim da iteração J, o procedimento pára já que todas as tarefas reais já estão devidamente alocadas e o makespan do projeto é assumido como o maior tempo de conclusão entre as tarefas predecessoras imediatas da atividade fictícia J+1 – linha 3 no pseudocódigo. Para uma descrição formal do SGS serial aplicável ao RCPSP, adicionalmente sejam: K r (t):= Kr - ∑ j∈ A ( t ) k jr a capacidade remanescente de recurso tipo r no instante t; Ai = A(ti) = { j ∈ J | FTj – dj ≤ t < FTj} o conjunto das tarefas ativas no instante t; Algoritmo SerialSGS // Início 1 FT0 = 0, SC0 = {0} // Processo 2 Para i = 1 até J faça a Calcule Di, FTi, K r (t) (r∈ R ; t ∈ FTi) b Selecione j ∈ Di c EFTj = max h ∈ P j {FTh} + dj d FTj = min {t ∈ [EFTj - dj, LFTj - dj] ∩ FTi | kjr ≤ K r (Τ), r ∈ R, Τ ∈ [ t,t+dj [ ∩ FTi}+ dj e SCi = SCi-1 ∪ {j} fim-para 3 Compute FTJ+1 = max h ∈ P J + 1 {FTh}, SC=SCJ ∪ {J+1}, FT=FTJ ∪ {FTJ+1} // Resultado 4 SC, FT, FTJ+1 (makespan) Figura 5.1: Esquema de geração de escalonamento em série (SSS) FTi = {FTj | j ∈ SCi} o conjunto dos tempos finais das tarefas já escalonadas e; Di = {j ∈ J \ SCi | Pj ⊆ SCi} o conjunto de decisão ou das atividades elegíveis. Kolisch (1996) demonstra que um SGS serial sempre gera escalonamentos ativos que, como já visto na seção 3.2, são aqueles onde nenhuma atividade pode ser iniciada mais cedo sem atrasar alguma das demais. Além disso, para PSP com uma me79 dida regular de desempenho, tal como minimização de makespan, a solução ótima estará sempre no conjunto dos escalonamentos ativos. A complexidade no tempo do algoritmo SGS serial como exposto é O (J2.K), onde J é o número total de tarefas reais e K =|R| é a quantidade total dos diferentes tipos (itens) de recursos renováveis (cf. Pinson et al., 1994). 5.1.2 SGS paralelo Da mesma forma que no esquema anterior, discute-se apenas o caso com recursos renováveis. No SGS paralelo, para cada iteração i existe um instante de escalonamento ti – seu pseudocódigo é como se mostra na tabela 5.2. Atividades que tenham sido escalonadas até i são, alternativamente, ou elementos do conjunto de conclusão Ci ou do conjuntos das tarefas ativas Ai. O conjunto de conclusão compreende todas as atividades que tenham sido completadas até ti. Nesse caso, diferentemente do serial, o conjunto das tarefas elegíveis Di é formado por todas as tarefas que são viáveis em precedência e recursos, no instante ti. As expressões correspondentes a Ci e Di são: Ci = { j ∈ J | FTj ≤ ti } conjunto das tarefas completadas até ti e; Di = { j ∈ J \ (Ci ∪ Ai) | Pj ⊆ Ci ∧ rjk ≤ K r (ti) (k ∈ R)} conjunto de decisão. Algoritmo ParalSGS // Início i = 0, ti = 0, A0 = {0}, C0 = {0}, K r (0) = Kr, SC = {0}, FT ={0} // Processo 1 2 Enquanto ( | Ai ∪ a Ci | ≤ J ) faça: b i := i + 1 ti = min j ∈ A i -1 {FTj} c Calcule Ci, Ai,, K r (ti), Di d Enquanto ( Di ≠ & )faça: e Selecione um j ∈ Di f FTj = ti + dj g Calcule K r (ti), Ai, Dia, SC = SC ∪ {j}, FT = FT ∪ { FTj }, fim-enquanto fim-enquanto 3 Compute FTJ+1 = max h ∈ P J + 1 {FTh}, // Resultado 4 80 SC, FT, FTJ+1 (makespan) Figura 5.2: Esquema de geração de escalonamento em paralelo (PSS) Cada iteração consiste de duas fases: na linha 2a se determinam o próximo instante de escalonamento ti, os respectivos conjuntos de tarefas Ci, Ai,, e Di e a capacidade disponível de recursos K r (ti); em 2d todas as tarefas de Di são escalonadas tendo início em ti. Note-se que o esquema paralelo faz exatamente J decisões de seleção, uma para cada tarefa real; contudo, uma execução completa pode envolver menos de J estágios. Uma vez alocadas todas as tarefas, o makespan do projeto é tomado como o maior período de conclusão dentre todas as tarefas predecessoras imediatas de J+1 – linha 3 do pseudocódigo. Foi demonstrado por Kolisch (1996) que o SGS paralelo sempre gera escalonamentos do tipo sem-atraso (non-delay) que, como já explicado no capítulo 3, é aquele onde, mesmo se a preempção é permitida, nenhuma das atividades pode ter seu início antecipado sem acarretar atraso para pelo menos uma das demais. O conjunto dos escalonamentos sem-atraso é um subconjunto do conjunto dos escalonamentos ativos e apresenta a desvantagem de, quando se considera uma medida regular de desempenho, nem sempre conter a solução ótima. A propósito, Kolisch et al. (1998) testaram 298 instâncias de 30 tarefas e, entre estas, somente 175 (59,73%) tinham escalonamento ótimo no conjunto dos escalonamento sem-atraso ao minimizar o makespan. A complexidade no tempo do SGS paralelo também é O (J2.K) (cf. Pinson et al., 1994). Em virtude de o SGS serial explorar o espaço dos escalonamentos ativos, no qual a solução ótima obrigatoriamente se encontra, todos os algoritmos implementados para solução do PSP em estudo o tem incorporado como sub-rotina. Mais precisamente, uma variante do SGS serial, que recebe uma sucessão de atividades e as vai alocando conforme a ordem de comparecimento. Dessa forma a decisão de escolha – linha 2b no pseudocódigo do esquema serial da figura 5.1 – é predefinida. 5.2 Regras de Prioridades Existem diversos trabalhos versando sobre regras de prioridades entre os quais podem ser citados Cooper (1976), Alvarez-Valdés & Tamarit (1996), Kolisch (1996) e Kolisch & Hartmann (1998). Investigação na literatura dão conta de mais de 100 tipos diferentes de regras de prioridade (Kolisch & Hempel, 1996). 81 Regras de prioridades são empregadas pelas heurísticas que se utilizam de ambos ou de apenas um dos esquemas de geração de escalonamentos no processo de programação das tarefas, como é o caso das aqui apresentadas adiante. A regra de prioridade em si é útil como critério de seleção de uma tarefa no conjunto de decisão Di . Formalmente, uma regra de prioridade é um mapeamento que atribui a cada atividade j no conjunto Di um valor numérico v(j) e um parâmetro dicotômico extr ∈ {max,min}, definindo se a decisão deve recair sobre a atividade com máximo ou mínimo valor. Um critério de desempate deve ser preestabelecido. O critério trivial é escolher a tarefa de menor índice, mas pode-se proceder arbitrariamente, por via de uma seleção ao acaso. As regras de prioridade podem ser classificadas segundo diferentes critérios. Com respeito ao tipo de informação empregada para calcular v(j), podem-se distinguir as regras baseadas no tempo, na rede ou no recurso bem como regras de limitantes inferiores e superiores. Estas últimas calculam um valor do limitante (inferior ou superior) da função-objetivo para cada atividade. No que se refere à quantidade de informação adotada, as regras podem ser locais ou globais. Regras locais utilizam informação apenas da tarefa sob consideração, tal como o tempo de processamento, enquanto que as globais se valem de uma gama maior de informação geral. Se o valor de v(j) permanece constante ao longo do processamento, a regra se classifica como estática e torna-se dinâmica no caso contrário. Se o critério for o SGS subjacente ao Notação Extremo Série vs. Est. vs. Din. E E E E D S D LFT LST SLK MTS min min min max Paralelo S,P S,P S,P S,P RSM SPT WCS min min min P S,P P v(j) LFTj LFTj - dj LFTj - EFTj |S j | max(l,j)∈AP{0,ti+dj – (LFTl-dl) E(l,j)} dj LFTj - dj - max(l,j)∈AP{E(l,j)} Tabela 5.1: Regras de prioridade procedimento, uma regra pode ser indicada apenas para um ou para ambos os ti82 pos, i.e., em série e em paralelo (cf. Schirmer, 1997). A tabela 5.1, extraída de Kolisch & Hartmann (1998), apresenta sete regras de prioridades (com base no tempo e na rede) mais utilizadas, em vista de desempenho superior, comprovado por alguns estudos (cf. Schirmer, 1997): LFT tempo mais tarde de conclusão (latest finish time); LST tempo mais tarde de início (latest start time); SLK folga (slack); MTS total de sucessores (most total sucessors); RSM método do escalonamento de recurso (resource scheduling method); SPT tempo de processamento (shortest processing time); WCS folga do pior caso (worse case slack). A regra MTS emprega S j , o conjunto de todos os sucessores, diretos e indiretos, isto é, não necessariamente imediatos, de j. O conjunto de todos os S j compõe o fecho transitivo do grafo de precedência. As regras RSM e WCS usam o conjunto AP = {(l,j) ∈ Di x Di | l ≠ j} dos pares de todas as atividades (l,j) que estão no conjunto de decisão Di. Por fim, a regra WCS emprega E(l,j), que representa o tempo de início mais cedo, viável em precedência e recurso, da atividade j se a atividade l é escalonada para ter início no tempo ti. 5.3 Algoritmos do tipo Aleatório Puro É o mais simples procedimento de amostragem. Consiste em selecionar uma tarefa entre as candidatas do conjunto de decisão Di utilizando um processo puramente aleatório. Logicamente, dispensa o cálculo de valores de prioridade para as tarefas candidatas, que agora são escolhidas ao acaso. A utilização de métodos aleatórios como geradores de soluções benckmark para estudos comparativos de performance de outros algoritmos é prática comum nas pesquisas de otimização matemática do PSP (Hartmann & Kolisch, 1999). Em geral, qualquer outro método mais bem elaborado deve superá-los nos resultados. Desafortunadamente, para o caso em tela, a literatura não registra pesquisa pregressa com a qual se possa comparar o desempenho dos algoritmos ora apresentados, como aludido no capítulo 4. Nenhum conjunto de teste exclusivo existe disponível voltado para o PSP com redes seriais e NC (complexidade de rede) unitária, objeto do corrente estudo, o que torna imperativo elaboração de soluções de referência com que cotejar os resultados. 83 5.3.1 Algoritmo Aleatório Proposto A cada iteração, o procedimento concebido e implementado produz uma sucessão de atividades, viável em precedência, via seleção aleatória das tarefas do conjunto de decisão Di. Constrói, em seguida, uma lista com os modos de execução atribuído a cada uma das J tarefas. Ato contínuo, chama a sub-rotina SerialSGS para alocálas levando-se em conta seus modos de execução, no ordenamento listado e em seu tempo mais cedo, viável em recursos, como apresentado na tabela 5.1. Produz um escalonamento a cada iteração e registra a melhor entre as soluções computadas. O critério de parada pode ser de dois tipos: impor limite ao número de iterações ou ao tempo de CPU. Sua estrutura é como se apresenta a seguir. Para uma dada instância, faça: Repetir Construção aleatória de uma sucessão de tarefas; Montagem aleatória da lista de modos de execução; SerialSGS. Até satisfazer condição de parada Retornar a melhor solução 5.4 GRASP Método iterativo que busca soluções aproximadas para problemas de otimização combinatória, a GRASP (Greedy Randomized Adaptive Search Procedure) foi concebida por Feo & Resende (1989). Trata-se de um procedimento de amostragem aleatória onde cada iteração consiste de duas fases: construção e busca local. Seu leiaute básico é como vai a seguir: Para uma dada instância, faça: Repetir Construção de uma solução gulosa aleatória; Busca de um mínimo local nas vizinhanças; Atualização da solução; Até satisfazer condição de parada Retornar a melhor solução Uma solução viável é gerada iterativamente, elemento a elemento, na fase de construção. Todos os elementos viáveis são antes ordenados segundo uma função gulosa – míope – preestabelecida. A partir daí, uma lista de candidatos é extraída, relaxando o critério guloso – regra de prioridade – e permitindo que elementos que atendam em alguma medida ao critério componham tal lista restrita (restrict candidate list - RCL) e então possam ser selecionados. 84 Em cada estágio, um elemento da lista de candidatos é eleito para integrar a solução incompleta e então é excluído da RCL. A escolha se dá aleatoriamente entre os candidatos da lista, quer dizer, não necessariamente o melhor é selecionado, o que confere ao método um caráter probabilístico e permite que a cada iteração uma solução distinta possa ser retornada. A RCL é então remontada a cada iteração da fase de construção. Assim, os benefícios relacionados com cada elemento da lista são atualizados de modo a repercutir as mudanças introduzidas pela seleção do elemento anterior e, em razão disso, o procedimento se diz adaptativo. Ao cabo da fase de construção, não obrigatoriamente um ótimo local será encontrado, o que torna oportuna a inclusão de um processo de melhoria para explorar suas vizinhanças e perseguir uma solução localmente ótima. Introduz-se então um algoritmo de busca local, que funciona de modo iterativo ao sucessivamente substituir a solução viável corrente por outra das vizinhanças, gerada a partir de perturbação induzida na primeira. Mas apenas retorna esta última se for de menor makespan. Empiricamente, sabe-se que a eficiência do algoritmo de busca local será função da qualidade da solução fornecida pela fase de construção. Assim, boas soluções de partida podem acelerar o processo de busca e preveni-lo contra desempenho exponencial (cf. Feo & Resende, 1994). 5.4.1 Algoritmo GRASP Proposto A literatura que cobre o método (Resende, 1998) não registra uma GRASP aplicada a qualquer categoria de PSP, incluindo o caso em questão. Sob este ponto de vista, portanto, a abordagem é inédita. Nessa seção são detalhados os passos das duas etapas integrantes do algoritmo GRASP sugerido para solução do PSP em estudo, isto é, as fases de construção e melhoria. Fase de construção Inicialmente, deve-se definir a função gulosa. Adota-se a regra de prioridade min LFT, visto que estudos precedentes (Kolisch & Hartmann, 1998) autorizam supor melhor desempenho para o PSP em métodos com base em amostragem aleatória. A RCL é construída a partir do conjunto de decisão Di , formado por todas as atividade que, a cada iteração i, já tiveram suas predecessoras na rede devidamente alocadas, ou seja, são viáveis em precedência. Em vez de se fazer meramente a escolha 85 Algoritmo ConstSchedGRASP // 1 // 2 3 Início Entrada: J, κ, T ,Pj, LFTj, Mj, ,j=1,...,J+1 Processo SC0 ={0}, M0 ={1} Para i = 1,...,J faça: a Di = {j ∈ J \ SCi | Pj ⊆ SCi} b Limiinf = min { LFTj | j ∈ Di } c Limisup = Limiinf + κ( T - Limiinf ) d sup RCLi = {j ∈ Di | LFTj ≤ Limi } e Selecionar aleatoriamente ji ∈ RCLi f SCi+1 = SCi ∪ {ji} g Selecione aleatoriamente mi ∈ {1,.., M ji } h Mi+1 = Mi ∪ {mi} fim-para 4 SC = SCJ+1 ∪ {J+1}, M = MJ+1 ∪ {1} // Resultado 5 SC, M Figura 5.3: Pseudocódigo da fase de construção da GRASP gulosa em Di, ou seja, optar pela tarefa de menor LFT do conjunto de decisão, o procedimento constrói a lista restrita e permite que um candidato a integre se seu corsup respondente LFT for menor ou igual a um limitante superior ( Limi ). Este último se calcula pela soma do menor LFT entre as tarefas em Di, dito limite inferior ( Limiinf ), e um dado percentual, estipulado pelo chamado parâmetro de relaxação κ, 0 ≤ κ ≤ 1, de sua diferença até o horizonte de tempo do projeto T . Em outras palavras, o limisup inf tante superior Limi resulta da combinação convexa entre o limitante inferior Limi e o horizonte de tempo do projeto T . Assim, definindo-se os limitantes inferior e superior a cada iteração i da fase de construção, Limiinf = min { LFTj | j ∈ Di } e Limisup = Limiinf + κ( T - Limiinf ), tem-se sup RCLi = {j ∈ Di | LFTj ≤ Limi }. Este tipo de limitante da lista de candidatos, imposto por κ, é costumeiramente referido como restrição de valor. Note-se que se κ = 0, a escolha será totalmente gulosa; por outro lado, se κ = 1, a escolha dar-se-á de modo totalmente aleatório. Como é 86 bem de ver, o parâmetro κ deve ser modulado criteriosamente, de modo a produzir os melhores resultados para uma dada classe de problemas de otimização. É o que se faz na subseção 6.2.1. Opcionalmente, poder-se-ia obrigar a RCL a ter um número máximo de componentes, com o que se estabelece a assim denominada restrição de cardinalidade. Uma vez definida a RCL em cada iteração i (linha 3d), procede-se a uma escolha aleatória na qual qualquer tarefa desta lista tem a mesma probabilidade de ser escolhida – linha 3e. Fazendo-se i:=1,...,J , o procedimento, concluída esta etapa, acaba por montar uma lista contendo uma sucessão SC das J+2 tarefas. Esta última, juntamente com a lista M dos modos de execução associados a cada atividade e elaborada aleatoriamente (linhas 3g e 3h), são enviadas ao SGS serial para que cada tarefa seja alocada em seu tempo mais cedo Fase de busca local Conforme já salientado, a fase de construção não obrigatoriamente produz um escalonamento localmente mínimo. Útil se faz assim perseguir uma solução nas vizinhanças que seja de melhor qualidade. O procedimento de melhoria (busca local) é centrado em permutação de pares de tarefas (local shift), tentando produzir escalonamento de menor makespan. O pseudocódigo correspondente é mostrado na tabela 5.4 Algoritmo MelhorSchedGRASP // Início 1 Entrada: SC, M,Pj, Mj, djm, ,j=1,...,J, m=1,...,Mj // Processo 2 Para i = 1,...,J-1 faça: 3 k = ji Se( ji ∉ P ji + 1 ) ∧ ( ∃ mh ∈ { 1,..., M ji + 1 }: d ji + 1 ,mh < d ji + 1 ,mi + 1 ) Então 4 a Atualizar SC e M : ji = ji+1 ∧ mi+1 = mi b Atualizar SC e M : ji+1 = k ∧ mi = mh fim-se fim-para 5 Escalonar e computar FTJ+1 com SerialSGS // Resultado 6 SC, FT, M, FTJ+1 (makespan) 87 melhoria da GRASP Figura 5.4: Pseudocódigo da fase de A partir da posição 1 até a posição J-1 da lista corrente, duas tarefas consecutivas são permutadas em sua ordem e o modo da segunda é redefinido se esta atender simultaneamente às duas condições seguintes: • não for sucessora imediata da primeira atividade no grafo de precedência e; • puder ter sua duração diminuída via substituição de seu modo de execução. A primeira condição previne quanto à violação da restrição de precedência enquanto a última, uma vez atendida, envolve uma operação de mudança de modo em que a tarefa é processada, que então é de fato consumada, tentando melhorar a solução ao diminuir o makespan do projeto. A permuta opera sempre nas listas já atualizadas, a partir daquelas recebidas da fase de construção. Após efetuadas as J-1 iterações, a sub-rotina SerialSGS é chamada para alocação de cada tarefa da lista corrente no instante mais cedo, viável em recursos, observando a ordem em que comparece na nova sucessão S* e o modo no qual deve ser executada, segundo o M* corrente, e computa o makespan. do projeto FTJ+1. Dessa forma, um mínimo local é, esperançosamente, encontrado. Finda esta etapa de melhoria, a GRASP reinicia uma nova etapa de construção, e assim sucessivamente, até atender o critério de parada. Conforme a conveniência do ensaio, dois são os critérios possíveis de parada incorporados ao algoritmo GRASP: limite do número de iterações ou do tempo de uso da CPU. O algoritmo termina por montar um escalonamento do projeto ao menos subótimo, bem definido em seqüenciamento das tarefas e respectivos instantes de conclusão (cf. seção 3.2.8). Outras modalidades de combinação de duração com ordenamento das tarefas foram tentadas como forma de busca local e testes comparativos preliminares, que não são explicitados aqui, sinalizaram desempenho superior do mecanismo adotado e ora descrito. 5.5 Algoritmos Evolucionários Denominação mais geral para as abordagens genéticas, algoritmos evolucionários (ou evolutivos) são meta-heurísticas baseadas no principio da evolução natural. Sua aplicabilidade universal e destacada performance quando aplicados a uma vasta gama de problemas de otimização fizeram emergir um notável interesse neste tipo de estratégia nos últimos anos (Kohlmorgen et al. (1998) e Houdayer, 1999). Têm 88 experimentado largo emprego como meta-estratégia nos domínios, e.g., da otimização continua e discreta, machine learning e teoria dos jogos. Uma boa introdução no tema, com alentada bibliografia, é propiciada por Goldberg (1989). 5.5.1 Genética, Evolução e Otimização Hereditariedade é a transferência, dos indivíduos para os seus descendentes, das informações – representadas pelos genes – responsáveis por suas características. A genética20 é o estudo da hereditariedade. Genótipo é como comumente se denomina a constituição genética de um indivíduo, enquanto fenótipo é qualquer característica metabólica ou morfológica. Diz-se que um caráter é adquirido, quando a causa é essencialmente ambiental e hereditário, se a causa é essencialmente genética. A evolução natural diz respeito à freqüência de genes numa população. Os princípios da teoria da evolução das espécies21. se descrevem resumidamente do seguinte modo: um indivíduo ou, mais precisamente, seu fenótipo consiste de características básicas contidas em seu gene, o genótipo, acrescidas de outras mais, adquiridas. Os indivíduos de uma espécie são similares, salvo pelos seus fenótipos e genótipos. Novos indivíduos surgem por cruzamento de seus “pais”. O genótipo de um indivíduo é determinado por uma recombinação dos genes dos “pais” e por mutação, isto é, alterações raras e fortuitas de alguns genes. A seleção natural conduz a um crescente nível de adaptação das espécies ao ambiente, num processo que se perpetua ao longo das gerações, tendendo a preservar as variações favoráveis e fazer desaparecer as desfavoráveis. Na luta pela sobrevivência, os indivíduos de uma espécie competem por comida e parceiros de acasalamento. Os indivíduos mais bem adaptados de uma população têm maiores chances de subsistência e assim podem transferir seus genes para os descendentes, enquanto aqueles cujas características são menos apropriadas para enfrentar as condições ambientais tendem a perecer antes que possam se reproduzir. O processo de adaptação de uma população ao seu ambiente é chamado aprendizado filogenético em contraste com a adaptação individual, referida como aprendizado ontogenético. Todo este mecanismo evolutivo inspirou Holland (1995) nas bases para idealização dos algoritmos genéticos (AG), cuja utilização na otimização matemática tem alcan20 O abade tcheco Gregor Mendel (1822-1884) foi o precursor do estudo da hereditariedade utilizando o método científico. 21 O naturalista inglês Charles R. Darwin (1809-1882), com seu livro “On the Origin of the Species by Means of Natural Selection”, legou ao mundo as bases para a moderna teoria da evolução. 89 çado resultados altamente expressivos. Sua terminologia é copiada diretamente da biologia. Grosso modo, um AG é baseado em uma codificação específica do problema e os operadores mutação, cruzamento e seleção22. Antes de tudo uma população inicial é determinada e o nível de adaptação de cada indivíduo é calculado, refletindo seus atributos com respeito a um objetivo preestabelecido. Continuando, os novos indivíduos são gerados pelo emprego dos operadores mutação e cruzamento. Finalmente, uma nova população remanesce por uma estratégia de seleção que favorece a permanência dos indivíduos mais bem adaptados e exclui os demais. Às vezes, emulando a natureza, este processo se repete em diferentes “ilhas” para várias populações com processos evolutivos independentes. O operador cruzamento recombina partes de dois indivíduos para formar seus descendentes. Isto sugere uma combinação de genes e as partes constitutivas são supostas responsáveis pela adaptação dos indivíduos “pais” e são referidas como blocos de construção. Do operador mutação pode originar combinação de genes que antes não ocorreu na população. Em outras palavras, o genótipo resultante de uma mutação pode não ter sido produzido por cruzamento. O algoritmo genético clássico tem a seguinte estrutura básica: Para uma dada instância, faça: Gerar População Inicial Avaliar Adaptação dos Indivíduos Repetir Cruzamento dos “pais” e geração dos descendentes; Mutação dos descendentes; Avaliação de adaptação dos descendentes; Seleção dos “pais” e formação de nova população. Até satisfazer condição de parada Retornar a melhor solução Até onde se depreende da literatura, são três os algoritmos genéticos propostos até agora para o MRCPSP: Özdamar (1996), Hartmann (1997a) e Mori & Tseng (1997). Os dois últimos representam as fontes de cujas idéias o presente trabalho representa uma adaptação. Contudo, para o caso do MRCPSP em estudo, contando exclusi- 22 Há outros operadores usuais, de acordo com cada pesquisador (Hartmann, 1999). Esses três, todavia, são os mais freqüentemente empregados. 90 vamente com recursos renováveis e circunscrito a redes seriais, não há paralelo na literatura. 5.5.2 Algoritmo Genético Proposto O seqüenciamento básico de evolução simulado pela abordagem adotada é agora descrito. Adaptado dos trabalhos de Hartmann (1997a) e Mori & Tseng (1997), o AG proposto se volta para a solução sub-ótima do MRCPSP alvo da pesquisa corrente. É, portanto, concebido sob medida para o caso de redes seriais contando unicamente com recursos da categoria renováveis, tal como nas instâncias de teste. Na estratégia empregada, espaço de busca (o conjunto de genótipos) compreende as seqüências viáveis com respeito à precedência e todas as combinações de modo de execução. Um fenótipo (escalonamento) associado a um genótipo é gerado, a exemplo dos demais algoritmos implementados, pelo emprego do esquema de geração em série, que produz escalonamentos ativos. O pseudocódigo do AG implementado é como se mostra na figura 5.5. A codificação genética, em vez de usar bit, é do tipo direta e baseada em lista (permutação) de atividades. O algoritmo começa por produzir uma população inicial POP1 de modo puramente aleatório – empregando o algoritmo AP –, equivalente à primeira geração, que contém um número inteiro par de indivíduos, NIND, e então avalia seus níveis de adaptação (fitness), o que equivale a calcular o valor das funções-objetivo de cada solução viável, i.é, ao makespan. – linha 3 do pseudocódigo da fig. 5.x. A população é então aleatoriamente particionada em pares de indivíduos que formam os NIND/2 casais de “pais” sobre os quais se aplica o operador cruzamento com o que se produzem os novos indivíduos (“filhos”). Isto feito, numa probabilidade pmut , os genótipos dos recém criados indivíduos sofrem a mutação. Após computar o nível de adaptação de cada um dos novos indivíduos gerados, toda a prole é incorporada à população, agora de dimensão 2.NIND. O passo que se segue é aplicar o operador seleção à população corrente de modo a reduzi-la a seu tamanho original NIND – linhas 4a até 4i. Sempre que a sub-rotina SerialSGS é acionada ao longo do processamento, registra-se o escalonamento de menor makespan. Todo esse processo é ser repetido para um numero preestabelecido de gerações denotado NGEN – linha 4. Alternativamente, o critério de parada pode ser estabelecido por limite de tempo de CPU ou de indivíduos e respectivos escalonamentos 91 computados. Ao final do processamento – linha 5 –, obtém-se um escalonamento bem definido em tarefas, tempos e modos (FTJ+1 representa o valor do makespan). 92 Indivíduos e Adaptação A codificação adotada é do tipo direta com um indivíduo IND representado por um par composto por uma permutação de atividades e uma designação de modos que se denota por I IND =(SCi, Mi) ≡ (( j1I ,..., j J ), mI). A seqüência de tarefas SCi = j1I ,..., j JI é suposta ser uma permutação viável com relação às restrições de precedência. A designação de modo Mi é um mapeamento que atribui a cada atividade j ∈ {1,...,J} um modo mI(j) ∈ {1,...,Mj}. Cada genótipo relaciona-se com um escalonamento (fenótipo), determinado de modo único. A princípio, a atividade fictícia 0 de início do projeto é começada no instante zero e, em seguida, as demais atividades são escalonadas em seu tempo mais I cedo viável na ordem prescrita pela seqüência j1I ,..., j J , sendo a cada atividade atriI I buído seu devido modo. A atividade ji é escalonada no modo mI( ji ), definido alea- toriamente. Utiliza-se a sub-rotina SerialSGS para a decodificação do genótipo, com o que o resultado é um escalonamento viável com respeito às restrições de precedência e recursos e, além disso, ativo (cf. seção 3.X). A medida de adaptação de cada indivíduo equivale ao makespan do escalonamento correspondente e é útil quando da aplicação do operador seleção. Nesta etapa preliminar assim, é montada a população inicial (i.é, geração original) de NIND indivíduos, com seqüências e modos definidos aleatoriamente, cujos níveis de adaptação são devidamente computados. Cruzamento Os pares selecionados para cruzamento são constituídos dos indivíduos “mãe” M e “pai” F, que se reproduzem para formar os indivíduos “filha” D e “filho” S. Considerese primeiro a definição da “filha”. Sejam p1 e p2 dois inteiros extraídos ao acaso com 1 ≤ p1,p2 ≤ J. Na seqüência de tarefas de D, as posições i=1,...,p1 são tomadas da “mãe”, com o que jiD := jiM . A seqüência de tarefas das posições i= p1+1,...,J de D é constituída pelas tarefas restantes e obedecendo o ordenamento com que comparecem em F. Assim sendo, 93 Algoritmo SchedALGEN // Início 1. Entrada:NIND , NGEN // Processo 2. POP1 ={ }, MOD1={ }, POP2={ }, MOD2={ }, RNDSET = {1,...,POP}, NITER = 1 3. Para i = 1,..., NIND faça: a. Gerar SCi, Mi com o algoritmo AP i b. SerialSGS(SCi, Mi)computa FTJ + 1 e registra melhor escalonamento c. POP1 = POP1 ∪ {SCi} , MOD1 = MOD1 ∪ {Mi} fim-para 4. Enquanto (NITER ≤ NGEN) faça: a. POP2 = POP1 , MOD2 = MOD1 b. Para i = NIND +1 ,..., 2* NIND, 2 faça: c. Random (k , l ∈ RNDSET) ; RNDSET = RNDSET\{k,l} d. Cruzamento(SCk, SCl) para gerar SCi , SCi+1 , Mi, Mi+1 e. SerialSG(SCi, Mi),(SCi+1, Mi+1) Se (probabilidade) Então: f. g. Mutação(SCi, Mi),(SCi+1, Mi+1) h. SerialSGS(SCi, Mi),(SCi+1, Mi+1) fim-se i. POP2 = POP2 ∪ { SCi , SCi+1 }, MOD2 = MOD2 ∪ { Mi , Mi+1 } fim-para j. Para i = 1,...2* NIND faça: Seleção( FTJi+ 1 ) k. POP1 = { NIND indivíduos i de menor makespan } l. MOD1 = { NIND listas dos modos indivíduos de POP1 } m. NITER = NITER + 1 fim-enquanto // Resultado 5. SC , FT, M, FTJ+1 Figura 5.5: Pseudocódigo do algoritmo genético proposto. as tarefas que já tenham sido tomadas da “mãe” M não são consideradas novamente no “pai” F. Desse modo, jiD := j kF , onde k é o menor índice no qual j kF ∉ { j1D ,..., jiD− 1 }. Este tipo de operador cruzamento diz-se de ponto unitário. As atividades nas posições i=1,...,p2 da “filha” D recebem os mesmos modos com que comparecem na “mãe” M 94 D D mD( ji ) := mM ( ji ), ao passo que os modos das suas tarefas remanescentes, nas posições i=p2+1,...,J, são atribuídos conforme a designação mF dos modos do “pai”, ou seja, D D mD ( ji ) := mF ( ji ). O “filho” S dos indivíduos M e F tem uma estrutura de geração analogamente definida. A diferença é que as posições i=1,...,p1 de sua lista é copiada do “pai” F e as demais posições são tomadas da “mãe” M. Similarmente, os modos das tarefas de S, até p2, são extraídos de F e daí em diante vêm de M. A par de assegurar que cada atividade seja considerada uma única vez, este mecanismo também garante que as posições relativas nas seqüências de tarefas dos “pais” sejam preservadas, com o que se produz uma lista de atividades que respeita as restrições de precedência. Isto pode ser demonstrado pelo seguinte teorema (Hartmann, 1997a): Teorema 1 Se aplicado a “pais” cujos seqüenciamentos obedecem às restrições de precedência, o operador cruzamento de ponto unitário para a codificação genética baseada em permutação produz descendentes de genótipos viáveis em precedência. Prova Assuma-se que a seqüência correspondente à “filha” seja inviável em precedência, D D D quer dizer, existem duas atividades ji e j k com 1 ≤ i < k ≤ J e j k ∈ P jiD , conjunto D dos predecessores imediatos de ji . Com isto, três casos podem ser examinados: Caso 1: Ter-se-ia i,k ≤ p1. . Todavia, as posições relativas são mantidas pelo D D operador cruzamento, com o que a atividade ji situa-se antes da atividade j k na seqüência de tarefas da “mãe” M, o que contraria o pressuposto de viabilidade de M. D D Caso 2: Ter-se-ia i,k > p1. Então a atividade ji situa-se antes da atividade j k na seqüência de tarefas do “pai” F, contrariando a suposição de viabilidade de F. D D Caso 3: Ter-se-ia i ≤ p1 e k > p1. Com isso, a tarefa ji antecede j k na seqüên- cia da “mãe” M, igualmente contrariando o pressuposto de viabilidade de M. ♦ Mutação A exemplo do que ocorre no ambiente natural, a mutação é fato esporádico que introduz alterações genéticas sempre muito discretas ao longo do processo evolutivo. 95 É útil porque torna possível criar seqüências de tarefas (combinações de genes) que podem não ter sido obtidas pelo operador cruzamento e lograr introduzir modos (genes) que não ocorreram na população corrente. Duas variantes de mutação são testadas. O operador mutação idealizado guarda forte semelhança com a fase de melhoria da GRASP já descrita. Aplica-se com probabilidade pmut e induz modificação no genótipo de cada novo indivíduo. Um inteiro 1 ≤ q < J-1 é extraído aleatoriamente. Todos os pares de tarefas ji e ji+1, q ≤ i < J são passíveis de mutação, contanto que atendam simultaneamente a duas condições: • Se a tarefa ji+1 não for sucessora imediata de ji e; • Se houver um modo de menor duração para a tarefa ji+i. No caso afirmativo, as tarefas são permutadas e a ji+i. é atribuído o primeiro modo entre {1,..., M jiI+ 1 } cuja duração seja menor que a imposta pelo modo atual. Também se tenta (cf. subseção 6.x) uma modalidade de operador mutação aplicada com probabilidade pmut a cada novo indivíduo. Sugerida por Hartmann (1997a), funciona do modo seguinte: dois números inteiros q1 e q2 são extraídos aleatoriamente, I I com 1 ≤ q1 < J e 1 ≤ q2 ≤ J. As tarefas j q1 e j q1 + 1 são permutadas se isso não violar a restrição de precedência, mas sem acarretar nenhuma alteração nos modos de processamento das tarefas, que são mantidos. Adicionalmente, atribui-se um novo I modo de execução para a atividade da posição q2 , a saber, redefine-se mI( j q2 ), ex- traindo-se aleatoriamente um número inteiro do intervalo {1,..., M jqI 2 }. Seleção A seleção se dá por um simples mecanismo que permite a sobrevivência apenas dos indivíduos mais bem adaptados. Constrói-se um ranking baseado no valor do makespan dos 2*NIND indivíduos. O tamanho original da população é restabelecido ao se manter os NIND indivíduos de melhor nível de adaptação, sendo os demais removidos da população, isto é, morrem. Empates são decididos arbitrariamente. Este critério mostrou ser o de melhores resultados entre outros possíveis (Hartmann 1997a). 96 5.5.2 Heurística Híbrida Proposta Graças a seu desempenho marcadamente superior, algoritmos híbridos de busca são largamente empregados na otimização combinatória (Goldberg, 1989). Caracterizam-se por harmonizar, parcial ou totalmente, duas ou mais técnicas típicas de métodos já consagrados. A idéia básica que norteia heurísticas dessa natureza é tornálas ecléticas, no sentido de tentar agregar as melhores particularidades de seus procedimentos constituintes com o que ensejar soluções igualmente melhores. De outro lado, é sabido que num método evolucionário a população inicial desempenha um papel mais importante do que meramente fornecer indivíduos para ação dos operadores genéticos. Com efeito, sua qualidade inicial pode repercutir ao longo de todo o processo algorítmico. Em outras palavras, o bom desempenho do método pode depender da “higidez” dos indivíduos pioneiros como um todo. Este raciocínio motivou a configuração da heurística evolucionária híbrida (HH) que doravante se descreve. Opta-se então por tentar conjugar as “virtudes” da GRASP com as do algoritmo genético, isto é, a heurística denomina-se evolucionária híbrida porque incorpora abordagens que distinguem uma GRASP e outras, tipicamente vinculadas a algoritmos genéticos: a população original é toda gerada pela GRASP detalhada na seção 5.x e, a partir daí, a heurística assume o comportamento do algoritmo genético tal como apresentado na seção anterior. Isso significa que o pseudocódigo da HH coincide exatamente com o do AG da figura 5.5, exceto pela linha 3a: o algoritmo aleatório puro AP é substituído pela GRASP na formação dos indivíduos (SCi, e respectivos modos Mi) da população inicial POP1. Como seus detalhes funcionais correspondentes são idênticos nos algoritmos constituintes mencionados e já apresentados, a HH não é aqui objeto de descrição mais minuciosa. 97 Capítulo 6 Onde se relatam os testes computacionais comparativos das heurísticas propostas Experimentos Numéricos A gora que se tem devidamente modelado o PSP da indústria de petróleo em estudo, as heurísticas desenvolvidas para resolvê-lo já descritas e montados os conjuntos de instâncias representativas do problema, são apresentados os resultados dos testes computacionais comparativos efetuados. Como o interesse é estabelecer menores prazos de encerramento para os projetos, via alocação dos recursos às tarefas, a função-objetivo se refere sempre ao critério de performance minimização do makespan. Portanto, o desempenho relativo de uma heurística é suposto tanto melhor quanto menor o makespan do correspondente escalonamento produzido. Os algoritmos foram codificados em Object Pascal e compilados com a IDE Delphi III em ambiente Windows 98. Os experimentos numéricos foram conduzidos num microcomputador Pentium II com clock-pulse de 266 MHz e 64 Mb de RAM. O capítulo tem o seguinte leiaute: a seção 6.1 descreve o ajuste das meta-heurísticas, visando a estabelecer seu melhor funcionamento; os testes computacionais propriamente ditos são expostos e interpretados na seção 6.2, onde também se discute a influência dos parâmetros de problemas RF e RS e a eficiência das heurísticas. Por fim, alguns comentários adicionais são colocados na seção 6.3. 6.2 Configuração das Meta-heurísticas Testes preliminares são conduzidos objetivando calibrar os valores dos parâmetros κ, para a GRASP, e POP e Pmut, para as heurísticas evolucionárias. Para estas últimas, também se define a melhor entre duas modalidades possíveis do operador mutação. O conjunto de instâncias de 50 tarefas, J50, foi empregado nos experimentos com 30s de CPU. 98 6.1.1 Ajuste dos parâmetros Objetivando a utilização dos métodos GRASP, AG e HH no seu ponto ótimo de funcionamento, ensaiam-se as várias possibilidade dos parâmetros funcionais de modo a encontrar seus níveis de desempenho maximizado. GRASP Como já aludido no capítulo 4, para a GRASP, o parâmetro de relaxação κ, para dadas características de problema, deve sofrer ajuste fino antes de seu emprego efetivo. Tal parâmetro, pertencente ao intervalo real [0,1], estipula o percentual que baliza a lista restrita de candidatos, RCL. Quando κ = 0, a GRASP torna-se completamente míope, ou seja, a escolha da tarefa do conjunto das elegíveis recai sobre aquela que melhor atende a regra de prioridade e, se não fosse pela fase de busca GRASP J50 - 30 s κ 0,0 0,2 0,35 0,5 0,65 0,8 1,0 Média de Makespan 79,50 79,24 78,95 78,77 78,71* 78,76 80,66 Tabela 6.1: Calibração do parâmetro κ. local, computaria sempre uma mesma solução, não importando o número de iterações; de outro lado, se κ = 1, o método, também na fase de construção, adquire caráter puramente aleatório. O conjunto de teste J50 foi empregado como dado de entrada em testes com critério de parada de 30s de CPU. A tabela 6.1 mostra o resultado de rodadas sucessivas da GRASP com os valores de κ e respectivos valores médios da função objetivo, i.é, média de makespan dos 360 projetos de J50. A GRASP calcula a média mínima de makespan de 78,71 dias para κ = 0,65. Portanto, assume-se que este valor é o que deve ser ajustado para testar todos os conjuntos de problemas. Note-se que para κ nulo, o valor 79,50 é pouco satisfatório ao passo que, para κ igual à unidade, a média de 80,66 dias é a pior para efeito de minimização de makespan dos projetos. 99 Algoritmo Genético (AG) Em procedimentos meta-heurísticos, o operador mutação pode gerar genótipos que não ocorreram antes, o que costuma ser útil como forma de melhor explorar o espaço de busca. A mutação é fato raro, que se dá com algum nível de probabilidade, Pmut, o qual deve ser predefinido. Igualmente, o tamanho da população inicial, POP, também deve ser conhecido a priori, como dado de entrada. Os efeitos de POP e Pmut interagem ao longo de todo o processamento, de modo que ambos devem ser analisados conjuntamente. O procedimento estará em sua melhor forma como função do par (POP, Pmut). A modulação do AG deve, assim, observar essa interdependência. A tabela 6.2 exibe os valores da função-objetivo para as diversas combina- AG J50 - 30 s Pop. Inicial 10 Pmut Makespan médio 0,0 86,67 0,2 80,74 0,4 80,60 0,6 79,99 0,8 80,25 1,0 81,02 20 0,2 79,17 0,4 79,06* 0,6 79,53 0,8 79,67 30 0,2 79,81 0,4 79,75 0,6 80,01 0,8 80,23 40 0,2 81,01 0,4 80,75 0,6 80,94 0,8 80,93 50 0,2 81,70 0,4 81,55 0,6 81,75 0,8 81,57 60 0,2 82,36 0,4 82,19 0,6 82,19 0,8 82,12 Tabela 6.2: Probabilidade de Mutação – Pmut. 100 ções (POP, Pmut). Novamente o conjunto de instâncias J50 foi usado, com 30s de CPU em cada execução. A menor média de makespan foi alcançada com os valores 20 para POP e 0,4 para Pmut. Conjectura-se que valham também para problemas assemelhados, com o que são adotados doravante para todos os testes das heurísticas evolucionárias (AG e HH). Pela análise da tabela 6.2, percebe-se, para uma POP de 10 indivíduos, os correspondentes valores médios de 86,67 e 81,02 para o makespan quando se usam 0,0 e 1,0 para Pmut, respectivamente. São resultados sofríveis – de fato, os piores – quando comparados com os demais naquela população. Isto dá bem a medida dos efeitos, a exemplo da evolução natural, da mutação: no primeiro caso, ela nunca acontece; no segundo, o genótipo sempre está sujeito à mutação. Mas, como já se disse anteriormente, a mutação genética é fato raro na evolução biológica. Digno de nota é que, à medida que a população inicial POP cresce, a partir de 20 indivíduos, o procedimento computa médias de makespan cada vez maiores. 6.1.2 Definição do Operador Mutação Na subseção 5.5.2 são descritas duas configurações para o operador mutação: um primeiro, proposto pelo presente estudo e um segundo, sugerido por Hartmann (1997a). Agora, ambos os operadores mutação têm cotejados seus resultados para um mesmo ambiente de PSP. É o que pode ser visto na tabela 6.3 que se segue. Para POP=20, Pmut = 0,4 e 30s de processamento, a menor média de makespan das 360 instâncias analisadas é obtida com o operador proposto. Como o que se preten- AG J50 - 30s – POP = 20, Pmut = 0,4 Algoritmo Proposto Hartmann 1997 Média de Makespan 79,06 80,80 Tabela 6.3: Teste comparativo entre operadores mutação. de é minimizar o makespan, este último é adotado como o operador mutação dos procedimentos evolucionários deste trabalho (AG e HH). Presume-se, com isso, que tal configuração é também a mais conveniente para uso em instâncias de maior porte de problema análogos, como é o corrente caso. 101 6.2 Experimentos Numéricos Comparativos Os três conjuntos de instâncias, J50, J100 e J200, são submetidos separadamente aos algoritmos, agora já devidamente calibrados. Numerosos testes comparativos são efetuados e seus resultados são interpretados para efeito de definição de desempenho relativo dos algoritmos. 6.2.1 Testes com o conjunto J50 Dos três conjuntos de teste, J50 é o que reúne os problemas de escalonamento relativamente mais fáceis. São na verdade instâncias de médio porte, representando projetos de 50 tarefas cada uma delas. Todas as 360 instâncias se submetem a cada uma das heurísticas em 30s de CPU para cada execução. A tabela 6.4 a seguir mostra os resultados, com os algoritmos e a média de makespan correspondente computada. A HH apresenta o melhor desempenho para makespan, vis-à-vis as demais heurísticas, para 77,07 dias de makespan médio. Por ordem de qualidade de resultados, a seqüência das demais é dada por GRASP, AG, AP. Recorde-se que o que se persegue é a minimização do makespan de cada um dos projetos. É de se notar que o AG e a GRASP têm performance bem próximas. J50 - 30 s Algoritmo HH GRASP AG AP Makespan médio 77,07 78,71 79,06 89,46 Tabela 6.4: Teste comparativo entre as heurísticas com o conjunto J50. Numa análise simplificada, i.é, considerando que o prazo de encerramento dos projetos seja função apenas da programação das tarefas, os projetos na prática apresentariam, em média, mais de 12 dias de atraso se obedecessem a um escalonamento ditado pelo AP em vez de pela HH. 6.2.2 Testes com o conjunto J100 Os problemas de escalonamento de dificuldade relativa intermediária estão agrupados no conjunto J100. Mas de fato as instâncias de J100 representam problemas de grande porte, contando 100 atividades cada um. 102 Como critério de parada para todos os algoritmo, o processamento de cada instância demandou 120s de CPU. Na tabela 6.5 a seguir, podem ser lidos os resultados. J100 - 120 s Algoritmo HH GRASP AG AP Makespan médio 80,26 81,79 82,37 97,65 Tabela 6.5: Teste comparativo entre as heurísticas com o conjunto J100. Novamente a HH supera as demais em perfomance, com 80,26 de média de makespan. Na seqüência, GRASP, AG, AP. Note-se a grande discrepância entre o valor médio de 97,65 dias computado pelo AP quando confrontado com as outras. 6.2.3 Testes com o conjunto J200 Essas são as instâncias de solução mais laboriosa. Com efeito, os PSP’s do conjunto J200 exige programação de 200 tarefas e atribuição de seus respectivos modos de execução. Duas seqüências de testes são conduzidas, as quais se diferenciam pelo critério de parada. Na primeira seqüência, as quatro heurística têm 300s de CPU para cálculo do makespan de cada instância, enquanto na segunda seqüência o critério de parada é o atingimento de 480s em cada rodada. As tabelas 6.6 e 6.7 a seguir mostram os resultados. J200 - 300 s Algoritmo HH GRASP AG AP Makespan médio 87,14 87,88 91,11 115,46 Tabela 6.6: Teste comparativo entre as heurísticas com o conjunto J200 em 300s. A ordem de superioridade das heurísticas de novo se repete. Novamente, para ambas as baterias de testes, a melhor perfomance é apresentada pela HH com 87,14 103 de makespan em 300s e 86,72 dias em 480s de CPU. O ranking se completa – sem surpresas, nos dois casos – com GRASP, AG, AP. Note-se que o acréscimo de 180s de CPU de um experimento para outro fez melhorar muito pouco os resultados. Concedeu-se um tempo 60% maior e o makespan médio para todas as heurísticas diminuiu apenas 0,8%, em média. Isso vem em decorrência do grande esforço computacional exigido para construção e verificação de J200 – 480 s Algoritmo HH GRASP AG AP Makespan Médio 86,72 87,76 90,09 113,80 Tabela 6.7: Teste comparativo entre as heurísticas com o conjunto J200 em 480s. um escalonamento, como adiante se demonstra. Com isso se pode aquilatar a enorme dificuldade inerente aos problemas combinatórios dessa dimensão. 6.2.4 Eficiência dos Algoritmos Entre as medidas costumeiras de desempenho de algoritmos, uma das mais representativas é a eficiência. Como forma de medir a eficiência dos algoritmos implementados, opta-se aqui por aferir quantitativa e qualitativamente as soluções heurísticas emanadas como função do tempo de processamento. Isto está de acordo com o que recomendam Jackson et. al. 1991 (Guidelines for reporting results of computational experiments. Report of the ad hoc committee):a eficiência de um algoritmo mede, simultaneamente, o esforço computacional requerido para se obter uma solução (e.g., tempo de CPU, número de avaliações e número de iterações) e a sua quaJ200 – 480 s Algoritmo AP AG GRASP HH Desvio 0,234367 0,159491 0,139266 0,135287 Tabela 6.8: Desvio médio das heurísticas em relação ao limitante inferior CPM. lidade (e.g., acurácia). 104 As tabelas 6.8 e 6.9 são empregadas para análise da qualidade e quantidade das soluções, respectivamente. Na tabela 6.8 se apresentam os desvios médios das soluções em relação ao respectivo limitante inferior estabelecido pelo caso trivial, i.é, sem restrição de recursos, tal como no CPM, enquanto na tabela 6.9 pode ser lido o número médio de escalonamentos avaliados em cada rodada de um procedimento em 480s de CPU para o conjunto J200. Com respeito à eficiência relativa ao AP, destaque para o AG: a população inicial é J200 – 480 s Algoritmo AG HH AP GRASP # escalonamentos 653,58 432,52 417,91 200,61 Tabela 6.9: Número médio de escalonamentos avaliados pelas heurísticas em 480 s. toda gerada pelo AP, e o AG é capaz de produzir aproximadamente 50% a mais de escalonamentos e consegue resultados bem melhores. Eis aí um traço que corrobora as vantagens, no que tange a simplicidade e eficácia, da auto-aprendizagem dos métodos evolucionários. A GRASP tem desempenho pior no que concerne à quantidade de soluções. Isso decorre do grande esforço computacional despendido na montagem da RCL e verificação do escalonamento, na fase de construção, e iterações da fase de busca local. Não obstante, demonstra aproveitar muito bem este dispêndio, ao direcionar sua busca para espaços de melhores soluções, em menor quantidade de escalonamentos, p. ex., do que o AG. O algoritmo AP tem resultados intermediários na quantidade de escalonamentos que verifica. Contudo, a qualidade da solução é sofrível (cf. tabela 6.8). De qualquer modo, certamente a resposta é bem melhor do que simplesmente uma sucessão viável. A HH parece ser a que melhor consegue conciliar quantitativa e qualitativamente as soluções encontradas. Sob este ponto de vista, pode ser eleita a de maior eficiência vis-à-vis as demais heurísticas. 105 Cumpre notar o enorme esforço computacional exigido para atingir uma única solução: em média, consome-se mais de 1s (cf. tabela 6.9). Eis aí uma medida da dimensão incomensurável do PSP em questão. 6.2.5 Efeitos dos Parâmetros de Problema RF e RS Também, visando a uma maior abrangência e melhor compreensão dos testes realizados, investigam-se os efeitos dos parâmetros de problemas RF e RS nas respostas das heurísticas (cf. subseção 4.3.1). O fator recurso, RF, dá a medida da porção média dos recursos demandada por tarefa do problema; a potência dos recursos, RS, reflete sua escassez. Na figura 6.1 a seguir tem-se o gráfico cartesiano no qual os valores de makespan são plotados contra as instâncias correspondentes. Pelo exame da figura, percebese grande uniformidade no comportamento dos algoritmos quando tomados em conjunto. Da esquerda para a direita, o RF cresce de 0,25 até 1,0. Nota-se que o desempenho das heurísticas é pouco sensível ao valor do RF , já que o perfil se reproduz em 4 ciclos, com discreta elevação na média do makespan. Contrariamente, o RS influencia fortemente os resultados. A cada ciclo de 90 instâncias, o RS varia em três níveis: 0,2, 0,4 e 0,6. Há três patamares bem definidos em cada um dos ciclos, cada qual correspondendo a um grupo de 30 problemas, de igual RS. O valor do makespan calculado decresce com o incremento da disponibilidade de recursos e cresce com a escassez. Os maiores makespan são aqueles correspondentes aos problemas de RS=0,2, ao passo que, em sendo pouco restrito o problema, o makespan diminui bastante, como quando RS=0,6. Não apenas em média, mas sistematicamente, a heurística híbrida apresenta performance que supera as demais. Ratificando isso, a figura 6.2 exibe o que poderia ser tomado como zum da região do gráfico da figura 6.1 compreendida entre as instâncias J20001 e J20030, o que permite melhor visualização. Percebe-se nitidamente o desempenho superior da HH e isso se repete para todas as instâncias e em todos os conjuntos de teste, embora não inteiramente demonstrado aqui. 106 DESEMPENHO DAS HEURÍSTICAS J200 - 480s AP 175 AG GRASP HH 165 155 145 Makespan 135 125 115 105 95 85 75 65 55 Figura 6.1: Instância vs. makespan comparando todas as heurísticas 107 361 351 341 331 321 311 301 291 281 271 261 251 241 231 221 211 Instância 201 191 181 171 161 151 141 131 121 111 101 91 81 71 61 51 41 31 21 11 1 45 DESEMPENHO DAS HEURÍSTICAS J200 - 480s 170 160 Makespan 150 140 130 120 110 AP AG GRASP HH 100 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 Instâncias Figura 6.2: Resultados com todas as heurísticas do makespan para as 30 primeiras instâncias 108 24 25 26 27 28 29 30 6.3 Considerações Finais Para os três conjuntos de problemas, J50, J100 e J200, a HH é a de melhor desempenho no cômputo dos escalonamentos de menor makespan. Por conseqüência, a estratégia de somar as melhores características de dois métodos distintos foi, sem dúvida, plenamente exitosa. O que difere a HH do AG é exclusivamente o grau de adaptação dos POP indivíduos que ambas recebem como população inicial. A população inicial da HH, sendo gerada pela GRASP, incorpora indivíduos que representam soluções de melhor qualidade. Esse fato confirma a grande influencia da população inicial na resposta dos métodos evolucionários. Para as outras heurísticas, pela ordem de qualidade dos resultados, o ranking geral, computados todos os problemas, é GRASP, AG e AP. É relevante aqui reiterar a substancial diferença entre um seqüenciamento meramente viável e outro, de makespan minimizado, na prática do gerenciamento de projeto. Para sublinhar o raciocínio, seja, como exemplo, a tabela 6.7. A diferença média, entre os encerramentos dos 360 projetos cuja programação foi produzida pelo procedimento AP e aquelas proporcionadas pela HH é por volta de 27 dias, ou um atraso médio de 31% nos prazos – ressalte-se que o AP, de fato, faz mais que simplesmente produzir um escalonamento viável, ao optar pela melhor dentre as soluções visitadas). Se imediatamente transposto para a receita adicional que proporcionaria no caso das companhia de petróleo em termos de antecipação de produção, isso pode significar cifras milionárias. Claro está que há fatores envolvidos que não estão sendo aqui devidamente ponderados como, entre outros, o caráter estocástico das durações e intercorrências nas operações. De qualquer sorte, todavia, um escalonamento otimizado sempre vai potencialmente favorecer o acerto na tomada de decisão na gestão dos tempos de um projeto. Capítulo 7 Onde o projeto de pesquisa conhece sua fase de encerramento Conclusões, Recomendações e Futuras Pesquisas N este trabalho pretendeu-se de alguma forma contribuir com um estudo de caso de interesse regional, ao tratar um problema de alocação de recursos críticos às atividades em poços da bacia de Campos. O caso recebe tratamento de problema de escalonamento de projeto da classe MRCPSP, cuja nomenclatura é MPS|prec|Cmax e para o qual procedimentos aproximados são propostos. Antes disso, apresenta os fundamentos do gerenciamento de projeto, no qual o caso é situado. As contribuições deste trabalho podem ser assim sumariadas: • Estudo de caso de interesse regional; • Geração de três conjuntos de instâncias de teste, de médio e grande portes, disponíveis também para futuras pesquisas na área; • Proposição de uma GRASP e uma heurística evolucionária híbrida inéditas para o MRCPSP; • Implementação de códigos computacionais de um total de quatro heurísticas de solução aproximada para o caso em estudo; • Definição da heurística mais eficiente entre as quatro estudadas por meio de experimentos numéricos exaustivos. 7.1 Conclusões Com respeito à qualidade e robustez das heurísticas propostas, os resultados empíricos sugerem que a heurística híbrida domina todas as demais, todo o tempo e em todos os conjuntos de teste. A HH é a que melhor consegue conciliar quantitativa e qualitativamente as soluções visitadas. Sob este prisma, pode ser eleita a de maior eficiência, vis-à-vis os demais algoritmos. Isso evidencia as vantagens, no que tange a simplicidade e eficácia, da auto-aprendizagem dos métodos evolucionários e robustece a idéia de que futuras pesquisas nessa direção são prometedoras. 110 Em que pese sua performance ter sido a pior no que respeita a quantidade de soluções, a GRASP prova ótimo rendimento, ao direcionar sua busca para espaços de melhores soluções, em menor quantidade de escalonamentos. É seu grande esforço computacional despendido na montagem da RCL e verificação do escalonamento, na fase de construção, e iterações da fase de busca local que resulta em menor número de escalonamentos produzidos. O algoritmo AP tem resultados intermediários na quantidade de escalonamentos que verifica. Contudo, a qualidade da solução é sofrível De qualquer modo, certamente a resposta é bem melhor do que simplesmente uma seqüenciamento viável. O algoritmo genético, por sua vez, consegue melhorar extraordinariamente as soluções quando comparado com o algoritmo AP. Um teste completo das quatro heurísticas apenas com o conjunto J200 exige 192 h (oito dias) de CPU. Eis aí uma medida da complexidade e magnitude do MRCPSP estudado. Como visto, para os três conjuntos de problemas, J50, J100 e J200, a HH é a de melhor desempenho no cômputo dos escalonamentos de menor makespan. Por conseqüência, a estratégia de conjugar as melhores características de dois métodos distintos foi bem-sucedida. Comprova-se, adicionalmente, a forte influencia da população inicial na resposta dos métodos evolucionários, de vez que a HH difere do AG apenas pela sua população inicial. Para as heurísticas, pela ordem de qualidade dos resultados, o ranking geral, computados todos os problemas, é HH, GRASP, AG e AP. Também, objetivando melhor compreensão dos testes realizados, investigam-se os efeitos dos parâmetros de problemas RF e RS nas respostas das heurísticas . O fator recurso, RF, dá a medida da porção média dos recursos utilizados por atividade do projeto, ao passo que a potência dos recursos, RS, espelha sua escassez. Verificase que o desempenho das heurísticas é pouco sensível ao valor do RF, enquanto o contrário se dá com RS, que influencia grandemente os resultados. Um problema torna-se mais difícil à medida que o RS cresce, quer dizer, à medida que mais recursos ficam indisponíveis. A partir dos experimentos levados a cabo, pode-se aquilatar a expressiva diferença entre um seqüenciamento meramente viável e outro, de makespan minimizado, na prática do gerenciamento de projeto. Desconsiderando fatores outros, o atraso pode implicar substanciais perdas de receita. No caso de companhia de petróleo, em termos de antecipação de produção, isso pode importar grandes somas. Ademais, um 111 escalonamento otimizado tende a favorecer o acerto na tomada de decisão no que concerne à gestão dos tempos de um projeto. 7.2 Recomendações Crescentemente, o Brasil será palco de lançamento de grandes obras, requeridas para o seu desenvolvimento econômico, represado há anos. Antevê-se mais e mais exigência de competência e diligência na condução dos projetos. Como uma sociedade sintonizada com seu tempo, no qual cada vez mais se consomem insumos cognitivos, a necessidade da formalização e disseminação do aprendizado do gerenciamento de projeto desponta no pais. A despeito disso, o ambiente universitário brasileiro carece do gerenciamento de projeto como disciplina dos cursos regulares e, inevitavelmente, os projetos acabam por se ressentir disso. O cenário recomenda que os currículos de cursos tais como os de graduação em Administração e Engenharia de Produção contemplem o gerenciamento de projeto como disciplina. Por outro lado, embora tenham se tornado imprescindíveis ao moderno gerenciamento de projeto, aplicativos comerciais deixam a desejar. Em que pese a sua boa evolução nos últimos anos em termos gerais, e também com relação à capacidade de geração de escalonamentos de melhor qualidade, nesse particular tais software são bem limitados quando aplicados a problemas que não de pequeno porte. Melhor dizendo, sua capacidade de geração de escalonamento de boa qualidade ainda está longe dos resultados obtidos por métodos mais recentes. Além disso, os programas disponíveis não conseguem capturar todas as singularidades do PSP subjacente a todo projeto. Como exemplo, a possibilidade de modos alternativos de execução, indispensável para se lidar com o MPS|prec|Cmax, não está prevista nesses programas. Sugere-se que corporações, onde grandes e complexos projetos sejam uma constante, desenvolvam códigos computacionais complementares – add in – que funcionem combinados com os software comerciais, compartilhando dados, de modo a torná-los customizados e melhor possa atender às necessidades de cada empresa, em cada projeto, no que tange ao escalonamento. 7.3 Futuras Pesquisas De modo a viabilizar um trabalho experimental deste tipo, como é natural, algumas hipóteses simplificadoras foram consideradas, o que delimita sua abrangência. Obje112 tivando ampliar suas conclusões de modo que possam valer para casos ainda mais realistas, algumas linhas de pesquisas futuras poderiam ser: • A duração das atividades antes de ser determinística, é de fato uma variável aleatória (cf. Brucker et. al., 1998a). Mais estudos devem ser levados a efeito para a modelagem do problema como um PSP estocástico. • O modelo seria mais completo se os seus recursos fossem enquadrados na categoria dos parcialmente renováveis (Drexl et al., 1998). Há casos, como os da árvore de natal molhada, ANM, cuja disponibilidade varia no tempo, seja pelo uso, seja pelo prazo de entrega do fabricante, e são melhor capturados por esta categoria de recursos. • O critério de performance dos PSP’s analisados sempre é a minimização do lapso decorrido a partir do início até a conclusão do projeto (makespan). Todavia, outros critérios podem ser levados em conta como, p. ex., vazão esperada dos poços e custos globais do projeto. Um problema deste tipo diz-se multicritério (cf. Slowiński et al., 1994; Deckro & Hebert, 1990; e Cortes, 1998) e deve ser estudado no futuro, com o que melhor subsidiar a tomada de decisão. • Adicionalmente, o processamento computacional em paralelo pode ser tentado, de vez que se trata de problemas que reclamam enorme carga computacional. Com isso se estaria tirando partido da notável adequação das meta-heurísticas a este ambiente (Mavridou et al., 1995). 113 Simbologia & Definições p = 1, ..., P : projetos πj (εj) : release date (due date) da tarefa j πp (εp) : release date (due date) do projeto p cjmt : fluxo de caixa induzido pela tarefa j no modo m e término em t cp : custo incorrido por período se o projeto p se concluir após seu prazo devido (due date) FJp(LJp) : numero da primeira (última) tarefa do projeto p J : conjunto das tarefas j, |J|=J+2 J : número de tarefas reais (i é, não-fictícias) j = 0 (J+1) : única fonte (sumidouro) da rede Pj(Sj) : conjunto dos predecessores (sucessores) imediatos da tarefa j At : conjunto das tarefas ativas (em execução) no tempo t ESTj (LSTj) : tempo mais cedo (mais tarde) de início da tarefa j EFTj (LFTj) : tempo mais cedo (mais tarde) de conclusão da tarefa j STj : tempo de início da tarefa j FTj : tempo de conclusão da tarefa j SC vetor escalonamento com permutação viável das tarefas j ∈ J ST : vetor escalonamento com os tempos de início STj FT : vetor escalonamento com os tempos de conclusão FTj M T vetor dos modos de execução mj : limitante superior do makespan do projeto (horizonte de tempo) R(N,D) : conjunto dos recursos renováveis (não-renováveis, duplamente restritos) r ∈ R(N,D) : índice do recurso demandado (consumido) 114 Mj : número de modos pelos quais a tarefa j pode ser executada m=1, ..., Mj : modos possíveis de execução da tarefa j djm : duração da tarefa j executada no modo m ρ k jmr : uso por período do recurso renovável (duplamente restrito) r exigido para executar a tarefa j no modo m k νjmr : consumo total do recurso não-renovável (duplamente restrito) r para executar a tarefa j no modo m K rρ : disponibilidade por período do recurso renovável (duplamente restrito) r K νr : disponibilidade total do recurso não-renovável (duplamente restrito) r K (modificar) : número total (itens) dos diferentes recursos , K =|R|+|N|+|D| 115 Bibliografia Agrawal, M.K., Elmaghraby, S.E., Herroelen, W.S., (1996), “A generator of testsets for project activity nets.”, European Journal of Operational Research, 90: 376-382. Alvares-Valdés, R., Tamarit, J. M., (1993), “The project scheduling polyhedron: Dimension, facets and lifting theorems”, European Journal of Operational Research, 67: 204-220. Alvares-Valdés, R., Tamarit, J. M., (1996), “Heuristic algorithms for resourceconstrained project scheduling: A review and an empirical analysis “, ed. Slowiński, R. e Weglarz, J., Advances in Project Scheduling, Elsevier, Amsterdam, pp. 113-134. Antonisse, J.M., Hee, K.M., Lenstra, J.K., (1988)T., Brucker, P., Knust, S., (1997), “Resource-constrained project scheduling: an international exercise in DSS development”, Decision Sciences, 4:249-257. Assad, A. A., Wasil, E.A., (1986), “ Project management using a microcomputer ”, Computers & Operations Research, 13(2/3): 231-260. Baar, T., Brucker, P., Knust, S., (1997), “Tabu-search algorithms for the resourceconstrained project scheduling problem”, Relatório Técnico, Osnabrücker Schriften zur Mathematik, Fachbereich Mathematik/Informatik, Universität Osnabrücker, Alemanha, 14p. Baker, K. R., (1974), “Introduction to Sequencing and Scheduling”, 1a ed., New New York, John Wiley & Sons, tal p. Balas, E., (1969), “Machine sequencing via disjunctive graphs: An implicit enumeration algorithm”, Operations Research, 17: 941-957. Bandelloni, M., Tucci, M., Rinaldi, R., (1994), “Optimal resource leveling using non-serial dynamic programming ”, European Journal of Operational Research, 78: 162-177. 116 Bell, C.E., Han, J., (1991), “A new heuristic solution method in resource constrained project scheduling ”, Naval Research Logics, 38: 315-331. Bhargava, (1996), “Decision support on demand: Emerging electronic markets for decision technologies “. Decision Support Systems, fevereiro 1996. Bixby, N., Boyed, E. (1996), “Using the CPLEX callable library”, CPLEX Optimization Inc., Houston,TX. Blażewicz, J., Lenstra, J. K., Rinnooy, G., (1983), “Scheduling subject to resource constraints: classification and complexity”, Discrete Applied Mathematics, 5: 11-24. Blażewicz, (1996), “The job shop scheduling problem: Conventional and new solution tecniques”, European Journal of Operational Research, 93: 1-33. Boctor, F. F., (1993), “Heuristics for scheduling projects with resource restrictions and several resource-duration modes ”, International Journal of Production Research, 31(11): 2547-2558. Boctor, F. F., (1996), “A new and efficient heuristic for scheduling projects with resource restrictions and multiple execution modes”, European Journal of Operational Research, 90: 349-361. Boctor, F. F., (199X), “An adaptation of the simulated annealing algorithm for solving resource-constrained project scheduling problems ”, International Journal of Production Research, 3x(11): . Bouleimen, K., Lecocq, H., (1998), “A new efficient simulated annealing algorithm for the resource-constrained project scheduling problem ”, Relatório Técnico, Service de Robotique et Automatisation, Université de Liège. Brucker, P., Drexl, A., Möhring, R., Neumann, K., Pesch, E., (1998a), “ResourceConstrained Project Scheduling: Notation, Classification, Models, and Methods”, manuskripte aus den Instituten für Betriebswirtschaftslehre der Universität Kiel, Alemanha, 51p. Brucker, P., Knust, S., Schoo, A., Thiele, O. (1998b),”A branch and bound algorithm for the resource constrained project scheduing problem ”, European Journal of Operational Research, 107: 272-288. Carruthers, J.A., Battersby, A., (1966), “Advances in critical path methods”, Operations Research Quarterly, 17(4): 359-380. Cavalcante, C.C.B., (1998), “Escalonamento com restrição de mao-de-obra: heurísticas combinatórias e limitantes inferiores”,Tese (Mestrado em Ciências da Computação), Campinas-SP, Unicamp, 119p. 117 Cho, J.H., Kim, Y.D., (1997), “A simulated annealing algorithm for resource constrained project scheduling “, Journal of the Operational Research Society, 48: 736-744. Chong, E.K.P., Z ak , S.H., (1996), “An ntroduction to optimization”, New York, John Wiley & Sons, 409p. Cook, W., Cunningham, W., Pulleyblank, W., Schrijver, A., (1998), “Combinatorial optimization”, New York, John Wiley & Sons, 355p. Cooper, D.F., (1976), “Heuristics for scheduling resource-constrained projects: An experimental investigation ”, Management Science, 22(11): 1186-1194. Christofides, N., Alvares-Valdés, R., Tamarit, J. M., (1987), “Project scheduling with resource constraints: A branch and bound approach”, European Journal of Operational Research, 29: 262-273. Chung, T. H., Carroll, H.B., (1995), “Application of fuzzy expert systems for EOR project risk analysis”, SPE 30741, Annual Technical Conference and Exhibition, Dallas, Texas. Cortes J. M.R., (1998), “Uma contribuição para a resolução do problema de alocação multiobjetivo de plataformas de produção de petróleo “,Tese (Mestrado em Engenharia de Produção), Campos dos Goitacazes-RJ, UENF, 88p. Davis, K. R., Stan, A., Grzybowski, A., (1992), “Resource constrained project scheduling with motiple objectives: A decision support approach ”, Computers & Opertions Research, 19(7): 657-669. Davis, E. W., Heidorn, G.E., (1971), “An algorithm for optimal project scheduling under multiple resource constraints ”, Management Science, 17: 803-816. Davis, E. W., (1973), “Project scheduling under resource constraints - historical review and categorization of procedures”, AIIE Transactions, 5: 297-313. Davis, E. W., (1975), “Project network summary measures constrained-resource scheduling ”, AIIE Transactions, 7: 132-142. Deckro, R.F., Hebert, J.E., (1990) “A multiple objective programming framework for tradeoffs in project scheduling”, Engineering Costs and Production Economics, 18: 255-264 Demeulemeester, E., Herroelen, W.S., (1992), “A branch and bound procedure for the multiple resource-constrained project scheduling problem”, European Journal of Operational Research, 90: 334-348. Demeulemeester, E., Dodin, B., Herroelen, W.S., (1993), “A random activity network generator ”, Operations Research, 41: 972-980. 118 Demeulemeester, E., Herroelen, W.S, (1996), “An efficient optimal solution procedure for the preemptive resource-constrained project scheduling problem”, European Journal of Operational Research, 90: 334-348. Demeulemeester, E., Herroelen, W.S., Elmaghraby, S.E., (1996), “Optimal procedures for the discrete time/cost trade-off problem in project networks ”, European Journal of Operational Research, 88: 50-68. Drexl, A., Grünewald, J., (1993), “Nonpreemptve mult-imode resource-constrained project scheduling “, IIE Transactions, 25(5): 74-81. Drexl, A., Juretzka, J., Salewiski, F., Schirmer, A., (1998), “New modelling concepts and their impact on resource-constrained project scheduling”, Handbook on Recent Advances in Project Scheduling, ed. J. Weglarz, Kluwer, Amsterdam. Drummond, H., (1999), “Are we any closer to the end? Escalation and the case of Taurus”, International Journal of Project Management, 17: 11-16. Elmaghraby, S. E., (1977), “Activity Networks: Project planning and control by network models ”, New York, John Wiley & Sons, xxx p. Farid, F., Manoharan,S., (1996), “Comparative analysis of resource-allocation capabilities of project management software packages”, Project Management Journal, 24(2): 35-44. Feo, T.A., Resende, M.G.C., (1989), “A probabilistic heuristic for a computationally difficult set covering problem ”, Operations Research Letters, 8: 67-71. Feo, T.A., Resende, M. G. C., (1994), “Greedy Randomized Adaptive Search Procedures ”, The University of Texas, Austin, Relatório Técnico. French, S., (1982), “Sequencing and scheduling: An introduction to the mathematics of the job-shop ”, New York, John Wiley & Sons, NY. Gantt, H.L. (1919), “Efficiency and democracy”, Transactions of the American Society of Mechanical Engineers, EUA, 40: 799-808 Garey, M.R., Johnson, D.S., (1979), “Computer and intractability – A guide to the theory of NP-completeness ”, W.H. Freeman, San Francisco. Glover, F. (1989),“Tabu search, Part I”,ORSA Journal on computing, 1(3):190-206. Glover, F. (1990), “ Tabu search, Part II ”, ORSA Journal on computing, 2(3): 4-32. Goldberg, D. E., (1989), “Genetic Algorithms in Search, Optimization, and Machine Learning”, Massachusetts, Addison-Wesley Longman, 412 p. 119 Graham, R.L, Lawler, E.L.,Lenstra, J. K., e Rinnooy Kan, A.H.G. (1979) “Optimization and approximation in deterministic sequencing and scheduling theory: a survey ”, Annals of Discrete Mathematics, 5: 287-326. Günther, O., Müller, R., Schmidt, P., Bhargava, H., Krishnan, R., (1997), “MMM: A web-based system for sharing statistical computing modules”, Internet Computing, 1(3): 59-68. Harding, A. M., (1997), “Experience whith a global optimisation approach to project scheduling and resource allocation”, SPE 38488, Offshore Europe Conference, Aberdeen, Scotland. Hartmann, S., Drexl, A., (1997), “Project scheduling with multiple modes: A comparison of exact algorithms ”, manuskripte aus den Instituten für Betriebswirtschaftslehre der Universität Kiel, wp430, Alemanha, 22p. Hartmann, S. (1997a), “Project scheduling with multiple modes: a genetic algorithm”, manuskripte aus den Instituten für Betriebswirtschaftslehre der Universität Kiel, wp435, Alemanha, 21p. Hartmann, S. (1997b), “A competitive genetic algorithm for resource-constrained project scheduling”, manuskripte aus den Instituten für Betriebswirtschaftslehre der Universität Kiel, wp451, Alemanha, 18p. Hartmann, S., Kolisch, R., (1999), “Experimetal evaluation of state-of-the-art heuristics for the resource-constrained project scheduling ”, Proceedings of INFORMS Spring Conference, Cincinatti, Ohio, EUA. Hartmann, S. (1999), “ Self-adapting genetic algorithm with an application to project scheduling ”, manuskripte aus den Instituten für Betriebswirtschaftslehre der Universität Kiel, Alemanha, 24p. Heller, U., (1981), “On the shortest overall duration in stochastic project networks”, Methods of Operations Research, 42: 85-104. Herroelen, W.S., van Dommelen, P., Demeulemeester, E.L, (1997), “Project network models with discounted cash flows – A guided tour through recent developments”, European Journal of Operational Research, 100: 97-121. Hillier, F. S., Lieberman, G. J., (1995), “Introduction to Operations Research”, New York, McGraw-Hill, Inc., 6a ed., 998 p. Holland, J. H. (1995), “Adaptation in natural and artificial systems ”, MIT Press, Cambridge, MA, 5ª reimpressão, 211p. Houdayer, J., Martin, O. C., (1999), “Renormalization for discret optimization”, Loboratoire de Physique Théorique et Modèles Statistiques, Université Paris-Sud, Relatório Técnico. 120 Icmeli, O., Erenguc, S. S., Zappe, C. J., (1993), “Project scheduling problems: a survey”, International Journal of Operations and Production Management, 13(11): 80-91 Icmeli, O., Rom, W.O., (1997), “Ensuring quality in resource constrained project scheduling”, European Journal of Operational Research, 103: 483-496 Icmeli, O., Rom, W.O., (1998), “Analysis of the characteristics of projects in diverse industries”, Journal of Operations Management” , Technical Note, 16: 43-61 Jackson, R.H.F., Boggs, P.T., Nash, S.G., Powell, S., (1991), “Guidelines for reporting results of computational experiments. Report of the ad hoc committee”, Mathematical Programming, North-Holland, 49: 413-425 Johnson, R.V., (1992), “Resource constrained scheduling capabilities of commercial project management software ”, Project Management Journal, 22(4): 39-43. Jüngen, F. J., Kowalczyk, W., (1995), “An intelligent interactive project management support system”, European Journal of Operational Research, 84: 60-81. Kelley, J.E., (1963), “The critical path method: Resource planning and scheduling”, Industrial Scheduling, ed. Muth, J.F. e Thompson, G.L, Prentice-Hall, New Jersey. Kirkpatrick, S., Gellat Jr., C.D., Vecchi, M.P., (1983), “Optimization by simulated annealing “, Science, 220: 671-680. Kohlmorgen, U., Schmeck, H., Haase, K., (1998), “Experiences with fine-grained parallel genetic algorithm ”, manuskripte aus den Instituten für Betriebswirtschaftslehre der Universität Kiel, Alemanha, 17p. Kolisch, R., Sprecher, A., Drexl, A., (1995), “Characterization and generation of a general class of resource-constrained project scheduling problems”, Management Science, 41(10): 1693-1703 Kolisch, R., Hempel, K., (1996), “Finite scheduling capabilities of commercial project management systems”, manuskripte aus den Instituten für Betriebswirtschaftslehre der Universität Kiel, Alemanha, no. 397, 15p. Kolisch, R., (1996), “Serial and parallel resource-constrained project scheduling methods revisited: Theory and computation”, European Journal of Operational Research, 90: 320-333 Kolisch, R., Sprecher, A., (1996), “PSPLIB – A project scheduling problem library”, European Journal of Operational Research, 96: 205-216. 121 Kolisch, R., Padman, R. (1997), “An Integrated survey of project scheduling”, manuskripte aus den Instituten für Betriebswirtschaftslehre der Universität Kiel, Alemanha, wp463, 34p. Kolisch, R., Drexl, A. (1996), “Adaptive search for solving hard project scheduling problems ”, Naval Research Logics, 43: 23-40. Kolisch, R., Drexl, A. (1997), “Local search for nonpreemptive multi-mode resource-constrained project scheduling”, IIE Transactions 29: 987-999. Kolisch, R., Hartmann, S., (1998), “Heuristic algorithms for solving the resourceconstrained project scheduling problem: Classification and computacional analysis ”, Handbook on Recent Advances in Project Scheduling, ed. J. Weglarz, Kluwer, Amsterdam. Kolisch, R., Schwindt, C., Sprecher, A., (1998), “Benchmark instances for project scheduling problems”, Handbook on Recent Advances in Project Scheduling, ed. J. Weglarz, Kluwer, Amsterdam. Langley, P. (1996), “Elements of Machine Learning”, San Francisco, CA, Morgan Kaufmann, Inc., 419p. Lee, J.K., Kim, Y.D, (1996), “Search heuristics for resource constrained scheduling”, Journal of the Operational Research Society, 47: 678-689. Lenstra, J. K., e Rinnooy Kan, A.H.G. (1979) “Computational complexity of discrete optimization problems”, Annals of Discrete Mathematics, 4: 121140. Leon, V.J., Balakrishnan, R., (1995), “Strength and adaptability of problem space based neighborhoods for resource-constrained scheduling “, OR Spectrum, 17(2/3): 173-182. Lewis, J. P. (1997), “Fundamentals of Project Management ”, New York, NY, Amacom, 117p. Lewis, J. P. (1998), “Mastering Project Managemen: applying advanced concepts of Systems Thinking, Control and Evaluation, Resource Allocation”, New York, NY, McGraw-Hill, 319p. Lock, D., (1997), “Project Managemen””, Hampshire, England, Gower Publishing Limited, 522p. Maroto, C., Tormos, P., (1994), “Project management: an evaluation of software quality ”, Transactions of Operatinal Research, 1(2): 209-221. Mausser, H.E., Lawrence, S.R., (19XXcap3), “Exploiting block structure to improve resource-constrained project schedules ”, Metaheuristics, 1(2): 209-221. 122 Mavridou, T., Pardalos, P. M., Pitsoulis, L., Resende, M. G., (1995), “Parallel search for combinatorial optimization: genetic algorithms, simulated annealing, tabu search and GRASP ”, Proceedings of the workshop on parallel algorithms for irregularly structured problems, Lyon, França. Mori, M., Tseng, C.C.,(1997), ”A genetic algorithm for multi-mode resourceconstrained project scheduling problem”, European Journal of Operational Research, 100: 134-141. Morton, T. E., Pentico, D. W., (1993), “Heuristic Scheduling Systems”, New York, John Wiley & Sons, 695 p. Nemhauser, C.L., Wolsey, L.A., (1988), “Integer and Combinatorial Optimization ”, New York, John Wiley & Sons, 763 p. Neumann, K., Schwindt, C., (1995), “Projects with minimal and maximal time lags: construction of activity-on-node networks and aplications”, Universität Karlsruhe, Relatório Técnico, wior-447, 36p. Norbis, M., Smith, J. M., (1996), “ An interactive decision support system for the resource constrained scheduling problem ”, European Journal of Operational Research, 94: 54-65. Oğuz, O., Bala, H., (1994), “A comparative study of computational procedures for the resource constrained project scheduling problem ”, European Journal of Operational Research, 72: 406-416. Özdamar, L., Ulusoy, G. (1995), “An iterative local constraint based analysis for solving the resource-constrained project scheduling problem “, Journal of Operations Management, 14(3): 193-208. Özdamar, L., (1996), “A genetic algorithm approach to the general category project scheduling problem ”, Relatório Técnico, Marmara University, Istanbul. Pascoe,T.L., (1966), “Allocation of resources CPM. ”, Revue Française Recherche Operationelle, 38: 31-38. Patterson, J. H., Huber, W.D., (1974), “A horizon-varying, zero-one approach to project scheduling ”, Manegement Science, 20: 990-998. Patterson, J. H., (1984), “A comparison of exact approachs for solving the multiple constrained resource, project scheduling problem”, Manegement Science, 30(7): 854-867. Pinedo, M. (1995), “Scheduling: theory, algorithms, and systems”, New Jersey, Prentice-Hall, 378 p. 123 Pinson, E., Prins, C., Rullier, F., (1994), “Using tabu search for solving the resource-constrained project scheduling problem”, Proceedings of the 4º International Workshop on Project Management and Scheduling, pp.102106. Pritsker, A., Watters, W., Wolfe, P., (1969), “Multiproject scheduling with limited resources: A zero-one programming approach”, Management Science, 16: 93 –108. Project Management Institute, (1996),”Project Management Body of Knowledge”, Pennsylvania, EUA, 176p. Pyron, T., “Using Microsoft Project 98 – special edition”, Indiana, QUE Corporation, 989p. Resende, M.G.C., (1998), “A bibliografy of GRASP ”, AT&T Labs Research. Russel, A.H., (1970), “Cash flows in networks”, Management Science, 16(5): 357373. Salewski, F., Schirmer, A., Drexl, A., (1996), “Project scheduling under resource and mode identity constraints. Part II: an application to audit-staff scheduling”, manuskripte aus den Instituten für Betriebswirtschaftslehre der Universität Kiel, wp388, Alemanha, 24p. Simpson, W.P., Patterson, J.H, (1996), “A multiple tree-search for the resource project scheduling problem ”, European Journal of Operational Research, 89: 525-542. Slowiński, R., SonieWicki, B.,Weglarz, J., (1994), “DSS for multiobjective project scheduling subject to multiple-category resource constraints”, European Journal of Operational Research, 79: 220-229. Schirmer, A., (1996a), “A guide to complexity theory in operations research”, manuskripte aus den Instituten für Betriebswirtschaftslehre der Universität Kiel, wp381, Alemanha, 46p. Schirmer, A., (1996b), “New insights on the complexity of resource-constrained project scheduling: a case of single-mode scheduling”, manuskripte aus den Instituten für Betriebswirtschaftslehre der Universität Kiel, wp390, Alemanha, 17p. Schirmer, A., (1996c), “New insights on the complexity of resource-constrained project scheduling: two cases of multi-mode scheduling”, manuskripte aus den Instituten für Betriebswirtschaftslehre der Universität Kiel, wp391, Alemanha, 30p. Schirmer, A., (1997), “Advanced Biased Random Sampling in Serial and Parallel Scheduling”, manuskripte aus den Instituten für Betriebswirtschaftslehre der Universität Kiel, Alemanha, 34p. 124 Schirmer, A., Drexl, A., (1997), “Allocation of partially renewable resources – concept, models and applications”, manuskripte aus den Instituten für Betriebswirtschaftslehre der Universität Kiel, wp455, Alemanha, 26p. Schirmer, A., Riesenberg, S., (1997), “Parameterized Heuristics for Project Scheduling – Biased Random Sampling Methods”, manuskripte aus den Instituten für Betriebswirtschaftslehre der Universität Kiel, wp456, Alemanha, 43p. Schirmer, A., Riesenberg, S., (1998), “Class-base control schemes for parameterized project scheduling heuristics”, manuskripte aus den Instituten für Betriebswirtschaftslehre der Universität Kiel, wp471, Alemanha, 26p. Schirmer, A., (1998), “Case-based reasoning and improved adaptive search for project scheduling”, manuskripte aus den Instituten für Betriebswirtschaftslehre der Universität Kiel, wp472, Alemanha, 27p. Shaffer, L.R., Ritter, J.B., Meyer, W.L., (1965), “The critical-path method “, McGralw Hill, Nova Iorque. Slack, N., Chambers, S., Harland, C., Harrison, A., Johnston, R., (1995), “Administração da Produção”, Editora Atlas S.A., São Paulo, SP, 722p. Slowiński, R., (1980), “Two approaches to problems of resource allocation among project activities – A comparative study ”, Journal of the Operational Research Society, 31(8): 711-723. Slowiński, R., SonieWicki, B.,Weglarz, J., (1994), “DSS for multiobjective project scheduling subject to multiple-category resource constraints”, European Journal of Operational Research, 79: 220-229. Sprecher, A., Hartmann, S., Drexl, A., (1994), “Project scheduling with discrete time-resource and resource-resource tradeoffs”, manuskripte aus den Instituten für Betriebswirtschaftslehre der Universität Kiel, wp357, Alemanha, 24p. Sprecher, A., Kolisch, R., Drexl, A., (1995), “Semi-active, active, and non-delay schedules for the resource-constrained project scheduling problem”, European Journal of Operational Research, 80: 94-102 Sprecher, A., (1997), “Solving the RCPSP efficiently at modest memory requirement ”, manuskripte aus den Instituten für Betriebswirtschaftslehre der Universität Kiel, wp425, Alemanha, 21p. Sprecher, A., Hartmann, S., Drexl, A., (1997), “An exact algorithm for project scheduling with multiple modes ”, OR Spektrum, 19: 195-203. 125 Stinson, J.P., Davis, E.W., Khumawala, B.M., (1978), “Multiple resourceconstrained scheduling using branch and bound”, AIIE Transactions, 10:252-259. Storer, R.H., Wu, S.D., Vaccari, R. (1992), “New search spaces for sequencing problems with applications to job shop scheduling “, Management Science, 38: 1495-1509. Talbot, F.B., Patterson, J.H., (1978), “An efficient integer programming algorithm with network cuts for solving resource-constrained scheduling problems ”, Management Science 24: 1163-1174. Talbot, F.B., (1982), “Resource constrained scheduling with time-resource tradeoffs: The non-preemptive case”, Management Science 28(10): 11971210. Tavares, L.V., Ferreira, J.A.A., Coelho, J.S., (1998), “On the optimal management of project risk”, European Journal of Operational Research, 107: 451-469. Tsai, Y-W., Gemmill, D. D., (1998), “Using tabu search to schedule activities of stochastic resource-constrained projects ”, European Journal of Operational Research, 111: 129-141. Turner, S. K., Singer, R.V., Pegram, A., Saunders, B., (1998), “Integrated risk management in oil and gas exploration and production”, SPE 46811, International Conference on Health, Safety and Enviroment in Oil and Gas Exploration and Production, Caracas, Venezuela. Valeriano, D.L, (1998), “Gerência em projetos – pesquisa, desenvolvimento e engenharia”, São Paulo, Makron Books do Brasil, 438 p. Wall, M.B. (1996), “A genetic algorithm for resouce-constrained scheduling”, Tese (Doutorado em Engenharia Mecânica), MIT- Massachusetts, EUA, 62p. Weglarz, J., (1981), “Project scheduling with continuously-divisible, doubly constrained resources ”,Management Sciences, 27(9): 1040-1053. de Wit, J., Herroelen, W., (1990), “ An evaluation of microcomputer-based software packages for project management ”, European Journal of Operational Research, 49: 102-139. Zaver, M., (1998), “An integrated approach to project management, Wainwright West Project”, SPE 49064, Annual Technical Conference and Exhibition, New Orleans, Lousiana. 126 Anexo Análise de Complexidade do PSP Com o propósito de jogar alguma luz sobre complexidade no que se refere aos problemas e algoritmos de solução do PSP tratados nos capítulos precedentes, o tema é aqui brevemente discutido. A abordagem adotada é antes aquela de maior interesse para a pesquisa operacional. A teoria da complexidade é focada na tratabilidade computacional inerente aos problemas matemáticos. De há muito já se sabe que existem problemas algorítmicos cuja solução é impossível. Mesmo dentre problemas que garantidamente são solucionáveis, há casos que podem ser considerados praticamente insolúveis. Decorre daí que, antes de se perguntar se um problema de fato tem solução, a questão de fundo é o quão eficientemente um problema pode ser resolvido. É exatamente isso que constitui o tema central da analise de complexidade. Numerosos critérios já foram sugeridos para medir a eficiência de algoritmos com respeito ao cálculo de solução exata mas, em última análise, esta se relaciona ao tempo computacional. Assim, um algoritmo é considerado tão mais eficiente quanto mais rapidamente resolve um dado problema. Também, a complexidade de um algoritmo costuma ser expressa em termos de tempo de solução como função do tamanho da instância. Para cada tamanho de instância, conforme é usual, aqui a complexidade baseia-se no pior caso. Coerentemente, a complexidade no tempo de um algoritmo estabelece o tempo requerido, no pior caso, para resolver uma instância daquele tamanho. Por simplicidade, nenhuma distinção se faz entre o número de operações executadas por um algoritmo para solução de um problema e a duração de seu processa- 127 mento, porque presume-se que cada operação se dá num mesmo espaço de tempo (unit time measure). Com base no pior caso, um algoritmo é considerado de tempo polinomial (ou, simplesmente, polinomial) se, e somente se, sua complexidade no tempo puder ser limitada por um polinômio no tamanho da instância; em caso contrário, o algoritmo dizse exponencial. Algoritmos polinomiais são considerados eficientes, ao passo que os exponenciais não o são, porque aqueles, em geral, são mais rápidos do que estes. Por extensão, a complexidade de um problema é associada à complexidade do melhor algoritmo possível capaz de resolvê-lo, onde melhor algoritmo possível deve ser entendido como aquele que apresente a mais baixa complexidade no tempo. Consoante, um problema é dito polinomial se, e somente se, existir um algoritmo polinomial que possa resolvê-lo; no caso contrário, o problema é referido como exponencial. Decorre daí que, para um dado problema, a complexidade de qualquer algoritmo conhecido que possa resolvê-lo fornece um limitante superior para sua complexidade. Problemas cuja solução somente se obtém por algoritmos de tempo exponencial são rotulados como intratáveis, i.é, não eficientemente solucionáveis; de outro lado, aqueles problemas cuja solução se alcança a partir de um algoritmo polinomial são ditos tratáveis. Na prática, entretanto, a distinção entre problemas tratáveis e intratáveis é apenas de valor restrito, de vez que, para uma vasta gama de problemas, malgrado atilados estudos de abnegados pesquisadores, se por um lado não se encontrou um algoritmo polinomial para sua solução, por outro lado não se tem uma prova de sua intratabilidade. Daí, hoje em dia, ao se classificar um problema em função de sua tratabilidade, uma distinção se faz entre os polinomiais, da classe P, daqueles ditos NPcompletos, cuja solução não conta com nenhum algoritmo polinomial conhecido. A classe NP23 reúne os problemas para o quais uma resposta positiva tem um “certificado”, a partir do qual sua veracidade pode ser verificada em tempo polinomial. Por exemplo, a questão: Dado um PSP, existe um escalonamento S que seja viável em precedência e recursos? pertence à classe NP. Se a resposta é “sim”, basta simplesmente apresentar um escalonamento S como certificado e a resposta pode ser confirmada em tempo polino23 NP não significa “não-polinomial”. Leia-se como “tempo polinomial não-determinístico” 128 mial. Note-se que não se faz obrigatório descobrir o certificado em tempo polinomial; é suficiente que o certificado exista com as propriedades requeridas. Pode-se demonstrar que P ⊆ NP (Cook et al., 1998). A classe NP é, aparentemente, muito maior que a P, e mesmo não parece haver muitas razões fazendo crer que ambas são iguais. Não obstante, ninguém ainda foi capaz de provar que são de fato diferentes. Por conseguinte, uma questão fundamental se impõe: seria P = NP? Uma resposta, negativa ou positiva, provavelmente fará emergir enormes efeitos práticos para a análise de complexidade. Transformação Polinomial e Prova de Complexidade Definição 1 um problema de decisão é um par Π=(D,Y) no qual D é um conjunto de objetos finitos , chamados instâncias (I), e Y ⊆ D é um subconjunto de objetos denominados instâncias-sim. Se um algoritmo A for capaz de decidir, para cada instância Ik ∈ D, se também Ik ∈ Y, diz-se que A resolve Π. Definição 2 Sejam Π=(D,Y) e Π’=(D`,Y`) problemas de decisão. Então Π polinomialmente transforma-se em Π’ se, e somente se, existir uma função f : D → D`; I → I` tal que: (1) I ∈ Y se, e somente se I` ∈ Y`, e (2) f puder ser computada por um algoritmo polinomial determinístico. A utilidade da transformação (em tempo) polinomial se comprova pelo que se segue. Empregando-se tal conceito, podem-se definir classes de problemas de decisão que são de complexidade computacional equivalente. A classe de maior destaque é a dos problemas NP-completos, os quais se definem como aqueles mais difíceis em NP. Um problema Π é dito NP-completo se para cada problema Π’ em NP existir uma transformação polinomial de Π’ para Π. Ou seja, se Π ∈ NP , Π’ é NP-completo e existe uma redução em tempo polinomial de Π’ para Π, implica que também Π é NP-completo. Comumente, para se provar complexidade, costuma-se meramente demonstrar que o problema em consideração é uma generalização de algum outro cuja complexidade é conhecida. Empregando-se demonstração devida a Kolisch e Drexl (1997), pro129 va-se agora que, para MRCPSP mais restritos, mesmo a questão de existência de uma solução viável, de per si, já é um problema NP-completo. Teorema O problema de viabilidade do MRCPSP é NP-completo para |N| ≥ 2 e Mj ≥ 2, 1 ≤ j ≤ J. Prova Claramente, o problema está em NP, uma vez que a viabilidade de qualquer solução pode ser conferida em tempo polinomial. Para a demonstração, antes de tudo, fazse uma transformação polinomial do MRCPSP para o problema da mochila, o qual notoriamente é NP-completo (Garey e Johnson, 1979). O problema da mochila (knapsack problem – KSP) pode ser declarado do seguinte modo: dados um conjunto finito U com elementos u, 1 ≤ u ≤ |U|, um tamanho s(u) ∈ Z+ e um valor v(u) para cada u ∈ U , um tamanho B ∈ Z+ e um tamanho D ∈ Z+, existe um subconjunto U’ ⊆ U tal que valem as relações ∑ u∈ U s(u) ≤ B e ∑ u∈ U ' v( u ) ≥ D ? A idéia geral por trás da transformação é mapear cada elemento de U em uma atividade real (não-fictícia) com dois modos de execução. Se uma atividade é processada no modo m=1 o u correspondente é elemento do subconjunto U’ ; contrariamente, se m=2, o u correspondente não é membro de U’. Então, J = |U|+1, Mj=2, 1 ≤ j ≤ J e Mj = 1, j ∈ {0,J+1}. As duas restrições da mochila são representadas por duas restrições de recursos não-renováveis, i.é, |N| = 2. Paralelamente, as restrições referentes aos recursos renováveis não têm que ser levadas em conta, quer dizer, R = ↓. A primeira restrição da mochila pode ser considerada diretamente. Daí, com respeito ao recurso r=1, a disponibilidade é K1=B e, para cada atividade 1 ≤ j ≤ J, o consumo de recurso do primeiro modo vale kj11 = s(u), enquanto o consumo de recurso no segundo modo é igual a zero, kj21 = 0. A segunda restrição da mochila deve ser reescrita como se segue para ser considerada. Multiplica-se a restrição por “-1” o que produz ∑ u∈ U ' − v( u ) ≤ -D. Isto feito, adicio- na-se max {v(z) | z ∈ U} para cada somatório do primeiro membro e |U|.max {v(z) | z ∈ U} para o segundo membro de modo a se obter somente valores não-negativos. Pode-se agora proceder conforme feito com a primeiro restrição: para o recurso r=2, o consumo para cada atividade 1 ≤ j ≤ J é kj12 = max {v(z) | z ∈ U} – v(u), quando pro130 cessada no primeiro modo e kj22 = max {v(z) | z ∈ U}, se no segundo modo. A disponibilidade de recurso é K2 = |U|. max {v(z) | z ∈ U} - D . Todos o outros parâmetros do problema de escalonamento recebem zero, i.e, djm = 0 para todo 1 ≤ j ≤ J, m=1,...,Mj e Pj = ↓ para j=1,...,J+1. Conseqüentemente, cada instância do problema da mochila pode ser polinomialmente transformada em uma instância do MRCPSP. Uma solução para este último polinomialmente se converte em uma solução do problema da mochila: se o primeiro modo for designado para a atividade j, 1 ≤ j ≤ J, i.e, mj=1, o correspondente u está em U’. Isso prova que o problema de viabilidade do MRCPSP, para |N| ≥ 2 e Mj ≥ 2, 1 ≤ j ≤ J , é NP-completo. ♦ Merece registro o esforço de Schirmer (1996b e 1996c), que argumenta com evidências que a complexidade de um problema pode depender da formulação empregada para traduzir o modelo. O autor examina a prática padrão de se representar os problemas de escalonamento de projeto restritos em recursos – a saber, modelos de otimização utilizando variáveis binárias para se representar escalonamentos. Como Pritsker, Watters e Wolfe (1969) foram os primeiros a utilizar este conceito para escalonamento, os modelos derivados – e.g., aquele formulado por (6)–(12) da tabela 3.3 – são denominados modelos PWW. Tanto para o RCPSP como para o MRCPSP, Schirmer (op. cit.), prova que, em sua viab . viab . versão de viabilidade, em seu modelo PWW, i.e., o RCPSP PWW e o MRCPSP PWW não podem ser verificados em tempo polinomial, i.e., são exponenciais. Obviamente, qualquer solução para uma instância do RCPSPPWW ou do MRCPSPPWW também o é para seu o correspondente problema de viabilidade. Sucede que o problema de viabilidade não pode ser de mais fácil solução do que sua versão exata, donde se conclui que tanto o RCPSPPWW quanto MRCPSPPWW são exponenciais. Por definição, o conceito NP-completo aplica-se a problemas em NP e, portanto, tãosomente a problemas de decisão. Todavia, esta restrição não impede que o conceito seja ampliado para os problemas de busca (cf. Schirmer 1996a), como é o caso da otimização nos domínios da pesquisa operacional. Analogamente, a conjectura de intratabilidade pode ser estendida imediatamente dos problemas (de decisão) de viabilidade, NP-completos, para os problemas de otimização, que então são classificados como NP-difícieis. Foi demonstrado por Blażewicz et al. (1983) que o RCPSP, 131 como generalização do problema de job shop, JSP, pertence à classe dos problemas de otimização NP-difícieis. Deve ser enfatizado que, apesar de, como se viu, comprovadamente intratável, não se exclui a possibilidade de que algumas ou mesmo a maioria das instâncias do PSP possam ser resolvidas em tempo polinomial. Uma vez que a definição de complexidade considerada tem em conta o pior caso, antes significa que nem todas as suas instâncias são passíveis de solução em tempo polinomial. 132