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

De Física Computacional
Ir para navegação Ir para pesquisar
Linha 86: Linha 86:
<math>\mathcal{H} = -\sum_{\langle i,j\rangle}\sigma_{i}\sigma_j</math>
<math>\mathcal{H} = -\sum_{\langle i,j\rangle}\sigma_{i}\sigma_j</math>


onde <math>\sigma_{i} = +1</math> para spin para cima, <math>\sigma_{i} = -1</math> para baixo e <math>\langle i,j\rangle</math> indica a soma entre os primeiros vizinhos. Na Fig.2 temos a densidade de estados <math>g(E)</math> para um sistema <math>16 \times 16</math> com <math>f_{final} \sim 10^{-6}</math> e com critério para um histograma <math>H(E)</math> plano de 80%. Com esses parâmetros, a ''Google Compute Engine'' padrão para Python3 do Google Colab realiza a simulação em <math>\sim 40s</math>.  
onde <math>\sigma_{i} = +1</math> para spin para cima, <math>\sigma_{i} = -1</math> para baixo e <math>\langle i,j\rangle</math> indica a soma entre os primeiros vizinhos. Na Fig.1 temos a densidade de estados <math>g(E)</math> para um sistema <math>16 \times 16</math> com <math>f_{final} \sim 10^{-6}</math> e com critério para um histograma <math>H(E)</math> plano de 80%. Com esses parâmetros, a ''Google Compute Engine'' padrão para Python3 do Google Colab realiza a simulação em <math>\sim 40s</math>.  


[[Arquivo:erickStateDist.png|400px|thumb|center| Figura 1:Logaritmo da densidade de estados <math>\ln(g(E))</math> para o modelo de Ising 2D com <math>L = 16</math>, há uma brusca queda na densidade de estados perto das pontas uma vez que estas energias 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 <math>T</math>. 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.3 temos um exemplo das distribuições, incluindo uma próxima da temperatura critica <math>T_c</math>.
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 <math>T</math>. 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.3 temos um exemplo das distribuições, incluindo uma próxima da temperatura critica <math>T_c</math>.

Edição das 13h37min 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 , 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 . 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:

  1. Inicializamos as densidades de energias com para todo , da mesma forma para todo .
  2. 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.
  3. Começamos a caminhada inicial escolhendo aleatoriamente um dos spins e mudando o seu estado.
  4. 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.
  5. Faz-se esta caminhada aleatória nos diferentes estados do sistema até que o histograma 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 devem ser pelo menos 95% de ), porém valores mais altos que isso podem resultar no programa nunca identificando o histograma como plano.
  6. Checa-se se 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 converge ao valor real com precisão da ordem de .
  7. Reduz-se o fator da seguinte maneira , reinicia-se o histograma e recomeça-se a caminhada aleatória com este novo fator . (Todos os parâmetros não mencionados neste passo permanecem intocados).
  8. Continuamos executando os passos 5-7, reduzindo o fator segundo a seguinte expressão
  9. Encerra-se a simulação quando estiver da ordem do erro desejado.
    • Claro que pode ser escolhido arbitrariamente pequeno, mas sempre com um certo limite razoável , 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 , a expressão é apenas uma recomendação, uma vez que outros valores de podem ser escolhidos para uma atualização do tipo . Não obstante, é 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 é constantemente modificada durante a caminhada aleatória. Porém após várias iterações, a condição é satisfeita a medida que se aproxima de 1. Observa-se que se é a probabilidade de transição da energia para a energia , utilizando a equação do passo 4 do algoritmo temos que:

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

que é a condição de balanceamento detalhado, uma vez que interpretamos que como a probabilidade do sistema possuir a energia e analogamente para . Concluímos então que a condição de balanço detalhado é satisfeita com precisão proporcional a .

Escalabilidade

Quando analisamos um modelo de Ising 2D de tamanho , temos que o número de configurações aumenta exponencialmente com , enquanto o número de possíveis energias é por volta de e aumenta linearmente com N. Implicando que temos uma escalabilidade muito boa para as caminhadas no espaço de energia quando o objetivo é estimar 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 é necessário que utilizemos uma das duas condições: Que o número total de estados possíveis é ou que o numero de estados fundamentais é (onde 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

,

enquanto pela segunda condição temos que

.

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 , calor especifico , energia livre de Helmholtz e entropia através das seguintes equações:

      
      
      
      

Estes parâmetros termodinâmicos dependem apenas da temperatura uma vez que já foi encontrado a densidade de estados , 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\times L$ com condições de contorno periódicas no qual o hamiltoniano é dado por

onde para spin para cima, para baixo e indica a soma entre os primeiros vizinhos. Na Fig.1 temos a densidade de estados para um sistema com e com critério para um histograma plano de 80%. Com esses parâmetros, a Google Compute Engine padrão para Python3 do Google Colab realiza a simulação em .

Arquivo:ErickStateDist.png
Figura 1:Logaritmo da densidade de estados para o modelo de Ising 2D com , há uma brusca queda na densidade de estados perto das pontas uma vez que estas energias 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 . 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.3 temos um exemplo das distribuições, incluindo uma próxima da temperatura critica .