Windows, Mac OS X e varias plataformas UNIX. Com certeza postarei mais coisas sobre R neste blog, e uma linguagem fascinante e que vem ganhando muito espaco nos ultimos anos, principalmente no meio academico. Para reproduzir os graficos desta secao, faca o download do R em http://www.r-project.org. Apos o download, precisamos instalar o pacote ggplot2 para plotar os graficos. Poderiamos usar as funcoes graficas dos pacotes que ja vem instalados, mas ggplot2 facilita muito a criacao de graficos mais complexos e e muito superior visualmente. Execute o ambiente R e digite: install.packages("ggplot2") Agora e so aguardar a instalacao dos pacotes necessarios. Apos a instalacao dos pacotes, mova o nosso .csv para o working directory do R. Caso nao saiba qual o diretorio, execute getwd() e R te respondera. Agora sim, hora de ver o resultado de tanto codigo! Voce pode simplesmente copiar e colar, ou ser um pouco mais organizado: salve o codigo abaixo como criaGrafico.R, mova o arquivo salvo para o working directory e execute o comando source('criaGrafico.R').#cria o data framegaCols = read.csv("outputGA.csv", header = TRUE)#renomeia as colunaslibrary(reshape)gaStack = melt(gaCols)names(gaStack) = c('generation', 'cleared')#extrai vetores com media e maximo de cada geracaogenerationFactors = factor(gaStack$generation)meanClr = tapply(gaStack$cleared, generationFactors, mean)maxClr = tapply(gaStack$cleared, generationFactors, max)#cria data frame com media e maximo de cada geracaogaMeanMax = data.frame(generation = 1: ncol(gaCols), meanCleared = meanClr, maxCleared = maxClr)#plotlibrary(ggplot2)basicPlot = ggplot(data = gaStack, mapping = aes(x = generation, y = cleared)) + geom_boxplot()basic.mean = basicPlot + geom_line(aes(x = generation, y = meanCleared), data = gaMeanMax, colour = 'forestgreen')basic.mean.max = basic.mean + geom_line(aes(x = generation, y = maxCleared), data = gaMeanMax, colour = 'tomato2')basic.mean.max + geom_smooth(aes(group = 1)) Voce nao precisa entender o codigo acima, mas resumindo: a funcao read.csv() escaneia o conteudo do arquivo passado e o transforma num objeto da classe data.frame. Geralmente, as colunas de um Data Frame representam variaveis, e cada linha representa uma observacao diferente. Esse e um padrao comum em analise de dados. Apos obter o Data Frame, quebramos ele em 2 colunas: a primeira coluna representa a geracao, a segunda nos diz o desempenho do agente. A seguir, extraimos o desempenho medio e maximo para cada geracao, e criamos um novo Data Frame com esses vetores. Os comandos restantes produzem o grafico abaixo. Observamos uma evolucao rapida entre g0 e g11, onde o desempenho medio de cada geracao (linha verde) e estritamente crescente. A partir dai, ha uma oscilacao em torno do valor 2500, com um pico de aproximadamente 3800 em g23. A linha vermelha representa o melhor agente de cada geracao, e mostra claramente que conforme os agente evoluem, o intervalo de geracoes necessario para o surgimento de um novo melhor agente fica cada vez maior, e a diferenca de desempenho entre a elite se torna cada vez menor. A curva de regressao (azul) resume bem as observacoes acima. Observando cada geracao, os boxplots nos mostram que o desempenho nao segue uma distribuicao normal, sendo bastante assimetrico. Apesar do aspecto estacionario, os agentes de elite tendem a evoluir mais lentamente do que o resto da populacao (observe a tendencia em g16, g18,