Skip to contents

Esta função realiza a alocação otimizada de Unidades de Coleta (UCs) a agências, com o objetivo de minimizar os custos totais de deslocamento e operação. A alocação leva em consideração restrições de capacidade das agências (em número de dias de coleta), custos de deslocamento (combustível, tempo de viagem e diárias), custos fixos das agências e custos de treinamento.

Usage

alocar_ucs(
  ucs,
  agencias = data.frame(agencia_codigo = unique(ucs$agencia_codigo),
    dias_coleta_agencia_max = Inf, custo_fixo = 0),
  custo_litro_combustivel = 6,
  custo_hora_viagem = 10,
  kml = 10,
  valor_diaria = 335,
  diarias_entrevistador_max = Inf,
  remuneracao_entrevistador = 0,
  n_entrevistadores_min = 1,
  dias_coleta_entrevistador_max,
  dias_treinamento = 0,
  agencias_treinadas = NULL,
  agencias_treinamento = NULL,
  distancias_ucs,
  distancias_agencias = NULL,
  adicional_troca_jurisdicao = 0,
  resultado_completo = FALSE,
  solver = "cbc",
  rel_tol = 0.02,
  max_time = 30 * 60,
  ...
)

Arguments

ucs

Um tibble ou data.frame contendo informações sobre as UCs, incluindo:

  • uc: Código único da UC.

  • agencia_codigo: Código da agência à qual a UC está atualmente alocada.

  • dias_coleta: Número de dias de coleta na UC.

  • viagens: Número de viagens necessárias para a coleta na UC.

agencias

Um tibble ou data.frame contendo informações sobre as agências selecionáveis, incluindo:

  • agencia_codigo: Código único da agência.

  • dias_coleta_agencia_max: Número máximo de dias de coleta que a agência pode realizar.

  • custo_fixo: Custo fixo associado à agência.

custo_litro_combustivel

Custo do combustível por litro (em R$). Padrão: 6.

custo_hora_viagem

Custo de cada hora de viagem (em R$). Padrão: 10.

kml

Consumo médio de combustível do veículo (em km/l). Padrão: 10.

valor_diaria

Valor da diária para deslocamentos (em R$). Padrão: 335.

diarias_entrevistador_max

Máximo de diárias que um entrevistador pode receber no período de referência. Padrão: Inf.

remuneracao_entrevistador

Remuneração por entrevistador para todo o período de referência. Padrão: 0.

n_entrevistadores_min

Número mínimo de entrevistadores por agência. Padrão: 1.

dias_coleta_entrevistador_max

Número de dias de coleta por entrevistador.

dias_treinamento

Número de dias/diárias para treinamento. Padrão: 0 (nenhum treinamento).

agencias_treinadas

(Opcional) Um vetor de caracteres com os códigos das agências que já foram treinadas e não terão custo de treinamento. Padrão: NULL.

agencias_treinamento

Código da(s) agência(s) onde o treinamento será realizado.

distancias_ucs

Um tibble ou data.frame com as distâncias entre UCs e agências, incluindo:

  • uc: Código da UC.

  • agencia_codigo: Código da agência.

  • distancia_km: Distância em quilômetros entre a UC e a agência.

  • duracao_horas: Duração da viagem em horas entre a UC e a agência.

  • diaria_municipio: Indica se é necessária uma diária para deslocamento entre a UC e a agência, considerando o município da UC.

  • diaria_pernoite: Indica se é necessária uma diária com pernoite para deslocamento entre a UC e a agência.

distancias_agencias

Um tibble ou data.frame com as distâncias entre as agências, incluindo:

  • agencia_codigo_orig: Código da agência de origem.

  • agencia_codigo_dest: Código da agência de destino.

  • distancia_km: Distância em quilômetros entre a agência de origem e a de destino.

  • duracao_horas: Duração da viagem em horas entre a agência de origem e a de destino.

adicional_troca_jurisdicao

Custo adicional quando há troca de agência de coleta. Padrão: 0.

resultado_completo

(Opcional) Um valor lógico indicando se deve ser retornado um resultado mais completo, incluindo informações sobre todas as combinações de UCs e agências. Padrão: FALSE.

solver

Qual ferramenta para solução do modelo de otimização utilizar. Padrão: "cbc". Outras opções: "glpk", "symphony" (instalação manual).

...

Opções adicionais para o solver.

Value

Uma lista contendo:

    • resultado_ucs_jurisdicao: Um tibble com as UCs e suas alocações originais (jurisdição), incluindo custos de deslocamento.

    • resultado_agencias_jurisdicao: Um tibble com as agências e suas alocações originais (jurisdição), incluindo custos fixos, custos de deslocamento e número de UCs alocadas.

    • resultado_ucs_otimo: Um tibble com as UCs e suas alocações otimizadas, incluindo custos de deslocamento.

    • resultado_agencias_otimo: Um tibble com as agências e suas alocações otimizadas, incluindo custos fixos, custos de deslocamento, número de UCs alocadas e número de entrevistadores.

    • ucs_agencias_todas (opcional): Um tibble com todas as combinações de UCs e agências, incluindo distâncias, custos e informações sobre diárias (retornado apenas se resultado_completo for TRUE).

    • otimizacao (opcional): O resultado completo da otimização (retornado apenas se resultado_completo for TRUE).