Blog do faraohh

Assuntos diversos, inclusive tecnologia.

Nurse Scheduling Problem (Problema de Escalonamento de Enfermeiras)

leave a comment »


Introdução

Conhecido com NSP (Nurse Scheduling Problem — Problema de Escalonamento de Enfermeiras) é um típico problema de relação entre tempo, recursos  e locais. Para o caso NSP, existe uma ação de trabalho em hospitais ou setores de um hospital, entre um quadro de enfermeiras em determinado período específico levando em considerações várias restrições, como por exemplo:

  • tempo de trabalho permitido por dias/semanas e período de descanso para cada enfermeira,
  • enfermeiras que não podem trabalhar juntas por interesse delas mesmas ou do próprio hospital,
  • necessidade de uma enfermeira chefe para grupos de enfermeiras,
  • e outros.

Definição do Problema

O problema é NP-difícil e pode ser usado heurísticas para resolvê-lo.

Modelagem

Iremos abordar o assunto tratando uma instância simples, seguindo uma estrutura apresentada na Tabela 1 para cada enfermeira:

Tabela 1: Relação entre tempo e turno para cada enfermeira.
Turno/Semana Domingo Segunda Terça Quarta Quinta Sexta Sábado
Turno1
Turno2
Turno3

Cada enfermeira preenche a Tabela 1 segundo sua preferência de trabalho e seguindo os critérios a seguir:

  • Não Quero (0,0)
  • Talvez (0,5)
  • Quero (1,0)

Essa estrutura será replicada dentro do horizonte de planejamento, que pode ser de 1 mês, 1 semestre (6 meses) ou o período específico.

Restrições

São inúmeras restrições que podem variar segundo a realidade de cada hospital e as questões trabalhista de cada país/estado, logo iremos definir nossas restrições para abordar um instância do problema, mais ou menos segundo a realidade dos hospitais brasileiros.

  1. Uma enfermeira não pode trabalhar mais de um turno por dia;
  2. As enfermeiras podem trabalhar no máximo “x” dias seguidos de trabalho;
  3. Quantidade mínima e máxima de enfermeiras por dia e turno de trabalho;
  4. Carga mínima de trabalho por enfermeira;
  5. Enfermeiras que não podem trabalhar juntas;
  6. Alocar a enfermeira segundo sua preferência por Turno/Semana de trabalho.

Função Objetivo

O problema pode ser resolvido usando Programação Linear ou Programação Linear Inteira dependendo do tipo de modelagem. Para resolver o problema temos que definir um função objetivo para maximizar ou minimizar algo, por exemplo, no modelo acima, queremos maximizar as preferências das enfermeiras.

Software

Criamos um software em PHP usando banco de dados MySQL e uma ferramenta chamada GLPK (GNU Linear Programming Kit) e versionamos o código em Projeto NSP quem quiser dar um olhada o projeto está no ar.

Written by Marcello Moura

30/12/2009 às 10:40

Publicado em software livre

Tagged with ,

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: