Uso de SAS/OR® para diminuir o tempo de resposta com um melhor posicionamento de ambulâncias. Fábio França1, 1 Logical Optimization – Rua Tanhaçu número 405, CEP 05679-040 São Paulo, Brasil [email protected] Resumo. Usando o módulo de pesquisa operacional do SAS®, o Departamento de Bombeiros de São Francisco analisou operações de resposta a emergências para otimizar o posicionamento de ambulâncias e criar procedimentos de despacho para reduzir o tempo de resposta. Um primeiro modelo foi criado como um modelo de planejamento para o posicionamento inicial de ambulâncias na cidade de São Francisco. Um segundo modelo foi criado para determinar como posicionar da melhor forma as ambulâncias restantes quando certo número de unidades está atendendo uma emergência. Este modelo pode ser extendido para quaisquer recursos móveis utilizados no atendimento de emergências, daí a relevância para a Copa do Mundo e Olimpíadas. 1. Introdução Na cidade de São Francisco, as ambulâncias são posicionadas nas diversas unidades do corpo de bombeiros. Existem 19 ambulâncias que podem ser alocadas às 41 unidades do corpo de bombeiros. Quando existe uma emergência, a unidade mais próxima é enviada para atender o chamado. Redução no tempo de resposta é chave para salvar vidas e melhorar resultados. O foco deste projeto foi reduzir o tempo de resposta. A redução no tempo de resposta pode ser alcançada de diversas maneiras. Como um problema de otimização, nós focamos em minimizar a distância entre as unidades disponíveis e chamadas de emergência. A ideia geral é que uma redução na distância produzirá uma redução no tempo de resposta. Isso requer uma definição quantitativa da distância entre chamados e unidades. Idealmente, pode-se considerar a distância entre um chamado e um atendimento, calculando-se as distâncias entre todos os possíveis locais de chamados e locais em que unidades de atendimento se encontram. Infelizmente isto não é factível, já que os chamados podem vir, literalmente, de qualquer lugar da cidade. Ao invés disso, a cidade foi dividida em 174 áreas que têm aproximadamente a mesma população e número de chamados. Desta maneira, algumas áreas são muito pequenas geograficamente e outras muito maiores. Por exemplo, a área que cobre o parque de Golden Gate é, geograficamente, muito maior que a área de uma pequena seção do centro da cidade. Distância entre dois pontos é medida em termos do tempo médio gasto para ir do centro da área até uma unidade do corpo de bombeiros. Esta definição de distância não nos permite modelar diferenças de tráfego devido à hora do dia, mas mantém nosso modelo suficientemente simples para um tempo de resposta muito rápido. Agora que o problema das distâncias está bem definido, precisamos qual o caminho para resolver nosso problema. Na teoria de pesquisa operacional, este problema é conhecido como um problema de Localização de Instalações. Um problema de Localização de Instalações consiste em determinar a localização de p instalações e atribuir clientes às mesmas de maneira a minimizar a distância máxima entre um cliente e a instalação a qual ele foi alocado. Em nosso caso, estamos alocando área da cidade a ambulâncias de maneira a minimizar a distância entre chamados de emergência e ambulâncias. Isso requer que aloquemos, também, ambulâncias a unidades do corpo de bombeiros, mas nós simplesmente alocamo-las àqueles que estão provendo cobertura. Para minimizar a distância, você pode minimizar a distância total, distância média, ou simplesmente minimizar a distância máxima. Nós escolhemos minimizar a distância máxima. Esta abordagem assegura que todas as distâncias serão iguais ou menores a uma distância máxima específica, o que está alinhado com o objetivo de tempo de reposta abaixo de um limite. O restante do artigo discutirá a formulação do problema, solução e desafios de implementação. 2. O Problema de Planejamento Nós chamamos a formulação do problema inicial de problema de planejamento. A formulação do problema foi desenhada para responder à questão: “Em um determinado momento com nenhum chamado, quais são as unidades do corpo de bombeiros nas quais as ambulâncias devem ser posicionadas para minimizar a distância entre as 174 áreas da cidade e as 19 ambulâncias?”. Este problema endereça onde o corpo de bombeiros deve posicionar inicialmente suas ambulâncias. 2.1 Formulação do Problema Esta seção descreve a formulação do problema de pesquisa operacional. Incluímos equações e descrições textuais. De maneira a formular uma base teórica para a solução, devemos definir formalmente o que conhecemos e o que esperamos determinar. Sabemos a localização das unidades do corpo de bombeiros onde as ambulâncias podem estacionar e esperar chamados e tempo de jornada entre qualquer unidade e área da cidade. Nós estamos procurando uma maneira de alocar áreas da cidade a unidades do corpo de bombeiros e ambulâncias à unidades. Vamos definir os seguintes índices para os conjuntos que usaremos: Tabela 1. Índices Índice Conjunto Descrição i I Conjunto locais de unidades do corpo de bombeiros j J Conjunto de áreas da cidade m Im Conjunto de locais que devem ter uma ambulância {i ∈ Im } ⊆ I Usaremos os seguintes nomes e índices para descrever os dados que serão usados pelo sistema. Tabela 2. Parâmetros Parâmetro Descrição do Parâmetro LocaisAbertos Número de ambulâncias disponíveis Si Oferta de atendimentos no local i DISij Distância do local i até a área j defaultAberto Lista de locais que devem ser abertos (m ∈ Im) Isso descreve o que já conhecemos. Agora precisamos definir termos que descrevam o que queremos resolver. Esses termos são comumente conhecidos como variáveis de decisão. Tabela 3. Variáveis Variável Descrição da variável Xij = 1 se o local i cobre a área j, 0 se não. Abertoi = 1 se o local i tem ambulância, 0 se não. DistMax Distância máxima entre um local e áreas de cobertura. A função objetivo define o objetivo do modelo de otimização. Em nosso caso: Minimizar a distância máxima entre locais e áreas. Em nossa notação: Min DistMax Restrições O problema de otimização possui as seguintes restrições. Definição de Distância Máxima: (1) DistMax ≥ DISijXij para todos i em I, j em J Restrição de Disponibilidade: O número total de locais abertos deve ser igual ao número de locais disponíveis para abertura. (2) ∑i∈I Abertoi = LocaisAbertos Restrição de Serviço: locais que cobrem uma área devem estar abertos. (3) Xij ≤Abertoi para todo i em I, j em J Restrição de Cobertura: A soma da cobertura deve atender à demanda. Demanda aqui significa que toda área requer atendimento. Ou seja, toda área deve ser coberta por uma ambulância, e qualquer solução deve prover cobertura para a cidade inteira. (4) ∑i∈I Xij = Dj para todo j em J Restrição de Oferta: a soma da cobertura não pode exceder a oferta. Oferta aqui significa que cada local pode fornecer cobertura a certo número de áreas e a cobertura ocorre apenas quando o local possuir uma ambulância. (5) ∑j∈JXij ≤ SiAbertoi para todo i em I Restrição de Abertura Default: força os locais em I m serem abertos. Esta restrição não está sendo usada correntemente, mas provê meios de forçar certos locais a abrigar uma ambulância. (6) Abertoi = 1 para todos i em I m 3. O Problema Real O problema de planejamento esconde uma das realidades que o corpo de bombeiros de São Francisco se depara. Apenas em raras ocasiões todas as ambulâncias estão disponíveis esperando por chamados. Na maior parte do tempo, pelo menos uma ambulância está fora em algum atendimento. Portanto, uma questão mais relevante seria: “Se certo número de ambulâncias está fora em atendimento, como se deve reposicionar as ambulâncias restantes de modo a minimizar a distância entre chamados e ambulâncias?” Nós chamamos este de problema de tempo real. A formulação do problema de tempo real é a mesma do problema de planejamento com o acréscimo de alguns conjuntos e uma restrição. Nós definimos um novo índice f e um novo conjunto: I f. If é o conjunto de locais abertos que não estão em I m, isto é, estão abertos, mas podem ser fechados. Vamos criar uma restrição que obrigue o modelo a reposicionar no máximo k ambulâncias. Restrição de Local Fixo: requer que todas ambulâncias menos k permaneçam onde estão (7) ∑i∈If Abertoi + k ≤ LocaisAbertos - ∑i∈Im Abertoi Pode-se perguntar por que não, simplesmente, rodamos o problema com um número de ambulâncias reduzido. A razão é inteiramente prática. Não é razoável pedir que as ambulâncias movam-se constantemente. Mantê-las estacionadas tanto quanto possível permite que as equipes possam comer e descansar apropriadamente, o que, claramente, é fundamental para o bom desempenho de suas funções. 4. Busca por soluções Sendo este um problema de programação inteira, precisamos de um solver de programação inteira. O solver do SAS utilizado foi o MILP – Mixed Integer Linear Programming. O tempo de solução para este problema é muito alto para ser resolvido de maneira direta. Outros solvers testados pelo corpo de bombeiros de São Francisco demoraram mais de vinte horas para encontrar a melhor solução. A solução deste problema não é viável se não for muito rápida de maneira a ser passada rapidamente para os despachadores. Com uma estratégia simples de busca binária passamos de horas para segundos no tempo de solução. A chave para se entender o funcionamento é lembrar que queremos minimizar a distância máxima entre o chamado (área da cidade) e uma ambulância. Portanto, a solução para o nosso problema encontra-se em algum lugar na lista de distâncias e nós precisamos apenas encontrá-la. O seguinte algoritmo descreve nossa busca pela mínima distância máxima e utilizamos o MILP para nos ajudar. (1) Fixe um limite mínimo para a variável DistMax como a maior distância mínima entre uma unidade e uma área (2) Crie uma função objetivo dummy (exemplo: min 0) (3) Resolva uma série de problemas de viabilidade. Já que a solução deste problema é igual a uma das distâncias DIS[i,j]; ordene estas distâncias e faça uma busca binária, resolvendo um problema de viabilidade a cada passo nos quais arcos com distâncias maiores são abandonados. Siga os passos: a. Crie uma lista ordenada das distâncias. b. Escolha a distância do meio da lista (chame de m). c. Crie uma restrição que força X ij=0 para todas as distâncias maiores que m. d. Se uma solução viável existir, então o valor de DistMax mínimo deve ser menor ou igual a m. Vá ao passo b. e repita o processo até não encontrar uma solução viável, encontrando, assim, o menor valor de m. Já que podem existir várias soluções com este valor de DistMax, rodamos o problema completo para minimizar a distância total com a restrição de DistMax= m. Usando este método para resolver o problema conseguimos uma solução abaixo de um minuto. 5. Implementando a Solução O resultado do modelo deve ser comunicado aos despachadores. O corpo de bombeiros de São Francisco usa um sistema de despacho computadorizado que rastreia visualmente o movimento das ambulâncias usando GPS. O sistema não controla o movimento das ambulâncias; despachadores avisam as ambulâncias quando estas devem se sair de uma unidade. Conquanto uma variedade de dados possa ser lida da solução do modelo, os despachadores necessitam de uma informação muito limitada. Eles precisam da informação apenas da seguinte forma: “Mova a ambulância x da unidade 1 para a unidade 2”. De fato, na implementação proposta, recebem a sugestão de onde posicionar as ambulâncias restantes. Eles podem desprezar a solução se acharem que têm uma solução melhor devido a sua experiência com padrões de tráfego e tipos de chamadas. Devido aos chamados constantes por atendimentos, o despachador precisa de uma solução consistentemente atualizada. Esta é a motivação para encontrar uma solução muito rápida abaixo de um minuto. 6. Conclusão O tipo de problema apresentado aqui, problema de Localização de Instalações, é um problema muito estudado pela área de pesquisa operacional, sendo o primeiro em 1826 por Von Thüen. Vários modelos foram desenvolvidos em diversas áreas de aplicação: localização agrícola, localização industrial, planejamento de cidades, estudos ambientais, marketing, logística e, finalmente, serviços de emergência. O caso apresentado mostra que, apesar de todo este estudo acumulado e do poder computacional disponível, cada problema particular possui características únicas que precisam ser tratadas individualmente. Isto dificulta o uso de pacotes e propicia o desenvolvimento de projetos específicos. Penso que a relevância do caso apresentado, mostrando tanto ferramentas disponíveis quanto problemas reais, para a Copa do Mundo e Olimpíadas do Brasil, é bastante clara para o atendimento de emergências durante estes eventos. Podemos extender o caso apresentado não só para emergências (ambulâncias, guinchos, viaturas, etc.) como, também, para outras classes de problemas de localização tais como localização de postos de informação, de serviços de transportes, atrações turísticas entre outros. Referências Gomes, C. F. S., Ribeiro, P. C. C. (2004) “Gestão da Cadeia de Suprimentos Integrada à Tecnologia da Informação”, Técnicas de Localização [Em linha]. <http://books.google.pt/books?id=B06QoZ8jB8IC&printsec=frontcover#PRA1-PA55,M1> Almeida, L. M. W. (2009) “Problemas de localização [Em linha]”. Disponível em WWW: <URL: http://www.eps.ufsc.br/teses99/werle/cap3.html> William Storti, Jodi Blomberg (2008) “Using SAS/OR® to Improve Emergency Response Timeswith Better Ambulance Placement”. http://support.sas.com/resources/papers/sgf2008/sasOR.pdf