Sunteți pe pagina 1din 12

PARADIGMAS PARA DISEAR E IMPLEMENTAR SISTEMAS

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,

actualizaciones tecnolgicas, expansiones, etc.


Hay varias propuestas y tendencias innovadoras para disear, implementar, y controlar
sistemas complejos en general, no slo de software, en los cuales hay un gran nmero
de elementos y tareas, y es difcil tener una visin completa del sistema o de la
integracin de sus componentes. Aqu mencionaremos algunas de ellas, las cuales

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.

1.- SISTEMAS COMPLEJOS


Un sistema es considerado complejo cuando est compuesto de un gran nmero de
elementos los cuales interactan entre s (Bar-Yam, 1997). La funcionalidad global del
sistema se da precisamente por las interacciones, y por lo tanto uno no encontrar tal
funcionalidad si uno observa slo a unos cuantos elementos.
Es por eso que esta funcionalidad se llama emergente, dado que slo se encuentra a
nivel sistema. Un ejemplo de propiedades emergentes son la temperatura y presin de
un sistema gaseoso, el cual est compuesto de molculas, las cuales no tienen ni
temperatura ni presin. Otro ejemplo es una clula, compuesta slo de molculas y
protenas. Decimos que la clula est viva, pero no que sus componentes lo estn. En
computacin, Internet cuenta con propiedades que una computadora no tiene. Entonces
podemos decir que sistemas de cmputo no son complejos (no confundir con
complicados) si se pueden construir con pocos elementos. Generalmente la
2

complejidad de un sistema de cmputo crecer con en nmero de requerimientos y


funcionalidades del sistema.
Estamos acostumbrados a pensar en sistemas no complejos, simplemente porque es
ms fcil. Pero esto no nos ayudar cuando necesitemos construir sistemas complejos.
Hay varias cosas que hay que tomar en cuenta, ya que encontraremos problemas que
emergen cuando el nmero de elementos se incrementa demasiado, o bien la nica
forma de alcanzar la funcionalidad deseada es de manera emergente: diseando
componentes simples para que en su conjunto resuelvan el problema.
Hay varias formas de atacar estos problemas, y a continuacin mencionaremos algunas
de las ms populares.

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.

3.- SISTEMAS AUTO-ORGANIZATIVOS


Los insectos sociales (Bonebeau et al., 1998) son un buen ejemplo de un sistema
autoorganizativo (Heylighen, 2003). Aunque los sistemas auto-organizativos son algo
subjetivos (Gershenson & Heylighen, 2003), ya que es difcil decidir si un sistema es
auto-organizativo o no independientemente del observador, no dejan de ser tiles. Pero
sin entrar en muchos debates, podemos decir que un sistema es auto-organizativo si
aumenta su organizacin con el tiempo como producto de su funcionamiento interno
(aunque admitiendo por supuesto interacciones con su medio ambiente).
Las hormigas, por ejemplo, si se colocan en un hormiguero nuevo, empiezan a explorar
alrededor de manera ms o menos aleatoria. Pero una vez que encuentran comida,
recuerdan dnde est, y hacen viajes ms o menos directos entre el hormiguero y la
fuente de comida. Slo que cuando caminan, las hormigas dejan feromonas por donde
5

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

distribuidas aleatoriamente, las cuales tienen tambin movimiento aleatorio. En el centro


de la matriz se encuentra una partcula fija, la semilla del agregado, la cual no se
mueve. Si alguna partcula toca al agregado, se pega y deja de moverse. As, a partir de
movimientos aleatorios y caos, se construyen agregados con patrones fractales, como
se puede apreciar en la Figura 1. (este puede ser un buen proyecto de programacin
para estudiantes de primer semestre).
La idea principal de los sistemas auto-organizativos en cmputo (Heylighen &
Gershenson, 2003) es la siguiente: se disean los componentes del sistema, de forma
tal que la interaccin entre ellos a travs del tiempo produzca el resultado deseado en el
sistema.

Figura 1. DLA con 100 millones de partculas, cercido por Henry Kaufman.

El paradigma de sistemas auto-organizativos promete ser til para disear sistemas


complejos, tales como la Red Semntica (Berners-Lee et al., 2001), control de trfico
(Gershenson, 1998), gobierno electrnico, etc.
Pero de entre todas las posibilidades de reglas e interaccin de los elementos, cmo
encontrar las adecuadas? Esto no es sencillo, ya que en general estos sistemas no son
computacionalmente reducibles. Es decir, la nica forma de ver si una regla sirve o no
es probndola. Es por esto que es deseable que los componentes se adapten ellos
mismos para que mejoren su desempeo con el tiempo.

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

Pero no podremos evitar el enfrentar sistemas ms y ms complejos de cmputo, ya


que la sociedad, el mercado, la tecnologa, todo se vuelve ms complejo. En el futuro
cercano la mayora de los requerimientos sern para sistemas complejos.
REFERENCIAS
Ashby, W. R. An Introduction to Cybernetics. London, Chapman & Hall, 1956.
http://pespmc1.vub.ac.be/ASHBBOOK.html
Bar-Yam, Yaneer. Dynamics of complex systems. New England: Addison-Wesley. 1997.
http://www.necsi.org/publications/dcs
Berlekamp, E. R., [ et. al]. What is life: ch. 25. En: Games in particular academic press. Vol. 2:, 1982
Berners-Lee, T. The semantic web. En: Scientific American, Mayo 2001.
http://www.sciam.com/issue.cfm?issuedate=May-01, http://www.semanticweb.org .
Bonabeau, E. [ et. al]. Swarm Intelligence. USA: Oxford University Press. 1998
Gershenson, C. El juego de la vida en 3D En: Memorias X Congreso Nacional ANIEI.
Mxico:ANEI, 1997. http://student.vub.ac.be/~cgershen/jlagunez/aniei97/life.html
Gershenson, C. Control de trfico con agentes: CRASH. Memorias XI Congreso Nacional
Mxico: ANIEI1998, http://student.vub.ac.be/~cgershen/jlagunez/aniei98/crash.html
Gershenson, C. & F. Heylighen. When can we call a system self-organizing: submitted to the
7th European. En: Conference on Artificial Life. Germany. 2003.
http://arxiv.org/abs/nlin.AO/0303020
Heylighen, F. The science of self-organization and adaptivity. En:: The encyclopedia of life support
systems, EOLSS Publishers Co. Ltd.
Heylighen, Francis y Gershenson, Carlos. The meaning of self-organization in computing. University
of Brussels, 2003. http://pcp.vub.ac.be/Papers/IEEE.Self-organization.pdf
Holland, John. Henry. Adaptation in natural and artificial systems. 2a ed. Cambridge, Massachusetts:
MIT Press, 1992.
Jennings, Nicholas. R. Agent-oriented software engineering. England: University of London, 1999.
http://www.ecs.soton.ac.uk/~nrj/download-files/cairo.pdf
Koza, J. R. Genetic programming: on the programming of computers by means of natural
selection. Cambridge: MIT, 1992.
Langton C [et. al.] The swarm simulation system. http://www.swarm.org .
Rosenblueth, A. & N. Wiener. Purposeful and non-purposeful Behaviourb En: Buckley, W. Modern
Systems Research for the Behavioural Scientist. USA, 1968.

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

S-ar putea să vă placă și