当前位置: 首页 > 科技观察

Agent和Object的区别

时间:2023-03-13 15:42:26 科技观察

如果说对象是20世纪70年代以来软件界最激动人心的创新之一,那么Agent的相关理论和技术为分布式开放系统的设计和实现提供了一条新的途径,可以调用它是软件开发的又一重大突破。讨论问题的前提是理清概念。什么是对象?什么是代理?两者有什么区别和联系?对象和OOP对象是具有明确边界和含义的事物。它也是对某些问题的概念抽象,是封装数据和方法的实体,对象的本质是一组数据及其相关的方法和操作。它的特性由属性表示。属性的数据值表示对象的状态。系统开发人员通过对象所具有的属性来了解对象的静态结构。对象的内部数据(私有和受保护的数据)可以通过操作来改变。从而改变对象的状态。当其他对象向一个对象发送消息时,就会执行和实现操作。每个对象都有一个唯一的标识符。以区别于同一个类的其他对象。使一个对象与其他对象不同的是其属性的值,这些值构成了它的身份。对象是为现实世界中的实体建立的抽象模型,包括实体的属性和对实体的操作。它具有唯一性、封装性和多态性等重要特性。对象一般由三部分组成:对象名、对象体、触发器。对象名唯一标识一个对象,对象体是对象封装的所有数据的集合。可以是属性值的集合,也可以是多个数据库的集合。触发器定义了对象的哪些状态变化会导致事件产生,是可选部分,用于描述事件的重要状态变化。面向对象程序设计(Object-OrientedProgramming,简称OOP)是20世纪70年代后期提出的一种编程技术,80年代中后期开始得到应用。在OOP的设计中。对象是一个动态的概念,是对客观世界中实体的数据抽象,即一些具有特殊通信能力和行为属性的基本操作实体。类是一个静态概念,是一组对象的抽象定义或概括,具有层次和继承的特点。面向对象编程的基本思想是:它是一种基于对象、事件驱动的对象驱动编程技术,通过建立与实际情况对应的软件对象,通过这些对象的组合来创建特定的应用程序,通过定义对象属性、调用对象方法和编写对象事件函数来完整地描述对象,实现对象之间的联系和对象本身的操作,从而实现整个系统的设计。人们普遍认为,OOP试图将问题空间的结构和概念直接映射到软件的解决方案空间。从而使人类对问题的认识过程与软件开发过程保持一致。代理和AOP什么是代理?Agent是一个具有多重含义的概念,根据场景和视角的不同而有很大差异。从心理状态的角度来看,“如果一个实体可以用信念、承诺、义务、意图等心理状态来描述,那么这个实体就可以看作是一个Agent”。如果说建立单个Agent的目的是为了模拟人的行为,那么从心理状态的角度来分析人的行为就更自然了,这也是Agent成为人工智能基础理论的重要原因之一。通常,这种定义称为Agent的强定义。弱定义,即“如果一个实体具有自主性、反应性、主动性和社交性四个基本属性,那么该实体也可以看做是一个Agent”。从设计者的角度来看,Agent是一个抽象的工具,通过它我们可以用更方便、更熟悉的拟人化方式来描述、解释和预测复杂系统的行为。一般来说。系统越复杂,我们对它的了解越少,我们就越需要使用基于意图的立场来观察和解释它的行为。当然。当给予Agent各种心理状态时。要求必须精确、简单和自然。在计算机领域,代理是指在一定环境下,能够自主智能地完成其他个体分配的任务的系统。简单的说,Agent就是指一个实体,它是一个具有智能的实体。Agent的特点如下:FeaturesinEnglish解释AgencyActionOnBehalfOthers具有代表他人的能力,即他们都代表用户工作Autonomy可以在非预先计划的动态环境中解决实际问题,自主发现并获得支持需要的资源、服务等主动性主动性可以遵循承诺采取主动,表现出目标导向的行为反应性反应性可以感知环境并对环境做出适当的反应社交能力可以与用户、资源、与代理人所代表的其他代理人进行交流。智能智能具有一定程度的智能,包括从推理到自我学习的一系列智能行为。CooperativeCalllaboration与其他智能体合作完成单个智能体无法完成的任务。移动性具有移动的能力,为了完成任务,可以从一个节点移动到另一个节点。由于Agent的特性,基于Agent的系统应该是一个高层系统,具有灵活性、智能化、可扩展性、健壮性和组织性等诸多优点。程序设计(Agent-OrientedProgramming,AOP)具有计算的社会观点,结合了传统面向对象编程的特点。如数据封装、消息传递等。需要注意的是,本文所指的AOP并不是AspectOrientedProgramming(AOP)。一般认为,一个完整的AOP系统应该包括以下三个部分:定义Agent心理状态(MentalStates)的逻辑系统;用于对Agent进行编程的可解释编程语言;一个代理实现(Agentification)过程,将代理程序编译为低级可执行代码。AOP本质上是用心境对智能实体进行编程。代理程序提供了代理的思维状态、环境的信息输入和代理对环境的行为输出之间的联系。一般来说,一个代理程序包括:一个初始思维状态,包含一个初始信念集、一个初始意图集和一个初始计划集;思维状态改变规则集。初始信念集和意图集将由模态算子加上带有时间索引的一阶谓词语言来表达。初始计划集由一系列具有时间关系的原子操作表示。一般初始规划集为空集。心理状态的变化规则集是Agent程序的核心。它包含两个规则,一个用于更新信念集和意图集,另一个用于生成计划。AOP是一种基于计算社会观的新型编程范式。它以智能体的设计和构造为人工智能编程的核心,重视智能体的动态特性和智能体的交互活动,将对公式系统的研究和开发产生深远的影响。面向代理和面向对象建模面向对象建模体现了面向对象软件开发中模型驱动的基本思想。它将软件开发的重点转移到分析阶段。在整个开发过程中,使用一个统一的概念——对象,其他所有概念都是围绕对象组成的,在分析阶段建立的对象模型也适用于设计和实现阶段,软件开发的各个阶段是相对的统一。整个开发过程实际上就是对模型进行细化的过程,从而避免了传统结构化方法中数据流图到模块层次图的转换过程。面向对象建模的局限性在于对建模过程的描述不是很清晰,建模的结果是各种图形的表示,不能具体反映建模过程;绘制清晰的系统并不容易;系统描述不够详细;它不包含语义成分,因此对系统的描述不够精确,一些操作会产生歧义。面向Agent的建模应该把被研究的系统看作是一个基于Agent的系统,然后利用Agent理论对所研究的问题进行抽象建模。基于Agent的系统的三个基本元素是:Agent(对应实体)、事务(对应活动)和资源。通过描述这三个基本要素以及它们之间的关系,可以从过程的角度对Agent-based系统进行描述、抽象和建模。由于对Agent-orientedmodeling的理解是逐渐加深的,很难从头详细描述,所以以上步骤必然是一个不断重复,逐步细化的过程。“对象”的抽象和表达能力远不如“代理”。Agent扩展了“对象的内涵和使用范围”,更适用于复杂系统问题的描述和处理。面向代理的建模并不否定面向对象的建模。它是面向对象方法的延伸和扩展。两者的区别主要表现在以下两个方面:(1)对于单个主体,面向对象技术把客观世界看成是没有组织和抽象的“刚性”对象。生成更高级别构建块的能力。Agent自主灵活的解决问题的行为能够很好地表达Agent的心理状态。(2)对于多代理系统。面向对象技术不能完全抽象出主体之间丰富的交互行为,也不能充分表达多个主体之间动态组织结构的复杂性;而面向Agent的建模更合适。面向Agent和面向对象的软件工程面向Agent的软件工程,其工作原理是把Agent作为模型的构成条件,同时围绕着系统有条不紊地进行一系列与系统相关的活动具备相应的基础条件,目前算是一个技术含量很高的软件。开发模型。无论是软件系统还是应用系统,其内部组成都包括多个Agent。Agent的特征主要包括自发性、反应性、社会性和自主性,属于具有自我控制能力的行为实体。Agent与Agent之间的结构关系比较复杂,其功能是通过高层的相互交流来实现的,在此前提下实现了系统设计的预期目标。对于系统研究和开发,面向代理的软件工程不仅为其搭建系统平台,还完成了理论和技术环境的提供。主要通过系统模块分解、数据建模和抽象理论完成系统数据的细化和管理,实现系统设计的基本要求和目标,促进系统难度和灵活性的提高。还添加了可维护性和可重用性功能。面向代理的软件工程的基本思想和定义在软件工程的理论理论和总体规划上是一脉相承的,其基本特征体现了自然的抽象和强大的功能。(1)许多问题(数据、能力、控制)固有的分布式特性本身就是一个由多个交互的自治实体组成的松耦合网络。面向代理的方法采用粗粒度的自治计算实体作为抽象机制,从社会学的角度和熟悉的概念(组织、角色等)分析、建模和设计复杂的分布式系统。面向对象方法使用细粒度的非自治计算实体(对象)作为抽象机制来分析和建模复杂问题。与面向对象相比,面向代理更加自然、直观、简单、易懂。(2)面向Agent的分析设计过程中实体间的知识级交互,实体可以自主决定交互方式、范围、时间、内容;同时,存在各种组织关系(如层级、专家社区、市场机制等),适用于复杂系统的建模。面向对象方法中对象的交互是在语法层面通过对象之间的消息传递来实现的,对象之间的组织关系(如包含关系和聚合关系)很少,没有足够的机制来对复杂系统进行建模。(3)面向Agent的软件工程主要强调角色、职责、服务、目标等抽象机制来处理复杂性,并通过什么时候完成什么目标来分析应用领域。核心是完成的目标。面向对象的方法主要强调实现目标的行为类型。因为目标在任何应用领域都比行为或计划更稳定,所以强调目标和强调行为之间看似很小的变化会导致实质性的差异。面向代理的目标分析使系统设计更加稳定、健壮和模块化。它可以增量开发和测试,并具有可扩展性。上下文相关计划提供模块化和组合性,在不更改现有计划的情况下,可以将新的上下文计划添加到系统中以实现相同的目标,这使系统能够处理可变性和特殊情况。(4)面向代理的软编程的基本组成部分是代理;面向对象编程没有明确定义基本组件的状态,Agent模型的基本组件状态可以包括信念、承诺、能力、选择等;OOP使用方法引用来处理消息,而AOP的消息类型来自于言语行为理论,可以包括notification、request、offer、promise、reject等。代理通信有专门的语言,比如KQML;在面向代理的方法中,代理通常被实现为一个意向系统。而OOP将对象视为类的实例。就面向代理的软件工程中的程序设计而言,不外乎三种方式:(1)用类似于LISP语法的语句来表达代理的组成部分,包括代理系统的行为或它们之间的通信系统,对提高Agent系统的功能有很大的帮助。(2)基于逻辑技术,逻辑系统包括一阶谓词逻辑和时序逻辑等,也可以作为Agent的编程语言。在编程时,逻辑系统用于控制Agent系统的各种方法和内部流程。在组合中表达和定义,如相关知识、意图和信念、原子动作和规则等,都可以用逻辑技术来表达和定义。逻辑技术的理论体系和语义定义相当严谨。(3)采用了面向对象的软件开发技术和软件构件技术,属于为Agent系统程序提供语言层面的支持。通常,Agent系统被看作是一个独特的对象,Agent系统是用预定义的Agent内部功能的软件组件来编程实现的。前提是使用的软件组件必须是一组经过封装的特殊类。直到2000年,面向Agent软件工程的研究与实践经历了一个由主动到沉默的过程,其中主要的因素还是技术问题。近年来,随着人工智能技术进入人们的生产和生活,这方面的研究再次掀起热潮。SummaryAgent是对象实体的扩展。Agent可以看作是一种特殊意义上的对象,但Agent毕竟不同于对象。单词。消息的发送是激活方法;而Agent则是基于消息的区分。用意图和复杂的协议建模来协商是否同意执行请求的行为。Agent可以主动运行,有自己的目标和行为,可以被外部激励或内部状态激活,而对象是纯被动的,只能受外部消息控制。Agent是一个自主实体,有自己的知识和分析问题的方法,可以理解信息并控制自己的行为,而对象只能机械地执行规定的动作。Agent可以根据推理规则抽象信息,但对象一般不具备推理能力。如果将对象理解为存储和处理器的结合,那么Agent就是存储、处理器和编程器的结合。程序员可以赋予主题一定的目的和意志。人们在投射自己的思维主体时,最终的等价模型很可能是Agent,而不是客体。因此,Agents的概念比对象更广更深。