Configuração da Otimização
Antes de iniciar a otimização no Aimsun, você precisa configurar os parâmetros e a métrica de avaliação na plataforma web do OptFlow.
Login na Plataforma
Para começar a usar o OptFlow, você precisa acessar a plataforma web e fazer login com suas credenciais.
- Abra seu navegador e acesse https://optflow.fratar.com.br.
- Insira seu nome de usuário e senha nos campos apropriados.
- Clique no botão de login.
Após o login, você será direcionado para a interface principal onde poderá configurar e gerenciar seus estudos de otimização.
Aba "Otimização"
A aba "Otimização" é onde você define os parâmetros fundamentais que guiarão o processo de otimização do OptFlow.
Aqui estão os parâmetros que você precisa configurar:
Parâmetros Gerais
- n_iter: Define o número total de iterações que o algoritmo de otimização executará. Cada iteração corresponde a uma simulação completa no Aimsun. Um número maior de iterações permite uma exploração mais aprofundada do espaço de soluções, mas aumenta o tempo de processamento.
- seed: É um valor numérico usado para inicializar o gerador de números aleatórios. Usar a mesma
seed
garante que os resultados da otimização sejam reproduzíveis. Alterar aseed
levará a resultados diferentes, pois a sequência de números aleatórios (e, consequentemente, as amostras de parâmetros testadas) será distinta. - Direção de Otimização: Especifica se o objetivo da otimização é minimizar ou maximizar o valor da Fórmula de Desempenho (que será definida na próxima aba). Por exemplo, se a fórmula representa o tempo de atraso total, você escolheria "Minimizar". Se representa o fluxo total, escolheria "Maximizar".
Limites das Variáveis e Variação Máxima Absoluta
Nesta seção, você define os limites e as regras de variação para os principais parâmetros semafóricos que o OptFlow pode ajustar:
- cycle (Ciclo):
- Limites: Define o intervalo (valor mínimo e máximo) dentro do qual o tempo de ciclo semafórico pode variar durante a otimização.
- Variação Máxima: Restringe o quanto o ciclo pode se desviar do valor inicial definido no Aimsun. Se definido como 0, o tempo de ciclo permanecerá fixo durante a otimização.
- Passo: Determina o incremento mínimo (granularidade) para as variações do ciclo dentro dos limites definidos.
- Permitir Meio Ciclo: Uma opção avançada que permite ao otimizador considerar a metade do valor do ciclo para interseções individuais, mesmo que um ciclo global seja definido. Isso pode ser útil em cenários específicos onde a flexibilidade por interseção é desejada.
- offset (Defasagem):
- Limites: Define o intervalo (valor mínimo e máximo) para a variação da defasagem (offset) entre os planos semafóricos das interseções.
- Variação Máxima: Restringe o quanto a defasagem pode se desviar do valor inicial. Se 0, a defasagem não será otimizada.
- Passo: Determina o incremento mínimo para as variações da defasagem.
- phase_duration (Tempo de Verde):
- Limites: Define o intervalo (valor mínimo e máximo) para a variação do tempo de verde de cada grupo semafórico individualmente.
- Variação Máxima: Restringe o quanto o tempo de verde pode se desviar do valor inicial. Se 0, o tempo de verde daquele grupo não será otimizado.
- Passo: Determina o incremento mínimo para as variações do tempo de verde.
Parâmetros Específicos do Algoritmo (Sampler)
-
Sampler: Seleciona o algoritmo (ou estratégia de amostragem) que o OptFlow utilizará para explorar o espaço de soluções e encontrar os melhores parâmetros semafóricos. Cada sampler tem características, vantagens e desvantagens distintas:
- TPE (Tree-structured Parzen Estimator): Um algoritmo Bayesiano eficiente que modela a distribuição de probabilidade dos parâmetros.
- OptFlow (Otimização Bayesiana Baseada em Processo Gaussiano): Outro algoritmo Bayesiano que utiliza processos gaussianos para modelar a função objetivo.
- CMAES (Covariance Matrix Adaptation Evolution Strategy): Uma estratégia evolutiva robusta, eficaz em problemas complexos.
- HEBO (Heterogeneous Efficient Bayesian Optimization): Otimizado para problemas com muitas variáveis ou ruído.
- Random: Simplesmente testa configurações aleatórias dentro dos limites definidos. Útil como linha de base ou para exploração inicial.
- Hill Climbing: Uma meta-heurística que busca melhorias locais a partir de uma solução inicial.
- Simulated Annealing: Uma meta-heurística inspirada no processo de recozimento de metais, capaz de escapar de ótimos locais.
- Sequencial: Um modo especial que permite combinar diferentes samplers e regras de otimização em intervalos específicos de iterações (anteriormente chamado Fratar). Por exemplo, você pode usar um sampler exploratório nas primeiras iterações e um sampler mais focado em explotação nas iterações finais, ou fixar/liberar a otimização de certos parâmetros (ciclo, offset, verde) em diferentes fases.
Nota
A escolha do sampler pode impactar significativamente a qualidade dos resultados e o tempo de convergência. Consulte a seção Teoria para uma análise mais aprofundada de cada algoritmo. Cada sampler pode ter parâmetros internos adicionais que podem ser ajustados para otimizar seu desempenho.
### Salvando as Configurações de Otimização
Após definir todos os parâmetros desejados na aba "Otimização", clique no botão "Salvar Configurações" para armazenar suas escolhas. Essas configurações serão usadas quando você iniciar o processo de otimização a partir do Aimsun.
Aba "Performance" (Fórmula de Desempenho)
A aba "Performance" é crucial, pois é aqui que você define a métrica que o OptFlow usará para avaliar quão boa é uma determinada configuração semafórica. O algoritmo de otimização tentará encontrar os parâmetros que minimizem ou maximizem o valor desta fórmula, conforme definido na "Direção de Otimização".
Definindo a Fórmula
Você tem duas opções principais para definir a fórmula:
- Usar um Template: O OptFlow oferece uma seleção de fórmulas de desempenho pré-definidas ("Template de Fórmula") que cobrem objetivos comuns (ex: minimizar atraso, maximizar fluxo).
- Selecione um template na lista suspensa.
- Clique em "Aplicar Template". A fórmula correspondente será carregada no campo "Fórmula de Desempenho".
- Criar sua Própria Fórmula: Você pode escrever uma fórmula personalizada usando os indicadores de desempenho disponíveis e a sintaxe matemática padrão do Python.
Sintaxe da Fórmula
As fórmulas de desempenho seguem as regras padrão de expressões matemáticas do Python:
- Operações Básicas:
- Adição:
+
(ex:"Tempo de Viagem" + "Tempo de Atraso"
) - Subtração:
-
(ex:"Fluxo" - "Veículos Fora"
) - Multiplicação:
*
(ex:"Tempo de Viagem" * "Fluxo"
) - Divisão:
/
(ex:"Fluxo" / "Contagem de Entrada"
)
- Adição:
- Potências e Raízes:
- Potência:
**
(ex:"Tempo de Atraso" ** 2
para atraso ao quadrado) - Raiz Quadrada:
** 0.5
(ex:"Tempo de Atraso" ** 0.5
)
- Potência:
- Indicadores:
- Os nomes dos indicadores de desempenho (obtidos da simulação Aimsun) devem sempre estar entre aspas duplas (
"
). - Exemplos:
"Tempo de Atraso"
,"Fluxo"
,"Velocidade Média"
,"Número de Paradas"
.
- Os nomes dos indicadores de desempenho (obtidos da simulação Aimsun) devem sempre estar entre aspas duplas (
Indicadores Disponíveis
A interface exibe uma lista de todos os "Indicadores Disponíveis" que podem ser usados em sua fórmula. Estes são os dados que o Aimsun gera a cada simulação.
- Adicionar à Fórmula:
- Dê um clique duplo no nome do indicador na lista para adicioná-lo automaticamente ao final da fórmula atual.
- Arraste e solte o nome do indicador da lista para a posição desejada dentro do campo da fórmula.
Validando e Salvando a Fórmula
- Validar Fórmula: Antes de salvar, é altamente recomendável clicar no botão "Validar Fórmula". O sistema verificará a sintaxe da sua expressão e informará se há erros (ex: nomes de indicadores incorretos, parênteses desbalanceados).
- Salvar Fórmula: Após validar e confirmar sua fórmula, clique em "Salvar Fórmula" para armazená-la. Esta será a fórmula utilizada pelo otimizador.
Conselho sobre Ordens de Grandeza
Se sua fórmula combina indicadores com ordens de grandeza muito diferentes (ex: tempo de atraso em segundos e fluxo em veículos por hora), a otimização pode tender a priorizar o indicador com valores numericamente maiores. Para evitar isso, considere normalizar os indicadores antes de combiná-los. Uma técnica comum é dividir cada indicador pelo seu valor máximo esperado ou por um valor de referência, para que todos fiquem em uma escala semelhante (ex: entre 0 e 1).
Exemplo (conceitual): ( "Tempo de Atraso" / 100 ) + ( "Fluxo" / 2000 )