Files
Empty folder.
README
Visualizador: https://manfredhair.github.io/ney-montanha/
Inteligência Artificial
Prof. Claudinei Dias (Ney)
Atividade - Simulated Annealing
Problema 1
Achar o melhor ponto de vista em uma montanha.
Aplicar o algoritmo de Simulated Annealing para encontrar o ponto mais alto (máximo) em um terreno simulado.
O terreno é representado por uma função matemática simples, com vários picos e vales.
Considere que você é um drone explorador tentando encontrar o ponto mais alto em uma cadeia de montanhas fictícia.
🧭 Orientações
-
Considere a função abaixo:
- O domínio da função é
x ∈ [-2, 2]. - Essa função possui vários picos (máximos locais).
- Seu objetivo é encontrar o ponto mais alto utilizando o algoritmo de Simulated Annealing.
- O domínio da função é
-
Implemente o algoritmo de Simulated Annealing em Python.
-
Defina:
- Temperatura inicial
T0 = 1.0 - Taxa de resfriamento
α = 0.95 - Número máximo de iterações por temperatura:
100
- Temperatura inicial
-
Crie uma função de vizinhança:
- Dado um ponto
x, gerex′ = x + ε, ondeε ∈ [-0.1, 0.1]
- Dado um ponto
-
Plote:
- A função
f(x) - O caminho percorrido pelo algoritmo (para visualizar a busca pelo máximo)
- A função
💡 Dicas
- Use
random.uniform(-0.1, 0.1)para gerarε - Use
math.exp(-delta/T)para a aceitação probabilística - Guarde o histórico dos pontos visitados para plotar depois
🧠 Raciocínio Intuitivo
Imagine você em uma exploração de montanhas (função f) tentando achar o vale mais fundo (mínimo global).
- No início (alta temperatura), você aceita subir montanhas (soluções piores) porque está animado (com energia).
- Conforme “esfria” (T diminui), você se torna mais seletivo e só aceita descidas ou pequenas subidas.
- Assim, você evita cair em mínimos rasos (mínimos locais) e tem chance de achar o melhor caminho até o vale profundo (mínimo global).
JavaScript