Code Monkey home page Code Monkey logo

genetic-magic-square-finder's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

genetic-magic-square-finder's Issues

Testar idade máxima para elite

A partir do tamanho 5x5, o algoritmo às vezes encontra quadrados mágicos no início (+- 2 minutos) mas após isso fica estagnado, demorando muito mais para encontrar novos quadrados mágicos.

Tentar melhorar isso definindo uma idade máxima para a elite. Adicionando um parâmetro "age" para a classe "Individual", podemos ir incrementando este valor a cada nova geração em que o indivíduo participa da elite. Após esse valor ser maior que N (a ser definido, algo como 50.000, ou um valor que dependa do tamanho do quadrado), não incluir este indivíduo mais na elite.

screen shot 2016-06-20 at 09 31 17

Exibir quadrados mágicos encontrados no lado esquerdo

Exibir quadrados mágicos encontrados no lado esquerdo.

Mostrar:

  • Em qual geração ele foi encontrado pela primeira vez
  • Quanto tempo demorou para encontrá-las.

E, se possível:

  • Quem são os pais.
  • Qual foi o ponto de crossover.
  • Se houve mutação nesse quadrado.

Traduzir para inglês

Após a apresentação do trabalho, traduzir o app, comentários do código e README.md para inglês.

Testar método da roleta

FAZER EM UMA BRANCH SEPARADA!

Hoje usamos torneio para escolher os indivíduos que cruzarão.

Seria bom testar o método da roleta também, e se possível, deixar o usuário escolher qual método usar.

Fazer programa parar quando encontrar 10 quadrados mágicos

Hoje não há nenhuma condição para parada do algoritmo genético. Segundo o enunciado, o programa deve parar assim que achar os 10 primeiros quadrados mágicos.

Casos especiais:

  • existe apenas 1 quadrado mágico 1x1
  • não existem quadrados mágicos 2x2 (exibir mensagem ao usuário)
  • existem apenas 8 quadrados mágicos 3x3

Solucionar estouro de memória

Testando com os seguintes parâmetros:

screen shot 2016-06-19 at 19 08 41

O programa estoura o uso de memória perto da geração 24.000, devido ao textbox que mostra todo o histórico de gerações.

Sugestões:

  • adicionar uma opção para apenas exibir as últimas N gerações; ou
  • adicionar opção para exibir apenas gerações em determinado intervalo (ex. de 1000 em 1000, sem exibir as gerações no meio destas).

É importante, no entanto, deixar o usuário ver as gerações uma a uma caso ele queira (permitir essa opção), pois esse é um requisito do trabalho.

Testar: remover pais da elite quando um quadrado mágico é gerado

FAZER EM UMA BRANCH SEPARADA!

Percebemos que após achar um quadrado mágico, o algoritmo gera diversos quadrados mágicos iguais ao encontrado, sendo estes ignorados pelo algoritmo. Isso acontece com muita frequência e potencialmente desperdiça processamento que podia ser usado para gerar outros quadrados mágicos.

Testar um ajuste no algoritmo para que, quando um quadrado mágico é gerado, os pais serem removidos da elite.

How do you generate the Second Parent

Thanks for explaining the first parent generation ([5, 0, 5, 4, 3, 1, 2, 1, 0])

How do you calculate the second parent? [1, 6, 6, 0, 0, 0, 0, 1, 0]

Thanks

Limitar ponto de crossover

Hoje o ponto de crossover é aleatório, pode ir do início ao fim do vetor. Verificamos que a maioria das convergências estão acontecendo em crossovers mais próximos ao fim do vetor.

screen shot 2016-06-21 at 19 44 31

  • Adicionar opção para definir índice mínimo e máximo na interface
  • Validar valor mínimo e máximo (mínimo = 0, máximo = N*N - 1)
  • Enviar os valores como entrada para o algoritmo e utilizá-los
  • Toda vez que mudar o valor do campo "Tamanho da matriz" e tirar foco, resetar estes campos para evitar valores inválidos.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.