Conferência IADIS Ibero-Americana Computação Aplicada 2013 UTILIZANDO TÉCNICAS DE ALGORITMO GENÉTICO PARA RESOLUÇÃO DO PROBLEMA DE GERAÇÃO DE GRADE HORÁRIA PARA ENFERMARIAS Ricardo Soares Bôaventura 1, Bruno Queiroz Pinto 1 e Keiji Yamanaka 2 1 Instituto Federal do Triângulo Mineiro Câmpus Uberlândia Centro Rua Blanche Galassi, 150 CEP 38401-114 Uberlândia/MG, Brasil 2 Universidade Federal de Uberlândia Faculdade de Engenharia Elétrica Av. João Naves de Ávila, 2121 CEP 38408-100 Uberlândia/MG, Brasil RESUMO A teoria da evolução inspirou a criação da computação evolutiva, ramo da computação capaz de solucionar problemas de otimização. Esta categoria de problemas pode ser solucionada eficientemente através da adoção de técnicas como algoritmos genéticos. Problemas de geração de grade horária são identificados em diversos contextos, o objetivo deste trabalho é descrever a aplicação de algoritmos genéticos na criação de uma grade horária otimizada para enfermarias. PALAVRAS-CHAVE Algoritmo Genético, Geração de Horário, Horários de Enfermarias e Inteligência Artificial 1. INTRODUÇÃO Uma importante tarefa na computação é a otimização na resolução de problemas, existe diversos problemas que apresentam grande quantidade de soluções possíveis e a identificação de uma solução eficiente é uma tarefa complexa, podendo demandar um esforço computacional considerável [Linden 2012]. Há diversas técnicas que podem ser utilizadas na solução deste tipo de problema, tais como: Algoritmos Genéticos (AG), GRASP (Greedy Randomized Adaptive Search Procedure), Busca Tabú, Algoritmo da colônia de formigas, Redes neurais artificiais, Simulated annealing, entre outras. Este trabalho utilizou a técnica de algoritmo genético. Tal técnica é baseada em três partes distintas: a codificação do problema, a função objetivo que se deseja maximizar ou minimizar e o espaço de soluções associado. A escolha da técnica de algoritmos genéticos é baseada na ampla utilização desta técnica na elaboração de escala de trabalho, devido principalmente à diversificação promovida pelo AG para obter os melhores resultados. O Problema de Geração de Horários, também conhecido como Timetabling Problem, trata da alocação de horários para as atividades em um determinado contexto, considerando-se restrições nestes horários. Este problema pode ser identificado em diversos contextos, tais como: escalonamento de enfermeiros, horários de aulas em instituições de ensino, horários de médicos e planejamento de transporte publico, entre outros. O desenvolvimento de uma solução para este problema de forma manual, além de ser trabalhosa e lenta, pode gerar soluções não tão boas. Este tipo de problema tem sido constantemente solucionado através do uso da técnica de algoritmos genéticos [Poltosi and Goméz 2007]. Desta forma, este trabalho desenvolveu um algoritmo, utilizando técnicas de algoritmos genéticos, capaz de encontrar uma boa solução na montagem de grade horária para enfermarias. 2. ALGORITMO GENÉTICO Algoritmo Genético é uma técnica baseada em computação evolutiva, tais técnicas se inspiram em princípios da teoria da evolução e seleção natural e utiliza modelos destes processos naturais para encontrar soluções de problemas [Bergamaschi and Bonfim 2010]. 71
ISBN: 978-972-8939-96-0 2013 IADIS Uma atividade essencial nesta técnica é a definição da representação de cada individuo que fará parte do processo de seleção natural, tal individuo é definido como cromossomo. Existem diversas formas de representá-lo, tais como: binária, inteira, real ou alfanumérica. Esta representação também é conhecida como alfabeto do Algoritmo Genético [Bergamaschi and Bonfim 2010]. A Figura 1 mostra um exemplo de representação do tipo alfanumérica, onde cada gene pode possuir somente um caractere. a b a b 0 1 a a 1 5 T r k v Figura 1. Representação alfanumérica do cromossomo. A primeira atividade na elaboração de um algoritmo genético é a criação de uma população aleatória de cromossomos (indivíduos). Os indivíduos que possuírem os cromossomos que representem uma boa solução receberão valores maiores, indicando uma maior probabilidade de ser uma boa solução do problema. A seleção de um bom indivíduo é dependente de uma função objetivo, que indica aquele que atende de forma mais adequada o problema que está sendo solucionado. A função objetivo informa o quanto um cromossomo está próximo da solução. Essa função fornece um valor que será usado para o cálculo de sua probabilidade para ser selecionado para reprodução. Esta função também é conhecida como função de aptidão [Linden 2012]. Dois indivíduos (pais) deverão ser selecionados para permitir a geração de dois novos indivíduos (filhos). Existem vários métodos de seleção utilizados nas aplicações de Algoritmos Genéticos: seleção por roleta, seleção Boltzmann, seleção por torneio, entre outros [Mattioli and Yamanaka 2009]. A seleção por roleta divide os indivíduos em grupos e faz aleatoriamente a sua seleção. Os melhores indivíduos ganham maiores espaços na roleta e piores indivíduos ganham espaços menores na roleta. Esta técnica permite selecionar indivíduos mais aptos, mas não exclui os indivíduos que não possuem um bom material genético [Russel and Norvig 2004]. Para a otimização ou substituição da seleção por roleta é possível adotar a técnica de seleção por torneio, que limita o tamanho (k) da população colocada na roleta. Esta técnica permite que indivíduos com baixa probabilidade participe de alguns cruzamentos. A geração dos novos indivíduos é possível pelo cruzamento entre os cromossomos dos indivíduos selecionados. Tal operação é essencial para o funcionamento de um Algoritmo Genético. Há diversas formas de realizar o cruzamento como: ponto de cruzamento único, dois pontos de cruzamento, cruzamento uniforme e cruzamento aritmético [Poltosi and Goméz 2007]. Garantir uma varredura ampla no espaço de possíveis soluções é essencial em todos os problemas de otimização. Para atender esta necessidade, algoritmos genéticos aplicam a operação de mutação após a operação de cruzamento. Esta operação evita que o algoritmo genético encontre precocemente mínimos ou máximos locais. A mutação é efetuada alterando-se o valor de um ou mais genes de um indivíduo sorteado aleatoriamente com uma determinada probabilidade, denominada probabilidade de mutação [Russel and Norvig 2004]. A reinserção dos indivíduos na população é a última etapa necessária, na qual os indivíduos capazes são preservados e os indivíduos com menor aptidão são descartados. Nesta etapa é possível utilizar a técnica de Elitismo, que permite manter os k melhores indivíduos e aleatoriamente preencher o restante, outra abordagem é o Elitismo Total, que mantém apenas os melhores indivíduos [Poltosi and Goméz 2007]. 3. GERAÇÃO DE GRADE HORÁRIA EM ENFERMARIAS A geração de horário em enfermaria geralmente apresenta o problema de determinar um cronograma de trabalho, geralmente no prazo de um mês, para os enfermeiros, que seja razoável e eficiente. Apesar de parecer trivial, este é um problema complexo devido às suas diversas restrições e muitas combinações possíveis [Camillo and Stelle 2008][Beppler and Leite 2009]. Este problema pode ser classificado como NP(Non-Deterministic Polynomial time), implicando a necessidade de utilizar técnicas não determinísticas na solução do problema [Camillo and Stelle 2008]. 72
Conferência IADIS Ibero-Americana Computação Aplicada 2013 Neste problema é necessário realizar a atribuição de turnos e férias para cada enfermeiro. Cada enfermeiro tem a sua vontade e suas preferências. A solução deve atender ao máximo possível estas preferências e também atender as necessidades das enfermarias. Normalmente um enfermeiro pode trabalhar nos turnos da manhã, tarde e noite (seis primeira horas) [Dias 2010]. Um enfermeiro também pode realizar plantão de 12 horas, que durante o dia compreende os turnos da manhã e tarde e durante a noite compreende toda a noite [Burke et. al. 2001]. As restrições das enfermarias são definidas por regras internas ou mesmo leis nacionais ou do órgão que regula a profissão. Uma enfermaria precisa respeitar estas regras para não ter problemas trabalhistas [Dias 2010]. A definição de uma grade horária eficaz permite a geração de quadros de horários otimizados garantindo a cobertura correta de profissionais ao longo do período e diminuindo o montante necessário de horas extras exigidas dos funcionários, o que implica em uma significativa redução de custos. Já os enfermeiros têm como benefício uma melhor qualidade de vida, visto que a escala gerada permite uma distribuição mais uniforme do trabalho. A melhoria no ambiente de trabalho permite que se ofereça um melhor atendimento à população [Camillo and Stelle 2008]. 4. DESENVOLVIMENTO DA APLICAÇÃO 4.1 Representação do Indivíduo Neste problema foi utilizado um cromossomo com n genes, onde n é igual a 2*Quantidade de Enfermeiros*Quantidade de Dias no Mês. A representação do cromossomo utiliza valores decimais, onde o gene em uma posição par representa o trabalho realizado pelo enfermeiro e as posições impares representa a enfermaria onde deverá ser realizado tal trabalho. Na representação do cromossomo há valores entre 0 e 6, onde: 0 representa que o enfermeiro irá trabalhar durante a manhã. 1 representa que o enfermeiro irá trabalhar durante a tarde. 2 representa que o enfermeiro irá trabalhar durante a noite. 3 representa que o enfermeiro folga nos três períodos do dia. 4 representa que o enfermeiro está de férias neste dia. 5 representa que o enfermeiro irá trabalhar em plantão durante o dia. 6 representa que o enfermeiro irá trabalhar em plantão durante a noite. Já na representação da enfermaria temos valores entre 1 e n, que indicam a enfermaria no qual o enfermeiro irá fazer seu trabalho, onde n é a quantidade de enfermarias cadastradas. Quando o trabalho é folga ou férias o valor da enfermaria será -1, pois este trabalho não é vinculado a nenhuma das enfermarias. A figura 2 mostra a representação de um cromossomo. Cada par de genes representa um dia especifico e 2*quantidade de dias representa o horário de um enfermeiro. Um cromossomo é um vetor com n*m elementos, onde n é a quantidade de enfermeiros e m é a quantidade de dias no mês multiplicado por dois. A escala de um enfermeiro é representado a cada m elementos. 0 1 0 1 1 2 1 2 2 1 3 3 3 5 1 3 6 2 3 Figura 2. Representação de parte do cromossomo. 4.2 Função Objetivo A função de aptidão foi gerada a partir de informações coletadas junto ao hospital das clinicas da USP de Ribeirão Preto. Nesta versão desenvolvida são consideradas 11 regras básicas que quando unidas geram o resultado da função de aptidão. A função de aptidão é definida pela fórmula: temr1*regra1() + temr2*regra2() + temr3*regra3() + temr4*regra4() + temr5*regra5() + temr6*regra6() + temr7*regra7() + temr8a*regra8a() + temr8b*regra8b() + temr9a*regra9a() + temr9b*regra9b(). 73
ISBN: 978-972-8939-96-0 2013 IADIS Cada uma das regras pode ser desativada ou ativada pelo usuário. Abaixo a descrição de cada uma das regras: Regra 1: penaliza a solução, quando ela não respeita o período de férias de um enfermeiro. A cada dia de férias não respeitado é acrescido o valor da penalidade. Regra 2: penaliza a solução, quando ela permite que um determinado período (Manhã, Tarde e Noite) fique sem enfermeiro. A cada período não atendido é acrescido o valor da penalidade. Regra 3: penaliza a solução, quando ela não permite a um enfermeiro que trabalhou a noite, folgar no outro dia. A cada ocorrência é acrescido o valor da penalidade da regra. Regra 4: penaliza a solução, quando ela não permite a um enfermeiro que trabalhou em um plantão noturno, folgar 36 horas. A cada ocorrência é acrescido o valor da penalidade da regra. Regra 5: penaliza a solução, quando ela não encontra uma quantidade suficiente de enfermeiros por período, esta quantidade é definida pelo usuário. Quando esta regra esta ativa ela desabilita a regra 2. Regra 6: penaliza a solução, quando ela não respeita a carga horária máxima de trabalho de um enfermeiro. A penalidade nesta regra é a quantidade de horas que excederam o limite mensal multiplicada pelo valor da penalidade da regra. Regra 7: penaliza a solução, quando ela permite a um enfermeiro trabalhar mais de 6 dias seguidos. A cada ocorrência é acrescido o valor da penalidade da regra. Regra 8a: penaliza a solução, quando um determinado dia fica sem plantonista noturno. A cada ocorrência é acrescido o valor da penalidade da regra. Regra 8b: penaliza a solução, quando um determinado dia fica sem plantonista diurno. A cada ocorrência é acrescido o valor da penalidade da regra. Regra 9a: penaliza a solução, quando a preferência do enfermeiro quanto ao período preferido não é atendido, o enfermeiro pode indicar o período de preferência para seu trabalho (Manhã, Tarde ou Noite). A cada ocorrência é acrescido o valor da penalidade da regra. Regra 9b: penaliza a solução, quando a preferência do enfermeiro quanto aos seus plantões não é atendido, o enfermeiro pode indicar o horário de preferência para seus plantões (noturno ou diurno). A cada ocorrência é acrescido o valor da penalidade da regra. A tabela 1 apresenta os pesos e situação padrão de cada regra. O usuário tem opção de modificar tais valores. Tabela 1. Pesos e condição de cada regra. Regra Ativada Peso Regra Ativada Peso Regra 1 Sim 10 Regra 7 Sim 3 Regra 2 Não 5 Regra 8a Sim 5 Regra 3 Sim 4 Regra 8b Não 1 Regra 4 Sim 4 Regra 9a Sim 1 Regra 5 Sim 3 (5 caso, número de enfermeiros = 0) Regra 9b Sim 1 Regra 6 Sim 3 4.3 Mutação, Cruzamento e Reinserção Nesta solução foram desenvolvidas as seguintes estratégias: Mutação: Mutação de um ponto. Foi adaptado para permitir mudar uma quantidade de até 10 genes. Mas o padrão é realizar a mutação de apenas um gene. Cruzamento: Foram desenvolvidas as técnicas de roleta e torneio que podem ser utilizados para selecionar os pais para o cruzamento, no cruzamento é considerado um ponto de corte. Reinserção: Foram desenvolvidas soluções baseadas em elitismo total ou parcial, com um máximo de k indivíduos elitizados. 74
Conferência IADIS Ibero-Americana Computação Aplicada 2013 4.4 Interface Gráfica Desenvolvida Neste projeto foi desenvolvido uma interface gráfica, apresentada na figura 3, que contém 5 partes distintas: Enfermaria: Permite ao usuário selecionar um arquivo em formato excel (XLS) que armazena os dados da enfermaria. Horário Mensal da Enfermaria: O usuário pode selecionar o mês e então executar o algoritmo genético. Após a sua execução, o usuário tem três modos de visualizar o resultado: Tabela com todos os dados gerados, grade horária por enfermaria, grade horária por enfermeiro. Preferências: O usuário tem a possibilidade de habilitar ou desabilitar regras, bem como modificar os pesos delas. Configuração do Algoritmo Genético: Esta interface permite definir várias configurações para a execução do algoritmo, tais como: quantidade de gerações, de indivíduos, taxas de mutação e de cruzamento, definição de quantidade de genes mutáveis e seleção do modo de elitismo. Gráfico: apresenta o desempenho do algoritmo genético. Figura 3. Interface Gráfica desenvolvida 5. EXPERIMENTOS O algoritmo genético desenvolvido foi executado em seis experimentos em ciclos contínuos de 5.000 gerações para evolução da solução. O experimento é finalizado quando um ciclo não apresenta melhorias ou quando apenas erros gerados em regras relacionadas às preferências dos enfermeiros ou horas extras forem identificados. Cada experimento foi executado três vezes, modificando a quantidade de enfermeiros. Em cada uma delas, a quantidade de enfermeiros testará os limites na geração da grade horária, de uma configuração fácil até uma difícil. A tabela 2 apresenta a configuração de cada um dos experimentos. 75
ISBN: 978-972-8939-96-0 2013 IADIS Tabela 2. Configurações dos experimentos Experimento Configurações 1 2 3 4 5 6 7 8 9 10 11 Primeiro 50 0.8 1 0.5 Ativa Ativa 2 11 15 7 2 Segundo 100 0.9 3 0.6 Ativa Ativa 2 11 15 7 2 Terceiro 100 0.9 3 0.5 Ativa Ativa 2 15 30 7 4 Quarto 50 0.9 3 0.6 Ativa Ativa 3 11 15 10 2 Quinto 50 0.7 1 0.6 Ativa Ativa 3 17 15 10 2 Sexto 100 0.9 5 0.7 Ativa Ativa 3 17 15 10 2 Legenda das configurações: 1 : Quantidade de Indivíduos; 2 : Taxa de mutação; 3: Quantidade de genes mutáveis; 4: Taxa de Cruzamento; 5: Seleção por torneio (ativo ou inativo); 7: Quantidade de Enfermarias; 8: Quantidade de Preferências 9: Quantidade de dias de férias dos enfermeiros 10: Necessidade de enfermeiros por dia(manhã+tarde+noite) nas enfermarias 11: Mês (1 à 12); 6: Elitismo Total (ativo ou inativo); A figura 4 apresenta os gráficos gerados pela aplicação, com o desempenho do algoritmo no primeiro experimento. A ferramenta desenvolvida disponibiliza informações quando ao desempenho apresentado, permitindo ao usuário otimizar a sua configuração. Cada gráfico mostra a evolução da solução do problema em cada configuração. Figura 4. Gráfico com o desempenho do algoritmo genético. A tabela 3 apresenta a análise das execuções de cada um dos experimentos, apresentando, a quantidade de enfermeiros (QE) cadastrados para teste, a penalidade identificada (Erros) pela função objetivo e o número de gerações que foram necessárias para encontrar uma solução adequada. Uma solução adequada é aquela no qual todas as regras que apresentam grande penalidade são satisfeitas e geram erro próximo a zero. O segundo número presente no campo Erros, entre parênteses, representa uma descrição do erro. Os experimentos um e dois conseguiram criar soluções que respeitavam as regras da enfermaria, entretanto não conseguiram atender a todas as preferências dos enfermeiros. Quando a quantidade de enfermeiros foi igual a 13 gerou soluções que necessitam de hora extra de alguns enfermeiros. 76
Conferência IADIS Ibero-Americana Computação Aplicada 2013 Tabela 3. Resultado dos experimentos Primeira Execução Segunda Execução Terceira Execução QE Erros Gerações QE Erros Gerações QE Erros Gerações 1 13 15 (2) 15000 14 6 (1) 5000 15 5 (1) 5000 2 13 13 (2) 15000 14 6 (1) 5000 15 5 (1) 5000 3 13 52 (3) 25000 14 36 (2) 15000 15 24 (2) 10000 4 18 20 (3) 20000 19 6(2) 5000 20 2(1) 5000 5 18 25 (3) 20000 19 10(2) 5000 20 6(1) 5000 6 18 22 (3) 20000 19 08(1) 5000 20 5(1) 5000 QE: Quantidade de Enfermeiros Erros: valor retornado pela função objetivo, indicando a penalidade da solução, onde: (1): Apenas regras relacionadas a preferências dos enfermeiros não respeitadas. (2) : Regra número 6 não respeitada, necessidade de pagar hora extra. (3) : Regras internas ou leis foram desrespeitadas (regras 1, 2, 3, 4, 7, 8) O experimento três apresentou mais restrições, gerando soluções que acarretaram uma quantidade maior de horas extras e no caso de poucos enfermeiros, o não atendimento da folga de 36 horas após a execução de um plantão. Os demais experimentos mostraram que é possível evoluir a solução propondo configurações diferentes para o algoritmo genético. Os experimentos demonstram que o algoritmo consegue evoluir a solução, entretanto necessita, em alguns casos, de muitas gerações. O algoritmo conseguiu na maioria dos casos encontrar uma solução satisfatória. Tais soluções podem ser evoluídas disponibilizando mais gerações para a sua evolução. 6. RESULTADOS E DISCUSSÕES As regras propostas apresentaram um bom desempenho, permitindo definir um horário que foi capaz de satisfazer tanto restrições das enfermeiras como dos hospitais, entretanto seria possível criar diversas outras, tais como: restringir um enfermeiro a uma enfermaria especifica, definir uma preferência a dias da semana, definir preferências de trabalho em equipe e definir restrições de acessibilidade nas enfermarias. A solução proposta, além de poder ser utilizada para geração do escalonamento da força de trabalho de uma enfermaria, pode ser empregada para o planejamento do quadro necessário de enfermeiros. A configuração do problema gera cromossomos grandes, que oneram muito o processamento. A criação de grades horárias para diversas enfermarias com dezenas de enfermeiros pode gerar cromossomos com milhares de genes. O algoritmo demandou uma grande quantidade de gerações para encontrar uma solução adequada ao problema, isto se deve principalmente a complexidade do cromossomo. A função de aptidão influenciou diretamente no desempenho do algoritmo, uma grande quantidade de regras ativas gera uma necessidade de grande processamento. Para superar tais dificuldades, é proposto como trabalho futuro: paralelizar a solução das regras e os processos de cruzamento e mutação, otimizar a representação do cromossomo e também estudo e implantação de outras técnicas de computação evolutiva para solucionar o problema. A identificação de uma configuração ótima para o algoritmo genético poderia ser obtida através da aplicação de técnicas de redes neurais, que permitiria identificar um padrão ótimo para tal configuração. 77
ISBN: 978-972-8939-96-0 2013 IADIS REFERÊNCIAS BIBLIOGRÁFICAS Beppler, A. and Leite, D. P., 2009. Sistema para geração de escalas de plantões médicos, in III EPAC Encontro Paranaense de Computação. pp. 174-183. Bergamaschi, P. R. and Bonfim, I. P, 2010). O Método de Otimização Evolução Diferencial: uma análise dos parâmetros fator de perturbação e probabilidade de cruzamento, in Anais do II Simpósio de Matemática e Matemática Industrial SIMMI 2010, Vol. 1, ISSN 2175-7828. Burke, E. B., et al, 2001. Fitness Evaluation for Nurse Scheduling Problems. In Evolutionary Computation. pp. 1139-1146 vol. 2. Camillo, C. and Stelle, D., 2008. Aplicando Algoritmos Genéticos ao problema de definição de escala de trabalho do corpo de enfermagem de um Hospital Universitário. In XL SBPO Simpósio Brasileiro de Pesquisa Operacional. pp. 1216-1224. Dias, H. J. C., 2010. Escalonamento de equipas de enfermagem de acordo com a previsão das necessidades de serviço. Dissertação de Mestrado. Universidade Técnica de Lisboa. Instituto Superior de Economia e Gestão. Linden, R., 2012. Algoritmos genéticos: uma importante ferramenta da inteligência computacional. 3ª Edição. São Paulo: Brasport. Mattioli, F. and Yamanaka, K., 2009. Algoritmos Genéticos aplicados à programação de Manutenção de Sistemas Elétricos de Potência. Poltosi, M. R. and Goméz A. T., 2007. Elaboração de escalas de trabalho de técnicos de enfermagem com busca tabu e algoritmo genético. In XXXIX Simpósio Brasileiro de Pesquisa Operacional - SBPO. Pp 1832-1843. Russel, S. and Norvig P., 2004. Inteligência Artificial. São Paulo : Editora Campus. 78