Amostragem de Wang-Landau: mudanças entre as edições

De Física Computacional
Ir para navegação Ir para pesquisar
Erickc (discussão | contribs)
Sem resumo de edição
Erickc (discussão | contribs)
Sem resumo de edição
Linha 104: Linha 104:
===Parâmetros Termodinâmicos===
===Parâmetros Termodinâmicos===
Uma vez que temos a densidade de estados, podemos calcular diversos parâmetros termodinâmicos, como a [https://pt.wikipedia.org/wiki/Energia_interna energia interna] <math>U(T)</math>, [https://pt.wikipedia.org/wiki/Calor_espec%C3%ADfico calor especifico] <math>C(T)</math>, [https://pt.wikipedia.org/wiki/Energia_livre_de_Helmholtz energia livre de Helmholtz] <math>F(T)</math> e [https://pt.wikipedia.org/wiki/Entropia entropia] <math>S(T)</math> através das seguintes equações:
Uma vez que temos a densidade de estados, podemos calcular diversos parâmetros termodinâmicos, como a [https://pt.wikipedia.org/wiki/Energia_interna energia interna] <math>U(T)</math>, [https://pt.wikipedia.org/wiki/Calor_espec%C3%ADfico calor especifico] <math>C(T)</math>, [https://pt.wikipedia.org/wiki/Energia_livre_de_Helmholtz energia livre de Helmholtz] <math>F(T)</math> e [https://pt.wikipedia.org/wiki/Entropia entropia] <math>S(T)</math> através das seguintes equações:
<div id="equações para parâmetros termodinâmicos">
       <math>U(T) = \frac{\sum_EEg(E)e^{-E/k_BT}}{\sum_Eg(E)e^{-E/k_BT}}</math>
       <math>U(T) = \frac{\sum_EEg(E)e^{-E/k_BT}}{\sum_Eg(E)e^{-E/k_BT}}</math>


Linha 111: Linha 112:


       <math>S(T) = \frac{U(T) - F(T)}{T}</math>
       <math>S(T) = \frac{U(T) - F(T)}{T}</math>
<\div>
Estes parâmetros termodinâmicos dependem apenas da temperatura uma vez que já foi encontrado a densidade de estados <math>g(E)</math>, o que contorna os problemas de ''critical slowing down'' na temperatura crítica pois a simulação não precisa ser refeita para cada uma das temperaturas, por consequência também dispensa a necessidade de repesagem de histogramas, contornando o problema de estatística fraca nas asas dos histogramas.
Estes parâmetros termodinâmicos dependem apenas da temperatura uma vez que já foi encontrado a densidade de estados <math>g(E)</math>, o que contorna os problemas de ''critical slowing down'' na temperatura crítica pois a simulação não precisa ser refeita para cada uma das temperaturas, por consequência também dispensa a necessidade de repesagem de histogramas, contornando o problema de estatística fraca nas asas dos histogramas.


Linha 126: Linha 128:
[[Arquivo: erickProbs.png|400px|thumb|center| Figura 2: A distribuição canônica <math>P(E,T) = g(E)e^{-E/K_BT}</math> em 3 temperaturas, incluindo a temperatura crítica <math>T_c</math> para o modelo de Ising 2D com <math>L = 16</math>.]]
[[Arquivo: erickProbs.png|400px|thumb|center| Figura 2: A distribuição canônica <math>P(E,T) = g(E)e^{-E/K_BT}</math> em 3 temperaturas, incluindo a temperatura crítica <math>T_c</math> para o modelo de Ising 2D com <math>L = 16</math>.]]


Fazendo uso das equações supracitadas, podemos calcular os parâmetros termodinâmicos para este sistema em função da temperatura quase que instantaneamente. Estes são ilustrados nas Figs. 3,4,5,6.
Fazendo uso das [[#equações para parâmetros termodinâmicos]], podemos calculá-los para este sistema em função da temperatura quase que instantaneamente. Estes são ilustrados nas Figs. 3,4,5,6.
<div><ul>  
<div><ul>  
<li style="display: inline-block;">[[Arquivo: erickU.png|400px|thumb|center| Figura 3: A Energia interna do sistema em função da temperatura para o modelo de Ising 2D com <math>L = 16</math>. Perceba que a inflexão se da aproximadamente na temperatura crítica <math>k_BT_c \approx 2.3</math>.]]</li>
<li style="display: inline-block;">[[Arquivo: erickU.png|400px|thumb|center| Figura 3: A Energia interna do sistema em função da temperatura para o modelo de Ising 2D com <math>L = 16</math>. Perceba que a inflexão se da aproximadamente na temperatura crítica <math>k_BT_c \approx 2.3</math>.]]</li>

Edição das 18h37min de 17 de outubro de 2022

O algoritmo de amostragem de Wang-Landau é um método de amostragem para simulações de Monte Carlo introduzido por D.P Landau, Shan-Ho Tsai e M. Exlerem em 2004 [1] com suas primeiras concepções traçadas por F. Wang and D. P. Landau em 2001 [2] que apresenta diversas vantagens sobre outros métodos para sistemas de spins. Dentre eles podemos citar o algoritmo de Metropolis [3] , o algoritmo de clustering de Wolff [4] , ou em um modelamento de ensamble multi-canônico [5] . Nestes dois últimos métodos são utilizados métodos de repesagem de histogramas[6] 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 crítica Tc utilizando-se de caminhadas aleatórias controladas para mapear a densidade de estados g(E) 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

P(E,T)=g(E)e−E/KBT,

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 g(E)não depende de temperatura do sistema, se pudermos encontrá-lo para todo E, podemos encontrar a função de partição

Z(T)=∑Eg(E)e−E/KBT,

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 [7] , sistemas de spins aleatórios[8] , sistemas quânticos[9], 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 numa grade bidimensional com valores discretos de energia e sem campo magnético(Modelo de Ising2D). Portanto quando nos referirmos a g(E) 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 H(E), isto é, ao visitarmos a energia E1 faz-se a atualização da variável H(E1)→H(E1)+1. Por outro lado, a atualização da densidade de estados g(E1) se da por um fator multiplicativo f (g(E1)→g(E1)×f) 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:

  1. Inicializamos as densidades de energias com g(E)=1 para todo E, da mesma forma H(E)=0 para todo E.
  2. Inicializamos f=f0=e≈2.71828 e um sistema L×L de spins de valor 1 e -1 aleatoriamente distribuídos.
    • O valor de f é 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.
  3. Começamos a caminhada inicial escolhendo aleatoriamente um dos spins e mudando o seu estado.
  4. Se denotamos E1 como a energia antes da mudança de estado do spin selecionado e E2 como a energia após, aceitamos este novo estado com a seguinte probabilidade: P(E1→E2)=min(g(E1)g(E2),1)
    • Se aceitarmos a mudança de estado do spin, fazemos as atualizações de g(E) e H(E) como g(E2)→g(E2)×f e H(E2)→H(E2)+1 respectivamente.
    • Se não aceitarmos a mudança de estado do spin, fazemos as atualizações de g(E) e H(E) como g(E1)→g(E1)×f e H(E1)→H(E1)+1 respectivamente, de maneira a recontar o estado E1.
    • Destaca-se que em ambos os casos usamos ln⁡(g(E))=→ln⁡(g(E))+ln⁡(f), pois ao longo da simulação acabamos usando números muito grandes.
  5. 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 de 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 ⟨H(E)⟩), porém valores mais altos que isso podem resultar no programa nunca identificando o histograma como plano.
  6. 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.
    • Um passo MC corresponde a L2=N passos.
  7. Reduz-se o fator f da seguinte maneira f1→f0, 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).
  8. Continuamos executando os passos 5-7, reduzindo o fator f segundo a seguinte expressão fi+1=fi
  9. Encerra-se a simulação quando ffinal estiver da ordem do erro desejado.
    • Claro que ffinal 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.

Observações sobre o algoritmo

Nesta seção discutimos algumas observações importantes a se levar em conta na implementação do método de amostragem de Wang-Landau

Fator de modificação f

Quando tratamos da atualização do fator f, a expressão fi+1=fi é apenas uma recomendação, uma vez que outros valores de n>1 podem ser escolhidos para uma atualização do tipo fi+1=fi(1/n). Não obstante, n=2 é adequado para grande parte dos sistemas estudados, resultando em boa acurácia em relativamente pouco tempo de simulação.

Implementação paralela

A simulação pode ser melhorada ainda fazendo múltiplas caminhadas aleatórias paralelamente no espaço de energias. Restringindo o alcance das caminhadas proporcionalmente com o número de caminhantes em paralelo (e.g. No caso de 2 caminhantes simultâneos, dividimos o espaço de energias em 2 e restringimos um caminhante para a metade inferior das energias, e o outro para a parte superior) e depois juntando as densidades de estados resultantes.

Balanço detalhado

A condição de balanço detalhado inicialmente não é satisfeita uma vez que g(E) é constantemente modificada durante a caminhada aleatória. Porém após várias iterações, a condição é satisfeita a medida que f se aproxima de 1. Observa-se que se P(E1→E2) é a probabilidade de transição da energia E1 para a energia E2, utilizando a equação do passo 4 do algoritmo temos que:

P(E1→E2)P(E2→E1)=g(E1)g(E2).

Podemos reescrever a equação de uma forma mais familiar

1g(E1)P(E1→E2)=1g(E2)P(E2→E1)

que é a condição de balanceamento detalhado, uma vez que interpretamos que 1/g(E1) como a probabilidade do sistema possuir a energia E1 e analogamente para E2. Concluímos então que a condição de balanço detalhado é satisfeita com precisão proporcional a ln⁡(f).

Escalabilidade

Quando analisamos um modelo de Ising 2D de tamanho L×L, temos que o número de configurações (2N,N=L2) aumenta exponencialmente com N, enquanto o número de possíveis energias é por volta de 2N e aumenta linearmente com N. Implicando que temos uma escalabilidade muito boa para as caminhadas no espaço de energia quando o objetivo é estimar g(E) uma vez que um aumento no tamanho da grade não implica em um aumento exponencial, mas sim linear, no tempo de execução.

Normalização

É necessário ressaltar que após a simulação completa, o algoritmo de Wang-Landau nos fornece apenas a densidade de estados relativa. Para extrairmos a real densidade de estados gn(E) é necessário que utilizemos uma das duas condições: Que o número total de estados possíveis é ∑Egn(E)=QN ou que o numero de estados fundamentais é Q (onde Q=2 para o modelo de Ising 2D pois os spins possuem apenas dois estados).

Pela primeira condição, podemos obter a densidade de estados normalizada através da equação

ln⁡[gn(E)]=ln⁡[g(E)]−ln⁡[∑Eg(E)]+Nln⁡(2),

enquanto pela segunda condição temos que

ln⁡[gn(E)]=ln⁡[g(E)]−ln⁡[g(E=−2N)]+ln⁡(2).

A segunda normalização é preferível pois garante precisão para estados de menor energia, o que é necessário para o calculo de parâmetros termodinâmicos há baixas temperaturas.

Parâmetros Termodinâmicos

Uma vez que temos a densidade de estados, podemos calcular diversos parâmetros termodinâmicos, como a energia interna U(T), calor especifico C(T), energia livre de Helmholtz F(T) e entropia S(T) através das seguintes equações:

      U(T)=∑EEg(E)e−E/kBT∑Eg(E)e−E/kBT
      C(T)=⟨E2⟩−⟨E⟩2kBT2
      F(T)=−kBTln⁡(∑Eg(E)e−E/kBT)
      S(T)=U(T)−F(T)T

<\div> Estes parâmetros termodinâmicos dependem apenas da temperatura uma vez que já foi encontrado a densidade de estados g(E), o que contorna os problemas de critical slowing down na temperatura crítica pois a simulação não precisa ser refeita para cada uma das temperaturas, por consequência também dispensa a necessidade de repesagem de histogramas, contornando o problema de estatística fraca nas asas dos histogramas.

Exemplo: Modelo de Ising 2D por amostragem de Wang-Landau

Podemos aplicar o algoritmo de Wang-Landau para um sistema ferromagnético 2D de Ising com interação de primeiros vizinhos e uma grade quadrada L×L com condições de contorno periódicas no qual o hamiltoniano é dado por

ℋ=−∑⟨i,j⟩σiσj

onde σi=+1 para spin para cima, σi=−1 para baixo e ⟨i,j⟩ indica a soma entre os primeiros vizinhos. Na Fig.1 temos a densidade de estados g(E) para um sistema 16×16 com ffinal∼10−6 e com critério para um histograma H(E) plano de 80%. Com esses parâmetros, a Google Compute Engine padrão para Python3 do Google Colab realiza a simulação em ∼40s.

Figura 1: Logaritmo da densidade de estados ln⁡(g(E)) para o modelo de Ising 2D com L=16, há uma brusca queda na densidade de estados perto das pontas uma vez que as energias −2L2+8 e 2L2−8 são inalcançáveis pelo sistema.

Fazendo uso da #equação de distribuição de probabilidade canônica, podemos encontrar a distribuição de probabilidade das energias para uma determinada temperatura T. Devido a natureza do algoritmo, estas distribuições que por meios convencionais levariam tempo demasiadamente grande para ser calculado ou necessitariam de repesagem de histograma são instantaneamente calculadas com o algoritmo de Wang-Landau independentemente da temperatura. Na Fig.2 temos um exemplo das distribuições, incluindo uma próxima da temperatura critica Tc.

Figura 2: A distribuição canônica P(E,T)=g(E)e−E/KBT em 3 temperaturas, incluindo a temperatura crítica Tc para o modelo de Ising 2D com L=16.

Fazendo uso das #equações para parâmetros termodinâmicos, podemos calculá-los para este sistema em função da temperatura quase que instantaneamente. Estes são ilustrados nas Figs. 3,4,5,6.

  • Figura 3: A Energia interna do sistema em função da temperatura para o modelo de Ising 2D com L=16. Perceba que a inflexão se da aproximadamente na temperatura crítica kBTc≈2.3.
  • Figura 4: O Calor Específico do sistema em função da temperatura para o modelo de Ising 2D com L=16. Perceba que o pico se da aproximadamente na temperatura crítica kBTc≈2.3.
  • Figura 5: A Energia Livre do sistema em função da temperatura para o modelo de Ising 2D com L=16. Perceba que o começo da queda se da aproximadamente na temperatura crítica kBTc≈2.3.
  • Figura 6: A Entropia do sistema em função da temperatura para o modelo de Ising 2D com L=16. Perceba que a inflexão se da aproximadamente na temperatura crítica kBTc≈2.3.

Exemplo de código

Exemplo de código para a amostragem de Wang-Landau em Python3

Referências

  1. ↑ Landau, D. P., Shan-Ho Tsai, and M. Exler. "A new approach to Monte Carlo simulations in statistical physics: Wang-Landau sampling." American Journal of Physics 72.10 (2004): 1294-1302.
  2. ↑ F. Wang and D. P. Landau, ‘‘Efficient, multiple-range random walk algorithm to calculate the density of states,’’ Phys. Rev. Lett. 86, 2050–2053 !2001"; ‘‘Determining the density of states for classical statistical models: A random walk algorithm to produce a flat histogram,’’ Phys. Rev. E 64, 056101 !2001".
  3. ↑ N. Metropolis, A. W. Rosenbluth, M. N. Rosenbluth, A. H. Teller, and E. Teller, ‘‘Equation of state calculations by fast computing machines,’’ J. Chem. Phys. 21, 1087–1092 !1953".
  4. ↑ U. Wolff, ‘‘Collective Monte Carlo updating for spin systems,’’ Phys. Rev. Lett. 62, 361–364 !1989".
  5. ↑ B. A. Berg and T. Neuhaus, ‘‘Multicanonical ensemble: A new approach to simulate first-order phase transitions,’’ Phys. Rev. Lett. 68, 9–12 !1992"
  6. ↑ A. M. Ferrenberg and R. H. Swendsen, ‘‘New Monte Carlo technique for studying phase transitions,’’ Phys. Rev. Lett. 61, 2635–2638 !1988"; ‘‘Optimized Monte Carlo data analysis,’’ ibid. 63, 1195–1198 !1989".
  7. ↑ C. Yamaguchi and Y. Okabe, ‘‘Three-dimensional antiferromagnetic q-state Potts models: application of the Wang-Landau algorithm,’’ J. Phys. A 34, 8781– 8794 !2001"
  8. ↑ Y. Okabe, Y. Tomita, and C. Yamaguchi, ‘‘Application of new Monte Carlo algorithms to random spin systems,’’ Comput. Phys. Commun. 146, 63– 68 !2002".
  9. ↑ 2M. Troyer, S. Wessel, and F. Alet, ‘‘Flat histogram methods for quantum systems: Algorithms to overcome tunneling problems and calculate the free energy,’’ Phys. Rev. Lett. 90, 120201 !2003".