sábado, 21 de febrero de 2009

Visión y Movimiento

La visión es un parámetro que adquiere el individuo por herencia de sus progenitores. Exiten cuatro niveles de visión relativas al número de casillas que puede discernir más allá de su posición:

- Nivel 0: sin visión, el individuo es ciego y se mueve erráticamente con la esperanza que el azar lo lleve hasta la comida.

- Nivel 1: capacidad de ver las casillas de su contorno con la ventaja de realizar un movimiento dirigido según intereses.

- Nivel 2: visión de dos casillas más allá rspecto de su posición. La ventaja respecto a percibir depredadores es significativa.

- Nivel 3: máximo nivel de visión posible con hasta 3 posiciones desde su ubicación.


Esta particularidad de niveles, con una clara ventaja evolutiva a medida que se tiene mayor distancia de visión, tiene en contrapartida un consumo energético. Esto es, a mayor nivel de visión, las decisiones de movimiento son más acertadas y efectivas, pero supone un gasto en la energía del individuo. En cierto modo podría ser un equivalente al cerebro humano ya que la única decisión que toma el Blable, el movimiento, está razonado según sus necesidades y esto debe suponer en consecuencia una inversión en energía. Recordemos que el cerebro humano es el órgano que más consumo calórico tiene con un peso relativo de entre el 1,5 y el 2 por ciento y un consumo del 20% de la energía.



La visión del Blable viene fijada matemáticamente (a la hora de programar) por una serie de fórmulas matemáticas que le permitirán "saber" qué hay a su alrededor. La imagen de arriba, representa un hipotético mundo de 7x7 casillas donde un Blable ciego desconocería dónde está la comida y, aunque no tendría consumo energético derivado de dicha funcionalidad, tendría un movimiento errático y poco efectivo en busca de alimento con el consiguiente gasto energético en movimientos. En cambio, un Blable con visión de nivel 3 (y situado en el centro de la cuadrícula) tendría una visión completa del mundo y sabría exactamente dónde está la comida, haría los movimientos precisos para alcanzarla a costa de cierto consumo de su energía derivado de su capacidad de proceso y análisis de su entorno.

¿Cual es la explicación matemática del movimiento? (adelanto que hay un error, a ver si te das cuenta):
Existen dos valores que vienen dados; el primero es la altura del mundo Blable. En el caso del ejemplo es una matriz bidimensional de 7x7 y, por lo tanto, la altura es 7 (en adelante ALT) El otro valor que también conocemos es la posición del Blable en adelante POS) que, recordemos, es uno de los datos que conjuntamente con su información genética, guarda el Blable en su "interior". Pues bien, fíjate en la imagen de abajo:



El Blable 6 (femenino, por cierto) se encuentra en la celda número 25 y, para él, digo, para ella!, las fórmulas matemáticas funcionan perfectamente.
Ejemplo: si el Blable 6 tuviese una visión de 2º nivel conocería de la existencia del Blable 1 (femenino también) Si en su genética tuviese el carácter gregario buscaría su proximidad al no tener alimento a la vista. Su movimiento natural sería moverse a la celda 17 ó 18. Pongamos que se mueve a la casilla 17, la fórmula matemática para ese movimiento sería:

x=pos-alt-1

Siendo POS=25 y ALT=7 la cosa quedaría así:

x=25-7-1

Resultado:

x=17

Por lo tanto x (o la posición de destino del Blable 6) sería igual a 17 y el movimiento sería correcto. ¿Dónde está el error del que hablaba antes? Fácil, ¿qué ocurriría en el caso del resto de Blables que vemos en la imagen y que están al límite del mundo Blable? Pongamos el ejemplo del Blable 2, sí, el de la esquinita. Imaginemos que tiene una visión de nivel 1 y en consecuencia, no tendría comida cercana. Tampoco tiene un depredador que condicione su movimiento y todo parece indicar que haría un movimiento "al azar". Pues bien, al estar en los límites de su mundo, sería imposible hacer el mismo movimiento que el Blable 6 ya que se iría a la celda número -1 lo cual es imposible:

x=pos-alt-1
x=7-7-1
x=-1

Salirse fuera de los límites no parece aceptable pero vayamos un poco más allá; ¿qué ocurriría con el Blable 5? Lo indicaré con la misma fórmula anterior:

x=pos-alt-1
x=15-7-1
x=7

Fíjate que en este caso el Blable 5 que está en la casilla 15, ha decido hacer un movimiento de 1 casilla arriba y a la izquierda y se ha "teletransportado" a la 7 que le queda muy alejada. Este movimiento sería inaceptable y se saldría de las normas establecidas haciendo que las fórmulas matemáticas no funcionen tampoco en este caso.

¿Como solucionar que los Blables (no sólo los femeninos jeje) salgan del mundo Blable? ¿Qué correcciones se deberían hacer a las fórmulas para impedir salir fuera o saltar a casillas que no correspondan? Fácil, haciendo uso del valor restante (en adelante MOD) de la división de toda la vida.

Mañana indico la solución pero te invito a que me ofrezcas una alternativa al análisis del resto de las divisiones.

LA SOLUCIÓN
Me he cogido una cerveza de la nevera para poder explicar mi solución matemática al problema de cómo evitar que los Blables se salgan de su mundo o hagan movimientos extraños. Aceptaré sugerencias, ideas y cualquier cosa que me ayude a mejorar el proceso; HELP!

Basándonos en un diagrama de flujo, el proceso de visión/decisión/movimiento del Blable sería el siguiente.

Nivel 1 de Visión:


Nivel 2 de Visión:



Nivel 3 de Visión:



Y finalmente todo el proceso completo (alguien me echa una mano con el código?; se acepta pseudocódigo):



Teniendo en cuenta que esta entrada está dedicada a la Visión y Movimiento, invierte unos segundos a ver este video que ha preparado la gente de Microsoft acerca de cómo ven el futuro cercano:

<a href="http://video.msn.com/?playlist=videoByUuids:uuids:a517b260-bb6b-48b9-87ac-8e2743a28ec5&showPlaylist=true&from=msnvideo=es-ES" target="_new" title="Future Vision Montage">Video: Future Vision Montage</a>

¿Te has fijado bien? No hay ni un sólo ratón.

No hay comentarios:

Publicar un comentario