En el de informática, el modelo del agente del es un modelo matemático del cómputo concurrente que trata el " actors" como los primitivos universales del cómputo digital concurrente: en respuesta a un mensaje que reciba, un agente puede tomar decisiones locales, crear a más agentes, enviar más mensajes, y determinar cómo responder al mensaje siguiente recibido. El modelo del agente origina en un papel 1973 por el Carl Hewitt, el obispo de Peter, y el Richard Steiger . Se ha utilizado como marco para un de comprensión teórico de la concurrencia, y como la base teórica para varias puestas en práctica de los sistemas concurrentes . La relación del modelo al otro trabajo se discute en el Indeterminacy en el cómputo concurrente y los cálculos del modelo y del proceso del agente.

Historia

considera también: Historia l modelo del agente

considera también:

la historia temprana del modelo del agente

considera también:

medio de la historia del modelo del agente

considera también:

posterior de la historia del modelo del agente

Desemejante de modelos anteriores del cómputo, el modelo del agente fue inspirado por las leyes físicas que también fue influenciado por los lenguajes de programación balbucea el, el Simula y las versiones tempranas del palique, tan bien como los sistemas capacidad-basados el y de conmutación de conjunto de bits. Su desarrollo era " motivado por la perspectiva de las máquinas de computación alto paralela que consisten en docenas, centenares o aún millares de microprocesadores independientes, cada uno con su propia memoria local y procesador de comunicaciones, comunicando vía una red de comunicaciones de alto rendimiento. " de ; Desde entonces, el advenimiento de la concurrencia masiva con arquitecturas de computadora multifilares ha reencendido interés en el modelo del agente.

Después de Hewitt, la publicación 1973, pena del obispo, y de Steiger de Irene desarrolló un que la semántica operacional para los agentes modela como parte de su investigación doctoral. Dos años más adelante, el panadero de Henry y Hewitt publicaron un sistema de las leyes axiomáticas para los sistemas del agente. Otros jalones importantes incluyen la disertación de Guillermo Clinger, en 1981, introduciendo una semántica indicativa basada en dominios de la energía, esto dieron lugar al desarrollo completo de la teoría modelo del agente.

El trabajo importante de la puesta en práctica del software fue hecho por Russ Atkinson, Beppe Attardi, el panadero de Henry, el peluquero de Gerry, el obispo de Peter, Peter de Jong, Ken Kahn, Henry Lieberman, Carl que servía, Tom Reinhardt, Richard Steiger, y Dan Theriault, en el mensaje que pasaba a grupo de la semántica en el Instituto de Tecnología de Massachusetts (MIT). Los grupos de investigación llevaron por la tirada Seitz en el Instituto de Tecnología (Caltech) de California y Bill Dally en las arquitecturas de computadora construidas MIT que más futuro desarrolló el mensaje el paso en el modelo. Ver a agente modelar la puesta en práctica .

La investigación sobre el modelo del agente se ha realizado en Caltech de informática, el laboratorio de la universidad Tokoro de Kyoto, el MCC, el laboratorio de la inteligencia artificial del MIT, el SRI, la Universidad de Stanford, la Universidad de Illinois en el laboratorio http://osl.edu de los sistemas del Urbana-Chamán, la universidad de París 6, universidad de Pisa, universidad del laboratorio de Tokio Yonezawa y a otra parte.

Conceptos fundamentales

El modelo del agente adopta la filosofía que el todo es agente . Esto es similar al que todo es una filosofía del objeto usada por algunos lenguajes el de programación orientado al objeto, pero diferencia en que el software orientado al objeto está ejecutado típicamente secuencialmente, mientras que el modelo del agente es intrínsecamente concurrente.

Un agente es una entidad de cómputo que, en respuesta a un mensaje él recibe, puede concurrentemente:
enviar un número de mensajes finito a otros agentes;
crear un número finito de nuevos agentes;
señalar el comportamiento que se utilizará para el mensaje siguiente que recibe.

No hay secuencia presunta a las acciones antedichas y podrían ser realizados paralelamente.

Las comunicaciones entre agentes ocurren asincrónico: es decir, el agente de envío no espera hasta que el mensaje se reciba antes de proceder con el cómputo.

La dirección identifican a los recipientes de mensajes, a veces llamada " address" de envío;. Así un agente puede comunicar solamente con los agentes cuyas direcciones tiene. Puede obtener ésos de un mensaje que recibe, o si la dirección está para un agente él acaba de crear.

El modelo del agente es caracterizado por la concurrencia inherente del cómputo dentro y entre de agentes, de la creación dinámica de agentes, de la inclusión de las direcciones del agente en mensajes, y de la interacción solamente a través del mensaje asincrónico directo que pasa sin la restricción en orden de la llegada del mensaje.

Sistemas formales

Durante los años, se han desarrollado varios diversos sistemas formales que permiten razonar sobre sistemas en el modelo del agente. Éstos incluyen:
semántica operacional
Leyes para los sistemas del agente
Semántica de la transición
Lógica linear

Usos

El modelo de los agentes se puede utilizar como marco por modelar, entender, y razonar alrededor, una amplia gama de los sistemas concurrentes . Por ejemplo:
el correo electrónico se puede modelar como sistema del agente. Las cuentas se modelan como agentes y email address como direcciones del agente.
Los servicios de Web se pueden modelar con las puntos finales del JABÓN modeladas como direcciones del agente.
Los objetos con las cerraduras ( e. como en el Java y el C# ) se pueden modelar como serializador, a condición de que sus puestas en práctica son tales que los mensajes pueden llegar continuamente (quizás por ser almacenado en una coleta interna). Un serializador es una clase importante de agente definida por la característica que está continuamente disponible para la llegada de nuevos mensajes; cada mensaje enviado a un serializador se garantiza para llegar.
La prueba y la notación del control de la prueba ( TTCN ), TTCN-2 y TTCN-3, sigue el modelo del agente algo de cerca. En TTCN, el agente es un componente de la prueba: componente de la prueba paralela (PTC) o componente principal de la prueba (MTC). Probar los componentes puede enviar y recibir mensajes a y desde los socios alejados (los componentes de la prueba del par o interfaz de sistema de prueba), el 3ultimo que es identificado por su dirección. Cada componente de la prueba tiene un árbol del comportamiento limitado a él; los componentes de la prueba funcionados con paralelamente y se pueden crear dinámicamente por los componentes de la prueba del padre. Las construcciones de lengua de Builtin permiten definir las acciones que se tomarán cuando un mensaje previsto se recibe de la coleta de mensaje interna, como el envío de un mensaje a otra entidad de par o crear nuevos componentes de la prueba.
Los juegos video que funcionan en el motor irreal emplean a agentes como objetos en un mundo virtual.

Modelos antes del modelo del agente

Los emplear del modelo del agente modelos anteriores del cómputo.

Cálculo de la lambda

El cálculo de la lambda de la iglesia de Alonzo se puede ver como el mensaje más temprano que pasa el lenguaje de programación del . Por ejemplo la expresión de la lambda debajo de los instrumentos una estructura de datos del árbol cuando está suministrado los parámetros para un leftSubTree y un rightSubTree. Cuando tal árbol se da un " del mensaje del parámetro; getLeft" , vuelve leftSubTree y además cuando está dado el " del mensaje; getRight" vuelve rightSubTree.

λ (leftSubTree, rightSubTree) λ (mensaje) si (" del == del mensaje; getLeft") leftSubTree del entonces si (" del == del mensaje; getRight") rightSubTree del entonces

Sin embargo, la semántica del cálculo de la lambda fue expresada usar la substitución variable en la cual los valores de parámetros fueron substituidos en el cuerpo de una expresión invocada de la lambda. El modelo de la substitución es inadecuado para la concurrencia porque no permite la capacidad que comparte de cambiar recursos. Inspirado por el cálculo de la lambda, el intérprete que para el de programación del lenguaje balbucean hizo uso de una estructura de datos llamada un ambiente de modo que los valores de parámetros no tuvieran que ser substituidos en el cuerpo de una expresión invocada de la lambda. Esto permitida para compartir de los efectos de poner al día las estructuras de datos compartidos pero no previo concurrencia.

Simula

Simula 67 iniciados usar el mensaje que pasa para el cómputo, motivado por usos de la simulación de acontecimiento discreto. Estos usos habían llegado a ser grandes y unmodular en idiomas de simulación anteriores. En cada vez que el paso, un programa central grande tendría que ir a través y poner al día el estado de cada objeto de la simulación que cambió dependiendo del estado cuyo la simulación se opone nunca que obró recíprocamente con en ese paso. El Kristen Nygaard y el Viejo-Juan Dahl desarrollaron la idea (primero descrita en un taller de IFIP en 1967) del tener métodos en cada objeto que pondría al día su propio estado local basado en mensajes de otros objetos. Además introdujeron una estructura de clase para los objetos con la herencia . Sus innovaciones mejoraron considerablemente la modularidad de programas.

Sin embargo, Simula utilizó la estructura de control de Coroutine en vez de concurrencia verdadera.

¡Palique

El Alan Kay fue influenciado por el mensaje que pasaba en la invocación patrón-dirigida del planificador en el palique -71 que se convertía. Hewitt fue intrigado por Smalltalk-71 pero suspendido por la complejidad de la comunicación que las invocaciones incluidas con muchos campos incluyendo el global, el remitente del, el receptor del, el contestar-estilo del, el estado del, la contestación del, el selector del operador del, el etc.

En Kay 1972 visitada MIT y discutido algunas de sus ideas para el edificio Smalltalk-72 en el trabajo de la insignia Seymour Papert y el " poco person" modelo del cómputo usado para enseñar a niños a programar. Sin embargo, el paso del mensaje de Smalltalk-72 era absolutamente complejo. El código en la lengua fue visto por el intérprete como simplemente corriente de símbolos. Como el Dan Ingalls lo describió más adelante: del

l primero (símbolo) encontrado (en un programa) era mirado para arriba en el contexto dinámico, para determinar el receptor del mensaje subsecuente. Las operaciones de búsqueda conocidas comenzaron con el diccionario de la clase de la activación actual. Fallando allí, se movieron al remitente de esa activación y así sucesivamente encima de la cadena del remitente. Cuando un atascamiento finalmente fue encontrado para el símbolo, su valor se convirtió en el receptor de un nuevo mensaje, y el intérprete activó el código para esa clase de objeto.

Esto llevó alguno a creer que un nuevo modelo matemático del cómputo concurrente basado en el paso del mensaje debe ser más simple que Smalltalk-72.

Las versiones subsecuentes de la lengua del palique siguieron en gran parte la trayectoria de usar los métodos virtuales de Simula en el mensaje que pasaba la estructura de programas. Sin embargo Smalltalk-72 hizo primitivos tales como números enteros, números de la coma flotante, etc. Los autores de Simula habían considerado hacer tales primitivos en objetos pero se habían refrenado en gran parte por razones de la eficacia. El Java al principio utilizado el expediente del tener versiones del primitivo y del objeto de los números enteros, de los números de la coma flotante, del etc. el lenguaje de programación de C# (y versiones posteriores de Java, comenzando con Java 1.5) adoptó la solución más elegante de usar el boxeo y el unboxing, una variante cuyo están tenidas utilizado anterior en un cierto balbucean las puestas en práctica de .

El sistema del palique se encendió llegar a ser muy influyente, innovando en exhibiciones a memoria de imagen, la computación personal, el interfaz del hojeador de la clase, y muchas otras maneras. Para los detalles ver el de Kay la historia temprana del palique . Mientras tanto los esfuerzos del agente en el MIT seguían centrados en desarrollar la ciencia y dirigir de la concurrencia de alto nivel. (Véase el papel de Juan Pedro Briot para las ideas que fueron desarrolladas después cómo incorporar algunas clases de concurrencia del agente en versiones posteriores del palique.)

Redes de Petri

Antes del desarrollo del modelo del agente, las redes de Petri eran ampliamente utilizadas modelar el cómputo concurrente. Sin embargo, fueron reconocidas extensamente para tener una limitación importante: modelaron flujo de control pero no flujo de datos. Por lo tanto no eran fácilmente composable de tal modo limitando su modularidad. Hewitt precisó otra dificultad con las redes de Petri: acción simultánea. El es decir, el paso atómico del cómputo en las redes de Petri es una transición en la cual el de los símbolos desaparece simultáneamente de los lugares de la entrada de una transición y aparece en los lugares de la salida. La base física de usar un primitivo con esta clase de simultaneidad le parecía cuestionable. A pesar de estas dificultades evidentes, las redes de Petri continúan siendo un acercamiento popular a modelar concurrencia, y siguen siendo el tema de la investigación activa.

Mensaje-paso de la semántica

El modelo del agente está sobre la semántica del paso del mensaje.

Controversia ilimitada del nondeterminism

Discutible, los primeros programas concurrentes eran los tratantes de interrupción durante el curso de su operación normal, una computadora necesaria poder recibir la información del exterior (carácteres de un teclado, de los paquetes de una red, del etc . Tan cuando llegó la información la ejecución de la computadora era " interrupted" y el código especial llamado un tratante de interrupción fue llamado a puesto la información en un almacenador intermediario donde podría ser posteriormente conseguido .

Éste era el principio del desarrollo que comunicaba el paradigma secuencial de los procesos en el cual los programas concurrentes eran la composición paralela de los programas secuenciales que comunicaron síncrono usar almacenadores intermediarios. Tener paralelismo con la memoria compartida dio lugar al problema del control de concurrencia . Original, este problema fue concebido como siendo uno de la exclusión mutua en una sola computadora. Los semáforos desarrollados de Edsger Dijkstra y más adelante, entre el 1971 y el 1973, Tony Hoare y por Brinch Hansen desarrollaron los monitores para solucionar el problema de la exclusión mutua. Sin embargo, ni unas ni otras de estas soluciones proporcionaron una construcción de programación del lenguaje que encapsuló el acceso a los recursos compartidos. Esta encapsulación fue lograda más adelante por la construcción (y Atkinson 1977, 1979 y el an o 80) del serializador. Tony Hoare continuó para desarrollar su segunda versión de CSP, descrita adentro.

Los primeros modelos del cómputo ( Turing del e. trabaja a máquina, producciones del poste, el cálculo de la lambda, el etc. ) fueron basados en matemáticas e hicieron uso de un estado global para representar un paso de cómputo del (generalizado más adelante adentro y Hayes 1969 y 1976 ve orderings del acontecimiento contra el estado global ). Cada paso de cómputo era a partir de un estado global del cómputo al estado global siguiente. El acercamiento global del estado fue continuado en la teoría de autómatas para las máquinas finitas del estado y el empuja hacia abajo las máquinas del apilado, incluyendo sus versiones no deterministas . Tales autómatas no deterministas tienen la característica del nondeterminism limitado ; es decir, si una máquina para siempre cuando está comenzada en su estado inicial, después hay un límite en el número de estados en los cuales pare.

El Edsger Dijkstra fomenta desarrolló el acercamiento global no determinista del estado. El modelo de Dijkstra dio lugar a una controversia referente a nondeterminism ilimitado del . el nondeterminism ilimitado de (también llamado el el indeterminacy ilimitado, un título preferred por Hewitt después Niels Bohr ), es una característica de la concurrencia por la cual la cantidad de retardo en el mantenimiento de una petición puede llegar a ser ilimitada como resultado del arbitraje de la contención para el de los recursos compartidos mientras que todavía garantiza que la petición será eventual mantenido. Hewitt sostuvo que el modelo del agente debe proporcionar la garantía del servicio. En el modelo de Dijkstra, aunque podría haber una cantidad de tiempo ilimitada entre la ejecución de instrucciones secuenciales en una computadora, el programa (paralelo) de a que comenzó en un estado bien definido podría terminar en solamente un número limitado de los estados 1976. Por lo tanto, su modelo no podía proporcionar la garantía del servicio. Dijkstra sostuvo que era imposible ejecutar nondeterminism ilimitado.

Hewitt discutió de otra manera: no hay límite que puede ser puesto en cuánto tiempo lleva un circuito de cómputo llamado un '' árbitro '' el settle (véase el Metastability en la electrónica ). Utilizan a los árbitros en computadoras para ocuparse de la circunstancia que los relojes de la computadora funcionan asincrónico con la entrada desde afuera, entrada de teclado del e., acceso de disco, entrada de la red, el etc. así que él podría tardar un tiempo ilimitado para un mensaje enviado a una computadora que se recibirá y la computadora podría atravesar mientras tanto un número ilimitado de estados.

El modelo del agente ofrece el nondeterminism ilimitado que fue capturado en un modelo matemático cerca Clinger usar la teoría del dominio.
Lenguaje de programación E
Erlang
Gambito-c (con la termita)
Lengua del Io
Proyecto de Ptolemy
Rebeca que modela la lengua
SALSA
Scala

.

  • Zenithic
  • Places in the works of Madeleine L'Engle
    Random links:Chabalote | Río de Clatskanie | Eurocracy | Islas de la decepción

  • © 2007-2008 enciclopediaespana.com; article text available under the terms of GFDL, from en.wikipedia.org
    ="http://pagead2.googlesyndication.com/pagead/show_ads.js">