Professional Documents
Culture Documents
COMPLEJOS
Carlos Gershenson*
Vrije Universiteit Brussel/ Fundacin Arturo Rosenblueth
INTRODUCCIN
Cuando los requerimientos de un sistema de cmputo crecen demasiado, es muy difcil
construir sistemas con paradigmas clsicos. Un ejemplo de esto se ve con la ingeniera
de software orientada a objetos, que permite el diseo y programacin de sistemas
mucho ms complejos que con tcnicas estructurales o secuenciales.
Pero el paradigma de objetos tambin tiene sus lmites. Cuando los proyectos toman
algunos aos, involucrando docenas de programadores, cada uno ignorando una parte
distinta de los estndares, se acumulan errores, y es muy comn que el equipo se toma
ms tiempo en pruebas y correcciones que en la construccin misma del sistema. Esto
sin
hablar
del
mantenimiento,
cambios
de
especificaciones
plataformas,
pueden ser tiles en distintos casos, con referencias a trabajos que dan introducciones
a cada una.
En la siguiente seccin hacemos una breve introduccin a sistemas complejos.
Despus pasamos a revisar las tecnologas de agentes, y como un caso especial la
simulacin de enjambres. Seguimos con sistemas auto-organizativos, sistemas
adaptativos, y computacin evolutiva. Estos paradigmas no son excluyentes, y en
muchos casos se traslapan. Simplemente son diversas formas de describir y construir
sistemas complejos.
2-. AGENTES
La ingeniera de software orientada a agentes (Jennings, 1999) ya es bastante usada.
El concepto de agente es muy general, y hay varias definiciones, como la popular los
agentes son cosas que hacen cosas a otras cosas. Podramos decir en trminos
prcticos que simplemente son objetos o procesos con propsito (en el sentido de
Rosenblueth & Wiener, 1968). Por supuesto el propsito es dado por el programador.
Los agentes le dan una dimensin dinmica a los objetos, ya que cada agente puede
tener su propia meta, reglas, informacin, etc. Esto es muy til especialmente en
sistemas multi-agentes, ya que cada agente hace su tarea independientemente de lo
que hagan otros agentes. Hay varias tcnicas y protocolos para coordinar a los agentes
y para que compartan informacin.
3
Tambin hay una gran variedad de tipos de agentes: racionales (hay muchas lgicas
definidas para ellos), para comercio electrnico, emocionales, de bsqueda, interfaz,
autnomos adaptativos (o nouvelle Inteligencia Artificial), etc. Estirando la definicin de
agente, podramos decir que los demonios de los sistemas UNIX son agentes, cada uno
con una tarea distinta: mandar y recibir correo, coordinar otros agentes y los recursos
del sistema, recibir informacin del teclado o del ratn, conectarse a una base de datos,
realizar tareas a horas determinadas, etc. De hecho es probable que algunos lectores
ya hayan programado agentes sin saberlo. Los componentes como CORBA o ActiveX
tambin pueden ser considerados como agentes.
La fuerza detrs del paradigma de agentes es la del principio divide y vencers. Cada
agente se encarga de una tarea, y en su conjunto los agentes tienen que resolver el
problema que sera muy complejo como para atacarlo monolticamente. La diferencia
entre agentes y objetos es el aspecto dinmico de los primeros. Los objetos tienen
propiedades que pueden cambiar, pero los agentes tienen metas y acciones posibles
para alcanzarlas. Un mismo sistema podra describirse por los dos paradigmas, pero la
integracin de la informacin en el paradigma de agentes comunicndose entre s es
ms natural que con objetos cambindose propiedades. La diferencia es ms en la
descripcin del sistema que en el sistema mismo, pero es una diferencia importante:
facilita mucho la computacin distribuida, imprescindible en Internet. Simplemente es
ms sencillo en este contexto hablar en trminos de agentes que en trminos de
objetos.
2.1. ENJAMBRES
Un caso especial de agentes para la simulacin se ha desarrollado en el Santa Fe
Institute en Nuevo Mxico, conocido como enjambres (Langton et al., 1999),
inspirados en la organizacin de insectos sociales (Bonebeau et al., 1998). Podramos
decir que un enjambre es un agente con muchas otras cualidades: Un enjambre
generalmente consiste de varios enjambres, los cuales a su vez pueden consistir de
varios enjambres. En objetos esto sera simple agregacin, pero como cada enjambre
tiene su dinmica propia, este paradigma facilita la simulacin de sistemas a varios
niveles al mismo tiempo.
pasan, las cuales son percibidas por otras hormigas. Una hormiga tiende a seguir un
rastro de feromonas. Como las hormigas que encuentran comida repiten su camino,
este se volver ms fuerte en feromonas que por donde slo han explorado otras
hormigas.
Mientras pasa el tiempo, las hormigas en vez de explorar, van a seguir el camino de las
hormigas que ya encontraron comida, haciendo la tarea muy eficiente. Si se agrega otra
fuente de comida, o agota la primera, el hormiguero como tal es sumamente robusto y
adaptativo. De hecho se puede decir que una colonia de insectos en su conjunto tiene
funciones cognitivas, ya que puede resolver problemas de discriminacin y
optimizacin. Pero si el comportamiento de las hormigas se describe de una forma muy
simple! S, las funciones emergentes slo se dan debido al gran nmero de hormigas
interactuando por medio de las feromonas. Es por esto que se han diseado varios
algoritmos para atacar problemas de optimizacin, tales como el problema del
vendedor viajero, o el control de trfico en redes de comunicacin. Uno comienza con
varios agentes que tienen tareas simples, y es su conjunto pueden resolver problemas
muy complejos.
Autmatas celulares (Wolfram, 2002), tales como el juego de la vida (Berlekamp et
al.,1982; Gershenson, 1997), son otro ejemplo de sistemas de elementos que siguen
reglas simples y producen comportamiento complejo al nivel del sistema.
Un caso interesante para ilustrar la auto-organizacin es el de agregacin limitada de
difusin (DLA). Consiste en una matriz, con cierta concentracin de partculas
6
Figura 1. DLA con 100 millones de partculas, cercido por Henry Kaufman.
4. SISTEMAS ADAPTATIVOS
Podemos decir que un sistema es adaptativo si mejora su desempeo en el tiempo.
Hace ms de cincuenta aos, en ciberntica (Wiener, 1948; Ashby, 1956), ya se
exploraron muchos mtodos para construir sistemas adaptativos, pero fueron olvidados
y recientemente estn siendo redescubiertos.
Se puede utilizar una metfora y decir que el sistema aprende. Varios mtodos en
sistemas adaptativos artificiales tienen inspiracin en sistemas biolgicos, los cuales se
adaptan a cambios en el medio ambiente, y en muchos casos pueden aprender: ya sea
nuevas tareas, o slo mejorar tareas que ya practican.
Otra idea usada en sistemas adaptativos es la homeostasis: el sistema cuenta con una
seria de estados preferidos, y tratar de regresar a ellos despus de perturbaciones
causadas por el medio ambiente o por el sistema mismo. Esto hace al sistema robusto.
Los sistemas adaptativos pueden ser muy tiles, ya que los podemos usar para
optimizar o encontrar soluciones que son muy complejas o complicadas: los sistemas
encuentran las soluciones ellos mismos.
Una aplicacin se ve en la propuesta de IBM de computacin autnomica
(http://www.research.ibm.com/autonomic), en la cual el sistema se adapta a los cambios
y actualizaciones del hardware y software, y hace por s mismo tareas que por ahora
nosotros tenemos que ordenar a las computadoras.
Un caso especial de sistemas adaptativos utiliza la teora Darwiniana de evolucin
como inspiracin para la bsqueda de soluciones a ciertos problemas.
5. COMPUTACIN EVOLUTIVA
Hay varias ramas de computacin evolutiva. Los algoritmos genticos son la ms
comn. Son mtodos de bsqueda en los cuales hay poblaciones de soluciones
posibles, generadas aleatoriamente. Despus, siguiendo ideas de evolucin biolgica,
las soluciones pueden ser apareadas, mutadas, recombinadas, etc. Hay problemas en
los cuales son muy tiles, por ejemplo en el diseo de agentes sociales, robots,
aviones, muebles, sonidos, etc. Pero no hay ningn algoritmo que sea bueno en todos
los casos.
Otra rama es la programacin gentica (Koza, 1992). Es similar a los algoritmos
genticos, pero en vez de manipular soluciones, manipula segmentos de programa, los
cuales pueden ser alineados recursivamente. La idea es que por medio de evolucin, se
podran producir programas que en teora seran muy difciles de hacer. La realidad es
9
que no han hecho ningn programa que un programador no pueda hacer, pero con la
velocidad a la que aumenta la capacidad de cmputo, probablemente haya varias
aplicaciones para programacin gentica en el futuro cercano.
Ha habido gente que tambin se ha inspirado en evolucin para crear circuitos:
hardware evolutivo. Sobre chips reconfigurables, los circuitos y sus componentes
pueden ser sometidos a su vez a mutaciones y recombinaciones a travs de
generaciones. Aqu tambin en prctica no han superado a los humanos, pero una
posible aplicacin es la evolucin de circuitos que autodetectan fallas.
CONCLUSIONES
Hemos revisado brevemente algunos paradigmas para el diseo e implementacin de
sistemas complejos. Todos estos estn siendo constantemente investigados y
actualizados.
Tambin constantemente nuevas propuestas salen a la luz. Aunque muchos
paradigmas funcionan muy bien en teora, pueden sufrir dificultades en la prctica. Creo
que la principal es que la mayora de la gente no es familiar con la forma de pensar
requerida para resolver este tipo de problemas, as que la mejor forma de empezar es
tratar de tener una nocin de las nuevas tecnologas. Esto cambiar nuestra forma de
pensar, y podremos tratar de atacar este tipo de problemas. Es difcil tratar de
desarrollar un sistema de agentes para comercio electrnico que aprendan las
preferencias de los usuarios si la mayora de los programadores del grupo no saben
programacin orientada a objetos.
10
11
Wiener, N. Cybernetics; or control and communication in the animal and the machine. Ambridge:
MIT Press., 1948.
Wolfram, S. A new kind of science. Wolfram. Media. 2002
*CARLOS GERSHENSON
Ingeniero en Computacin por la Fundacin Arturo Rosenblueth.
Maestro en Sistemas Evolutivos y Adaptativos, University of Sussex.
Actualmente cursa el doctorado en la Vrije Universiteit Brussel.
http://student.vub.ac.be/~cgershen
12