# Cougaar

Cougaar (acrónimo inglés de Cognitive Agent Architecture) es una arquitectura basada en Java para la construcción de aplicaciones distribuidas a gran escala basadas en agentes. Es un producto de dos programas consecutivos, de varios años de investigación DARPA (UltraLOG) en sistemas de agentes a gran escala que abarca ocho años de esfuerzo. El primer programa demostró de manera concluyente la viabilidad de la utilización de la tecnología basada en agentes avanzada para llevar a cabo rápida y a gran escala la planificación logística distribuida y la replanificación. El segundo programa desarrolló tecnologías de la información para mejorar la supervivencia de estos sistemas basados en agentes distribuidos que operan en ambientes extremadamente caóticos.
La arquitectura resultante, Cougaar, proporciona a los desarrolladores un marco para implementar aplicaciones de agentes distribuidos a gran escala, con una consideración mínima para la arquitectura y la infraestructura subyacente. La arquitectura Cougaar utiliza lo último en diseño orientado a agente basado en componentes y tiene una larga lista de características de gran alcance.

## Historia de Cougaar

Cougaar Software Inc. fue formado en 2001 para realizar la transición de un potente conjunto de tecnologías avanzadas de la investigación militar para el mercado comercial. La inversión en este proyecto se remonta a 1996 cuando DARPA decidió que la arquitectura de agente cognitivo era la mejor solución a los difíciles problemas que enfrenta la logística militar. Puesto que ningún agente de la arquitectura existente puede satisfacer esas necesidades, DARPA comenzó a financiar proyectos para desarrollar lo que se convirtió en Cougaar Open Source con algunos de los pensadores más avanzados y desarrolladores en el país. Ellos se superaron con creces mediante el desarrollo de un enfoque tecnológico que se adapta a los dominios más allá de la logística. El trabajo se ha basado en perfeccionar y madurar esa base, para ampliar y probar esta tecnología en diversos entornos de funcionamiento seguros, donde el tiempo es crítico. Las soluciones resultantes representan algunos de los razonamientos más avanzados y capacidades de automatización inteligente existentes y se ha demostrado por ejemplo en aplicaciones del Departamento de Defensa. Se ha pasado los últimos dos años refinando dichas soluciones como plataforma comercial para la creación rápida y el despliegue de aplicaciones inteligentes tan robustas como las aplicaciones militares, pero para las necesidades comerciales y con la economía en mente.

### Línea Temporal

   * 1996 DARPA funda el Programa de Logística Avanzada (ALP).
   ** se invierten $ 80 millones para desarrollar la tecnología de arquitectura de núcleo.
   * 2000 DARPA decide lanzar la tecnología ALP como código abierto y cambia el nombre a Cougaar.
   * 2000 DARPA funda el programa UltraLOG para extender la seguridad de Cougaar, escalabilidad y capacidad de supervivencia de las condiciones mundiales del campo de batalla.
   ** El programa invierte $ 70 millones para lograr la supervivencia final.
   * 2001 Cougaar Software, Inc. comienza a comercializar la tecnología Cougaar.
   * 2004 CSI lanza primera solución comercial basada Cougaar - ActiveEdge RFID Middleware.
   * 2005 CSI el lanza primer entorno de desarrollo Cougaar de aplicaciones comerciales.
   ** Lanzamiento de ActiveEdge Intelligent Platform Agent v1.0
   ** Tres sistemas de integración socios / clientes eligen la plataforma ActiveEdge para las grandes iniciativas operacionales
   * 2006 Primera Instancia operativa de la solución basada en la solución de ActiveEdge proporcionada a través de socios para importante cadena minorista.
   * 2007 los principales socios y clientes adicionales validan ActiveEdge.
   ** ActiveEdge v1.5 liberado
   ** La compañía Boeing licencia ActiveEdge.
   ** Contratos de defensa Adicionales licencian ActiveEdge.
   ** CSI soporta SAIC&Honeywell en la aplicación ALCT proporcionando planificación de escenarios distribuidos.
   ** El ejército de EE. UU. licencia ActiveEdge.
   * 2008 ActiveEdge v1.6 es liberado

## Características de Cougaar

Cougaar es una arquitectura de agente de código abierto, que incluye los servicios de infraestructura y núcleo. Los agentes son entidades autónomas de software que se comunican con otros agentes o servicios externos para lograr un dominio específico funcionalidad. Los agentes de computación están basados en una metodología de programación que facilita la descomposición directa de tareas complejas. Los agentes manejan comportamiento de las aplicaciones y el entorno se encarga de la adaptación sistémica. Los agentes y el entorno se pueden desarrollar, probar y configurar de forma independiente, pero corren juntos La abstracción de agente Cougaar incluye varios servicios avanzados integrados, como son:
   * Pizarra de publicación/suscripción para la comunicación dentro del propio agente y entre agentes.
   * Motor de servlets para http basados en interfaces de usuario.
   * Sistema de representación de conocimiento: activos logísticos, FrameSets…
   * Coordinación entre agentes a través de pizarra para los mecanismos de coordinación, asignación de tareas, etc.
Un agente Cougaar se ejecuta sobre un nodo Cougaar (Java Virtual Machine), que a su vez se ejecuta en un host. Dicho agente se compromete con uno o más plugins, que definen el comportamiento del agente. Un agente con cero plugins no hace nada. A diferencia de otras arquitecturas totalmente basadas en mensajes, Cougaar está basada en los plugins de la pizarra como gestores de datos principales. Los plugins reaccionan a los datos en la pizarra añadiendo/cambiando/eliminando notificaciones. La infraestructura de la plataforma Cougaar transforma los datos que hay en la blackboard en operaciones inter-agente, pero esto queda oculto al API del desarrollador. Toda la coordinación inter-plugins es ejecutada a través de suscripciones de datos asíncronas. La infraestructura de la blackboard añade/cambia/elimina las notificaciones por lotes, lo que proporciona mayor robustez y escalabilidad al sistema. Todo el estado es guardado en la blackboard, lo que proporciona soporte para recuperación en caso de fallo. Los servicios Cougaar de núcleo tienen una implementación basada en componentes, y cubren muchos campos como son la movilidad de agentes entre nodos, la persistencia del estado del agente y su posterior recuperación tras un bloqueo, un transporte de mensajes que soporte múltiples protocolos, etc.

## Aplicaciones de Cougaar

* Integración de infraestructuras críticas de modelado y simulación.
* Herramienta de modelado logístico para organizaciones militares altamente adaptables.
* Planificación de combate Logística-Asistida.
* Soporte de equipos de robots a través de redes ad hoc inalámbricas.
* Superficies de control por Cougaar.
* Herramienta administrativa para monitorizar una sociedad de agentes distribuida.