Acessibilidade / Reportar erro

Técnicas da pesquisa operacional no problema de horários de atendentes em centrais telefônicas

Operations research techniques in the call center schedule problem

Resumos

Este trabalho propõe uma solução para a elaboração e a designação de jornadas de trabalho em uma central telefônica de atendimento 24 horas. O trabalho foi desenvolvido em três fases: na primeira, determina-se o número de atendentes necessários a cada meia hora do dia por meio de um simulador da central telefônica, visando ao pronto atendimento ao cliente. Na segunda, é determinado o conjunto de jornadas de trabalho que atendem à demanda, minimizando os gastos da empresa com salários; para isso, foram utilizados os resultados da primeira fase e as jornadas disponíveis para, então, construir um modelo de Programação Inteira, o qual foi resolvido com o software LINDO. Finalmente, na terceira fase são designados os atendentes aos horários de acordo com suas preferências, utilizando o algoritmo do Matching de peso máximo. Os resultados encontrados foram analisados em termos de economia para a empresa, melhor atendimento ao usuário e satisfação dos atendentes.

simulação e atendimento em central telefônica; problema de jornadas de trabalho; designação ótima


This work deals with the call center attendants' assignment and schedule problem. It proposes a solution for a night and day continuous operation in a call center. The work is developed into three phases. Firstly, it was determined the number of necessary attendants for every 30 minutes in a day by simulating the arriving calls to the center, in order to satisfy the clients demand. Secondly, it was determined the set of journeys of work by solving an Integer Programming Model using the software LINDO, in order to satisfy the client demand minimizing the company's costs; the results obtained in the first phase and the available journeys by the company were used for it. Finally, in the third phase, the attendants are assigned to the work according with their preferences using the Maximum Weigh Matching Algorithm. The results obtained in this work were analyzed in terms of savings to the company, better clients' service and attendants' satisfaction.

simulation and call centers attendance; schedule problem; assignment problem


Técnicas da pesquisa operacional no problema de horários de atendentes em centrais telefônicas

Operations research techniques in the call center schedule problem

Angela Olandoski BarbozaI; Celso CarnieriII; Maria Teresinha Arns SteinerII; Paulo Henrique SiqueiraII

IDepartamento de Matemática, Centro Federal de Educação Tecnológica do Paraná, Av. 7 de Setembro, 3165, CEP 80230-901, Curitiba, PR, e-mail: aobarboza@yahoo.com

IIUniversidade Federal do Paraná, CP 19081, CEP 81531-990, Curitiba, PR, Departamento de Matemática, e-mails: carnieri@mat.ufpr.br e tere@mat.ufpr.br; Departamento de Desenho, e-mail: paulohs@cce.ufpr.br

RESUMO

Este trabalho propõe uma solução para a elaboração e a designação de jornadas de trabalho em uma central telefônica de atendimento 24 horas. O trabalho foi desenvolvido em três fases: na primeira, determina-se o número de atendentes necessários a cada meia hora do dia por meio de um simulador da central telefônica, visando ao pronto atendimento ao cliente. Na segunda, é determinado o conjunto de jornadas de trabalho que atendem à demanda, minimizando os gastos da empresa com salários; para isso, foram utilizados os resultados da primeira fase e as jornadas disponíveis para, então, construir um modelo de Programação Inteira, o qual foi resolvido com o software LINDO. Finalmente, na terceira fase são designados os atendentes aos horários de acordo com suas preferências, utilizando o algoritmo do Matching de peso máximo. Os resultados encontrados foram analisados em termos de economia para a empresa, melhor atendimento ao usuário e satisfação dos atendentes.

Palavras-chave: simulação e atendimento em central telefônica, problema de jornadas de trabalho, designação ótima.

ABSTRACT

This work deals with the call center attendants' assignment and schedule problem. It proposes a solution for a night and day continuous operation in a call center. The work is developed into three phases. Firstly, it was determined the number of necessary attendants for every 30 minutes in a day by simulating the arriving calls to the center, in order to satisfy the clients demand. Secondly, it was determined the set of journeys of work by solving an Integer Programming Model using the software LINDO, in order to satisfy the client demand minimizing the company's costs; the results obtained in the first phase and the available journeys by the company were used for it. Finally, in the third phase, the attendants are assigned to the work according with their preferences using the Maximum Weigh Matching Algorithm. The results obtained in this work were analyzed in terms of savings to the company, better clients' service and attendants' satisfaction.

Key words: simulation and call centers attendance, schedule problem, assignment problem.

1. Introdução

A disputa atual entre empresas do mesmo ramo faz com que estas sempre busquem oferecer serviços de melhor qualidade a mínimos custos. O estudo do volume de investimentos a serem feitos e seus retornos, assim como a qualidade dos serviços ou produtos e também a melhoria do ambiente social são desafios constantes em todos os ramos. Para desenvolvê-lo, utilizam-se os mais sofisticados processos disponíveis da Pesquisa Operacional, da Informática e outros, obtendo-se rapidamente informações precisas e adequadas.

A otimização de horários de funcionários de uma empresa tem por objetivos atender à demanda com menor número possível de funcionários a um mínimo custo e oferecer horários aos funcionários considerando suas preferências, de forma a obter a máxima satisfação.

Alguns trabalhos relacionados ao tema aqui proposto podem ser citados: Jaumard et al. (1998) sugeriram a geração de horários de enfermeiros cumprindo as regras requeridas pela categoria e a demanda de pessoal visando minimizar custos e maximizar a preferência dos enfermeiros, bem como a qualidade dos serviços. Já Thompson (1997) descreveu o método que desenvolveu para designar atendentes para suprir a demanda de chamadas da empresa, de forma a tornar os atendentes mais satisfeitos com seus horários, levando em consideração o tempo de serviço, o que privilegia os mais antigos. Outros trabalhos similares, como: o problema de escala de horários para tripulação de empresas aéreas, foram abordados por Gamache et al. (1999); Hoffman & Padgerg (1993); Graves et al. (1993); e outros.

Dentre os trabalhos pesquisados na literatura, destaca-se o problema de designação de motoristas de ônibus para escalas de horários, estudado por Carraresi & Gallo (1984), que utilizaram uma abordagem denominada multi-level bottleneck ("gargalo" em vários níveis). Nessa abordagem, considera-se um grafo bipartido, em que um conjunto de vértices representa as escalas e o outro, os funcionários. Um peso p(i, j) é atribuído a cada designação de uma escala i para um funcionário j, em que o peso representa o custo total dessa designação.

A duração e o horário de início e término de cada escala devem ser considerados, pois os custos da empresa com o funcionário dependem desses fatores. O objetivo é encontrar um peso total mínimo de designações de escalas para motoristas. O algoritmo começa com uma designação inicial, a partir da qual se escolhe um vértice sem designação, criando uma cadeia alternante, cujos arcos são designados ou não. Quando o peso total dos arcos sem designação de uma cadeia é menor do que o peso total dos arcos já designados, trocam-se as funções da designação, ou seja, os arcos que não tinham designação passam a ter e os demais deixam de ter. Esse algoritmo é uma simplificação do algoritmo do Matching de peso mínimo, usado somente para grafos bipartidos (Christofides, 1975).

O presente artigo encontra-se estruturado da seguinte forma: além desta introdução, são apresentados, na Seção 2, a descrição do problema abordado e os objetivos em relação ao presente estudo. Na Seção 3 são apresentados os dados utilizados no desenvolvimento deste trabalho. Na Seção 4 são abordadas a metodologia adotada, sua implementação computacional e a obtenção dos resultados; finalmente, na Seção 5, é feita a análise dos resultados e são apresentadas as conclusões.

2. Descrição do problema e objetivos do trabalho

Neste trabalho pretende-se otimizar a escala de horários dos atendentes da empresa responsável pelo serviço de auxílio à lista telefônica, terceirizada pela Telepar (Empresa de Telecomunicações do Paraná). Essa empresa apresenta um quadro de funcionários permanente para atender às chamadas. O atendimento funciona ininterruptamente 24 horas por dia, e o número de chamadas varia continuamente no decorrer do período. Para efeito de cálculos, a empresa discretizou o dia de meia em meia hora. Essa variabilidade do número de chamadas no decorrer do dia torna difícil prever com exatidão o número de atendentes necessários a cada período.

Atualmente, a Telepar executa, uma vez por mês, um programa computacional, desenvolvido por funcionários da própria empresa, para estimar o número de atendentes para cada hora do dia usando os dados de uma determinada semana. A pessoa encarregada de prever o número de atendentes para cada semana utiliza esses dados e o número de chamadas da semana anterior para estimar o número de atendentes necessários para cada hora da semana seguinte, sem utilizar qualquer método de otimização. A seguir, o problema é designar os atendentes disponíveis de forma a atender à demanda encontrada. Esse problema vem sendo resolvido manualmente e a pessoa responsável pela designação vem despendendo muito tempo para chegar a uma solução, que nem sempre é a melhor.

A central de atendimento da empresa conta com 66 terminais telefônicos (troncos) para atendimento aos usuários. O contrato com a Telepar exige determinado grau de atendimento (GA), que é a razão (em porcentagem) entre número de chamadas atendidas em até 10 segundos e o total de chamadas recebidas e atendidas. Durante a realização do presente trabalho, a exigência era de um GA de 97%. Por esse motivo, a empresa deve apresentar um quadro de atendentes que sempre consiga o GA estipulado. Cada 1% a mais, além dos 97%, garantem à empresa 1% a mais no faturamento mensal. Logo, quanto maior o GA, maior o faturamento. Outro fator que pode aumentar ainda mais o faturamento é a otimização dos horários dos atendentes de forma a atender à demanda com o mínimo de pessoal.

Assim, o principal objetivo deste trabalho é, por meio de técnicas de otimização da pesquisa operacional, apresentar uma metodologia que vise otimizar os horários dos atendentes de centrais telefônicas, de forma a atender prontamente os clientes, com mínimo custo, considerando, ainda, as preferências dos funcionários em relação aos horários de trabalho. Os objetivos específicos são:

  • Desenvolver, com o uso de programação computacional, um simulador que retrate o funcionamento de uma central telefônica de atendimento a clientes, com o objetivo de encontrar o número aproximado de atendentes considerando o número de chamadas em períodos de meia hora.

  • Desenvolver um programa computacional que construa um modelo de Programação Inteira para obter as melhores jornadas, de forma a minimizar custos.

  • Usar o algoritmo do Matching de peso máximo para designar os funcionários às jornadas, visando a maior satisfação dos atendentes.

3. Dados utilizados

O problema abordado neste trabalho utilizou alguns dados fornecidos pela empresa e outros gerados durante o desenvolvimento da pesquisa. Foram utilizados dados de cinco dias úteis de duas semanas consecutivas.

A empresa forneceu tabelas para os cinco dias, contendo as seguintes colunas:

  • Horário: marcado por intervalos de hora em hora.

  • Número de chamadas: número de chamadas recebidas.

  • TMO: tempo médio de operação (atendimento ao cliente).

  • Número de atendentes: número de atendentes trabalhando no horário correspondente.

  • GA: grau de atendimento, ou seja, a razão (em porcentagem) entre a quantidade de chamadas atendidas em até 10 segundos e o total de chamadas recebidas e atendidas, conforme mencionado anteriormente.

    As chamadas que recebem o "tom de ocupado" não são detectadas pelo sistema e, portanto, não foram consideradas.

Das tabelas relativas aos cinco dias da primeira semana foi extraído o maior número de chamadas para cada hora, dados apresentados na Tabela 1. Procurou-se dimensionar o número de chamadas pelo pior caso, com o intuito de garantir o número de atendentes necessários para qualquer dia da semana e, com isso, obter melhor GA para a empresa. Os atendentes são contratados para cumprir jornadas de 3, 4 ou 6 horas diárias, de acordo com a necessidade da empresa, e devem cumprir seis jornadas por semana, sendo cinco em dias úteis e uma no sábado ou no domingo. O salário dos atendentes de 3 horas era de R$ 136,00, os de 4 horas, R$ 180,00, e os de 6 horas, R$ 306,00. Eles foram consultados quanto à preferência por horários por meio de um questionário. Cada qual enumerou até dez horários pela ordem de preferência. Nesse questionário também constou o horário do atendente na época do estudo.

A Tabela 2 mostra os horários utilizados pela empresa para dias úteis, na semana analisada, com horário de início e número de atendentes de cada tipo.

Como a duração de cada chamada, individualmente, não pôde ser obtida pelo sistema utilizado na Telepar, foram, então, cronometradas 20 chamadas de 20 atendentes diferentes, totalizando 400 chamadas durante a primeira semana em estudo. A média de duração das chamadas coletadas foi de 32,7 segundos. O valor mínimo encontrado foi de 2 segundos e o máximo, 170 segundos, portanto, o intervalo entre o mínimo e o máximo foi de 168 segundos.

4. Metodologia adotada, implementação computacional e obtenção dos resultados

A metodologia adotada para o desenvolvimento do trabalho consta de três fases distintas.

  • Fase I: simulação da central de atendimento.

  • Fase II: obtenção do conjunto de jornadas para os atendentes.

  • Fase III: designação das jornadas aos atendentes.

Para implementar o trabalho foi desenvolvido o programa computacional Teleoti (Otimização de Horários de Telefonistas), empregando a linguagem computacional Visual Basic®, com aplicação do programa Microsoft Visual Basic, da Microsoft Corp., versão 5.0.

Esse programa compreende as seguintes tarefas:

1. Executa o simulador que calcula o número de atendentes necessários para cada meia hora do dia.

2. Gera o modelo de Programação Linear Inteira resolvido pelo software LINDO (Linear, Integer and Discrete Optimizer), versão 5.0, a fim de obter as melhores jornadas de trabalho, de forma a atender à demanda de chamadas.

3. Usando o algoritmo do Matching de peso máximo, encontra-se a designação dos horários para cada um dos atendentes.

4.1 Simulação da central de atendimento (Fase I)

Na Fase I foi desenvolvido um simulador da central telefônica para calcular o número de atendentes necessários para cada meia hora do dia.

Para construir o simulador foram necessários métodos de geração de números aleatórios para o momento de chegada das chamadas telefônicas e tempo de duração correspondente para cada uma dessas chamadas.

Um teste preliminar a esse trabalho foi realizado para garantir que o tempo entre chegadas fosse exponencialmente distribuído. Ainda, reforçando essa hipótese, Lapin (1988), no estudo da teoria das filas, afirma que, em geral, o tempo entre chegadas de clientes em uma fila obedece a uma distribuição exponencial. Os momentos de chegada das chamadas na central telefônica foram gerados aleatoriamente, usando a distribuição uniforme, pois, segundo Wagner (1986), supondo haver n chegadas em um intervalo de tempo (0, T), se os tempos entre chegadas forem distribuídos exponencialmente, então os n tempos de chegada serão independentes e uniformemente distribuídos no intervalo (0, T).

Um estudo estatístico com as 400 durações de chamadas coletadas foi realizado para verificar se os dados se ajustariam a alguma distribuição de probabilidade conhecida; a que melhor se ajustou foi a Gamma, com erro quadrático de 0,010152 e resultado para o teste de ajuste de qui-quadrado com p < 0,005.

Em geral, em simulações, as variáveis formam uma seqüência de números aleatórios que seguem distribuição contínua e não uniforme. Muitos métodos para gerar esses números são fundamentados em seqüências de números aleatórios distribuídos uniformemente. Os mais utilizados empregam métodos conhecidos, como transformações de probabilidade integral. O método descrito por Gordon (1978) e conhecido por transformação inversa é enunciado pelo seguinte teorema: "Se Ui (i = 1, 2,...) são variáveis aleatórias, independentes e distribuídas uniformemente no intervalo de 0 a 1, e F–1(x) é a função inversa da função de distribuição acumulada para a variável aleatória X, então as variáveis aleatórias definidas por Xi = F–1(Ui) são números aleatórios da variável X".

Assim, para produzir números aleatórios com determinada distribuição, a inversa da função da distribuição acumulada pode ser calculada com uma seqüência de números aleatórios distribuídos uniformemente, no intervalo de 0 a 1. Entretanto, a distribuição acumulada expressa na forma matemática pode não ser facilmente inversível quando formada por termos algébricos e exponenciais. Nesse caso, métodos numéricos computacionais podem ser usados.

Gordon (1978) descreve um método numérico computacional para gerar números aleatórios, representando a duração de chamadas telefônicas, o qual foi aplicado neste trabalho. Primeiramente foi encontrada a distribuição de freqüência da duração das 400 chamadas, mostradas na Tabela 3. Essa distribuição obtida para essa população, assim como os valores do TMO, são próximos aos obtidos para os dados da Tabela 1.

O gráfico da freqüência acumulada, associado à Tabela 3, pode ser observado na Figura 1, a seguir.


Graficamente, o processo para gerar números aleatórios para duração de chamadas consiste em tomar números aleatórios distribuídos uniformemente para a entrada de dados, designados por Ui, e extrair a saída xi(duração de chamada). Para calcular essas durações sem o uso do gráfico, constrói-se a Tabela 4, em que a primeira coluna é a freqüência acumulada (Ui), a segunda, a duração de chamada (xi), ambas extraídas da Tabela 3, e a última, a dos coeficientes de inclinação (ai) dos segmentos de reta que unem os pontos (Ui, xi), calculados a partir da equação 1:

Para obter uma duração de chamada, gera-se um número aleatório U entre 0 e 1 e verifica-se em qual intervalo da coluna (Ui) esse número se encontra. Usa-se, então, a equação 2 para encontrar x (duração da chamada), sendo i correspondente à linha que possui Ui < U.

Se, por exemplo, U = 0,6174, então Ui= 0,5675, xi= 30 e ai= 58,823529, o valor de x será:

Para execução do simulador, foram utilizados os seguintes dados:

  • número de chamadas previstas para cada meia hora do dia (n);

  • TMO, previsto e definido em contrato entre as empresas;

  • GA desejado, também previsto e definido em contrato entre as empresas;

  • porcentagem adicional de atendentes (segurança) para obter uma folga a fim de cobrir intervalos de descanso obrigatórios, saídas e eventuais faltas de funcionários.

Os passos para execução do simulador são os seguintes:

1. Leitura dos dados.

2. Cálculo do número inicial de atendentes para cada meia hora: multiplica-se o TMO por n e divide-se por 1.800.

3. Geração de n números aleatórios em distribuição uniforme, para simular o momento de chegada das chamadas na central telefônica.

4. Colocação dos números para a chegada das chamadas em ordem crescente.

5. Geração de n números aleatórios para a duração das chamadas (obtidos pela equação 2, usando os dados da Tabela 4).

6. O simulador toma a primeira chamada e a correspondente duração e a designa ao primeiro atendente, procedendo dessa forma até que todos os atendentes tenham recebido sua primeira chamada. Depois disso, a próxima chamada é destinada ao atendente que está a mais tempo ocioso. Se não houver atendentes ociosos, a chamada será destinada ao primeiro atendente que desocupar. Se o cliente esperar mais do que 10 segundos para ser atendido, a chamada será interceptada e um contador a registrará. Todos os números gerados para chamadas e duração de chamadas são utilizados e, após o término, calcula-se o GA. Se o resultado for um GA maior ou igual ao requisitado, o simulador vai para o passo 7. Caso isso não ocorra, o número de atendentes inicial é acrescido de uma unidade e o simulador volta ao passo 3.

7. O número de atendentes encontrado é acrescido da porcentagem adicional, aproximando, quando necessário, para o inteiro maior do que o número encontrado.

8. O simulador volta ao passo 1 para encontrar o número de atendentes para a próxima meia hora, se houver. Quando o simulador termina o processo para as 24 horas, o resultado do número necessário de atendentes para cada meia hora é registrado.

Para calcular o número de atendentes necessários a cada meia hora do dia foi construída a Tabela 5, a partir dos dados da Tabela 1. Para o cálculo inicial do número de atendentes pelo simulador foi utilizado o TMO de 35 segundos, exigido pelo contrato na semana analisada. O GA exigido em contrato era de 97%, conforme mencionado.

Os números de chamadas da Tabela 5 foram carregados no simulador. A seguir, foi feita a escolha pelo GA de 99%, pois na semana analisada esse foi o grau médio de atendimento obtido pela empresa. Para encontrar o número de atendentes final, a porcentagem acrescentada foi de 10%, a mesma utilizada pela empresa para compensar intervalos de descanso, saídas eventuais e faltas. Para obter o resultado, o simulador foi executado por 100 vezes e a média desses resultados gerou o resultado final do número de atendentes necessários a cada 30 minutos do dia (demanda). A Tabela 6 apresenta esses resultados.

4.2 Obtenção do conjunto de jornadas de trabalho (Fase II)

Obtido o número necessário de atendentes para cada meia hora com o uso do simulador, procura-se a distribuição ótima desses atendentes no decorrer do dia, lembrando que, para a empresa estudada, há três tipos possíveis de jornadas de trabalho (quanto à duração): 3, 4 e 6 horas diárias.

Para resolver essa fase do problema foi construído um modelo matemático de Programação Linear Inteira (Dantzig, 1963; Zionts, 1974), que procura a melhor distribuição de horários com o objetivo de minimizar gastos com salários de atendentes. As restrições consideradas no modelo matemático são:

  • número de atendentes necessários (demanda) para cada meia hora;

  • número de atendentes de cada tipo disponível na empresa;

  • integralidade das variáveis.

A notação utilizada no modelo matemático foi a seguinte:

  • i – tempo de duração da jornada de trabalho, i = 3, 4 ou 6 horas;

  • l j – horário de início, j = 1, 2,..., 96 (a relação entre o horário e seu número pode ser encontrada na Tabela 7);

  • Dk – número necessário de atendentes a cada 30 minutos das 24 horas;

  • NAi – número de atendentes de i horas diárias disponíveis na empresa;

  • Si – salário do atendente de i horas diárias;

  • Xij – número de jornadas com duração de i horas e iniciando no horário j, necessariamente representado por números inteiros não negativos.

Dessa forma, o modelo matemático fica estabelecido como segue:

sujeito a:

Nesse modelo, a função objetivo apresentada em (3) minimiza os gastos com salários dos atendentes, considerando os três tipos de jornadas e a disponibilidade para o início do trabalho a cada 15 minutos do dia. A restrição (4) considera que o número total de atendentes trabalhando no período das 0 às 15 h.) deve ser maior ou igual à demanda desse período (D1). Da mesma forma, tem-se na restrição (5) que o número de atendentes trabalhando no período da 0h15 à 0h30 deve ser maior ou igual à demanda desse período (D1). Vale salientar que, para esses dois períodos, as demandas são as mesmas, pelo fato de se conhecer apenas as demandas a cada 30 minutos do dia. De forma análoga, tem-se as restrições (6) a (98). Já as restrições (99) a (101) dizem respeito à disponibilidade de funcionários das jornadas de 3, 4 e 6 horas diárias, respectivamente, obtida pelo questionário. Finalmente, a restrição (102) impõe a condição de integralidade as 288 variáveis do problema. Esse modelo foi resolvido pelo software LINDO.

O problema foi inicialmente resolvido por Programação Linear, sem considerar as variáveis inteiras e, em seguida, por Programação Linear Inteira. O resultado considerado para o problema de Programação Inteira não foi o ótimo. A tolerância para o resultado obtido por Programação Inteira foi de, no máximo, 0,2% a mais sobre o valor da função objetivo encontrado por Programação Linear.

O resultado para o Problema de Programação Linear Inteira encontrado pelo software LINDO foi o seguinte:

Valor da função objetivo: R$ 30.684,00

Valor das variáveis diferentes de zero, contidas na Tabela 8: X3,35 = 1; X3,37 = 1; X3,45 = 6; X3,51 = 1; X3,53 = 3; X3,61 = 7; X3,65 = 2; X4,25 = 1; X4,29 = 8; X4,33 = 9; X4,53 = 5; X4,57 = 8; X4,61 = 3; X4,65 = 5; X4,69 = 5; X4,73 = 1; X4,81 = 7; X4,83 = 1; X4,85 = 2; X4,89 = 1; X6,1 = 1; X6,3 = 3; X6,25 = 2; X6,27 = 3; X6,33 = 4; X6,37 = 14; X6,41 = 9; X6,49 = 3; X6,51 = 2; X6,57 = 5; X6,61 = 1; X6,65 = 6; X6,69 = 3; X6,75 = 2.

4.3 Designação das jornadas de trabalho aos atendentes (Fase III)

Após a obtenção das melhores jornadas na Fase II, satisfazendo a demanda, deve-se, na Fase III, realizar a designação desses horários aos atendentes e, para isso, foi utilizado o algoritmo Matching de peso máximo, de Edmonds & Johnson (1970).

Esse algoritmo trata o problema de designação como caso particular de um problema de maximização de pesos para um grafo.

Resumidamente, o problema consiste em considerar um conjunto de vértices X e um conjunto de arcos A associados aos elementos de X. Pode-se considerar esses conjuntos como elementos de um grafo G(X, A), não direcionado, com pesos (ou custos) pi atribuídos aos arcos ai Î A.

Um Matching (que significa emparelhar ou formar pares) é um conjunto de pares de vértices de um grafo com pesos não nulos, de modo que cada vértice deve formar, no máximo, um par.

Assim, um Matching de um grafo G(X, A) é um subconjunto M do conjunto A de arcos de G, escolhidos de maneira que cada vértice é a extremidade de, no máximo, um arco de M, ou seja, não há arcos adjacentes em M (Christofides, 1975).

Encontrar um Matching M com peso máximo consiste em maximizar a soma dos pesos dos arcos pertencentes a M. Desse modo, o peso total é dado por:

No problema aqui abordado, utilizou-se um grafo bipartido, com o conjunto X de vértices dividido em dois conjuntos. O conjunto XA contém os vértices que representam os atendentes e XJ, as jornadas de trabalho.

O conjunto A contém os arcos aij, que unem os vértices dos elementos de XA aos de XJ. Para cada arco é definido um peso que leva em consideração a preferência de cada atendente para cada horário, respeitando, também, o tempo de empresa de cada atendente.

Como a formulação matemática para o problema do Matching de peso máximo não se mostra eficiente computacionalmente, por envolver um grande número de restrições, foi utilizado o algoritmo do Matching de peso máximo (Edmonds & Johnson, 1970; Siqueira, 1999) para programação nessa fase, fazendo uma adaptação para o problema de Matching de peso mínimo.

O conjunto de vértices XA foi composto por 21 atendentes de 3 horas, 58 de 4 horas e 70 de 6 horas; o conjunto XJ foi composto por 21 jornadas de 3 horas, 56 de 4 horas e 58 de 6 horas, encontradas na Fase II.

Os dados extraídos dos questionários preenchidos pelos atendentes, em relação à preferência por horários, foram utilizados para a construção de uma tabela de pesos da seguinte forma (Barboza, 2000):

  • Os mais antigos recebem peso um para sua data de admissão. Para cada mês a mais em relação aos mais antigos soma-se uma unidade ao peso.

  • O horário em que o atendente estava trabalhando na semana analisada e o primeiro na preferência recebem o peso igual ao da data de admissão. Para os horários seguintes, obedecendo a preferência, vão sendo adicionadas dez unidades até chegar ao último, que terá o maior peso.

  • Os horários para os quais os atendentes não podem ser designados receberam peso 999.

O peso 999 foi escolhido por ser eficiente no uso do algoritmo, impedindo que ocorra a designação para horários proibidos. Os outros pesos foram obtidos após vários testes, de forma a alcançar a eficiência desejada conforme a preferência dos atendentes, privilegiando os mais antigos na empresa e também os horários mais desejados. Se, por exemplo, dois atendentes desejam o mesmo horário, o mais antigo na empresa terá preferência.

O programa computacional que emprega o algoritmo do Matching foi executado e a designação dos atendentes de 3, 4 e 6 horas está nas Tabelas 9, 10 e 11, respectivamente. Nessas tabelas, a primeira coluna contém o código do atendente na empresa, a segunda, o horário para o qual foi designado e a terceira, o peso relativo ao atendente para o horário designado. Alguns dos atendentes ficaram sem horário, pois o número total de atendentes da central é maior do que o número de jornadas geradas na solução da Fase II, apontando, dessa forma, que há quantidade excessiva de atendentes na empresa.

5. Análise dos resultados e conclusões

A Tabela 12 mostra que o simulador obteve demanda maior para alguns horários e menor para outros, se comparados à previsão feita pela empresa. Essa variação ocorreu porque a pessoa encarregada de prever o número de atendentes para suprir a demanda de chamadas não utilizava qualquer método de otimização. Por esse motivo, em determinados horários, na semana analisada, havia excesso de atendentes, enquanto em outros o número era insuficiente, causando decréscimo na qualidade do atendimento ao usuário. Mesmo tendo sido usado neste trabalho o maior número de chamadas para cada hora do dia, percebese que o simulador distribuiu os atendentes no decorrer do dia da maneira mais adequada, garantindo para a empresa um GA de 99%, com menor número de atendentes, obtendo, assim, resultado melhor que o da empresa.

Os resultados obtidos na Fase II com a resolução do modelo matemático de Programação Linear Inteira, utilizando os horários disponíveis pelos atendentes e a demanda gerada pela Fase I, geraram redução de custos de 11,6% para a semana analisada, com 2 atendentes de 4 horas e 12 atendentes de 6 horas a menos.

E, finalmente, a Fase III designou os horários obtidos na Fase II, privilegiando os atendentes mais antigos e seus horários preferidos.

Enfim, a metodologia utilizada, que consta das três fases apresentadas, todas utilizando técnicas de pesquisa operacional, pode auxiliar de forma significativa na construção e na designação de horários aos atendentes, pois o programa computacional apresentado despende, em média, 15 minutos para gerar a solução (executando as três fases). As vantagens para a empresa, além de diminuir os custos e aumentar o faturamento com a obtenção do número ótimo de atendentes, sem ocasionar ociosidade ou escassez, são fornecer atendimento mais eficaz para o usuário e gerar maior satisfação dos funcionários em relação a seus horários de trabalho, além de automatizar todo o processo.

  • BARBOZA, A. O. Aplicação de algumas técnicas da pesquisa operacional na otimização de horários de atendentes em central telefônica. 2000. Dissertação (Mestrado) UFPR, Curitiba.
  • CARRARESI, P.; GALLO, G. A multilevel bottleneck assignment approach to the bus drivers. European Journal of Operation Research, v. 16, p. 163-173, 1984.
  • CHRISTOFIDES, N. Graph theory, an algorithmic approach. New York: Academic Press, 1975.
  • DANTZIG, G. B. Linear programming and extensions. Princenton: Princenton University Press, 1963.
  • EDMONDS, J.; JOHNSON, E. L. Matching: a well solved class of integer linear programs, combinatorial structures and their applications. New York: Gordon and Breach, 1970.
  • GAMACHE, M.; SOUMIS, F.; MARQUIS, G.; DESROSIERS, J. A column generations approach for large-scale aircrew rostering problems. Operations Research, v. 47, n. 2, p. 247-263, Mar.- Apr. 1999.
  • GORDON, G. System simulation. Prentice-Hall, Englewood Cliffs, 1978.
  • GRAVES, G. W.; McBRIDE, R. D.; GERSHKOFF, I.; ANDERSON, D.; MAHIDHARA, D. Flight crew scheduling. Management Science, v. 39, n. 6, p. 736-745, Jun. 1993.
  • HOFFMAN, K. L.; PADGERG, M. Solving airline crew scheduling problems by branch-and-cut. Management Science, v. 39, n. 6, p. 657-682, Jun. 1993.
  • JAUMARD, B.; SEMET, F.; VOVOR, T. A generalized linear programming model for nurse scheduling. European Journal of Operational Research, v. 107, p. 1-18, 1998.
  • LAPIN, L. Quantitative methods for business decisions with cases. New York: Harcourt Brace Jovanivich Publishers, 1988.
  • SIQUEIRA, P. H. Aplicação do algoritmo do matching na construção de escalas de trabalho para motoristas e cobradores de ônibus. 1999. Dissertação (Mestrado) UFPR, Curitiba.
  • THOMPSON, G. M. Assigning telephone operators to shifts at new brunswick telephone company. Interfaces, v. 27, p. 1-11, Jul.-Aug. 1997.
  • WAGNER, H. M. Pesquisa operacional. São Paulo: Prentice-Hall do Brasil, 1986.
  • ZIONTS, S. Linear and integer programming. New Jersey: Prentice-Hall International (series in management), Englewood Cliffs, 1974.

Datas de Publicação

  • Publicação nesta coleção
    17 Jul 2003
  • Data do Fascículo
    Abr 2003
Universidade Federal de São Carlos Departamento de Engenharia de Produção , Caixa Postal 676 , 13.565-905 São Carlos SP Brazil, Tel.: +55 16 3351 8471 - São Carlos - SP - Brazil
E-mail: gp@dep.ufscar.br