Você está na página 1de 3

1-CODIGO DO KIM O diferenca do cg do KIM com a versao do artigo so: No KIM no tem um clculo para a fora, mas indidiretamente,

sabe em qual direcao ela esta e usa esta informacao para atualizar F_i. Nesse caso F_i = -(energia(x+delta) energia(x))/modulo_no_r3_(energia(x+delta)-energia(x)); No passo2 (baseado no artigo do KIM), temos: r_i+1 = r_i + alpha*F_i Mas o Kim escreve o passo 2 como: r_i+1 = r_i + alpha*delta (usado no loop qdo a energia est alta) e s segue o passo 2 como diz o artigo quando a energia baixa.... note que quando a energia baixa F_i no a forca, mas sim F_i = h_now ..... a notacao est carregada (mesmo no artigo).. verificar isso pra melhor entendiment o do algoritmo) Passo 6 (calculo de beta): O artigo calcula o beta do PR baseado na posicao, mas o KIM usou o beta de PR baseado em foras (http://user.it.uu.se/~matsh/opt/f8/node6.html), o mesmo q usei, mas provarei ma is adiante que esses betas so os mesmos. Discussao: Talvez o Kim tenha usado r_i+1 = r_i + alpha*delta qdo as energias es tao altas pelo fato de que nesse passo F_i dever ser a forca propriamente dita (como disse antes, a notacao esta carregada). Como no tem um valor "bom" para a f ora, o uso de delta para esse passo deve ter sido melhor. Um resumo do desempenho do KIM: 1 estrutura, seed = 12345 Baseado em energias p/ 38 atomos: energy: -120 iteracoes: 35 foras: nao convergem para 0.1, muitas forcas com modulos > 1 p/ 142 atomos: energy: -631 iteracoes: 59 foras: nao convergem para 0.1, muitas forcas com modulos > 1 Baseado em foras p/ 38 atomos energy: -123 iteracoes: 1000 (forcas nao convergiram, muitas com modulos > 1 -> iter = iter_m ax ) aumentando para iter_max para 10000, baseado em forcas p/ 38 atomos energy: -123 (a mesma para 1000 passos iteracoes: 10000 (iter = iter_max, forcas nao convergiram, muitas com modulos > 1) /p 142 atomos, baseado em forcas: energy: -635 iteracoes: 1000 (=iter_max) foras: nao convergem para 0.1, muitas forcas com modulos > 1 )

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------2-CODIGO EMANUEL (PR) As diferenas com do artigo do KIM so: Passo 2: usamos r_i+1 = r_i + alpha*F_i/norm_F (provarei experimentalmente que usando /norm_F o desempenho bem superior ao do artigo) Calculo de beta: Como explicado no email, beta um escalar, pois seu calculo trat a-se de um produto escalar. No desenvolvimento do cdigo tinha feito o correto, po rm qdo tinha feito aquele "modulo" de beta, o desempenho tinha sido um pouco melho r (mas apenas nas casas decimais da energia).... sabendo q beta s seria positivo. Hoje voltei ao calculo correto de beta (as energias esto as mesmas). Ressaltando que com essa mudanca, os valores absolutos de beta permancem praticamente os mes mos, mas agora beta pode ser negativo. Calculo de alpha: Segundo o artigo, os melhores valores para alpha so a_i=0.05, a '=a_i/2, a''=a_i*1.05 para Stillinger-Weber Si. No caso do potencial de LJ, expe rimentalmente o desempenho ficou melhor (de 0.5% a 1.5%) com a_i=0.04, a'=a_i/1.9, a''=a_i*1.6 Reescrevi o cdigo como diz o artigo e comparei com o nosso CG. Abaixo, os testes: (em todos os testes, qdo temos 1 estrutura, apliquei seed=12345) ----------------------------------------------------------------------------------------------------------------------CG (ORIGINAL) DO ARTIGO ENVIADO PELO KIM p/ 38 atomos: energy: -93 (1 estrutura, seed 12345) passos: 163 energy: -152 (melhor de 50 estruturas) passos: 558 foras: convergem para zero p/ 142 atomos energy: -518 passos: 700 energy: -640 (melhor de 50 estruturas) passos: 814 foras convergem para zero ---------------------------------------------------------------------------------------------------------------------------------CG MODIFICADO DO ARTIGO ENVIADO PELO KIM: modificacoes: beta baseado em forcas ( http://user.it.uu.se/~matsh/opt/f8/node6.html) p/ 38 atomos: energy: -93 passos: 164 energy: -152 (melhor de 50 estruturas) passos: 558 foras: convergem para zero p/ 142 atomos: energy: -518

passos: 701 foras convergem para zero ----------------------------------------------------------------------------------------------------------------------------------------*Notemos que o calculo de beta de PR usando forcas ou posicoes para ACG apresent am o mesmo desempenho, logo, o beta_PR baseado foras e posicoes so os mesmos.

----------------------------------------------------------------------------------------------------------------------------------ACG EMANUEL (atual) = CG MODIFICADO DO ARTIGO ENVIADO PELO KIM: modificacoes: pa sso 2 usando modulo + alpha otimizado *concluimos nos testes acima que como beta_PR o mesmo do artigo. p/ 38 atomos: energy: -167 passos: 384 energy: -170 (melhor de 50 estruturas) passos: 129 foras: convergem para zero p/ 142 atomos energy: -777 passos: 637 energy: -790 (melhor de 50 estruturas) passos: 720 foras convergem para zero *podemos entao concluir que o sucesso deste algoritmo deve-se ao fato do uso do modulo no passo 2. --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------De acordo com artigo, nosso CG ento pode ser classificado como ACG-PR (+ r_i+1 = r_i + alpha*F_i/norm_F no passo2). Na pgina 14 diz que esse mtodo perde um pouco a direo das direes conjugadas, mas no entanto, no geral, chega a ser de 3 a 5 mais rpido que o CG c lssico. Resolvi verificar isso e de fato, nosso CG fica bem prximo aos CGS do Neculai. p/ 1000 atomos energy: -6533 tempo: 180s (num P4 3.0 ghz ... tive problemas com trocas de chaves ao entrar no cluster de casa) iter: 1000 portanto estamos com um CG prximo ao dos CG hbridos de Neculai (talvez um pouco me lhor, pelo fato de usar menos iteraes) -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------aaaa

Você também pode gostar