代理人导向编程

编辑
本词条由“0059” 建档。
代理人向导编程(Agent-Oriented Programming, AOP)是一种以-代理人(Agent)为核心概念的编程范式。代理人在计算机科学中通常被定义为具有自主性、社会性、反应性和主动性的计算实体。代理人导向编程AOP作为一种高层次编程方法,借鉴了面向对象编程(Object-Oriented Programming, OOP)的理念,并进一步扩展,以便处理复杂的分布式系统、协作任务...

什么是代理人导向编程

编辑

代理人向导编程(Agent-Oriented Programming, AOP)是一种以-代理人(Agent)为核心概念的编程范式。代理人在计算机科学中通常被定义为具有自主性、社会性、反应性和主动性的计算实体。代理人导向编程AOP作为一种高层次编程方法,借鉴了面向对象编程(Object-Oriented Programming, OOP)的理念,并进一步扩展,以便处理复杂的分布式系统、协作任务和动态环境。

代理人导向编程

代理人(Agent)概念的由来

编辑

Shoham 在介绍作为一种新范式的基于代理的方法时,详细讨论了“代理”一词的含义。问题是,这个词可以有多种近义词。尽管 Shoham 理解的是软件代理,但他是以人工智能理论为基础的,并借鉴了早先已经存在的智能代理概念。他注意到这一概念相当模糊,因此提出了一个特殊的 AOP 框架,旨在将其转化为编程中更正式的应用。因此,代理的概念有别于简单的对象,它被赋予了许多心理结构,如信念、职责和能力。因此,编程语言中会出现各种心智类别,而编程语义将与心智构造语义相关联。

代理人导向编程的由来

编辑

代理人导向编程AOP起源于人工智能(Artificial Intelligence, AI)领域,最初的概念用于模拟具有智能行为的实体,例如机器人、智能助手等。随着分布式系统的普及以及对复杂系统建模需求的增加,AOP逐渐发展成为一种编程范式,用于设计和实现以代理人为核心的复杂软件系统。

后来随着多智能体系统(Multi-Agent Systems, MAS)的出现,该领域重点研究多个自主实体的协作与决策机制。20世纪90年代,研究人员提出了以代理人为中心的编程模型,将代理人抽象为具备独立状态、行为和沟通能力的实体,从而形成了AOP的基本框架。

代理人导向编程

相关概念

编辑

对象

具有给定结构和实例化机制的软件实体,可通过传输信息与其他对象交互。消息的形成和发送是对到达消息的响应。消息由基于数据的程序形成。

Actor

具有给定结构和交互机制的软件实体:
  • 包含数据和程序。
  • 具有封装、关系、继承,并能生成信息。

代理人

执行指定任务的程序实体。具有如下特性:

  • 感知环境的动态。
  • 改变环境的行动。
  • 推理,以便解释观察到的现象、解决问题、得出结论和决定行动。

AOP与OOP的关系

编辑

代理人导向编程的方法是面向对象编程的一个特例。在 AOP 中,计算过程被广义地理解为由通过信息交互的对象组装而成的系统。AOP 将这些概念特殊化,建立了由信念、能力和决策等组件组成的对象状态,每个组件都有特定的语法。此外,代理的精神状态还受到各种约束。计算包括通知代理、满足代理的要求、满足代理的提议、接受、拒绝、竞争和相互帮助。

OOPAOP
基本单位对象代理
定义基本单元状态的参数无限信念、承诺、能力、选择等
计算过程接收信息和响应方法信息到达和响应方法
信息类型无限制信息、请求、提议、承诺、拒绝等
方法限制诚信、一致性等

尽管 AOP 的理论基础与 OOP 密切相关,但它强调更高级别的抽象和行为模式,特别是在处理复杂的分布式系统和动态环境时表现出显著优势。可以说,AOP 是一种面向对象编程的特化,进一步增加了代理的智能属性,并将代理看作具备类人特征的复杂实体。

可应用的领域

编辑

分布式系统

AOP用于建模和实现大规模分布式系统中的协调与通信,例如云计算环境中的资源分配和负载均衡。

智能交通系统

代理人用于模拟和优化车辆与交通信号之间的交互,提高交通效率。

电子商务

AOP在推荐系统和自动谈判代理中的应用日益广泛。

游戏与虚拟环境

代理人用于设计复杂的非玩家角色(Non-Player Characters, NPCs),增强游戏的智能性和交互性。

从任务到实现

编辑

出现的原因

基于代理的方法出现的原因:

  1. 需要克服操作环境的界限。
  2. 消除对象模型的异构性,因为在不同工具环境中构建的类和对象具有一定的差异。

问题陈述

一般来说,AOS 系统应包括以下基本组件:

  • 具有适当语法和语义的受限形式语言,用于描述代理的内部状态,该状态由信念、欲望、意图和承诺等参数定义。
  • 用于代理规范的编程语言,包括请求(REQUEST)和通知(INFORM)等基本命令。
  • 将中性组件转换为可编程代理的代理器。

现实

JADE(Java Agent Development Framework)是一种广泛应用的分布式代理开发框架,它为 Java 环境中的代理提供了以下特性:

  • 自主性:代理遵循可异步补充的行为列表。
  • 可持续性:每次行为之后都不会产生副作用。
  • 移动性:代理可以转移到另一个容器。

代理人导向编程

BookBuyerAgent 示例

编辑

基于代理的方法的一个典型例子是模仿电脑游戏中玩家行为的特殊程序。这些程序被称为机器人,但也用于聊天室、论坛等场景。

import jade.core.Agent;
import jade.core.behaviours.Behaviour;

public class BookBuyerAgent extends Agent {
// Agent 初始化方法
protected void setup() {
System.out.println(getName() + " is ready to buy books.");

// 添加一个简单行为
addBehaviour(new Behaviour() {
private int step = 0;

@Override
public void action() {
switch (step) {
case 0:
System.out.println(getName() + ": Searching for books...");
step++;
break;
case 1:
System.out.println(getName() + ": Found a suitable book. Making an offer...");
step++;
break;
case 2:
System.out.println(getName() + ": Purchase complete!");
step++;
break;
}
}

@Override
public boolean done() {
return step == 3; // 行为在第三步完成
}
});
}

// Agent 终止前的清理工作
protected void takeDown() {
System.out.println(getName() + " is terminating.");
}
}

参考文献

编辑

1. Wooldridge, M., & Jennings, N. R. (1995). Intelligent agents: Theory and practice. Knowledge Engineering Review, 10(2), 115-152.

2. Bordini, R. H., Hübner, J. F., & Wooldridge, M. (2007). Programming Multi-Agent Systems in AgentSpeak using Jason. Wiley.

3. Foundation for Intelligent Physical Agents (FIPA). Agent Communication Language Specifications.

百科词条作者:0059,如若转载,请注明出处:https://glopedia.cn/372163/

(1)
词条目录
  1. 什么是代理人导向编程
  2. 代理人(Agent)概念的由来
  3. 代理人导向编程的由来
  4. 相关概念
  5. 对象
  6. Actor
  7. 代理人
  8. AOP与OOP的关系
  9. 可应用的领域
  10. 分布式系统
  11. 智能交通系统
  12. 电子商务
  13. 游戏与虚拟环境
  14. 从任务到实现
  15. 出现的原因
  16. 问题陈述
  17. 现实
  18. BookBuyerAgent 示例
  19. 参考文献

轻触这里

关闭目录

目录