Agent 與對(duì)象的辨析
如果說對(duì)象是70年代以來軟件界最激動(dòng)人心的革新之一,那么,Agent的相關(guān)理論和技術(shù),為分布式開放系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)提供了新的途徑,可以稱之為軟件開發(fā)的又一重大突破。討論問題的前提是概念的澄清,什么是對(duì)象?什么是Agent ?二者又有哪些區(qū)別和聯(lián)系呢?
對(duì)象與OOP
對(duì)象是具有明確邊界和意義的事物.也是某些問題的概念抽象,是一個(gè)封裝了數(shù)據(jù)和方法的實(shí)體,一個(gè)對(duì)象的實(shí)質(zhì)是一組數(shù)據(jù)和與它相關(guān)的方法及操作。它的特征由屬性表示.屬性的數(shù)據(jù)值表示對(duì)象的狀態(tài)。系統(tǒng)開發(fā)人員通過對(duì)象所具有的屬性來了解對(duì)象的靜態(tài)結(jié)構(gòu)。通過操作可改變對(duì)象的內(nèi)部數(shù)據(jù)(私有的和受保護(hù)的數(shù)據(jù)).從而改變對(duì)象的狀態(tài)。當(dāng)其他對(duì)象向某個(gè)對(duì)象發(fā)送消息時(shí),操作就得以進(jìn)行和實(shí)現(xiàn)。每一個(gè)對(duì)象都有唯一的標(biāo)識(shí).以區(qū)別于一個(gè)類中的其他對(duì)象。一個(gè)對(duì)象不同于其他對(duì)象的關(guān)鍵是其屬性值,構(gòu)成其標(biāo)識(shí)。
對(duì)象是為現(xiàn)實(shí)世界中的實(shí)體建立的抽象模型,它包括了實(shí)體的屬性以及作用在實(shí)體上的操作。它具有唯一性、封裝性和多態(tài)性等重要特性。對(duì)象一般由三部分組成:對(duì)象名、對(duì)象體和觸發(fā)器。對(duì)象名唯一地標(biāo)識(shí)一個(gè)對(duì)象,對(duì)象體是一個(gè)對(duì)象所封裝的所有效據(jù)的集合.它可以是屬性值的集合也可能是多個(gè)數(shù)據(jù)庫的集合。觸發(fā)器定義對(duì)象的哪些狀態(tài)變化會(huì)引起事件的產(chǎn)生,是可選擇的部分,它用于描述事件重要的狀態(tài)變化。
面向?qū)ο蟪绦蛟O(shè)計(jì)(Object 0riented Programming,OOP)是70年代末提出,并在8o年代中后期開始使用的一種程序設(shè)計(jì)技術(shù)。在OOP的設(shè)計(jì)中。對(duì)象是一個(gè)動(dòng)態(tài)概念,是對(duì)客觀世界實(shí)體的數(shù)據(jù)抽象,即具有通信能力的特殊屬性和行為方式的一些基本運(yùn)行實(shí)體。類是一個(gè)靜態(tài)概念,是一組對(duì)象的抽象定義或概括,且具有層次結(jié)構(gòu)和繼承性特征。面向?qū)ο蟪绦蛟O(shè)計(jì)的基本思想是:是一種以對(duì)象為基礎(chǔ),以事件驅(qū)動(dòng)對(duì)象的程序設(shè)計(jì)技術(shù),通過建立和具體實(shí)際相對(duì)應(yīng)的軟件對(duì)象,通過對(duì)這些對(duì)象的組合來創(chuàng)建具體的應(yīng)用,通過對(duì)象屬性定義,對(duì)象方法調(diào)用及編寫對(duì)象事件函數(shù)來完整地描述對(duì)象,并實(shí)現(xiàn)對(duì)象之間的聯(lián)系和對(duì)象本身的操作,從而 實(shí)現(xiàn)整個(gè)系統(tǒng)設(shè)計(jì)。
一般認(rèn)為,OOP力圖將問題空間的結(jié)構(gòu)和概念直接映射到軟件的解空間.從而使人類認(rèn)識(shí)問題的過程與軟件開發(fā)的過程保持一致。
Agent與AOP
什么是Agent 呢?Agent 是一個(gè)具有多重含義的概念,根據(jù)場景和視角的不同有著極大的差別。
從精神狀態(tài)的角度來看,“如果一個(gè)實(shí)體可以用信念、承諾、義務(wù)、意圖等精神狀態(tài)進(jìn)行描述.那么該實(shí)體可視為一個(gè)Agent”。如果建立單個(gè)Agent的目的是想模擬人的行為,而從精神狀態(tài)的角度對(duì)人的行為分析是比較自然的,這也正是Agent作為人工智能基礎(chǔ)理論的重要原因之一。一般第,這一定義被稱之為Agent的強(qiáng)定義。弱定義,即“如果一個(gè)實(shí)體具有自主性、反應(yīng)性、主動(dòng)性、社交性四條基本性質(zhì),那么該實(shí)體也可以視為一個(gè)Agent”。
從設(shè)計(jì)者的角度來看,Agent 是一種抽象工具,通過它能使我們用更方便更熟悉的擬人化方式來描述、解 釋、預(yù)測一個(gè)復(fù)雜系統(tǒng)的行為。一般來說.一個(gè)系統(tǒng)越復(fù)雜,我們對(duì)系統(tǒng)越不了解,就越需要用基于意圖的立場來觀察和解釋它的行為。當(dāng)然.在賦予Agent各種思維狀態(tài)時(shí).要求必須精確、簡單而自然。
在計(jì)算機(jī)領(lǐng)域,agent是一種處于一定的環(huán)境下能夠自主、智能地完成其他個(gè)體指派任務(wù)的系統(tǒng)。簡單地說, Agent 指的是一種實(shí)體,而且是一種具有智能的實(shí)體。Agent的特點(diǎn)如下表:
特點(diǎn) | 英文 | 解釋 |
代理性 | Action On Behalf Others | 具有代表他人的能力,即它們都代表用戶工作 |
自治性 | Autonomy | 能在非事先規(guī)劃、動(dòng)態(tài)的環(huán)境中解決實(shí)際問題,獨(dú)立發(fā)現(xiàn)和索取符合擁護(hù)需要的資源、服務(wù)等等. |
主動(dòng)性 | Proactivity | 能夠遵循承諾采取主動(dòng),表現(xiàn)面向目標(biāo)的行為 |
反應(yīng)性 | Reactivity | 能感知環(huán)境,并對(duì)環(huán)境作出適當(dāng)?shù)姆磻?yīng) |
社會(huì)性 | Social Ability | 能同代理代表的用戶、資源、其它代理進(jìn)行交流. |
智能性 | Intelligence | 具有一定程度的智能,包括推理到自學(xué)習(xí)等一系列的智能行為 |
合作性 | Callaboration | 以與其它代理分工合作,共同完成單個(gè)代理無法完成的任務(wù) |
移動(dòng)性 | Mobility | 具有移動(dòng)的能力,為完成任務(wù),可以從一個(gè)節(jié)點(diǎn)移動(dòng)到另一個(gè)節(jié)點(diǎn) |
由于Agent的特性,基于Agent的系統(tǒng)應(yīng)是一個(gè)集靈活性、智能性、可擴(kuò)展性、魯棒性、組織性等諸多優(yōu)點(diǎn)于一身的高級(jí)系統(tǒng).
面向代理實(shí)體的編程(Agent 0riented Programming,AOP)對(duì)計(jì)算持社會(huì)性觀點(diǎn),并結(jié)合了傳統(tǒng)的面向?qū)ο蟪绦蛟O(shè)計(jì)的特點(diǎn).如數(shù)據(jù)封裝、消息傳遞等。需要注意的是,本文所指的AOP,不是面向切面的編程(Aspect Oriented Programming,AOP)。一般認(rèn)為,完整的AOP系統(tǒng)應(yīng)包含以下三個(gè)部分:
- 一個(gè)邏輯系統(tǒng)以定義Agent的思維狀態(tài)(Mental States);
- 一個(gè)可解釋的編程語言以便對(duì)Agent編程;
- 一個(gè)Agent實(shí)現(xiàn)(Agentification)過程,將Agent程序編譯為低層執(zhí)行代碼。
AOP實(shí)質(zhì)上是對(duì)具有思維狀態(tài)的智能實(shí)體進(jìn)行編程。一個(gè)Agent程序給Agent的思維狀態(tài)、環(huán)境的信息輸入 以及Agent對(duì)環(huán)境的行為輸出三者之間提供了一種聯(lián)系。一般一個(gè)Agent程序包括:一個(gè)初始思維狀態(tài),它含一個(gè)初始信念集、一個(gè)初始意圖集和一個(gè)初始規(guī)劃集;一個(gè)思維狀態(tài)改變規(guī)則集。初始信念集和意圖集將用模態(tài)算符加上帶時(shí)間索引的一階謂詞語言表達(dá)。初始規(guī)劃集用帶時(shí)序關(guān)系的原子動(dòng)作序列來表達(dá)。一般地,初始規(guī)劃集是空集。思維狀態(tài)的改變規(guī)則集是Agent程序的核心。它包含兩種規(guī)則,一種用于更新信念集和意圖集,另一種用于產(chǎn)生規(guī)劃。
AOP是一種以計(jì)算的社會(huì)觀為基礎(chǔ)的新型程序設(shè)計(jì)范例,它以智能體的設(shè)計(jì)和構(gòu)造作為人工智能程序設(shè)計(jì)的核心,重視智能體的動(dòng)態(tài)特征和智能體的交互活動(dòng),并將對(duì)分布式系統(tǒng)的研究與開發(fā)產(chǎn)生深刻的影響。
面向Agent 與 面向?qū)ο?的建模
面向?qū)ο蠼sw現(xiàn)了面向?qū)ο筌浖_發(fā)中以模型驅(qū)動(dòng)的基本思想.它將軟件開發(fā)的重心轉(zhuǎn)移到了分析階段。在整個(gè)開發(fā)過程中,使用統(tǒng)一的概念——對(duì)象,而其它所有的概念都是圍繞著對(duì)象組成的,在分析階段中建立的對(duì)象模型也適合于設(shè)計(jì)和實(shí)現(xiàn)階段,軟件開發(fā)的各階段比較統(tǒng)一。整個(gè)開發(fā)過程實(shí)際上就是對(duì)模型細(xì)化的過程,從而避免了傳統(tǒng)的結(jié)構(gòu)化方法中從數(shù)據(jù)流程圖到模塊層次結(jié)構(gòu)圖的轉(zhuǎn)化過程。
面向?qū)ο蠼5木窒拊谟冢?/p>
- 建模的描述過程不是很清楚,而建模的結(jié)果是各種圖形的表示,它們不能具體地體現(xiàn)建模過程;
- 用圖形表示分析過程,這樣在表示大而復(fù)雜的系統(tǒng)時(shí)很不容易畫得條理清晰;
- 系統(tǒng)的描述是不夠詳細(xì)的;
- 不含有語義的成分,這樣對(duì)系統(tǒng)的描述是不夠精確的, 有些操作會(huì)產(chǎn)生二義性。
面向Agent建模要把研究的系統(tǒng)看成是基于Agent的系統(tǒng),然后運(yùn)用Agent理論對(duì)所研究的問題進(jìn)行抽象建模?;贏gent的系統(tǒng)具有的三個(gè)基本要素是:Agent(對(duì)應(yīng)于實(shí)體)、事務(wù)(對(duì)應(yīng)于活動(dòng))和資源。通過對(duì)這三個(gè)基本要素及之間的關(guān)聯(lián)進(jìn)行描述,即可從過程的角度對(duì)基于Agent的系統(tǒng)進(jìn)行描述、抽象、建模。由于對(duì)面向Agent建模的認(rèn)識(shí)是逐步深入的,很難從一開始就能給出一個(gè)詳盡描述,因此以上步驟必然是一個(gè)有反 復(fù)的、逐步求精的過程。
“對(duì)象”的抽象和表達(dá)能力又遠(yuǎn)遠(yuǎn)的遜色于“Agent”,Agent擴(kuò)展了“對(duì)象的內(nèi)涵和使用范圍”,它更適合復(fù)雜系統(tǒng)問題的描述與處理。面向Agent建模并不是否定面向?qū)ο蠼#敲嫦驅(qū)ο蠓椒ǖ难由炫c拓展,兩者區(qū)別主要表現(xiàn)在以下兩個(gè)方面:
(1)對(duì)單個(gè)智能體而言,面向?qū)ο蠹夹g(shù)將客觀世界看成“剛性的”對(duì)象,不具有組織和抽象出更高層次的構(gòu)建單元的能力。而Agent自主、靈活的問題求解行為,能良好地表達(dá)出智能體的精神狀態(tài)。
(2)對(duì)多智能體系統(tǒng)而言.面向?qū)ο蠹夹g(shù)無法對(duì)智能體之間豐富的交互行為進(jìn)行完整的抽象,亦無法充分表達(dá)多智能體之間動(dòng)態(tài)組織結(jié)構(gòu)的復(fù)雜性;而面向Agent建模就比較適合。
面向Agent 與 對(duì)象軟件工程
面向Agent的軟件工程,其工作原理是將Agent看作為模型的構(gòu)成條件,同時(shí)圍繞對(duì)應(yīng)的基本條件有條不紊的開展與系統(tǒng)相關(guān)的系列活動(dòng),被認(rèn)為是目前技術(shù)性較強(qiáng)的軟件開發(fā)模型。不管是軟件系統(tǒng)還是應(yīng)用系統(tǒng),它的內(nèi)部構(gòu)成都包括多個(gè)Agent,Agent表現(xiàn)出來的特點(diǎn)主要有自發(fā)性、反應(yīng)性、社會(huì)性和自主性,屬于行為自控的行為實(shí)體。Agent與Agent之間表現(xiàn)出來的結(jié)構(gòu)關(guān)系較為復(fù)雜,其作用是由高層相互交換來實(shí)現(xiàn)的,在這樣的前提下達(dá)到系統(tǒng)設(shè)計(jì)的預(yù)期目標(biāo)。
面向Agent軟件工程針對(duì)系統(tǒng)研發(fā)來講,不僅為其構(gòu)建了系統(tǒng)平臺(tái),同時(shí)還完成了理論的提供和技術(shù)環(huán)境的提供。它主要通過系統(tǒng)的模塊分解,數(shù)據(jù)建模和抽象理論完成系統(tǒng)數(shù)據(jù)的闡述和管理,達(dá)到了系統(tǒng)設(shè)計(jì)的基本要求和目標(biāo),這樣更可以促進(jìn)系統(tǒng)難度的提升和靈活性的增加,在此基礎(chǔ)上還增加了維護(hù)性特點(diǎn)和重用性特點(diǎn)。面向Agent軟件工程的基本思想與定義在理論論與軟件工程整體規(guī)劃處于同一個(gè)軌道線,基本特點(diǎn)體現(xiàn)出了自然抽象和功能強(qiáng)大。
(1)許多問題固有的分布性(數(shù)據(jù)、能力、控制)本身就是由多個(gè)交互自主實(shí)體組成的松散耦合網(wǎng)絡(luò)。面向agent方法采用粗粒度的自主計(jì)算實(shí)體為抽象機(jī)制,以社會(huì)學(xué)的觀點(diǎn)和人們熟悉的概念(組織,角色等)進(jìn)行分析、建模、設(shè)計(jì)復(fù)雜分布式系統(tǒng)。面向?qū)ο蠓椒▌t采用細(xì)粒度的非自主計(jì)算實(shí)體(對(duì)象)為抽象機(jī)制,對(duì)復(fù)雜問題分析與建模,面向agent較面向?qū)ο蟾匀?、直觀、簡單,容易理解。
(2)面向agent分析與設(shè)計(jì)處理實(shí)體間知識(shí)級(jí)交互,實(shí)體能自主確定交互的方式、范圍、時(shí)間,內(nèi)容;同時(shí),存在多種組織關(guān)系(如等級(jí)制、專家共同體、市場機(jī)制等),適合復(fù)雜系統(tǒng)的建模。面向?qū)ο蠓椒ㄖ袑?duì)象的交互是用處于語法級(jí)對(duì)象問的消息傳遞來實(shí)現(xiàn),對(duì)象間的組織關(guān)系少(如包含、聚合關(guān)系),缺乏足夠的機(jī)制來模型化復(fù)雜系統(tǒng)。
(3)面向agent軟件工程主要強(qiáng)調(diào)角色、責(zé)任、服務(wù)、目標(biāo)這些抽象機(jī)制來處理復(fù)雜性,以何時(shí)完成何種目標(biāo)來分析應(yīng)用領(lǐng)域,核心是完成的目標(biāo)。面向?qū)ο蠓椒ㄖ饕獜?qiáng)調(diào)完成目標(biāo)的行為類型。因?yàn)樵谌魏螒?yīng)用領(lǐng)域中目標(biāo)比行為或計(jì)劃更穩(wěn)定,強(qiáng)調(diào)目標(biāo)與強(qiáng)調(diào)行為這看似很小的改變,卻導(dǎo)致實(shí)質(zhì)上的不同,面向agent的目標(biāo)分析使得系統(tǒng)設(shè)計(jì)更穩(wěn)定、健壯、模塊化,能進(jìn)行漸增式地開發(fā)和測試,具有可擴(kuò)展性。上下文敏感的計(jì)劃提供了模塊性和構(gòu)成性,不必改變已有的計(jì)劃,為實(shí)現(xiàn)同一目標(biāo)的新的上下文計(jì)劃可加入系統(tǒng)中,這使得系統(tǒng)能處理易變性和特例。
(4) 面向agent軟編程的基本部件是agent;面向?qū)ο缶幊虒?duì)定義基本部件狀態(tài)沒有明確規(guī)定,Agent模型的基本部件狀態(tài)可包含信念、承諾、能力、選擇等;OOP用方法引用處理消息,而AOP的消息類型來自言語行為理論,可包含通知、請(qǐng)求、提供、承諾、拒絕等,agent通信有專用語言,如KQML;通常agent在面向agent方法中被實(shí)現(xiàn)為有意圖的系統(tǒng).而OOP將對(duì)象作為類的實(shí)例。
就面向Agent軟件工程中的程序設(shè)計(jì)而言,大于有三種方式:
(1)采用和LISP語法形式差不多的句子對(duì)Agent的組成部分進(jìn)行表達(dá),也包括對(duì)Agent系統(tǒng)的行為或者系統(tǒng)之間互相交流溝通,對(duì)于提高Agent系統(tǒng)的功能性有很大的幫助。(2)基于邏輯技術(shù),邏輯系統(tǒng)包括一階謂詞邏輯以及時(shí)序邏輯等等,也可以作為Agent的程序設(shè)計(jì)語言來使用,在程序編寫的時(shí)候,用邏輯系統(tǒng)來對(duì)Agent系統(tǒng)的各種方式以及內(nèi)部組成里進(jìn)行表述和定義,例如相關(guān)知識(shí)、意圖和信念、原子動(dòng)作和規(guī)則等都可以用邏輯技術(shù)來表述定義。邏輯技術(shù)的理論系統(tǒng)和語義定義都相當(dāng)嚴(yán)謹(jǐn)。(3)運(yùn)用了面向?qū)ο蟮能浖_發(fā)技術(shù)和軟部件技術(shù),屬于在語言級(jí)上對(duì)Agent系統(tǒng)程序提供支持。通常都是把Agent系統(tǒng)當(dāng)成一個(gè)特有的對(duì)象,用Agent內(nèi)部功能的預(yù)定義軟部件來編程和實(shí)現(xiàn)Agent系統(tǒng),它的前提是使用的軟部件必須是一組已經(jīng)封裝的特殊類。
到2000年為止,面向Agent軟件工程的研究與實(shí)踐經(jīng)歷了一個(gè)由活躍到沉寂的過程,主要因素就是技術(shù)問題。近幾年,隨著人工智能技術(shù)走進(jìn)人們的生產(chǎn)和生活,這方面的研究又再次掀起了熱潮。
小結(jié)
Agent是對(duì)象實(shí)體延伸,Agent可以看作特殊意義上的對(duì)象,但Agent畢竟不同于對(duì)象,其區(qū)別主要表現(xiàn)在以下幾個(gè)方面:
- 盡管Agent與對(duì)象都是采用消息傳遞實(shí)現(xiàn)聯(lián)系,但就對(duì)象而言.消息的傳遞是為了激活方法;而Agent是對(duì)消息進(jìn)行區(qū)分的基礎(chǔ)上.利用意圖及復(fù)雜的協(xié)議進(jìn)行建模以實(shí)現(xiàn)協(xié)商,決定是否答應(yīng)執(zhí)行所請(qǐng)求的行為。
- Agent可主動(dòng)運(yùn)行,有自己的目標(biāo)和行為,可由外部激勵(lì)或內(nèi)部狀態(tài)而啟動(dòng),而對(duì)象是純被動(dòng)的,只能由外部的消息控制。
- Agent是一個(gè)自治的實(shí)體,具有自己的知識(shí)和分析問題方法,能理解信息并控制自己的行為,而對(duì)象只能機(jī)械地執(zhí)行所規(guī)定的動(dòng)作。
- Agent能根據(jù)推理規(guī)則進(jìn)行信息的抽象,而對(duì)象卻一般不具備推理能力
如果把對(duì)象理解成存儲(chǔ)組合處理器的話,那Agent就是存儲(chǔ)、處理器和程序員的組合, 程序員能賦予了主體某種目的性和意志性。人在投影自己的思維主體時(shí),最終的對(duì)等模型大概還是Agent,而不是對(duì)象,因此,Agent比對(duì)象的概念更廣更深。