Programació orientada a agents

La programació orientada a agents (POA) és un paradigma de programació on la construcció del programari se centra en el concepte d'agents de programari. A diferència de la programació orientada a objectes, que té objectes (que proporcionen mètodes amb paràmetres variables) al seu nucli, la POA té agents especificats externament (amb interfícies i capacitats de missatgeria). Es poden considerar com a abstraccions d'objectes. Els missatges intercanviats són interpretats pels "agents" receptors, d'una manera específica per a la seva classe d'agents.[1]

Història

Històricament, el concepte de programació orientada a agents i la idea de centrar el programari al voltant del concepte d'agent van ser introduïts per Yoav Shoham dins dels seus estudis d'intel·ligència artificial el 1990.[2][3] Els seus agents són específics del seu propi paradigma, ja que només tenen un mètode, amb un paràmetre. Citant Yoav Shoham del seu article de 1990 per a una diferència bàsica entre AOP i OOP:

... programació orientada a agents (POA), que es pot veure com una especialització de la programació orientada a objectes.

POO AOP
Unitat bàsica objecte agent
Paràmetres que defineixen l'estat de la unitat bàsica sense restriccions creences, compromisos, capacitats, opcions,...
Procés de càlcul mètodes de pas de missatges i resposta mètodes de pas de missatges i resposta
Tipus de missatge sense restriccions informar, sol·licitar, oferir, prometre, rebutjar,...
Restriccions en els mètodes cap honestedat, coherència,...

Marcs

Hi ha múltiples "frameworks" AOP, també anomenats plataformes d'agents, que implementen el paradigma de programació de Shoham. Els exemples següents il·lustren com es programa un agent bàsic com un programa de tipus hola món.

JADE

Per a la plataforma Java, un dels frameworks és JADE. Aquí teniu un exemple molt bàsic[4] d'un agent que executa codi.

package helloworld;
import jade.core.Agent;

public class Hello extends Agent {
	
	protected void setup() { 
		System.out.println("Hello World. ");
		System.out.println("My name is "+ getLocalName()); 
	}
	
	public Hello() {
		System.out.println("Constructor called");
	}

}

El nucli del model AOP de JADE és que la seva API és compatible amb el llenguatge de comunicació d'agents FIPA estàndard.

Agent Speak (Jason)

AgentSpeak és un llenguatge de programació orientat a agents basat en la programació lògica i l'arquitectura creença-desig-intenció (BDI).

Per a una traducció literal de conceptes orientats a agents en un esquema sense ofuscació com ho és JADE, darrere de Java i l'orientació a objectes, Agent Speak (Jason) proporciona un llenguatge "natural" per als agents.

	started.

	+started <- .print("Hello World. ").

GOAL

GOAL és un llenguatge de programació d'agents cognitius. Els agents GOAL deriven la seva elecció d'acció de les seves creences i objectius. El llenguatge proporciona els components bàsics per dissenyar i implementar agents cognitius mitjançant la programació de construccions que permeten i faciliten la manipulació de les creences i els objectius d'un agent i per estructurar la seva presa de decisions. El llenguatge proporciona un marc de programació intuïtiu basat en el sentit comú o el raonament pràctic.

SARL Language

SARL[5] proporciona les abstraccions fonamentals per a la codificació de sistemes multiagent. Utilitza una sintaxi semblant a un script (inspirada en Scala i Ruby).

package helloworld
import io.sarl.core.Initialize
agent HelloWorldAgent {
    on Initialize {	
       println("Hello World.")
    }
}

PADE (Framework de desenvolupament d'agents Python)

PADE[6] és un paquet Python per desenvolupar agents intel·ligents en llenguatge Python. Aquest marc de treball compleix amb els estàndards FIPA i ACL.

class AgenteHelloWorld(Agent):
  def __init__(self, aid):
    super(AgenteHelloWorld, self).__init__(aid=aid)
    display_message(self.aid.localname, "Hello World!")

Middleware

Una manera d'implementar suport AOP modular o extensible és definir API AOP estàndard per a funcions de middleware que s'implementen com a agents de programari. Per exemple, un servei de directori es pot implementar com a facilitador de directoris FIPA o agent de programari DF; la gestió del cicle de vida per iniciar, aturar, suspendre i reprendre els agents es pot implementar com a servei de gestió d'agents FIPA o agent AMS.[7] Un avantatge de l'enfocament AOP és que admet rols més dinàmics entre diferents usuaris i proveïdors d'aplicacions, serveis i xarxes. Per exemple, tradicionalment, les xarxes i els serveis eren gestionats pel proveïdor de xarxa i servei en nom del client i s'oferien com un únic servei de xarxa virtual, però els propis clients cada cop tenen més poder per integrar i gestionar els seus propis serveis. Això es pot aconseguir mitjançant AOP i API per a agents de middleware que poden gestionar la comunicació de manera flexible i dinàmica.[8]

Referències

  1. «SmythOS - What is Agent-Oriented Programming?» (en anglès americà), 09-11-2024. [Consulta: 25 maig 2025].
  2. Shoham, Y. Agent-Oriented Programming (en anglès). Stanford University: Computer Science Department, 1990. 
  3. Shoham, Y. Artificial Intelligence, 60, 1, 1993, pàg. 51–92. DOI: 10.1016/0004-3702(93)90034-9.
  4. «Rootdev» (en anglès). rootdev.nl. Arxivat de l'original el 2 July 2011. [Consulta: 18 setembre 2022].
  5. Rodriguez, Sebastian. «SARL: A General-Purpose Agent-Oriented Programming Language». A: 2014 IEEE/WIC/ACM International Joint Conferences on Web Intelligence (WI) and Intelligent Agent Technologies (IAT) (en anglès), 2014, p. 103–110. DOI 10.1109/wi-iat.2014.156. ISBN 978-1-4799-4143-8. 
  6. «Python Agent DEvelopment framework — Pade 1.0 documentation» (en anglès).
  7. Poslad, S ACM Transactions on Autonomous and Adaptive Systems, 2, 4, 2007, pàg. 15–es. DOI: 10.1145/1293731.1293735.
  8. Poslad, S. Hayzelden. Agent-oriented middleware for integrating customer network services. In: Software Agents for Future Communication Systems (en anglès), 1999, p. 221–242. DOI 10.1007/978-3-642-58418-3_9. 
Prefix: a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9

Portal di Ensiklopedia Dunia

Kembali kehalaman sebelumnya