Esta es una de las características principales del lenguaje de programación.
Se puede tener dos formas de crear agentes.
1. Importando la libreria de agentes (lib.agent.aget). Esta librería define el parámetro de diseño de un agente que se componen por estados de funcionamiento. A continuación un ejemplo de como se construye un agente con 5 estados y acciones de prueba.
El siguiente es la código en donde se crean un agente, basado en el modelo de maquina de estados finito
importar lib.agent.agent
funcion action1(entrada)
log("State " + agent.current_state.id + ": " + entrada)
retorno ("Doctor")
end
funcion action2(entrada)
log("State " + agent.current_state.id + ": " + entrada)
retorno (entrada)
end
funcion action3(entrada)
result = agent.connect()
log("State " + agent.current_state.id + ": " + result)
if (entrada == "Doctor") {
retorno(false)
}
retorno(entrada + 10)
end
funcion action4(entrada)
log("State " + agent.current_state.id + ": " + entrada)
retorno(entrada)
end
funcion action5(entrada)
log("State " + agent.current_state.id + ": " + entrada)
retorno(entrada)
end
state1 = State("Init", action1, false, [{ id: "Callejon", condition: false },{ id: "Conexion", condition: "Doctor" }])
state2 = State("Callejon", action2, false, [])
state3 = State("Conexion", action3, false, [{ id: "Callejon 2", condition: 30 },{ id: "Terminal", condition: false }])
state4 = State("Callejon 2", action4, false, [])
state5 = State("Terminal", action5, true, [])
agentfactory = AgentFactory()
agents = agentfactory.create_agents(3, Agent, "Pepito", "Init", [state1, state2, state3, state4, state5], false)
result = agentfactory.runChildren(agents)
log(result[1])
El resultado es el siguiente:
----- LangTLON v1.0 -----
State Init: None
State Conexion: Connected to 192.168.0.1
State Terminal: False
Acceptable State: Terminal - False
State Init: None
State Conexion: Connected to 192.168.0.1
State Terminal: False
Acceptable State: Terminal - False
State Init: None
State Conexion: Connected to 192.168.0.1
State Terminal: False
Acceptable State: Terminal - False
[False, False, False]
2. También están definidos los constructores para agentes, que viene por defecto del sistema de cómputo TLÖN.
Estos constructores han definido el propósito del agente. Estos agentes se basan en fabrica de agentes (agent_factory) y los comportamiento de agentes (Behavior).
La lista de los agentes que se han definido por el momento para el sistema TLÖN es:
La sintaxis de agente es la siguiente:
agente
: AGENTE OPAR (atom (COMMA atom)*) CPAR
;
A continuación los ejemplos:
Script que corre agente
age = agente("PingAgent","This agent will ping google server" ,"testuser1","pass123","www.google.com")
age.start()
Agente que envía n veces un comando a la consola del sistema. Otra opción de usar agentes en el sistema, es la importación directa de la librería de agentes y llamar a las funciones propias de los agentes nativos. Esto se hace buscando más flexibilidad en la solución de
importar mas.__init__
funcion callBash()
agent = CycleCallBash("Send commands to bash","testuser1","pass123")
agent.start()
end
agent = callBash()
Agente que ejecuta un script ubicado en la carpeta test el nombre que se pasa como tercer parámetro
importar mas.__init__
funcion executeScript(scriptName)
agent = ExecuteScript(scriptName)
agent.start()
end
agent = executeScript("script.txt")
Agente que envía un numero de veces determinado las tomas de mediciones de los sensores y los envía al servicio web
importar mas.__init__
funcion measureAgent(times)
agent = MeasurementAgent("this agent with send data to a webservice", "testuser1", "pass123", times)
agent.start()
end
agent = measureAgent(10)
Este agente hace ping a una ruta que se pase como tercer parámetro una única vez. Como respuesta nos dice si el servidor esta disponible o no
importar mas.__init__
funcion pinghost(description, jid, password, hostname)
agent = PingAgent(description, jid, password, hostname)
agent.start()
end
resultPing = pinghost("This agent will ping google server", "testuser1", "pass123", "www.google.com")
Este agente ejecuta una función programada en su clase una única vez, en este caso imprime un saludo
importar mas.__init__
funcion singleAction()
agent = SingleActionAgent("Agent that do just one thing","testuser1","pass123")
agent.start()
end
agent = singleAction()
Agente que detecta una cadena de texto dada inicialmente
importar mas.__init__
funcion stringDetector()
agent = OneStringDetector("Detect a given string", "testuser1", "pass123", "cadena")
agent.validateString("cadena")
agent.start()
end
agent = stringDetector()
Agente que tiene como propósito hacer un conteo hacia atrás.
importar mas.__init__
funcion timeOut()
agent = TimeOutAgent("Count till time finish", "testuser1", "pass123")
agent.start()
end
agent = timeOut()
Comunidad de agentes.
La comunidad de agentes es una colección de agentes que cumplen con alguna función particular.
La sintaxis de comunidad es la siguiente:
comunidad
: COMUNIDAD OPAR (atom (COMMA atom)*) CPAR
;
En el siguiente ejemplo se muestra como se crea una comunidad de agentes que tiene como finalidad hacer ping a un servidor