sábado, 29 de novembro de 2008

QLearning Java

O objectivo deste trabalho é implementar uma técnica de aprendizagem por reforço denominada por QLearning, que consiste num tipo de aprendizagem não supervisionada, onde o "robô" anda a explorar o cenário, evitando os obstáculos até conseguir chegar à saída.

De cada vez que consegue sair, atribui uma recompensa à casa anterior à saída, e assim sucessivamente, até obter um caminho com várias recompensas.


Inicialmente o cenário é composto por células pretas(obstáculos) e brancas (caminho livre).



Posteriormente as casas que possuem uma recompensa, são marcadas com a cor azul, onde a tonalidade da cor é relevante, quanto mais escura, maior é a recompensa, logo está mais próximo da saída.



Neste exemplo já foi encontrado o caminho, ou seja a solução já convergiu.
A casa representada a vermelho consiste na posição actual do robô.

Q-Learning

Finalmente um pequeno vídeo para demonstrar, espero que gostem.

sexta-feira, 28 de novembro de 2008

Aprendizagem Competitiva Java

Após ter processado um ficheiro de texto com o Text Processor, verificou-se a existência de duas classes, então os representantes dessas classes convergem para a média das distribuições dos dados.



Representantes: Pontos Brancos.
Classe: Nuvem azul (2).

Text Processor Java


Esta aplicação permite a leitura de conjuntos de dados, onde a leitura é efectuada por parametrização adequada e posteriormente divide os dados em classes.

Todos os dados são gravados num formato único, preferencialmente com espaços entre atributos e fim-de-linha no fim de cada exemplo.

Pré-processa os dados gerando ficheiros que contenham apenas escalares.

Isto foi utilizado na cadeira de Machine Learning, para efectuar pré-processamento de dados para serem manipulados pelos algorítmos de aprendizagem.

Super Mario Shotgun C# XNA


Apenas uma brincadeira para pôr o Super Mario a matar cogumelos de caçadeira, LOL.

Foi implementado em C#, utilizando a plataforma XNA da Microsoft.
Um projecto a continuar no futuro...

Pong Move - Processing





Com o Processing implementei esta aplicação tipo o Pong, mas com a diferença de o "paddle" ser movido pelo movimento do jogador, por exemplo com a mão a frente da câmara, é claro que isto não passou de um protótipo.

Bubbles Processing - Java


Utilizando o Processing, e a brincar com os números aleatórios, criei umas 300 bolhas, com tamanhos e cores aleatórias, que colidem com a margem da janela, fica um efeito engraçado, lol.

OpenFaceMote Java

As principais funcionalidades desta aplicação são o reconhecimento do discurso do utilizador, que pode ser usado, por exemplo, para efectuar cliques;

o controlo do cursor do rato no sistema operativo, que pode ser efectuado de duas formas diferentes (Incremental e Precision), e ainda a obtenção de oito direcções básicas, relativas ao movimento do utilizador.

Isto é conseguido através da captura de som pelo microfone e pela detecção de faces na imagem, que é capturada pela câmara.

Temos o "Loading Screen"...



Então temos os seguintes modos :



Modo Learning, é o estado inicial da aplicação, neste estado o objectivo como o próprio nome indica, é de aprendizagem da localização do utilizador e da sua capacidade de movimento.



Estado Incremental




O movimento do rato e as direcções são obtidas quando o utilizador move a cabeça numa determinada direcção, ultrapassando a barreira definida pelas linhas de cor verde. Se o utilizador se mantiver no centro, então está parado.

Estado Precision





Neste estado a área definida anteriormente na fase de aprendizagem, que aqui é representada pelo rectângulo vermelho, consiste na área de movimento do utilizador. Ou seja, o centro da face é representado pelo ponto amarelo, e esse vai ser o nosso cursor.

Como qualquer aplicação, a OpenFaceMote não está isente de limitações, no entanto com algumas afinações e com mais tempo para trabalhar no projecto, seria possível obter algo pronto para o "mercado".

movieSpot em ASP.NET e AJAX

No trabalho proposto temos um site que onde o tema será Filmes e poderemos:

• Efectuar pesquisas, por vários tópicos.
• Administração da página, da base de dados e de utilizadores.
• Visualização de vários dados sobre os filmes.
• Aplicação de comentários aos filmes.



O ecrã inicial, onde é possível obter informações se clicarmos na imagem, isto foi conseguido com a implementação de WebServices que efectuam um CallBack ao Servidor para obter os dados pretendidos pelo utilizador.

Foram implementadas várias animações e opções dinâmicas utilizando o Ajax, que concedeu um aspecto muito simpático ao site.

Curriculum Vitae XML

O objectivo deste projecto foi desenvolver um hiper documento WEB que permita a visualização de currículos, onde os dados estão armazenados num ficheiro XML (eXtensible Markup Language).





O XML permite a visualização dos dados de diferentes formas, nomeadamente neste caso concreto, estamos a utilizar o XSL (Extensible Stylesheet Language Family) e o XML DOM (Document Object Model).

Messenger em Java, Arquitectura CORBA

Esta aplicação possui várias funcionalidades tais como:

Conversa entre 2 Clientes Peer – to Peer.
Broadcast da Msg para todos os Clientes.
Implementação de sons e cores personalizadas.
Envio de Imagens entre 2 Clientes.
Implementação da tecla ENTER e do double-click.
Servidor envia lista de User´s para todos os Clientes.





Neste projecto foi interessante adquirir conhecimentos sobre a Arquitectura CORBA, e a forma como os objectos remotos comunicam entre si de forma transparente.

Podemos ver a informação obtida pelo servidor:



E na conversação, a parte da imagem deu um bocado de trabalho, mas acho que ficou com um aspecto interessante, quem sabe com mais algum tempo, faria concorrência ao MSN Live...

T9 Smart Writing


Este sistema permite escrever mensagens com apenas a pressão de uma tecla por letra no telefone baseado num dicionário interno.

Com esta aplicação é possível simular e testar algoritmos de escrita inteligente de mensagens.

Foi implementada em Java.

BiblioSoft

Este sistema pretende responder as necessidades impostas para a gestão de uma instituição bibliotecária. Implicando lidar com toda a gestão de material (livros, revistas, DVD, CD), utentes e funcionários.

Aplicação implementada em Java, com acesso à Base de Dados da Biblioteca.

Site em HTML sobre a PSP

O Site resultante deste projecto tem como tema a consola portátil da Sony que foi lançada cá em Portugal em Setembro de 2005. Chama-se Playstation Portable ou PSP, no site é possível conheçer a história da consola, as suas especificações técnicas, capacidades multimédia, visualizar uma galeria com fotos da consola e dos seus acessórios. Também foi efectuado um pequeno apanhado de alguns dos seus melhores jogos.

Apenas vou por uma imagem a exemplificar.

Chrome e Menus Dinâmicos



O primeiro consiste num analisador cromático onde o utilizador pode escolher uma cor através dum interface com botões para posteriormente visualizar a cor e a sua respectiva complementar.

O segundo projecto é uma aplicação HTML que a partir de menus dinâmicos oferece interacção com o utilizador a vários níveis utilizando vários eventos do JavaScript.

Fractal Explorer

Aplicação que permitia explorar Fractais, nomeadamente do Conjunto de MandelBrot, e do Conjunto de Julia.

Programado em C++.



Penso que correu bem, e foi muito interessante de implementar, de seguida algumas imagens resultantes.

Para o conjunto de MandelBrot :



E finalmente para o conjunto de Julia: