Referencia de la Clase Agent_Graph::Agent
[Grafos.]

Agente de un grafo. Más...

Diagrama de herencias de Agent_Graph::Agent

Inheritance graph
[leyenda]
Diagrama de colaboración para Agent_Graph::Agent:

Collaboration graph
[leyenda]

Lista de todos los miembros.

Tipos públicos

typedef Agent_Info Agent_Type
 El tipo de información que contiene el agente.
typedef void(* Transit )(Agent_Graph *, Agent *, void *)
 Tipo de función de tránsito a invocar cada vez que el agente entra a un componente del grafo. Por componente se entiende un nodo o un arco.

Métodos públicos

 Agent (const Agent_Info &agent_info, Transit __transit)
 Instancia un agente con información agent_info y función de transito transit.
 Agent ()
 Instancia un agente vacío.
void *& get_cookie ()
 Retorna una referencia al cookie del agente.
Agent_Info & get_info ()
 Retorna los atributos asociados al agente.
bool is_in_node ()
 Retorna true si el agente está en un nodo; false si está en un arco.

Clases

struct  Critical_Section
 Sección crítica del agente. Más...


Descripción detallada

template<typename __Node, typename __Arc, typename Agent_Info>
class Aleph::Agent_Graph< __Node, __Arc, Agent_Info >::Agent

Esta clase modeliza un agente que recorre un grafo.

Hay cuatro atributos que maneja un agente:

  1. Una información arbitraria expresada por el parámetro tipo Agent_Info.
  2. Un semáforo binario para proteger la información relacionada con el agente.
  3. Una función de transición que ejecuta el agente para caracterizar el comportamiento dentro del grafo. Tradicionalmente, en esta función se programa cómo el agente decide por cuál arco transitar. La función de transición debe especificarla por el usuario y es llamada por un planificador en la clase Agent_Graph.
  4. Un puntero opaco no tipeado cookie que permite extender el nodo a que guarde prácticamente cualquier clase de información.
En añadidura, diversos tipos de agentes pueden modelizarse mediante derivación de esta clase. De este modo se pueden especializar clases de agente y manejarse mediante la misma interfaz con la clase base.

Un agente tiene los siguientes estados de ejecución:

Nota:
Agent es struct por simplicidad de programación en la clase Agent_Graph. Ninguno de sus miembros debe ser directamente accedido, sino mediante la clase Agent_Graph. Los únicos métodos asequibles de Agent_Graph sonj los constructores, que puede pueden ser necesarios para programar agentes derivados.

Definición en la línea 289 del archivo tpl_agent.H.


La documentación para esta clase fue generada a partir del siguiente fichero:

Leandro R. León