A continuación ponemos la presentación que utilizamos en clase:
Después de esto, el video de la página funcionando:
Por último, un enlace para bajar el código completo:
http://www.mediafire.com/?kawn5s6nh3ykl1v
Sistemas Adaptativos
martes, 27 de noviembre de 2012
viernes, 23 de noviembre de 2012
Extras
Estos son los links de las publicaciones extras realizadas en el blog con el fin de ser tomadas en cuenta para la calificación final de la clase de Sistemas Adaptativos.
Agentes Inteligentes
http://sistemas-adaptativos-fime.blogspot.mx/2012/11/agentes-inteligentes.html
Caos
http://sistemas-adaptativos-fime.blogspot.mx/2012/11/caos.html
Lógica difusa y sistemas expertos
http://sistemas-adaptativos-fime.blogspot.mx/2012/11/logica-difusa.html
Redes neuronales artificiales
http://sistemas-adaptativos-fime.blogspot.mx/2012/11/redes-neuronales-artificiales.html
Caos
Teoría del caos es la denominación popular de la rama de
las matemáticas, la física y otras ciencias que trata ciertos tipos de sistemas
dinámicos muy sensibles a las variaciones en las condiciones iniciales.
Pequeñas variaciones en dichas condiciones iniciales pueden implicar grandes
diferencias en el comportamiento futuro; complicando la predicción a largo
plazo. Esto sucede aunque estos sistemas son en rigor determinísticos, es
decir; su comportamiento puede ser completamente determinado conociendo sus
condiciones iniciales.
Clasificación
Los sistemas dinámicos se pueden clasificar básicamente en:
- Estables
- Inestables
- Caóticos
Un sistema estable tiende a lo largo del tiempo a un punto,
u órbita, según su dimensión (atractor o sumidero). Un sistema inestable se
escapa de los atractores. Y un sistema caótico manifiesta los dos
comportamientos. Por un lado, existe un atractor por el que el sistema se ve
atraído, pero a la vez, hay "fuerzas" que lo alejan de éste. De esa
manera, el sistema permanece confinado en una zona de su espacio de estados,
pero sin tender a un atractor fijo.
Una de las mayores características de un sistema inestable
es que tiene una gran dependencia de las condiciones iniciales. De un sistema
del que se conocen sus ecuaciones características, y con unas condiciones
iniciales fijas, se puede conocer exactamente su evolución en el tiempo. Pero
en el caso de los sistemas caóticos, una mínima diferencia en esas condiciones
hace que el sistema evolucione de manera totalmente distinta. Ejemplos de tales
sistemas incluyen el Sistema Solar, las placas tectónicas, los fluidos en
régimen turbulento y los crecimientos de población.
Aplicaciones
La Teoría del Caos y la matemática caótica resultaron ser
una herramienta con aplicaciones a muchos campos de la ciencia y la tecnología.
Gracias a estas aplicaciones el nombre se torna paradójico, dado que muchas de
las prácticas que se realizan con la matemática caótica tienen resultados
concretos porque los sistemas que se estudian están basados estrictamente con
leyes deterministas aplicadas a sistemas dinámicos.
En Internet se desarrolla este concepto en Teoría del Caos,
el tercer paradigma, de cómo la estadística inferencial trabaja con modelos
aleatorios para crear series caóticas predictoras para el estudio de eventos
presumiblemente caóticos en las Ciencias Sociales. Por esta razón la Teoría del
Caos ya no es en sí una teoría: tiene postulados, fórmulas y parámetros
recientemente establecidos con aplicaciones, por ejemplo, en las áreas de la
meteorología o la física cuántica, y actualmente hay varios ejemplos de
aplicación en la arquitectura a través de los fractales, por ejemplo el Jardín
Botánico de Barcelona de Carlos Ferrater.
A continuación mostramos un video sobre este tema con una explicación más dinámica y sencilla.
Lógica Difusa
A continuación mostramos un video con una excelente explicación acerca de la lógica difusa y, como extra, sistemas expertos.
Redes Neuronales Artificiales
Las redes de neuronas artificiales (denominadas
habitualmente como RNA o en inglés como: "ANN" ) son un paradigma de
aprendizaje y procesamiento automático inspirado en la forma en que funciona el
sistema nervioso de los animales. Se trata de un sistema de interconexión de
neuronas en una red que colabora para producir un estímulo de salida. En
inteligencia artificial es frecuente referirse a ellas como redes de neuronas o
redes neuronales.
Propiedades
Una red neuronal se compone de unidades llamadas neuronas.
Cada neurona recibe una serie de entradas a través de interconexiones y emite
una salida. Esta salida viene dada por tres funciones:
1. Una función de propagación (también conocida como función de
excitación), que por lo general consiste en el sumatorio de cada entrada
multiplicada por el peso de su interconexión (valor neto). Si el peso es
positivo, la conexión se denomina excitatoria; si es negativo, se denomina
inhibitoria.
2. Una función de activación, que modifica a la anterior. Puede
no existir, siendo en este caso la salida la misma función de propagación.
3. Una función de transferencia, que se aplica al valor
devuelto por la función de activación. Se utiliza para acotar la salida de la
neurona y generalmente viene dada por la interpretación que queramos darle a
dichas salidas. Algunas de las más utilizadas son la función sigmoidea (para
obtener valores en el intervalo [0,1]) y la tangente hiperbólica (para obtener
valores en el intervalo [-1,1]).
Ventajas
Las redes neuronales artificiales (RNA) tienen muchas
ventajas debido a que están basadas en la estructura del sistema nervioso,
principalmente el cerebro.
·
Aprendizaje: Las RNA tienen la habilidad de
aprender mediante una etapa que se llama etapa de aprendizaje. Esta consiste en
proporcionar a la RNA datos como entrada a su vez que se le indica cuál es la
salida (respuesta) esperada.
·
Auto organización: Una RNA crea su propia
representación de la información en su interior, descargando al usuario de
esto.
·
Tolerancia a fallos: Debido a que una RNA
almacena la información de forma redundante, ésta puede seguir respondiendo de
manera aceptable aun si se daña parcialmente.
·
Flexibilidad: Una RNA puede manejar cambios no
importantes en la información de entrada, como señales con ruido u otros
cambios en la entrada (por ejemplo si la información de entrada es la imagen de
un objeto, la respuesta correspondiente no sufre cambios si la imagen cambia un
poco su brillo o el objeto cambia ligeramente).
·
Tiempo real: La estructura de una RNA es
paralela, por lo cual si esto es implementado con computadoras o en
dispositivos electrónicos especiales, se pueden obtener respuestas en tiempo
real.
Aprendizaje
Una segunda clasificación que se suele hacer es en
función del tipo de aprendizaje de que es capaz (si necesita o no un conjunto
de entrenamiento supervisado). Para cada tipo de aprendizaje encontramos varios
modelos propuestos por diferentes autores:
·
Aprendizaje supervisado: necesitan un conjunto
de datos de entrada previamente clasificado o cuya respuesta objetivo se
conoce. Ejemplos de este tipo de redes son: el perceptrón simple, la red
Adaline, el perceptrón multicapa, red backpropagation, y la memoria asociativa
bidireccional.
·
Aprendizaje no supervisado o autoorganizado: no
necesitan de tal conjunto previo. Ejemplos de este tipo de redes son: las
memorias asociativas, las redes de Hopfield, la máquina de Boltzmann y la
máquina de Cauchy, las redes de aprendizaje competitivo, las redes de Kohonen o
mapas autoorganizados y las redes de resonancia adaptativa (ART).
·
Redes híbridas: son un enfoque mixto en el que
se utiliza una función de mejora para facilitar la convergencia. Un ejemplo de
este último tipo son las redes de base radial.
·
Aprendizaje reforzado: se sitúa a medio camino
entre el supervisado y el autoorganizado.
Aplicaciones
Las características de las RNA las hacen bastante
apropiadas para aplicaciones en las que no se dispone a priori de un modelo
identificable que pueda ser programado, pero se dispone de un conjunto básico
de ejemplos de entrada (previamente clasificados o no). Asimismo, son altamente
robustas tanto al ruido como a la disfunción de elementos concretos y son
fácilmente paralelizables.
Esto incluye problemas de clasificación y reconocimiento
de patrones de voz, imágenes, señales, etc. Asimismo se han utilizado para
encontrar patrones de fraude económico, hacer predicciones en el mercado
financiero, hacer predicciones de tiempo atmosférico, etc.
También se pueden utilizar cuando no existen modelos
matemáticos precisos o algoritmos con complejidad razonable, por ejemplo la red
de Kohonen ha sido aplicada con un éxito más que razonable al clásico problema
del viajante (un problema para el que no se conoce solución algorítmica de
complejidad polinómica).
Otro tipo especial de redes neuronales artificiales se ha
aplicado en conjunción con los algoritmos genéticos (AG) para crear
controladores para robots. La disciplina que trata la evolución de redes
neuronales mediante algoritmos genéticos se denomina Robótica Evolutiva. En este
tipo de aplicación el genoma del AG lo constituyen los parámetros de la red
(topología, algoritmo de aprendizaje, funciones de activación, etc.) y la
adecuación de la red viene dada por la adecuación del comportamiento exhibido
por el robot controlado (normalmente una simulación de dicho comportamiento).
jueves, 8 de noviembre de 2012
Reporte 4 - Investigación
JADE
Es una plataforma software para el desarrollo de agentes,
implementada en Java. JADE crea múltiples contenedores para los agentes, cada
uno de los cuales puede ejecutarse en uno o en varios sistemas. Un conjunto de
contenedores constituye una plataforma.
Cada plataforma debe tener un contenedor principal que
tiene dos agentes especiales denominados AMS y DF.
El AMS (Agent Management System) controla la plataforma.
Es el único que puede crear y destruir a otros agentes, destruir contenedores y
parar la plataforma. El DF (Directory Facilitator) proporciona un directorio
que anuncia qué agentes hay disponibles en la plataforma.
Un agente JADE cumple las siguientes características:
- Tiene
un nombre único en el entorno de ejecución.
- Se
implementa como un único hilo de ejecución (single-threaded).
- Tiene
un metodo de inicio (setup) y otro de fin (takeDown).
- El
método protegido setup() sirve para inicializar el agente incluyendo
instrucciones que especificarán la ontología a utilizar y los comportamientos
asociados al agente. Se invoca al comenzar la ejecución del agente.
- El
método protegido takeDown() sirve para liberar recursos antes de la eliminación
del agente. Este método es invocado cuando se realiza una llamada al método doDelete(),
que es el que realmente da por finalizada la ejecución del agente.
- Ambos
métodos deben ser sobreescritos.
SPADE
SPADE es una plataforma libre de sistemas multi-agente
desarrollada en Python y basada en la tecnología de mensajería instantánea
XMPP. Algunas de las características más notables de la plataforma SPADE son:
soporte de organizaciones virtuales, notificación de presencia, compatible con
FIPA e independencia del lenguaje y la plataforma.
SPADE es una plataforma de sistemas multi-agente
desarrollada en 2005 en la Universidad Politécnica de Valencia. La plataforma
nació como una prueba de concepto para probar la tecnología de la mensajería
instantánea como protocolo de transporte para los agentes inteligentes. Desde
ese momento el proyecto ha seguido creciendo y añadiendo nuevas características
aprovechando la flexibilidad del protocolo de mensajería instantánea basado en
XML y la cantidad de extensiones desarrolladas para el mismo que son
aprovechables dentro del marco de los sistemas multi-agente. La plataforma
SPADE está basada en un conjunto de estándares, siendo los más destacables FIPA
y XMPP/Jabber.
Las principales características de la plataforma SPADE
son:
- Soporte
del estándar FIPA mediante el protocolo de mensajería instantánea XMPP (Agentes
AMS y DF incluídos)
- Notificación
de presencia entre agentes.
- Organizaciones
Virtuales basadas en el protocolo de multi-conferencia MUC.
- Comunicación
P2P entre agentes.
- Invocación
remota de servicios entre agentes usando el estándar XML-RPC.
- Procesadores
de lenguajes de contenido en SL0 y RDF.
- Modelo
de agente BDI basado en Conocimiento, Deseos e Intenciones.
- Modelo
de comportamientos: Cíclicos, Periódicos, Timeout, una ejecución, máquina de
estados finita y basado en eventos.
- Soporte
de comunicación con otras plataformas mediante diversos protocolos de
transporte: JADE (via HTTP o XMPP) y SIMBA.
- Publicación
y subscripción de eventos mediante el estándar PubSub.
- Interfaz
gráfica basada en web.
MADKit
MADKit es una plataforma multiagente para desarrollar y
ejecutar aplicaciones basadas en un paradigma orientado a la organización.
Estos paradigmas multiagente utilizan agentes, grupos y roles como los puntos
bases para construir aplicaciones complejas. MADKit no fuerza ninguna
consideración acerca de la estructura interna de los agentes, de esta manera
permite a los desarrolladores implementar libremente sus propias arquitecturas
de agentes.
MADKit es también una plataforma distribuida que permite
el desarrollo de eficientes aplicaciones distribuidas. Para los programadores,
todas las consideraciones acerca de componentes distribuidos básicos tales como “sockets” y
“ports”, son totalmente transparentes. Una aplicación desarrollada en una
manera multiagente puede ser ejecutada de una manera distribuida sin cambiar
ninguna línea de código. Los mecanismos de distribución de MADKit no utilizan
las técnicas bastante lentas de RMI o CORBA de acceso remoto, de esta manera
permite un modo eficiente de comunicación.
MADKit está construido alrededor del concepto de
micro-kernel y agentificación de servicios.
El kernel de MADKit es más bien pequeño, pero los agentes
ofrecen los servicios importantes que se pueden necesitar para las
aplicaciones. Distribución y pasaje remoto de mensajes, monitoreo y observación
de agentes, edición, etcétera, son todas realizadas por agentes. MadKit provee
un conjunto de “contenedores”, esto es entornos de ejecución para correr
aplicaciones, con el objetivo de que MadKit trabaje en diferentes situaciones:
como un entorno de desarrollo, pero también como una herramienta embebida para
aplicaciones.
ROBOCUP
RoboCup es un proyecto internacional fundado en 1997 para
promover, a través de ompetencias integradas por robots autónomos, la
investigación y educación sobre inteligencia artificial.
La iniciativa está dividida en cuatro grandes
competencias. Cada una de ellas tiene varias ligas internas dependiendo de la
modalidad.
RoboCupSoccer
Es una competencia de fútbol con robots autónomos.
El objetivo oficial del proyecto es conseguir para
mediados del siglo XXI un equipo capaz de vencer al ganador de la Copa Mundial
de la FIFA siguiendo sus propias reglas.
RoboCupRescue
Se trata de poner a prueba a los robots para tareas de
búsqueda y salvamento de víctimas en terreno desfavorable. Los robots pueden
ser tanto autónomos como guíados por control remoto.
RoboCupJunior
Intenta acercar las metas y objetivos de Robocup a
estudiantes de educación primaria y secundaria.
RoboCup@Home
Competencia añadida en la edición del 2006 celebrada en
Bremen (Alemania) que se centra en la aplicación de robots autónomos en la vida
diaria y en las relaciones hombre-robot derivadas.
Suscribirse a:
Entradas (Atom)