Amostragem de Wang-Landau: mudanças entre as edições
Sem resumo de edição |
Sem resumo de edição |
||
Linha 1: | Linha 1: | ||
O algorítmo de amostragem de Wang-Landau é um método de amostragem para simulações de Monte Carlo introduzido por F.Wang e D.P Landau em 2001 que apresenta diversas vantagens sobre outros métodos para sistemas de spins. Dentre eles podemos citar o algoritmo de Metropolis, o algoritmo de ''clustering'' de Wolff, ou em um modelamento de ''ensamble'' multi-canônico. Nestes dois últimos métodos são utilizados métodos de repesagem de histogramas que são limitados em sistemas grandes devido as baixa qualidade estatística nas asas do histograma. | O algorítmo de amostragem de Wang-Landau é um método de amostragem para simulações de Monte Carlo introduzido por F.Wang e D.P Landau em 2001 que apresenta diversas vantagens sobre outros métodos para sistemas de spins. Dentre eles podemos citar o algoritmo de Metropolis, o algoritmo de ''clustering'' de Wolff, ou em um modelamento de ''ensamble'' multi-canônico. Nestes dois últimos métodos são utilizados métodos de repesagem de histogramas que são limitados em sistemas grandes devido as baixa qualidade estatística nas asas do histograma. | ||
Dentro deste contexto, o algoritmo Wang-Landau promete resolver problemas encontrados em amostragens convencionais como o ''critical slowing down'' para temperaturas próximas da temperatura critica <math>T_c</math> utilizando-se de caminhadas aleatórias controladas para mapear a densidade de estados <math>g(E)</math> de um sistema, sem fazer uso de qualquer repesagem de histogramas. | |||
A maioria dos algoritmos de amostragem convencionais geram uma distribuição canônica não normalizada | |||
<math> P(E,T) = g(E)e^{-E/K_BT}, </math> | |||
para uma determinada temperatura $T$, Geralmente estas distribuições são estreitas e se faz necessário múltiplas simulações para obter algum parâmetro termodinâmico para uma distribuição significantemente grande de temperaturas. | |||
Como <math>g(E)</math>não depende de temperatura do sistema, se pudermos encontrá-lo para todo <math>E</math>, podemos encontrar a função de partição | |||
<math> Z(T) = \sum_E g(E)e^{-E/K_BT}, </math> | |||
e o sistema esta essencialmente resolvido, uma vez que grande parte dos parâmetros termodinâmicos podem ser derivados de $Z$. Além disso, a amostragem de Wang-Landau é provada ser útil em diversas aplicações como o antiferromagneto de Potts, sistemas de spins aleatórios, sistemas quânticos, etc... . | |||
==Descrição do algoritmo de Wang Landau== | |||
Descreveremos o funcionamento do algoritmo de Wang-Landau num sistema de spins clássicos de 2 estados com valores discretos de energia e sem campo magnético. Portanto quando nos referirmos a <math>g(E)</math> como densidade de estados, interpretamos como o número de estados com energia E. | |||
A amostragem de Wang-Landau faz caminhadas aleatórias no espaço de energia mudando os estados de spins aleatoriamente selecionados, porém esta mudança só é aceita com probabilidade proporcional a reciproca da densidade de estados. Durante a caminhada também se acumula o número de vezes que uma energia é visitada durante a caminhada <math>H(E)</math>, isto é, ao visitarmos a energia <math>E_1</math> faz-se a atualização da variável <math> H(E_1) \rightarrow H(E_1) + 1 </math>. Por outro lado, a atualização da densidade de estados <math>g(E_1)</math> se da por um fator multiplicativo <math>f</math> (<math> g(E_1) \rightarrow g(E_1) \times f </math>) controlado ao longo da simulação para que seja muito próximo de 1 ao final das caminhadas. | |||
Podemos descrever os passos do algoritmo da seguinte maneira: | |||
# Inicializamos as densidades de energias com <math>g(E) = 1</math> para todo <math>E</math>, da mesma forma <math>H(E) = 0</math> para todo <math>E</math>. | |||
# Inicializamos <math>f = f_0 = e \approx 2.71828</math> e um sistema <math>L\times L</math> de spins de valor 1 e -1 aleatoriamente distribuídos. | |||
#*O valor de <math>f</math> é arbitrário e deve ser escolhido não muito pequeno, pois irá fazer com que a simulação demore muito tempo para explorar diversas energias, por outro lado se escolhido muito grande, levará a erros estatísticos significativos. | |||
# Começamos a caminhada inicial escolhendo aleatoriamente um dos spins e mudando o seu estado. | |||
# Se denotamos <math>E_1</math> como a energia antes da mudança de estado do spin selecionado e <math>E_2</math> como a energia após, aceitamos este novo estado com a seguinte probabilidade: <math>P(E_1 \rightarrow E_2) = \text{min}\left(\frac{g(E_1)}{g(E_2)},1\right)</math> | |||
#*Se aceitarmos a mudança de estado do spin, fazemos as atualizações de <math>g(E)</math> e <math>H(E)</math> como <math>g(E_2) \rightarrow g(E_2) \times f</math> e <math>H(E_2) \rightarrow H(E_2) +1</math> respectivamente. | |||
#*Se não aceitarmos a mudança de estado do spin, fazemos as atualizações de <math>g(E)</math> e <math>H(E)</math> como <math>g(E_1) \rightarrow g(E_1) \times f</math> e <math>H(E_1) \rightarrow H(E_1) +1</math> respectivamente, de maneira a recontar o estado <math>E_1</math>. | |||
#*Destaca-se que em ambos os casos usamos <math>\ln(g(E)) = \rightarrow \ln(g(E)) + \ln(f)</math>, pois ao longo da simulação acabamos usando números muito grandes. | |||
#Faz-se esta caminhada aleatória nos diferentes estados do sistema até que o histograma $H(E)$ esteja aproximadamente plano. O critério para decidir se um histograma está plano é arbitrário. Para um hamiltoniano Ising 2D este critério pode ser definido tão alto quanto 95\%(i.e. todos os valores de $H(E)$ devem ser pelo menos 95\% de $\left<H(E)\right>$), porém valores mais altos que isso podem resultar no programa nunca identificando o histograma como plano. | |||
#Checa-se se $H(E)$ está plano a cada 10000 passos MC. Quando está plano, podemos dizer que todos os estados foram visitados uma quantidade de vezes aproximadamente igual e a densidade de estados $g(E)$ converge ao valor real com precisão da ordem de $f$. | |||
#Reduz-se o fator $f$ da seguinte maneira $f_1 \rightarrow \sqrt{f_0}$, reinicia-se o histograma $H(E) = 0$ e recomeça-se a caminhada aleatória com este novo fator $f$.(Todos os parâmetros não mencionados neste passo permanecem intocados.) | |||
#Continuamos executando os passos VI-VIII reduzindo o fator $f$ segundo a seguinte expressão $f_{i+1} = \sqrt{f_{i}}$ | |||
#Encerra-se a simulação quando $f_{final}$ estiver da ordem do erro desejado. Claro que $f_{final}$ pode ser escolhido arbitrariamente pequeno, mas sempre com um certo limite razoável ($10^{-6}-10^{-8}$), ou a simulação pode tomar tempos não razoáveis para completar. |
Edição das 11h35min de 17 de outubro de 2022
O algorítmo de amostragem de Wang-Landau é um método de amostragem para simulações de Monte Carlo introduzido por F.Wang e D.P Landau em 2001 que apresenta diversas vantagens sobre outros métodos para sistemas de spins. Dentre eles podemos citar o algoritmo de Metropolis, o algoritmo de clustering de Wolff, ou em um modelamento de ensamble multi-canônico. Nestes dois últimos métodos são utilizados métodos de repesagem de histogramas que são limitados em sistemas grandes devido as baixa qualidade estatística nas asas do histograma. Dentro deste contexto, o algoritmo Wang-Landau promete resolver problemas encontrados em amostragens convencionais como o critical slowing down para temperaturas próximas da temperatura critica utilizando-se de caminhadas aleatórias controladas para mapear a densidade de estados de um sistema, sem fazer uso de qualquer repesagem de histogramas.
A maioria dos algoritmos de amostragem convencionais geram uma distribuição canônica não normalizada
para uma determinada temperatura $T$, Geralmente estas distribuições são estreitas e se faz necessário múltiplas simulações para obter algum parâmetro termodinâmico para uma distribuição significantemente grande de temperaturas. Como não depende de temperatura do sistema, se pudermos encontrá-lo para todo , podemos encontrar a função de partição
e o sistema esta essencialmente resolvido, uma vez que grande parte dos parâmetros termodinâmicos podem ser derivados de $Z$. Além disso, a amostragem de Wang-Landau é provada ser útil em diversas aplicações como o antiferromagneto de Potts, sistemas de spins aleatórios, sistemas quânticos, etc... .
Descrição do algoritmo de Wang Landau
Descreveremos o funcionamento do algoritmo de Wang-Landau num sistema de spins clássicos de 2 estados com valores discretos de energia e sem campo magnético. Portanto quando nos referirmos a como densidade de estados, interpretamos como o número de estados com energia E. A amostragem de Wang-Landau faz caminhadas aleatórias no espaço de energia mudando os estados de spins aleatoriamente selecionados, porém esta mudança só é aceita com probabilidade proporcional a reciproca da densidade de estados. Durante a caminhada também se acumula o número de vezes que uma energia é visitada durante a caminhada , isto é, ao visitarmos a energia faz-se a atualização da variável . Por outro lado, a atualização da densidade de estados se da por um fator multiplicativo () controlado ao longo da simulação para que seja muito próximo de 1 ao final das caminhadas.
Podemos descrever os passos do algoritmo da seguinte maneira:
- Inicializamos as densidades de energias com para todo , da mesma forma para todo .
- Inicializamos e um sistema de spins de valor 1 e -1 aleatoriamente distribuídos.
- O valor de é arbitrário e deve ser escolhido não muito pequeno, pois irá fazer com que a simulação demore muito tempo para explorar diversas energias, por outro lado se escolhido muito grande, levará a erros estatísticos significativos.
- Começamos a caminhada inicial escolhendo aleatoriamente um dos spins e mudando o seu estado.
- Se denotamos como a energia antes da mudança de estado do spin selecionado e como a energia após, aceitamos este novo estado com a seguinte probabilidade:
- Se aceitarmos a mudança de estado do spin, fazemos as atualizações de e como e respectivamente.
- Se não aceitarmos a mudança de estado do spin, fazemos as atualizações de e como e respectivamente, de maneira a recontar o estado .
- Destaca-se que em ambos os casos usamos , pois ao longo da simulação acabamos usando números muito grandes.
- Faz-se esta caminhada aleatória nos diferentes estados do sistema até que o histograma $H(E)$ esteja aproximadamente plano. O critério para decidir se um histograma está plano é arbitrário. Para um hamiltoniano Ising 2D este critério pode ser definido tão alto quanto 95\%(i.e. todos os valores de $H(E)$ devem ser pelo menos 95\% de $\left<H(E)\right>$), porém valores mais altos que isso podem resultar no programa nunca identificando o histograma como plano.
- Checa-se se $H(E)$ está plano a cada 10000 passos MC. Quando está plano, podemos dizer que todos os estados foram visitados uma quantidade de vezes aproximadamente igual e a densidade de estados $g(E)$ converge ao valor real com precisão da ordem de $f$.
- Reduz-se o fator $f$ da seguinte maneira $f_1 \rightarrow \sqrt{f_0}$, reinicia-se o histograma $H(E) = 0$ e recomeça-se a caminhada aleatória com este novo fator $f$.(Todos os parâmetros não mencionados neste passo permanecem intocados.)
- Continuamos executando os passos VI-VIII reduzindo o fator $f$ segundo a seguinte expressão $f_{i+1} = \sqrt{f_{i}}$
- Encerra-se a simulação quando $f_{final}$ estiver da ordem do erro desejado. Claro que $f_{final}$ pode ser escolhido arbitrariamente pequeno, mas sempre com um certo limite razoável ($10^{-6}-10^{-8}$), ou a simulação pode tomar tempos não razoáveis para completar.