- 浏览: 136252 次
- 性别:
- 来自: 福建省莆田市
-
文章分类
最新评论
-
houruiming:
tks for your info which helps m ...
setcontent和setcontentobject用的是同一片内存 -
turingfellow:
in.tftpd -l -s /home/tmp -u ro ...
commands -
turingfellow:
LINUX下的网络设置 ifconfig ,routeLINU ...
commands -
turingfellow:
安装 linux loopbackyum install um ...
commands
Extending the Capability Concept for Flexible BDI Agent Modularization
Lars Braubach,Alexander Pokahr,Winfried Lamersdorf
Distributed Systems and Information Systems
Computer Science Department,University of Hamburg
Vogt-K?lln-Str.30,22527 Hamburg,Germany
{braubach|pokahr|lamersd}@informatik.uni-hamburg.de
Abstract.Multi-agent systems are a natural way of decomposing complex systems into more manageable and decentralized units.Nevertheless,as single agents can represent complex subsystems themselves,software engineering principles for the design and implementation of coherent parts of single agents are necessary for producing modular and reusable software artifacts.This paper picks up the formerly proposed capability concept for structuring BDI agents in functional clusters,and generalizes and extends it to support a higher degree of reusability.The resulting mechanism allows for designing and implementing BDI agents as a composition of configurable agent modules(capabilities).It is based on a black-box approach with export interfaces that is in line with objectoriented engineering principles.
1 Introduction
One important traditional software-engineering principle is modularization[12],which means that functionality is packaged into delimited units.Thereby,referring to[6]a module is seen as“[...]a well-defined component of a software system that provides a set of services to other modules.Services are computational elements that other modules may use.”
For example,in the imperative paradigm modules represent collections of procedures,data types and constants from which only a small subset is made accessible through the module’s export interface.For other paradigms such as functional programming or object-orientation adapted forms of modularization have been developed as well.Generally,modularization achieves inter alia the
following three advantages:First and most importantly,it enables reuse and extensibility of software artifacts as modules form separate units of functionality. Secondly,modules enhance flexibility through encapsulation,because changes inside a module should not affect other odules.Thirdly,modularization increases the effectiveness of software development and the comprehensibility of the applications as separate modules represent abstractions that can be considered independently for understanding cutouts of the system.
To achieve those advantages in practice,fundamental design principles have to be taken into account for module creation.On the one hand the couplingof different modules(interrelationships)should be minimized,whereas on the other hand the cohesion of the elements contained in a module should be maximized[17].The basic idea of modules is to abstract from implementation details through information hiding[12],which means that the internals of a module are encapsulated and can therefore be changed without affecting other modules.Adhering to these principles ensures that modules represent self-contained,reusable entities for some well-defined functionality.
For the agent paradigm modularization is also an important topic.Even though multi-agent systems are a natural technique for decomposing complex scenarios into autonomous actors,the resulting agents can still be fairly complex. Breaking down such complex agents into teams of smaller ones is not always an appropriate solution,because splitting up a self-contained entity requires a connection between those smaller agents to be established at the communication level,leading to possibly ineffcient solutions.
Hence,specifically adapted concepts for structuring the internals of an agent are necessary.Such a structuring technique depends in turn on the considered agent architecture determining the high-level elements and processes which may or may not be suitable for modularization.Cognitive architectures such as 3APL[4],BDI[15]or SOAR[11]propose different high-level abstractions leading to possibly different modularization approaches.In this paper Busetta et al.’s capability concept[3]for modularization of BDI agents is taken up and extended to support more flexible agent configuration.
In the next section the original capability concept is shortly sketched and its limitations are described.In section 3 the extended capability concept is proposed and its implementation within the Jadex BDI reasoning engine is described in section 4.The concepts are further clarified by an example application in section 5.A summary and an outlook of future work conclude the paper.
2 Capabilities Revisited
The capability concept for structuring BDI agents in modules and its implemen-
tation within the JACK agent framework[8]was first described in[3].The main
idea of the original proposal is to define beliefs,goals and plans that functionally
belong together in a common namespace called capability.In addition,scoping
rules allow for an exact specification of the parts of a capability that should be
visible from the outside.According to[3]a capability is defined as:
1.an identifier(that is,a name);
2.a set of plans;
3.a fragment of the knowledge base concerning the beliefs manipulated by the
plans of the capability;
4.the visibility rules for those beliefs,that is,which ones are restricted to the
plans of the capability and which ones can be seen from the outside;
5.which types of events,generated as a consequence of the activity of the
capability are visible outside its scope,and their processing algorithm;Fig.1.Original capability concept
6.which types of events,generated outside the capability,are relevant to the
capability(that is,to one or more of its plans);
7.finally,recursive inclusion of other capabilities.
Each capability type specified in this way can be included in another capabil-
ity or in the agent.For this inclusion an additional symbolic name has to be
provided to allow multiple usages of one capability type within the same con-
text.This is similar to the usage of a class in an object-oriented language,i.e.
the symbolic name identifies a specific instance.In Fig.1 the main ideas of the
original capability concept are also illustrated graphically.The interface of the
inner capability is defined by means of the(di?erent kinds of)external events
the inner capability can process and also by those exported events that could be
handled in the outside capability.In addition beliefs of the inner capability can
be made visible for the outer capability,while plans are only visible locally.
As an example,in[3]negotiation functionalities for two types of agents par-
ticipating in a negotiation are described(initiator and bidder).These function-
alities can be encapsulated in two capabilities and reused by all agents which
like to take part in a negotiation.
2.1 Limitations
The original capability concept as outlined above allows for grouping mental
attitudes according to their functional purpose and therefore is an e?ective tech-
nique for modularization.Nevertheless,this approach exposes some conceptual
limitations that are discussed next:
–Concerning the export interface,the approach distinguishes explicitly be-
tween mental attitudes and treats them in a di?erent manner.This meansthat there is no continuous mechanism for all types of elements.So,for events
the propagation(from the outside/to the outside)is relevant,for beliefs the
visibility can be defined(local vs.external)and for plans only their usage can
be declared.Having specific means for each of the elements to be grouped
inside a capability not only renders the mechanism hard to learn and use,it
is also not easily possible to adapt the reusability mechanism to other mental
notions,be it extensions to the BDI model or alternative mental models.
–Another important limitation of the approach is concerned with parametriza-
tion as only the static structure is considered.Besides the static structure
the initial mental state of a capability respective an agent is of major im-
portance.In the current form,capabilities cannot be configured with some
initial mental state,which hinders flexible reuse.
–Only design-time composition has been taken into account.No work has been
done so far regarding the possibilities of dynamic agent behavior modification
by adding/removing or exchanging capabilities at runtime.In this respect a
model would have to be provided,how the addition or removal of a capability
influences the functionality of other capabilities.
–The concept does not allow for refinement of parts of a capability specifica-
tion.E.g.it is not possible to provide an extended context condition for a
plan.Elements have to be used in exactly the way they are defined in the
inner capability,which hinders flexible reuse.
3 Extending the Notion of Capabilities
This section presents a capability concept,suitable to address the aforementioned
shortcomings.It follows the general idea of a capability being“[...]a cluster of
plans,beliefs,events and scoping rules over them”[3],but di?ers from the original
capability concept in several important ways.
1.The locality principle assures that all elements of a capability are part of
exactly one capability.
2.A general import/export mechanism is introduced to define which elements
are part of the capability’s interface and are visible from the outside.Ele-
ments contained in the interface can be used in the containing capability by
defining local proxy elements.
3.A creation semantics determines which element instances of a static struc-
ture(composed of a single concrete element type and arbitrarily many prox-
ies)are created at runtime.
4.The explicit specification of initial configurations separately to the static
structure of a capability is supported.
5.The foundations of dynamic capability modifications are layed down.
These extensions are discussed in the following sections.Fig.2.Reference concept
3.1 Locality Principle
The original capability concept assumes a global repository of mental elements
(i.e.event or plan type specifications)which are then just referenced in a ca-
pability definition.Therefore the same type of element can be used in di?erent
capabilities or even agents(i.e.for sending and receiving message events).
In our model we follow the locality principle of elements which means that
a capability itself defines the available types(e.g.of beliefs),and forms the
namespace for these types.These element types are not globally available,but
only inside the capability.As a consequence e.g.from within plans only locally
defined beliefs are accessible,which means that it is not su?cient to know that
a belief of a contained capability is exported.To be able to use such a belief a
local reference has to be declared.
Following the locality principle has the main advantage of increasing the
transparency.This is because e.g.a plan only depends on local elements and not
on elements defined in a subcapability.Changes with respect to a subcapability
are therefore hidden from the plan.Another advantage concerns the openness of
agent applications.As no global elements such as message events are specified,
each agent can interpret a received message in its own respect,not depending
on message representation details of other agents.
3.2 Import/Export Mechanism
The locality principle requires a newly designed import/export concept.For
usability,all mental notions and their interrelations across capability borders
should be defined using the same mechanism.The main idea is to cleanly dis-
tinguish relationships between di?erent mental elements(such as a certain goal
being handled by a certain plan)from the import and export specifications
that relate elements from di?erent capabilities.Relationships between mentalelements follow the locality principle,and therefore are only allowed inside a
capability.Import and export specifications permit a single logical element to
be present in several connected capabilities using a proxy model(see Fig.2).
The figure shows how a capability(outer)can reuse functionality from another
(inner)capability.Concrete elements(which may be beliefs,goals,etc.)are pre-
sented as white rectangles.Proxy elements(i.e.placeholders for beliefs or goals
of another capability)are shown as grey rectangles.
Per default,any concrete element is internal,meaning that it is only visible
locally in its enclosing capability.E.g.internal beliefs can only be accessed by
plans of the same capability.If an element should be accessible to the outer
capability it can be marked as exported.To be used from the outside,a place-
holder(called reference)for the original element has to be defined in the outer
capability.The reference element specification includes the relative name of the
inner element it refers to(e.g.in the form“subcapability.elementname”).Note
that references to exported inner elements are optional.An outer capability is
only required to provide a reference,when the element is accessed from other
elements of the outer capability.For example when a plan of the outer capabil-
ity wants to access a belief defined in the inner capability,the outer capability
defines a belief reference,which acts as a proxy for the inner belief.The plan
accesses the proxy like it would access a locally defined belief.Therefore,it is
transparent to the plan that the belief is actually defined in the inner capability.
A capability may also include abstract elements,i.e.proxies which are not
assigned to any concrete element by themselves.An abstract optional element
is an element,which does not require an assignment,what means that the func-
tionality of the capability can also be used,when this element is not present.For
example,an abstract belief provides an extension point,where the outer capa-
bility can add knowledge to the inner capability.A plan in the inner capability
can then check if the belief is available and proceed in di?erent ways according
to the information from the belief.An abstract required element is an element,
which is required for proper operation of the capability.
Both required and optional abstract elements are assigned from the outside,
by adding“assignto”specifications to concrete elements of the outer capability.
An outer element may be assigned to many di?erent abstract elements,but an
abstract element must be assigned from(at most)a single concrete element.In
addition,it is also possible to define proxies for proxies,i.e.to define a reference to
an element which is itself a reference,or to assign an abstract element to another
abstract element of a child capability.This allows building up reference structures
through multiple levels of capabilities.E.g.in the figure,the outer capability
might choose to re-export elements referenced from the inner capability.
3.3 Creation Semantics
The proxy concept introduced in the last section shows how an element can
be visible in a di?erent capability.The definition of proxies only specifies a
static structure of references for element visibility.It depends on the creation
context,if an instance of a proxy is created for a specific element instance.It
发表评论
-
protocols
2011-04-03 19:22 928<!-- The protocols capabilit ... -
dfcap
2011-04-03 19:15 882<!-- The df capability has a ... -
booktrading /seller
2011-03-29 23:19 939<html><head><tit ... -
booktrading / manager
2011-03-29 23:18 1102<html><head><tit ... -
booktrading / common
2011-03-29 23:17 1000<html><head><tit ... -
booktrading / buyer
2011-03-29 23:13 858<!-- <H3>The buyer age ... -
tomcat的context说明书
2011-03-20 17:39 814http://tomcat.apache.org/tomcat ... -
msyql的select语法
2010-09-13 22:52 108313.2.7. SELECT语法 13.2.7.1. ... -
zotero与word集成
2010-09-11 08:50 1787Manually Installing the Zotero ... -
university 2/n
2010-08-24 07:54 903Chapter 1.Introduction of regis ... -
university 1/n
2010-08-24 07:53 953chapter? Introduction ?.?The st ... -
Sun Java Bugs that affect lucene
2010-08-23 08:59 740Sometimes Lucene runs amok of b ... -
Snowball分词
2010-08-22 13:07 1243using System; using Lucene.Net. ... -
penn tree bank 6/6
2010-08-20 07:09 92011 This use of 12 Contact the - ... -
penn tree bank 5/n
2010-08-19 07:40 932always errs on the side of caut ... -
penn tree bank 4/n
2010-08-19 07:39 8264. Bracketing 4.1 Basic Methodo ... -
penn tree bank 3/n
2010-08-15 23:31 8242.3.1 Automated Stage. During t ... -
penn tree bank 2/n
2010-08-15 23:30 1519Mitchell P Marcus et al. Buildi ... -
capabilities 3/3
2010-08-11 22:58 79101<capability xmlns="ht ... -
capabilities 2/3
2010-08-11 22:57 748Fig.3.Element creation cases:a) ...
相关推荐
1. **API文档**:详尽的接口文档,指导开发者如何利用提供的API与海康威视的设备进行通信,控制设备、获取视频流、处理报警信息等。 2. **示例代码**:提供各种示例代码,帮助开发者快速理解和上手,通常包括C++、...
1. 简介 ISAPI 2.0-PTZ 服务规范是基于 XML 的 PTZ 服务规范,旨在为 PTZ 设备提供统一的控制和管理接口。该规范定义了 PTZ 服务的架构、接口和数据格式,确保了不同厂商的 PTZ 设备之间的互操作性。 2. 符合性 ...
1. **开发文档**:这是开发者理解海康威视WEB3.0控件接口和功能的重要参考资料,它通常会详细说明API调用方式、参数设置、错误处理等信息,帮助开发者快速上手。 2. **Demo**:演示程序是实际应用的实例,通过运行...
海康威视WEB3.0,包含官方控件:CH_32位、CH_64位、CN_64位、火狐浏览器:4.00/45.0/50.0.1、IE浏览器:IE7-32位/64位。具体操作:https://blog.csdn.net/concealed0/article/details/88637413#comments
3. 文件权限管理:系统管理员可以使用setcap命令为文件分配capabilities,使得普通用户执行该文件时可以获得相应的权限。 总结来说,Linux的Capabilities安全机制是一种更为安全的权限管理策略,它通过细分root权限...
1. **文件结构**:在内核中,文件结构包含了一个指向Capabilities结构的指针,用于存储文件相关的Capabilities信息。 2. **进程结构**:每个进程都有一个Capabilities结构,存储了该进程的Capabilities信息。 3. **...
Capabilities机制的改进主要有两个方面:(1) 实现了可执行文件的权能,使用户可以通过配置可执行文件的权能来灵活控制相应进程拥有的权能范围;(2) 对系统赋予进程权能的策略(即进程权能计算公式)进行了改进,从而...
为了实现持续增长与创新,企业必须具备动态能力(Dynamic Capabilities),即一种能够使企业不断适应变化、抓住机遇并克服威胁的能力。 #### 领导者的洞察 - **A.J. Lafley**(宝洁公司首席执行官)强调,“游戏的...
不带源码 用于ISAPI/WebService程序调试 最近在写ISAPI,发现调试N麻烦,在Google找了一堆资料,调试未果,所以写了个简单的测试工具。share给大家 具体说明请查看readme.txt
标题中提到的问题——“Myeclipse无法add web capabilities”,这可能是由于IDE的一些设置问题,或者是工程本身结构不满足Web工程的要求。解决这个问题,我们可以按照以下步骤操作: 1. **检查工程结构**:确保你的...
1. **Wi-Fi 技术概述**:文档可能包含对 Wi-Fi 技术的基本介绍,包括其工作原理、频段(如 2.4GHz 和 5GHz)、传输速度以及不同 Wi-Fi 协议(如 802.11a/b/g/n/ac/ax 等)的特点。 2. **Wi-Fi 功能**:详细说明了 ...
3. 无线接入能力(radio access capabilities):这部分描述了UE在无线通信方面所支持的功能和性能指标,如最大传输功率、对不同频段的支持、多输入多输出(MIMO)能力、调制解调技术等。 4. 3GPP标准:3GPP(3rd ...
EOAC_NONE, // Additional capabilities NULL // Reserved ); //第三步获取WMI初始定位器------------------------- IWbemLocator *pLoc = NULL; hres = CoCreateInstance( CLSID_WbemLocator, 0, ...
1. **海康威视WEB3.0控件**:这是开发包的核心部分,它包含了用于在Web页面上嵌入和操作海康威视摄像头的JavaScript控件。这些控件能够实现实时视频流播放、录像回放、云台控制等功能,使用户可以通过Web界面与...
ComponentOne 2013 V1 PowerSuite 3 2013 V1 1/5 共五个压缩文件,请全部下载后解压 Enterprise-ready reporting, spreadsheets, and data analysis components for .NET applications. .NET Reporting, ...
标题与描述均指向"Symbian_Signed_Accessing_Manufacturer_Capabilities_v1_0_en.pdf",这表明文档主要探讨了在Symbian操作系统上,应用程序如何通过Symbian Signed程序来请求并获取制造商权限的过程。以下是针对该...
Studio for WinForms 2012 v2 1/3 C1StudioNet_2012v2.msi 共三个压缩分卷,请全部下载后解压 65+ .NET Windows Forms controls, including the ones you can't get anywhere else. Generate a grid with a ...
标题与描述均提到了"opencore_framework_capabilities",这实际上指的是Packet Video Corporation设计的OpenCORE多媒体框架的能力。这份文档详细介绍了在Android平台上的OpenCORE多媒体框架的各种功能和特性,以下是...
- TD.PD.SRC3.E1到E10检查了源设备(Source)在不同情况下发送的能力(Capabilities)、接受(Accept)、电池状态(Battery Status)等信息的一致性和准确性。 - TD.PD.SRC3.E11到E16测试了源设备发送状态(Status...
3. **动态权限调整**:允许程序根据运行时的需求动态地获取或释放权限,而不是一开始就拥有全部权限。 4. **权限审计**:增强系统对权限使用的监控,以便发现并防止异常权限行为。 5. **安全策略强化**:制定更严格...