2007 September 25 12:05:05 BRT

Harry Potter and the Deathly Hallows

Acabei de ler o último Potter Harry Potter. E só pra acabar a graça, vou contar o final: A rainha amídala morre e o astronauta transa com uma macaca! Err... não, não... filme errado... aliás, livro! Sei-lá! [amazonify]0545010225[/amazonify]

Spoilers

Bom, a estória é o seguinte: O Harry tá crescendo e a adolescência atribulada dele já passou! Agora ele é um adulto sério e responsável, do alto de seus 17 anos, disposto a abandonar as dúvidas da adolescência e dominar o mundo de forma altruísta! Que lindo! Isso são as primeiras 445 (out of 759) páginas do livro! Isso mesmo... como de costume em tooooooodos os outros livros, a J. K. Rowling cria uma ambientação detalhadíssima, com perfil psicológico e contexto social para tooooodos os personagens, inclusive os que já morreram. Não chega a ser enrolação já que tem informação nova a todo momento, mas do ponto de vista dos protagonistas deve ser uma chatice danada, afinal os coitados ficam meses esperando só pra autora poder liberar doses cavalares de informação sobre tudo que é personagem e local secundário da estória. Eu que não queria ser Harry! Ah sim, e esse tempo todo meio que fugindo e se escondendo dos malvados...

Aí na malfadada página 445 o Harry comete um deslize fatal. os maus quase vencem e eles escapam por pouco! Ai começa a ação! Como a autora gastou esse tempo todo detalhando todos os pormenores da ambientação, quando começa a ação ninguém tá mais pouco se lixando pra tal Suspensão de descrença que o Muriloq tanto gosta! Resultado? É pancadaria e correria pra todo lado com coisas sem nexo acontecendo e a gente aceita as explicações mais estapafúrdias pra tudo, pensando se isso não já tinha sido explicado mais cedo!

Depois da correria danada por mais 259 páginas agitadíssimas, Harry toma a tradicional decisão: velhos e crianças primeiros, me sacrifico pelo bem de todos! E quando tudo mais falha, Harry consegue através do seu altruísmos derrotar o mal! Isso tudo em um único capítulo! E no final, tout est bien qui finit bien, porque se não der certo é porque ainda não chegou no final!

--girino 12:06, 25 Setembro 2007 (BRT)

2007 September 20 15:17:39 BRT

Mais vandalismo, mais wikipédia

Continuando na série de estudar o vandalismo na wikipédia, fiz esses dois gráficos comparativos entre as wikipédias que eu conheço a língua (até tentei fazer da sueca e da holandesa, mas os dados ficaram esquisitíssimos e eu acho que é porque eu não consigo identificar direito os vandalismos devido à língua! Mas sei-la).

Porcentagem de edições revertidas por mês nas diversas wikipédias.

Porcentagem de edições revertidas por mês nas diversas wikipédias.

Porcentagem de páginas revertidas por mês nas diversas wikipédias.

Porcentagem de páginas revertidas por mês nas diversas wikipédias.

Palpites e coisa e tal

Claro que cada um pode tirar suas próprias conclusões e tals, eu vou arriscar alguns palpites:

  • As wikis em inglês e espanhol são mais vandalizadas (duh)
  • As wikis restritas ao velho mundo (it e fr) são menos. Será que o vandalismo é fenômeno cultural do novo mundo?
  • Exceto na wiki espanhola, o vandalismo está em queda.
  • O vandalismo tem picos negativos (vales) nos períodos de férias (dezembro/janeiro no hemisfério sul e julho/agosto no hemisfério norte).
  • A aparente queda pode ser devida a algum período de férias (afinal os dados terminam em agosto).
  • A queda acentuada na wiki en parece ser devida a um aumento absurdo, abmudo e abcego do número de artigos. Será que os vândalos não conseguem acompanhar o crescimento agora que a wiki alcançou um tamanho crítico?
  • Ou meu italiano está muito ruim, ou o vandalismo na wiki it é incrivelmente baixo! Achei até estranho porque sempre vi os italianos como culturalmente parecidos com os brasileiros! Será que nem tanto?

Acho que chega né? Já falei muito no assunto!

--girino 15:38, 20 Setembro 2007 (BRT)

P.S.

Crianças, não façam isso em casa. A wiki en é monstruosamente grande! Ela travava meu micro por horas quando eu tentava importar ela normalmente. Depois de mais de uma semana tentando, fiz assim:

  1. Desabilitei as chaves primárias e índices das tabelas
  2. importei os dados
  3. recriei os índices que eu precisava, sem recriar as chaves primárias.

Na wiki em inglês eu exclusivemente nem criei índice nenhum na tabela revision porque ela era muito, mas muito grande mesmo! Preferi rodar as consultas sem índices (levou mais de 2 dias).

Nas outras eu recriei os índices e as consultas demoraram um pouco menos (a mais demorada foi a wiki fr que demorou umas 2h).

Só pra deixar documentado aqui que o processo é longo e demorado, e não digam que não avisei!

--girino 16:01, 20 Setembro 2007 (BRT)

2007 September 20 08:43:48 BRT

Gostosa Pum!

Só pra queimar o filme do Paulosta um pouquinho...

Ontem, lá pelas 4:30h da manhã eu acordei pra ir no banheiro e vi uma luz na sala. Estranhei um pouco, afinal era madrugada e a bicha gorda precisava acordar "cedo" para ir no curso do dia seguinte. Mas era isso mesmo! Paulosta, na sala, hipnotizado pelo Zelda com seus gemidinhos, coraçõezinhos, caçadas a borboletas, buscas pelas lágrimas da princesa para libertar o espírito da luz e outras atividades metrosexuais típicas do jogo!

  • Paulo, não vai dormir não?
  • Vô, que horas são?
  • Umas 4 da manhã!

(olha pra mim com cara de desespero)

  • Nó! Não vou conseguir acordar amanhã.

Sei que desligou correndo o jogo e se fechou no quarto de luz apagada antes deu sair do banheiro.

No dia seguinte de manhã ele estava, é claro, um bagaço! Acho que se atrasou pro curso, mas não sei... Sei que a noite, cheguei em casa e ele estava jogando Zelda (de novo...). Lá pelas 8:00h convenci ele a encomendarmos Habib's, que era rápido (eles tem umas garantias de entrega dentro de tanto tempo ou você não paga, etc e tals). Ele então fechou o zelda, escolhemos o lanche e ele deitou no sofá cama. Apagou! Só acordou hoje de manha lá pelas 6:30h.

MAS a parte engraçada foi enquanto ele dormia! Eu usando o computador, e ele deitado no sofá cama, e a Anita na porta do quarto, apenas de passagem. De repente a Anita me pergunta:

  • Ele tá falando alguma coisa?

E o Paulosta, dormindo, virado de costas pra mim, solta um berro:

  • Gostosa!

E em seguida um peido fenomenalmente barulhento, começa a rir de gargalhadas e logo depois do riso, volta a roncar!

Seja lá o que ele estava sonhando, "gostosa" e depois um peido? Não sei não...

--girino 08:58, 20 Setembro 2007 (BRT)

2007 September 17 11:49:34 BRT

Final de semana atribulado

Afinal, o Paulosta já está aqui a dias... Mas ele é bem discreto, não incomoda (passa o dia todo jogando Wii ou então sai pra ver jogos do cruzeiro em algum boteco).

Mas aí na sexta chega minha mãe. Ela sozinha, também não incomoda e é fácil de conviver, mas o Sapão tá viajando! Aí os moleques dele vieram aqui pra casa e a casa ficou lotada! Minha mão passa o dia querendo por ordem nos dois, e não dá conta! Conseqüentemente sobra quem quem está perto.

Resultado: passei o final de semana estressado!

Enfim, é a vida! e hoje tudo volta ao normal! --girino 11:55, 17 Setembro 2007 (BRT)

2007 September 12 17:43:13 BRT

Graficozinhos

Só pra não dizer que o blog está atoa, aqui vão dois graficozinhos sobre o vandalismo na wikipédia:

Evolução dos percentuais de vandalismo comparado com a evolução do número de páginas.

Evolução dos percentuais de vandalismo comparado com a evolução do número de páginas.

Evolução do vandalismo em relação ao número de edições e ao número de páginas.

Evolução do vandalismo em relação ao número de edições e ao número de páginas.

--girino 17:47, 12 Setembro 2007 (BRT)

2007 September 10 23:54:49 BRT

Estatísticas de vandalismo na wikipédia

Estou meio "sumido" do blog ultimamente porque estou trabalhando neste projeto:

E já estamos com um primeiro "estudo" quase pronto aqui:

--girino 23:58, 10 Setembro 2007 (BRT)

2007 September 05 23:14:11 BRT

Spams, blogs e causos

Hoje tive de bloquear alguns ips e algumas páginas do site porque andaram enchendo isso daqui de spam. Por mim tudo bem, conta como mais hits 🙂

Estou sem idéias e tempo pra blogar (ok, tempo não falta, mas é que acabo fazendo outras coisas e esqueço de blogar). E pior que tem gente que fala o contrário! Colega meu de serviço disse:

  • Se eu não soubesse que tu é casado eu ia falar que é falta de mulher!

E pra compensar que tou chato hoje vou tentar contar um causo!

Na época que cheguei aqui no cerrado candango fui trabalhar numa empresa onde, graças às minhas girinadas acabei ganhando o apelido de Forest Gump. E em qualquer situação eu tinha um caso pra contar! Mas perdi meu título quando apareceu um colega com uma girinada BEM pior que as minhas:

O tiro que atravessou o banco do carro e deixou um galo na minha cabeça

Não, não é na "minha" cabeça, mas na do cara que contou o caso!

A estória era assim: Ele estava com mais 2 amigos num carro, indo para Goiânia numa dessas festas estilo Micareta (acho que chamava carnagoiânia). Ele era um mero passageiro, sentado no banco de trás. No meio do caminho, não sei se já em Goiás ou ainda no DF foram "cercados" por outro carro (não lembro se era um só ou eram dois) com pessoas armadas que ameaçaram um assalto. O amigo que estava no volante deu um cavalo de pau e saiu em disparada, com os bandidos em perseguição.

Nosso nobre e corajoso colega decidiu então que a forma mais segura de se portar era... se baixar 🙂 E assim, escondido no banco de trás do carro, ouvia os tiros mas não percebia nada! Até que num dado momento, sentiu uma pancada forte na cabeça, vinda de trás do banco onde estava "escondido".

Na segunda feira, mostrou com orgulho o "troféu": Um galo que tinha na cabeça, oriundo de um tiro que havia atravessado o porta malas, o banco do carro, e fora parado com a cabeça dele, deixando somente um galo!

Sei que foi nesse dia que perdi o posto de Forest Gump. E conhecessem eles o termo girinada, teriam-no tirado também de mim!

--girino 23:28, 5 Setembro 2007 (BRT)

2007 September 02 15:55:52 BRT

A quantas anda...

meu algoritmo genético assíncrono? Bom Já fiz bastante coisa de implementação. A ultima jogada foi rodar uma bateria de testes e gerar graficozinhos...

Testes

Vamos primeiro às explicações:

Os testes foram feitos usando as funções de De Jong[1] (de f1 a f5) que são:

begin{array}{lcll} f_1(x) & = & sumlimits_{i=1}^{3} x_i^2, & -5,12 le x_i le 5,12 \ f_2(x) & = & 100 ( x_1^2 - x_2)^2 + ( 1 - x_1)^2, & -2,048 le x_i le 2,048 \ f_3(x) & = & sumlimits_{i=1}^{5} lfloor x_i rfloor, & -5,12 le x_i le 5,12 \ f_4(x) & = & sumlimits_{i=1}^{30} i x_i^4 + mathrm{Gauss}(0,1), & -1,28 le x_i le 1,28 \ f_5(x) & = & dfrac{1}{0,002 + sumlimits_{j=1}^{25} dfrac{1}{j + sumlimits_{i=1}^{2} (x_i - a_{ij})^6}}, & -65,536 le x_i le 65,536 end{array}

onde:

a_{ij} =  begin{cases} -32 & i = 1, j equiv 1 pmod{5} mbox{ ou } i = 2, left lceil frac{j}{5} right rceil = 1 \ -16 & i = 1, j equiv 2 pmod{5} mbox{ ou } i = 2, left lceil frac{j}{5} right rceil = 2 \ 0   & i = 1, j equiv 3 pmod{5} mbox{ ou } i = 2, left lceil frac{j}{5} right rceil = 3 \ 16  & i = 1, j equiv 4 pmod{5} mbox{ ou } i = 2, left lceil frac{j}{5} right rceil = 4 \ 32  & i = 1, j equiv 5 pmod{5} mbox{ ou } i = 2, left lceil frac{j}{5} right rceil = 5 end{cases}

Os indivíduos para cada uma dessas fórmulas foram modelados como possuindo um cromossomo para cada dimensão (cada variável xi) e cada cromossomo era um valor numérico nativo do python mesmo (preguiça de implementar coisas mais sofisticadas).

Foram definidas 5 políticas:

  • Tradicional, ou seja, um GA clássico (roleta, população fixa, crossing over e mutação);
  • Política 1 que mata indivíduos pela idade e cria um número fixo de indivíduos a cada geração;
  • Política 2 que pondera a idade do indivíduo coma função de fitness antes de matá-lo;
  • Política 3 que introduz comportamento estocástico no número de nascimentos a cada geração; e
  • Política 4 que introduz comportamento estocástico nas mortes.

Rodei com os seguintes parâmetros:

  • Tamanho inicial da população: 500 indivíduos
  • Número de gerações: 2000
  • Probabilidade de mutação: 0.01
  • Idade máxima (para as políticas de 1 a 4): 10 gerações

E repeti cada teste 20 vezes, coletando estatísticas de:

  • Offline e online performance[1]
  • Melhor indivíduo da geração
  • Média dos indivíduos da geração.

Os gráficos com esses resultados pra cada uma das funções de De Jong estão abaixo:

Não fiz nenhuma análise mais aprofundada dos dados, mas tenho algumas observações preliminares que podem ser pertinentes:

  • Nas funções f1 e f2, quanto mais "avançada" a política, melhor o desempenho. Esse comportamento se parece também com o observado quando usamos "elitismo"[1]
  • Em f3 tem uma aparente piora, mas se olharmos o gráfico de "melhor indivíduo" ou na "média da geração" vemos que é só uma demora para convergir (devido a população não se renovar com tanta freqüência como no GA tradicional).
  • Por último, a função f4 teve um comportamento completamente diferente das demais. Eu atribuo isso ao "ruído" gaussiano introduzido, mas precisaria de um base matemática melhor pra afirmar isso. Aparentemente o GA assíncrono não responde bem ao ruído na função objetivo.

A função f5 ainda não tinha terminado de executar quando gerei os gráficos, então ainda não sei os resultados dela. Mais tarde posto um update.

Notas

  1. ? 1,0 1,1 1,2 De Jong, K. A.. An analysis of the behaviour of a class of genetic adaptative systems. Dissertação de doutorado, University of Michigan, 1975. in Goldberg, David E.. Genetic Algorithms in Search, Optimization, and Machine Learning. EUA: Addison-Wesley, 1989.

--girino 20:03, 2 Setembro 2007 (BRT)

Update

Acrescentei agora as imagens correspondentes a função f5 de De Jong, e ela corrobora a conclusão de que é apenas o ruído gaussiano que causa problemas em f4. Em f5 o GA assíncrono já se mostra melhor que o tradicional novamente. Aparentemente o GA assíncrono proporciona ganhos na maioria dos casos estudados. Além disso, temos ganhos significativos de desempenho computacional (tempo de execução) já que o processo de seleção por roleta, que é bastante custoso (O(n2)), fica reduzido apenas a parte dos indivíduos.

--girino 22:31, 2 Setembro 2007 (BRT)