Foram realizadas reuniões e discussões com a equipe da Polícia Militar de Alagoas para entender o método de patrulhamento e desenvolver uma modelagem matemática satisfatória para o problema. A definição dos pontos quentes foi modelada de acordo com o trabalho de Koper (1995), onde cada ponto quente é centrado em uma esquina e sua pontuação cobre as pontuações de todas as esquinas visíveis e em menos de 250 metros de raio. A definição do subconjunto de pontos quentes se dá pelo problema de Conjunto Dominante.
Sejam
- As rotas não devem exceder o tempo
$L$ . - Nenhum vértice pode ser revisitado em um intervalo menor que
$T_{prot}$ , nem por uma viatura distinta. - Cada viatura pode passar ou parar por 15 minutos, recebendo recompensa maior em caso de paradas.
O Orienteering Problem (OP) foi provado ser
- Certifique-se de ter o CPLEX instalado e configurado corretamente no seu sistema.
- Tenha o compilador
g++
instalado.
Antes de compilar o programa, ajuste o caminho do CPLEX no arquivo Makefile
conforme necessário. Atualize a variável CPLEXPATH
para apontar para o diretório correto onde o CPLEX está instalado.
Exemplo de ajuste no Makefile
:
CPLEXPATH = /<caminho_para_cplex>
-
$G = (V, E)$ um grafo direcionado completo onde cada vértice$v \in V$ representa um esquina da cidade de Maceió. Cada vértice de$G$ tem um prêmio em função do instante que é visitado, os hot spots serão definidos como um subconjunto$V' \subset V$ de maneira que$V'$ é um Conjunto Dominante de$G$ , dessa forma, o problema será otimizar as rotas para o grafo$G'$ completo induzido de$V'$ . Sendo assim, o objetivo do problema é maximizar a soma dos prêmios coletados em cada vértice. -
Depósitos: 0 e
$f=n\phi$ -
$V={0, 1, \dots, n\phi +1 }$ -
$V^o={0*\phi+1, 1\phi +1, \dots, n\phi +1 }$ -
$V_i={v | i \in V^o; i < v < i+ \phi }$ -
$N={1, \dots, n\phi }$
As famílias de variáveis são:
-
$x_{uv}$ : binária que indica se o arco$uv$ faz parte da solução. -
$y_v$ : binária que indica se o vértice$v$ foi utilizado. -
$s_v$ : binária que indica se o vértice$v$ foi um ponto de parada na solução. -
$z_{uv}$ : O tempo de chegada no vértice$v$ se ele partiu do vértice$u$ , 0 caso o contrário.
O arquivo de instância deve conter os seguintes valores, um por linha:
- Número de pontos (
n
): O número total de pontos que precisam ser patrulhados. - Número de viaturas (
m
): O número de viaturas disponíveis para patrulhamento. - Tempo limite de cada rota (
L
): O tempo máximo permitido para cada rota de patrulhamento. - Tempo de proteção residual (
T_prot
): O tempo mínimo que deve passar antes que um ponto possa ser revisitado. - Velocidade das viaturas (
velocidade
): A velocidade com que as viaturas se movem.