Skip to content

Proyecto de clase de Sistemas Multiagentes impartido en la ESIIAB

License

Notifications You must be signed in to change notification settings

Kaysera/SistemasMultiagentes2018

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

99 Commits
 
 
 
 
 
 

Repository files navigation

SistemasMultiagentes2018

Proyecto de clase de Sistemas Multiagentes impartido en la ESIIAB


Tabla de contenidos


Partes diferenciadas y equipo que las realiza

  • Monitor G6:
    • Oscar Rodríguez
    • Guillermo Fernández
    • Luis González
  • Servidor PHP (Tienda) G5:
    • Bernardo
    • Anselmo
    • Mercedes
  • Servidor Java (Tienda):
    • Óscar Gómez Monedero
    • Jose Antonio Serrano Esparcia
    • Mónica Sánchez Ruiz
  • Cliente Python (Consumidor):
    • ...
  • Cliente JavaScript (Consumidor):
    • Pedro José Villena
    • Jaime Tolosa
  • ...

Flujo de trabajo de una simulación

Tiendas

  1. Todos los agentes se inicializan en sus máquinas respectivas.
  2. Los agentes Tienda le mandan una petición XML (plantilla) de conexión al Monitor. Para ello, se realizará una petición POST a direccionMonitor:puertoMonitor/init
  3. El Monitor responderá a la petición (plantilla) donde se asignará el ID y los agentes Tienda se quedarán a la espera.
  4. El Monitor enviará un mensaje de inicialización a los agentes Tienda (plantilla)
  5. Los agentes Tienda le mandarán una respuesta (plantilla) de confirmación y quedarán a la espera. Aquellos clientes que no envíen una confirmación no entrarán en la simulación.
  6. El Monitor enviará un mensaje de inicio de simulación (plantilla) a los agentes Tienda, que no tendrá que ser respondido, y los agentes Tienda y Consumidor iniciarán la simulación

Consumidores

  1. Todos los agentes se inicializan en sus máquinas respectivas.
  2. Los agentes Consumidor le mandan una petición XML (plantilla) de conexión al Monitor. Para ello, se realizará una petición POST a direccionMonitor:puertoMonitor/init
  3. El Monitor responderá a la petición (plantilla) donde se asignará el ID.
  4. Los agentes Consumidor se quedarán a la espera realizando un polling (plantilla) con una petición POST a direccionMonitor:puertoMonitor/prepareCliente
  5. El Monitor responderá con un mensaje negativo (plantilla) mientras la simulación no esté preparada. Cuando lo esté, pasará al paso 6
  6. El Monitor responderá con un mensaje de inicialización a los agentes Consumidor (plantilla).
  7. LLos agentes Consumidor se quedarán a la espera realizando un polling (plantilla) con una petición POST a direccionMonitor:puertoMonitor/simulationReady
  8. El Monitor responderá con un mensaje negativo (plantilla) mientras la simulación no esté iniciada. Cuando lo esté, pasará al paso 9
  9. El Monitor enviará un mensaje de inicio de simulación (plantilla) a los agentes Consumidor, que no tendrá que ser respondido, y los agentes Consumidor iniciarán la simulación

Tiendas y clientes

Todos los mensajes con emisor con id 0, son pertenecientes al servidor central de la tienda java No olvidar replicar todos los mensajes a monitor

  1. Todos los clientes que quieran acceder al as tiendas, mandarán un mensaje de inicialización, en el que enviarán todas las tiendas que conocen (plantilla). Entonces, el cliente esperará una respuesta con tipo "conexion" y cuerpo ""conexion", " Ok Todo perfecto"", o tipo "error" en caso de algun fallo
  2. Cuando el cliente quiera meterse a una tienda, ha de enviar la petición de entrada (plantilla). Este recibirá un XML con todas las tiendas que los clientes de ahí conocen (plantilla).
  3. Para que el cliente compre, este envía el xml con el producto pedido (plantilla). Para la tienda en php ha de enviarse un producto por xml, para la tienda java pueden enviarse tantos como se quiera
  4. El cliente se queda a la espera de un XML, en el que se envía que producto y que cantidad de este se le ha vendido (plantillahttps://github.com/Kaysera/SistemasMultiagentes2018/blob/master/Grupos/G5/respuesta.xml)
  5. Si el cliente quiere salir de la tienda o simplemente terminar la conexión, ha de enviar una peticion de cierre de tipo "fin", el servidor le contestará para confirmar. Si quiere cambiar de tienda, ha de realizar este paso, y luego regresar al paso 2

Mensajes necesarios

Propuesta de mensaje común XML

<mensaje>
  <emisor>
    <direccion>
      <ip>192.168.1.1</ip>
      <puerto>80</puerto>
      <id>123</id>
    </direccion>
    <rol>tienda</rol>
  </emisor>
  <receptor>
    <direccion>
      <ip>192.168.1.2</ip>
      <puerto>80</puerto>
      <id>456</id>
    </direccion>
    <rol>comprador</rol>
  </receptor>
  <tipo>venta</tipo>
  <fecha>2018-10-25</fecha>
  <hora>15:58:32</hora>
  <cuerpo>
    ...
  </cuerpo>
</mensaje>

FAQ

Q: ¿Qué valores puede tomar el campo <rol>?

A: Comprador, Tienda y Monitor

Q: ¿Cómo se identifica a cada agente?

A:

  • Al Monitor se le identificará por una IP y puerto, que serán conocidos por todos de antemano
  • A los Compradores y Tiendas se les identificará por una IP, un puerto y un ID. Una misma combinación de IP y puerto puede tener varios agentes, por lo que el ID será necesario. Dicho ID será porporcionado por el Monitor

About

Proyecto de clase de Sistemas Multiagentes impartido en la ESIIAB

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published