miércoles, 28 de noviembre de 2007

Practica 5 de Neuronales otros sitios de interes

Números aleatorios:

El sistema de entrenamiento mediante back-propagation consiste en:
  • Empezar con unos pesos sinápticos cualquiera (generalmente elegidos al azar).
  • Introducir unos datos de entrada (en la capa de entradas) elegidos al azar entre los datos de entrada que se van a usar para el entrenamiento.
  • Dejar que la red genere un vector de datos de salida (propagación hacia delante).
  • Comparar la salida generada por al red con la salida deseada.
  • La diferencia obtenida entre la salida generada y la deseada (denominada error) se usa para ajustar los pesos sinápticos de las neuronas de la capa de salidas.
  • El error se propaga hacia atrás (back-propagation), hacia la capa de neuronas anterior, y se usa para ajustar los pesos sinápticos en esta capa.
  • Se continua propagando el error hacia atrás y ajustando los pesos hasta que se alcance la capa de entradas.

viernes, 23 de noviembre de 2007

Anuncio Wilkinson

Un anuncio gracioso en el que un padre y su bebe se pelean por los besos de la madre... ;)



No tiene perdida

martes, 20 de noviembre de 2007

Thing Thing 3

Juego en flash para jugar un solo jugador de plataformas, es de ir pegando tiros... En realidad esta bastante currao y es bastante entretenido... ;)

Para echarte unos 5 minutos y unas risas... lo mejor de todo es jugar con sonido...


Practica 5 de DSI

Procedimientos y funciones. Cursores con parámetros

Objetivo:

  • Implementar funciones y procedimientos.
  • Utilizar cursores con parámetros.
Actividad:
La explosión demográfica ha causado que las aulas se saturen. Por tanto es necesario incrementar los grupos de clases de cada asignatura, disminuyendo de esta manera el ratio alumno/grupo asignatura.

Los criterios a utilizar para realizar esta labor son los siguientes:
  • Para teoría, cada grupo tiene un máximo de 4 alumnos.
  • Se rellena siempre un grupo antes de empezar un nuevo grupo, admitiéndose como mucho un grupo de teoría no completo.
Para implementar esta nueva normativa se utilizan las siguientes tablas:
  • La tabla ESTUDIANTES ya disponible hasta ahora
  • La tabla MATRICULA ya disponible hasta ahora.
  • La tabla ASIGNATURAS ya disponible hasta ahora
  • La tabla GRUPOS, de nueva creación, con las siguientes especificaciones:
Campos:
    • numgrupo de tipo numero de tamaño 1.
    • nombreAsignatura del tipo nombre de la tabla ASIGNATURAS
Restricciones:
    • El par es clave primaria
    • nombreAsignatura será clave ajena a nombre de la tabla ASIGNATURAS
  • La tabla GRUPOSMATRICULA, también de nueva creación, con las siguientes
especificaciones:
Campos:
    • nmatEstudiante del tipo nmat de la tabla ESTUDIANTES
    • numgrupoGrupos del tipo numgrupo de la tabla GRUPOS
    • nombreAsignaturaGrupos del tipo nombre de la tabla ASIGNATURAS

Restricciones:
    • El trio es clave primaria
    • nmatEstudiante será clave ajena a nmat de la tabla ESTUDIANTES
    • El par será clave ajena al par de la tabla GRUPOS
Se pide:
1.- Crear un procedimiento que asigne a un alumno un grupo de teoría que se pasa por parámetro, insertando el correspondiente registro de grupomatricula.
CREATE OR REPLACE PROCEDURE asignaEstudianteGrupo (NmatStu IN estudiantes.NMAT%TYPE, ngrupo IN grupo.NUMGRUPO%TYPE, nomasiggrup IN grupo.NOMBREASIGNATURA%TYPE)IS
begin
INSERT INTO GRUPOSMATRICULA (NMATESTUDIANTE,NUMGRUPOGRUPOS,NOMBREASIGNATURAGRUPOS) VALUES(NmatStu, ngrupo, nomasiggrup);

END;
2.- Crear un procedimiento que para una asignatura determinada que se pasa por parámetro genere todos los grupos de teoría, insertando los registros en la tabla grupos, y asignándoles alumnos.
CREATE OR REPLACE PROCEDURE GENERAGRUPOSTEORIAASIGNATURA(nombreAsig IN ASIGNATURAS.NOMBRE%TYPE)IS
grupoactual GRUPO.NUMGRUPO%TYPE;
numAlumnos NUMBER;

cursor lestu IS select NMATESTUDIANTE from MATRICULA where NOMBREASIGNATURA = nombreAsig;
maestu lestu%ROWTYPE;

begin
open lestu;
fetch lestu INTO maestu;


grupoactual := 1;
numAlumnos := 0;

INSERT INTO GRUPO (NUMGRUPO, NOMBREASIGNATURA) Values ( grupoactual, nombreAsig);
WHILE lestu%FOUND LOOP
asignaEstudianteGrupo(maestu.NMATESTUDIANTE, grupoactual, nombreAsig);
numAlumnos := numAlumnos + 1;
fetch lestu INTO maestu;
if numAlumnos >3 then
numAlumnos := 0;
grupoactual := grupoactual + 1;
INSERT INTO GRUPO (NUMGRUPO, NOMBREASIGNATURA) Values ( grupoactual, nombreAsig);
end if;

END LOOP;
END;

3.- Crear un procedimiento que asigne a todas y cada una de las asignaturas los grupos de teoría necesarios.

CREATE OR REPLACE PROCEDURE GENERAGRUPOSTEORIA IS
cursor lasig IS select NOMBRE from ASIGNATURAS;
maasig lasig%ROWTYPE;

begin
open lasig;
fetch lasig INTO maasig;

WHILE lasig%FOUND LOOP
GENERAGRUPOSTEORIAASIGNATURA(maasig.nombre);
fetch lasig INTO maasig;
END LOOP;
END;
4.- Crear el procedimiento 3 sin llamar al generado en 2 y usando cursores con parámetros.

// Este estaba mal, cuando lo corrija lo subo denuevo...

Key Ball

Juego flash para jugar desde cualquier explorador y pasar un rato entretenido, aunque la inteligencia artificial deja un poco que desear a mi me funde...

Por fin he encontrado el juegazo supremo de futbol, para 2 jugadores en el mismo ordenador... Para pasar esos ratos aburridos.


Key Ball
Tomatillo las que te van a caer...

Juegos java para mi Motorola v360

Una vez mas, dando una vuelta por vagos.es, me encontré con juegos java para mi móvil, el Motorola v360, con una actualización de noviembre de 2007.

resolución de los juegos: 176x220



Antetodo agracer a revon por su subida y por su post.

Descarga de rapidshare.

El archivo contiene los siguientes juegos: (todos son archivos .jar)

50x15
Age of Empires II
Air Strike 1944
Alonso Racing
And1 Street Basketball
Asphalt 3 - Street Rules
Asphalt Urban GT 2
Asphalt Urban GT
Block Breaker Deluxe
Bomberman Panic
Brain Challenge
Bubble Bash
Chessmaster
Driver L A Undercover
Everyday English Trainer
Galaga
God of War
Los Sims - New York Nights
Lumines
MahJong Quest
Medieval Combat
Metal Slug Mobile Impact
Metal Smash Pinball
Micro Machines
Midnight Bowling
Midnight Pool
Might & Magic
Might And Magic II
Mobile Brain Trainer
Monopoly
Mystery Mansion Pinball
Nightmare Creatures
Nitro Street Racing
OutRoad
Pacman
Pang
Pinball
Platinum Sudoku
Prince of Persia - Sands of Time
Prince of Persia - The Two Thrones
Prince of Persia - The Warrior Within
Pro Rally Racing
Rainbow Six 3
Rainbow Six Lockdown
Rayman 3
Real Football 2007
Real Football 2008
Sensible Soccer
Sexy Blocks
Sexy Poker Top Models
Siberian Strike
Solitaire
Sonic The Hedgehog - Part Two
Sonic The Hedgehog Part One
Splinter Cell - Chaos Theory
Splinter Cell - Double Agent
Splinter Cell 2
Splinter Cell
Street Fighter II
Super Bomberman
Super Mario Movil
Super Puzzle Bobble
Tetris Mania
Tour De France 2007
Trivial Pursuit
Ultimate Street Football
Virtua Tennis Mobile
Worms
WWE Raw
XIII 2
XIII

Que los disfruteis tanto como yo... ;)

Real Cap

Juego de futbol de chapas, es multi jugador y envicia bastante!! :)

Antes conocido como: World Cap

pero ahora se ha trasladado a la página del real madrid...

Página Oficial: RealMadrid.com


Dice Wars

Un juego tipo Risk... La verdad es que es entretenido, para pasar 15 minutos en los que no hay nada mejor que hacer no esta mal... ;)


Desktop Tower Defense

Uno de los juegos mas enviciantes del mundo... el objetivo es evitar que los enemigos salga por las salidas de las diferentes pantallas, las contrarias de por las que entran... Para ello hay que colocar Torres de defensa, e ir upgradeandolas para que hagan mas daño... Envicia mucho, lo malo es que cada pantalla dura mucho, casi media hora...


Candy Cane Crisis en Flash

es un juego de los mas freaks que he visto... Este juego de plataformas navideño en el que eres un Papa Noel y vas pisando muñecos de nieve y otros enemigos no menos deleznables...

Sonic en Flash

el mítico Sonic de toda la vida... pero ahora puedes jugarlo desde web!!

sábado, 17 de noviembre de 2007

viernes, 16 de noviembre de 2007

sin TRIKI TRIKI no hay BANG BANG!!!!!

El Ministerio de Salud Argentino ha creado este video para fomentar el uso de preservativos en los jovenes.
Tambien se la conoce como "Sin triki triki, no hay bang bang"...

Practica 5 de Neuronales

Modificar la práctica p4 añadiendo una capa oculta, de esta forma tendremos una red de tres capas que debe ser capaz de poder entrenar y aprender el comportamiento de un XOR u otro problema no linealmente separable.

El número de neuronas en la capa oculta será una constante en el programa.

Deben inicializarse los pesos de forma aleatoria, con valores comprendidos entre -pesoinicial y +pesoinicial donde pesoinicial será una constante en el programa, con valor 0.5

Estos valores iniciales deberán ser además distintos cada vez que se ejecute el programa.

Ejemplo: XOR, con dos neuronas en la capa oculta, ganancia de aprendizaje 0.6, momento 0.4, error máximo 0.01 y pesos iniciales entre -0.5 y +0.5. Ciclos máximos 10000.

Debe tardar entre 1000 y 5000 ciclos, lo más frecuente serán valores alrededor de 1000. En algunas ocasiones (pocas, quizás una entre diez o una entre veinte) puede no entrenar.

NOTA:
utilizar primero pesos iniciales:
0.00
0.01
0.02
...
para poder comprobar resultados (Pesos a usar para depuracion y pruebas), y luego hacer que sean aleatorios.

Practica 4 de Neuronales salidas y archivos de entrada

Aquí estan las salidas que deben salir de la práctica 4 con los archivos que entrenan, uno con los valores 0 y 1, y el otro con los valores 0.05 y 0.95, y el que no entrena...


Archivos de entrada:
ENTRENA (0,1)
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
1 1 1 0 1

ENTRENA(0.05, 0.95)
0.05 0.05 0.05 0.05 0.05
0.05 0.05 0.95 0.95 0.05
0.05 1 0.05 0.95 0.05
0.95 0.95 0.95 0.05 0.95

NO ENTRENA
0 0 0 0 0
0 0 1 1 0
1 1 0 1 0
1 1 1 0 1

Plugin para winamp que mezcla el final de una cancion con el principio de la siguiente

Plugin que cuando termina una canción mezcla el final con el principio de la otra.

página oficial: sqrsoft

Plugin para minimizar thunderbird

y que no moleste... se queda al lado del reloj y no molesta todo el tiempo...

Pagina oficial: Minimize To tray
Pagina en español: Traducción de Minimize to Tray

sábado, 10 de noviembre de 2007

Practica 4 de Neuronales

0 0 0 0 0
0 1 1 0 1
1 0 1 0 1
1 1 1 1 0

El número de salidas será una constante dentro del programa.

En el ejemplo de arriba la red tendrá 3 entradas y dos salidas si la constante vale 2.

Serán constantes también el error máximo permitido (0.001) calculado como:

error límite = error cuadrático total / (patrones * salidas),

la ganancia de aprendizaje (0.6), el momento (0.9) y el número máximo de ciclos (10000).

Finalizado el aprendizaje se mostrarán los resultados como una tabla con:

x1,x2,x3,s1,y1,s2,y2,s3,y3 ...

Ejemplo que entrena (184 ciclos, 108 si se usa 1->0.95 y 0->0.05):

0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
1 1 1 0 1

Ejemplo que no entrena:

0 0 0 0 0
0 0 1 1 0
1 1 0 1 0
1 1 1 0 1

Se empleará para cálculo de los incrementos de los pesos las expresiones vistas en clase de retropropagación del gradiente.

martes, 6 de noviembre de 2007

Practica 3 de Neuronales

La práctica de neuronales que menos tiempo me ha llevado... ;)



Pues nada... solo hay que cambiar la función de Y para que en vez de ser la anterior (0 si x<=0 y1 si x>0) sea la sigmoide(1/1+e^(-p)) teniendo en cuenta que anteriormente tenemos que admitir n entradas... :)

un saludo

Practica 3 de Neuronales

Modificar p2 para que emplee varias entradas y para que use una sigmoide como función de activación. Máximo de entradas: 20, el número de entradas se obtendrá del fichero de patrones y será el número de columnas menos la última que es la salida.

Ejemplo que entrena (225 ciclos):

0 0 0 0
0 0 1 0
0 1 0 0
1 1 1 1

Ejemplo que no entrena:

1 0 0 0
1 0 1 1
0 1 0 1
0 1 1 0


Practica 2 de Neuronales salidas y archivos de entrada

Aquí estan las salidas que deben salir de la práctica 2, con las entradas and, or y xor respectivamente...

and en 6 iteraciones, or en 4 y xor nunca converge.



Entradas:
AND
0 0 0
0 1 0
1 0 0
1 1 1

OR
0 0 0
0 1 1
1 0 1
1 1 1

XOR
0 0 0
0 1 1
1 0 1
1 1 0

lunes, 5 de noviembre de 2007

Practica 3 de DSI

Primeros pasos en PL/SQL
Objetivos
• Realizar el primer código en PL/SQL.
• Implementar funciones y procedimientos en PL/SQL.

Actividad
Se dispone de la tabla aula y de la tabla asignaturas. Se desea asignar horarios de manera que a cada asignatura se le asigne un aula a una determinada hora. Para ello se construye una relación
denominada horario entre aula y asignatura, que se implementará mediante la tabla HORARIO.

Esta tabla debe rellenarse en base al siguiente algoritmo:
Mientras queden asignaturas por asignar aula y aulas disponibles obtener siguiente asignatura obtener siguiente par
insertar tupla en la tabla HORARIO

1.- Eliminar la clave ajena a aula de la tabla asignaturas.

2.- Crear la tabla HORARIO, con las siguientes especificaciones:
Campos:
-codigoAula del tipo codigo de la tabla AULAS
-nombreAsignatura del tipo nombre de la tabla ASIGNATURAS
-hora de tipo entero con rango 1 a 5, minimizando el espacio requerido para éste

Restricciones:
-El par ha de ser único
-El par ha de ser único
-El par será clave primaria.
-codigoAula será clave ajena a codigo de la tabla AULAS
-nombreAsignatura será clave ajena a nombre de la tabla ASIGNATURAS

3.- Generar el código PL/SQL que rellene de la forma indicada la tabla HORARIO.
declare
horaactual horario.hora%TYPE;

cursor lasig IS select nombre from asignaturas;
maasig lasig%ROWTYPE;

cursor laula IS select codigo from aulas;
maaula laula%ROWTYPE;


begin
open lasig;
open laula;

fetch laula INTO maaula;
fetch lasig INTO maasig;

horaactual := 1;

WHILE laula%FOUND AND lasig%FOUND LOOP
INSERT INTO horario (CODIGOAULA,NOMBREASIGNATURA,HORA)
VALUES (maaula.codigo ,maasig.nombre, horaactual );

horaactual := horaactual + 1;
fetch lasig INTO maasig;
if horaactual >5 then
horaactual := 1;
fetch laula INTO maaula;
end if;
END LOOP;
END;
4.- Crear un procedimiento denominado generaHorario que utilice el código generado en el punto 3.

CREATE OR REPLACE PROCEDURE generaHorario IS
horaactual horario.hora%TYPE;

cursor lasig IS select nombre from asignaturas;
maasig lasig%ROWTYPE;

cursor laula IS select codigo from aulas;
maaula laula%ROWTYPE;


begin
open lasig;
open laula;

fetch laula INTO maaula;
fetch lasig INTO maasig;

horaactual := 1;

WHILE laula%FOUND AND lasig%FOUND LOOP
INSERT INTO horario (CODIGOAULA,NOMBREASIGNATURA,HORA)
VALUES (maaula.codigo ,maasig.nombre, horaactual );

horaactual := horaactual + 1;
fetch lasig INTO maasig;
if horaactual >5 then
horaactual := 1;
fetch laula INTO maaula;
end if;
END LOOP;
END;
5.- Crear una función denominada consultaAula que recibe por parámetro el nombre de una asignatura y devuelve el código del aula de dicha asignatura.
CREATE OR REPLACE FUNCTION consultaAula (argumento1 IN horario.NOMBREASIGNATURA%TYPE)

RETURN horario.codigoaula%TYPE
IS
cod horario.codigoaula%TYPE;

begin
Select horario.codigoaula into cod
from horario
where argumento1 = horario.NOMBREASIGNATURA;
RETURN cod;
END;

jueves, 1 de noviembre de 2007

Practica 2 de Neuronales otros sitios de interes

Para la lectura del archivo, al pasarlo al array en floats necesitaremos estas 2 funciones:
la función para dividir un String en trozos
la función para convertir una cadena en un float

y posteriormente, en la funcion y = F(p) nos vendra muy bien la función exponencial...
la función exponencial en c++

PD: aun sigo peleandome con la practica...