Mostrando postagens com marcador algoritmos. Mostrar todas as postagens
Mostrando postagens com marcador algoritmos. Mostrar todas as postagens

PyEvolve: Framework Open-Source de Algoritmos genéticos rodando com PyS60!

Dando continuidade a meu último post, encontrei há algumas semanas atrás um trabalho muito interessante que está sendo desenvolvido pelo brasileiro Christian S. Perone: um framework open-source de algoritmos genéticos escrito na linguagem Python denominado Pyevolve. O Pyevolve é um toolbox com várias ferramentas para solução de diversos problemas de otimização , no qual se baseia na computação evolucionária através do poder dos algoritmos genéticos.

Uma dos trabalhos recentes feitos por Christian, é o porting do Pyevolve para dispositivos portáteis. Ele já conseguiu portar com sucesso a execução dos algoritmos genéticos em um aparelho PSP da Sony solucionando o problema do caixeiro viajante, e ilustrando na tela do aparelho no fim a melhor jornada obtida pelo algoritmo. Muito legal, recomendo darem uma olhada aqui. Agora, recentemente ele decidiu portar o Pyevolve para ser executado nos aparelhos móveis.

A linguagem escolhida por ele, claro, foi o Python, visto que o próprio PyEvolve foi escrito nela. Através do PyS60, Python para celulares Symbian S60, ele conseguiu executar com desempenho satisfatório no aparelho Nokia N73. O problema tratado pelo algoritmo genético foi a busca do mínimo de uma função matemática (Sphere) com 5 dimensões.

Algo muito legal, mesmo especialmente por se acreditar que rodar algoritmos desse nível que exigem uma certa computação exaustiva não seriam estáveis em aparelhos como celulares.

De acordo com os experimentos realizados, o algoritmo genético conseguiu encontrar o mínimo da função matemática de complexidade fácil-mediana em apenas 8 segundos (com 18 gerações).

Seguem alguns screenshots do PyEvolve for Mobile em execução:


Implementação HashTable para JavaME

Aí vai uma dica bem legal para aqueles que estão precisando de uma estrutura de dados para mapeamento de dados em que se precisa buscar um elemento com uma grande rapidez. O famoso HashTable que existe no JavaSE derivada da interface MAP e não existente no JavaME.
Pois, encontrei no blog do Ricardo Ogliari Mobilidade é tudo falando mais sobre uma implementação do HashTable para o JavaME.
Recomendo a leitura! Por sinal, me ajudou bastante em um projeto que preciso navegar em uma grande estrutura de dados e preciso com rapidez a disponibilidade desses dados.

Para aqueles que não sabem onde se aplicam uma tabela Hashing, segue um pequeno exemplo tirado do blog do Ricardo, vejam abaixo:

"Um exemplo prático de uma Tabela de Hashing que todo mundo já usou é a agenda de telefones. Neste caso, a chave utilizada para encontrar a posição do elemento na lista é a primeira letra do nome. Esta não é uma função ideal, pois gera muitas colisões. Porém, ainda assim, é muito mais rápido procurar um nome apenas entre os elementos que começam com a mesma letra do que procurá-lo na lista inteira. Utilizando o exemplo da agenda, fica fácil demonstrar que uma função de Hashing mal elaborada pode gerar desequilíbrio na lista, pois existem muito mais nomes em português começando com a letra A do que com a letra Z. "


Recomendo a todos a leitura, que pode ser encontrada no blog Mobilidade é tudo, por este link,
top