guisehn / genetic-magic-square-finder Goto Github PK
View Code? Open in Web Editor NEWGenetic algorithm applied to the Magic Square problem
License: MIT License
Genetic algorithm applied to the Magic Square problem
License: MIT License
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.
Exibir quadrados mágicos encontrados no lado esquerdo.
Mostrar:
E, se possível:
Hoje o algoritmo genético nunca permite quadrados repetidos na população.
Adicionar opção no programa para que o usuário possa optar por isso (checkbox).
Após a apresentação do trabalho, traduzir o app, comentários do código e README.md para inglês.
Para 4x4, vimos que matar os indivíduos da elite a cada 15k gerações traz bons resultados. Para 5x5, este valor é mais eficiente em ~90k. Para 6x6, ~110k, etc.
Mudar na interface o período de morte da elite automaticamente quando usuário trocar valor do campo "Tamanho da matriz" com valor recomendado.
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.
Mostrar pais de cada geração. IMPORTANTE TORNAR ESTA OPÇÃO SELECIONÁVEL POR QUESTÕES DE DESEMPENHO E MEMÓRIA.
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:
Descrever no README.md:
Testando com os seguintes parâmetros:
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:
É 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.
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.
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
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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.