- 面向Agent的軟件設(shè)計開發(fā)方法
- 薛霄編著
- 4783字
- 2018-12-27 12:38:33
1.2 Agent的開發(fā)抽象
近些年,人們已經(jīng)提出了很多有關(guān)Agent的定義。有些定義側(cè)重于Agent在用戶界面中的應(yīng)用,使圖形界面具有一些典型的人性化特征,能夠根據(jù)用戶特征實(shí)現(xiàn)自適應(yīng)變化。這種Agent同本書并沒有什么直接的關(guān)聯(lián)。有些定義闡述了Agent有能力同其他各方進(jìn)行交互,或者同某些特定技術(shù)緊密相關(guān),例如基于定理證明器,或者使用思維概念中的數(shù)據(jù)結(jié)構(gòu);又如信念、知識、目標(biāo)、期望、意圖等。這些定義的局限性在于考慮Agent的內(nèi)部結(jié)構(gòu)過多,限制了它們的通用性,即運(yùn)用于開放環(huán)境的可能性。還有一些定義先假定Agent具有一定的理性,這可能會對Agent的自治性產(chǎn)生一些不合時宜的限制。
Wooldridge和Jennings描述了有關(guān)Agent的兩種觀點(diǎn)(Wooldridge和Jennings,1995a):一個是弱概念,另一個是強(qiáng)概念。Agent的弱概念在主流計算中很流行,尤其是軟件工程師。這種觀點(diǎn)認(rèn)為Agent類似于UNIX進(jìn)程,具有自治、社交、反應(yīng)和預(yù)動等屬性。自治是指Agent在沒有人為干預(yù)下的工作能力,可以控制它們自己的狀態(tài)和行為。社會能力是指與其他Agent進(jìn)行高層對話的通信能力。反應(yīng)是指對外界變化做出及時的感知和響應(yīng)。預(yù)動是指Agent選擇本身的目標(biāo),并且依照目標(biāo)進(jìn)行動作的能力。相比之下,Agent的強(qiáng)概念在人工智能領(lǐng)域中很常見,認(rèn)為Agent是一個計算機(jī)系統(tǒng)。除了具有上面提到的所有屬性外,還可以被概念化或模型化,具有人類的特征,例如知識、信念、目的和義務(wù)等思維概念。
Agent技術(shù)近幾年的發(fā)展努力使這項(xiàng)技術(shù)走向一個合理、務(wù)實(shí)的方向。幾年前,Agent領(lǐng)域內(nèi)部還在為Agent的定義爭論不休。然而,當(dāng)研究人員意識到不可能在Agent的定義上達(dá)成一致,或者說是不需要時,這場爭論就變得悄無聲息了。定義的關(guān)鍵在于“提出這樣一個定義的目的”。如果這個目的是為了說明如何構(gòu)造單個的Agent,那么定義Agent的內(nèi)部設(shè)計就是合理的。然而,如果這個目的是想定義一個開放系統(tǒng),保證不同的Agent都能夠參與進(jìn)去,那么重點(diǎn)就應(yīng)該放在Agent之間的交互上,而不是如何去構(gòu)建它們。按照上述想法,一個更為激進(jìn)的立場是,不要為形式化的定義去煩惱,而應(yīng)該關(guān)注如何去測試是否為Agent (Huhns和Singh,1999)。Huhns和Singh所提議的測試主要考慮了一個Agent如何同其他Agent進(jìn)行交互,在其他Agent的影響下如何改變自身行為。這個定義是從外部特征來描述Agent,留下了一些不確定的事實(shí),例如何構(gòu)建一個Agent,Agent是否具有信念和意圖,是否具有理性等。這樣定義的Agent,可以用于開放環(huán)境中的各種實(shí)際計算,能夠反映所代表參與者(在一個信息環(huán)境中)的自治性和異構(gòu)性(在現(xiàn)實(shí)世界中)。
當(dāng)開始強(qiáng)調(diào)交互時,我們的興趣點(diǎn)很自然地就從單個Agent轉(zhuǎn)移到了多Agent系統(tǒng)上來。這是一個合理的轉(zhuǎn)變,因?yàn)槭聦?shí)上單個Agent系統(tǒng)并不是那么令人感興趣。如果你一定要擁有Agent,那么就必須把它們作為多Agent系統(tǒng)(Multi-Agent System,MAS)的一部分。這么說的理由在于,如果沒有交互性和開放性,那么,傳統(tǒng)的計算機(jī)科學(xué)應(yīng)該能夠很好地滿足你的要求。如果你不打算從Agent的特殊屬性中受益,為什么要引入它們呢?
開放系統(tǒng)的挑戰(zhàn)和Agent的潛在靈活性都表明Agent將為現(xiàn)實(shí)應(yīng)用提供一個優(yōu)秀的解決方案基礎(chǔ)。當(dāng)然,這個實(shí)踐的整體意義是展示Agent如何匹配開放系統(tǒng)的要求。回顧一下上面所提到的,開放系統(tǒng)一般都是由自治、異構(gòu)和動態(tài)的組件構(gòu)成。從廣義上講,基于Agent的軟件開發(fā)是能夠充分挖掘Agent主要特征的技術(shù)與方法學(xué)。現(xiàn)在讓我們考慮一下與Agent概念相關(guān)的關(guān)鍵抽象,研究如何把它們捕捉為計算抽象,并給出這么做的一個典型手段。通過下面的簡要討論,可以為后續(xù)章節(jié)打下基礎(chǔ)。
1.自治性(Autonomy)
自治性也就是指一方具有獨(dú)立性,能夠根據(jù)自己的意愿來行動。從廣義上講,商務(wù)交易中參與者的自主決策就反映了自治性。沒有人能夠強(qiáng)迫你買賣任何東西;也沒有人能夠強(qiáng)迫你聽命于另一方,或者與之妥協(xié);更沒有人能夠強(qiáng)迫你使用某種特定的推理策略。特別地,一個自治個體甚至不需要任何外部意義下的“理智”,因?yàn)檫@樣的要求會限制它的自治性。
如果某種方法能夠使交互各方的自治性呈現(xiàn)出良好的效果,那么這種方法應(yīng)該很容易適用于幾乎所有的場合。值得注意的是,有些場合所呈現(xiàn)出的自治現(xiàn)象,真實(shí)情況或許并不是由于自治性,而是由其他一些原因引起的。例如,參與者沒有對消息做出反應(yīng),可能并不是它做出的自治性反應(yīng),而是因?yàn)榛A(chǔ)機(jī)制失效。當(dāng)然,在相同的框架下,實(shí)現(xiàn)自治的參與者也可以自如地處理基礎(chǔ)機(jī)制的變化。因此,判斷某個行為是自治性的體現(xiàn),還是由于基礎(chǔ)機(jī)制的失效而引起的,這點(diǎn)可能很重要。
一般來說,不受約束的計算自治性就如同現(xiàn)實(shí)世界中不受約束的自治性一樣,將會產(chǎn)生不可預(yù)期的結(jié)果。并且,為了給出完整的計算模型,或者做出可靠的預(yù)測,我們都必須假設(shè)參與者的自治性在某種程度上受到約束。典型地,根據(jù)協(xié)議進(jìn)行交互就可以實(shí)現(xiàn)對自治性的限制。
2.異構(gòu)性(Heterogeneity)
異構(gòu)性源于設(shè)計者構(gòu)建組件的方式相互獨(dú)立,導(dǎo)致組件的信息模型或過程模型各不相同。一般來說,在功能系統(tǒng)中,異構(gòu)性的產(chǎn)生是由于歷史原因造成的。沒有人開始就想設(shè)計一個異構(gòu)系統(tǒng),但是構(gòu)建大型系統(tǒng)的最終結(jié)果往往是異構(gòu)的。反之,在設(shè)定一個開放系統(tǒng)的參數(shù)時,不假定內(nèi)部結(jié)構(gòu)的同質(zhì)性是非常重要的。最終,為了能夠讓這些組件一起運(yùn)作,就要對它們之間的異構(gòu)性施加一定的限制。也就是說,一定要有對共同性的說明。就信息模型而言,通過一個共享本體來捕捉共同性(Gruber,1991);這是同Agent相關(guān)的,但是并不特指Agent,因?yàn)樗漠a(chǎn)生也是源于將異構(gòu)信息源組合起來。就過程模型而言,可以通過確定典型外部事件的方法來捕捉共同性(Singh,2003)。這個思路是,Agent的行為標(biāo)記是指對外界的響應(yīng)結(jié)果,而不需要暴露內(nèi)部的構(gòu)造細(xì)節(jié)。這些標(biāo)記具有被標(biāo)準(zhǔn)化的潛力,事實(shí)上是分布式數(shù)據(jù)庫事務(wù)處理中兩階段提交協(xié)議所采用的方法(Gray和Reuter,1993)。任何按照特定標(biāo)準(zhǔn)實(shí)現(xiàn)的Agent,都被要求公布合適的特定事件,但并不需要暴露內(nèi)部的實(shí)現(xiàn)細(xì)節(jié)。
3.動態(tài)性(Dynamism)
動態(tài)性是指管理者能夠獨(dú)立對系統(tǒng)進(jìn)行靈活配置,并且可以根據(jù)需要改變其配置,而不需要明確通知相關(guān)各方(系統(tǒng)中的其他成員)。開放系統(tǒng)具有最大程度的動態(tài)性,因?yàn)樵瓌t上它們根本不需要管理者。事實(shí)上,它們出于特定目的可能會需要一些管理功能,如監(jiān)測和安全、根據(jù)應(yīng)用限制潛在的成員參與等。原則上,這些功能可以分布于成員之間,不需要管理者,但是出于社會政治原因,系統(tǒng)中經(jīng)常需要有一方來負(fù)責(zé)。
Agent方法所倡導(dǎo)的動態(tài)配置技術(shù)有一些變種,已經(jīng)被廣泛使用,例如在UDDI中。然而,更深層次的挑戰(zhàn)并不在于服務(wù)發(fā)現(xiàn),也就是UDDI所強(qiáng)調(diào)的,而是在于如何從幾個可能發(fā)現(xiàn)的服務(wù)中選擇一個最合適的服務(wù)實(shí)現(xiàn)。一些與之最相關(guān)的Agent方法,在很大程度上還沒有被吸收到商業(yè)方法中,包括如何進(jìn)行匹配。工程化的Agent系統(tǒng)經(jīng)常包含一個進(jìn)行匹配的組件。有一些方法考慮基于Web服務(wù)的語義描述進(jìn)行匹配(Trastour等,2001)。另一類方法主要是考慮所獲得服務(wù)的質(zhì)量,引入了服務(wù)質(zhì)量的概念模型,并把它嵌入到了一個框架中,其中服務(wù)選擇被看做是一個集成組件(Maximilien和Singh,2002)。還有一些方法則是改進(jìn)傳統(tǒng)的推薦系統(tǒng),不僅可以處理產(chǎn)品選擇,還能處理服務(wù)選擇(Sreenath和Singh,2003)。
4.通信(Communications)
任何組件都可以通過它們所共享的環(huán)境進(jìn)行交互。當(dāng)一方對環(huán)境做出改變時,其他各方能夠看得到。當(dāng)采用Agent對組件進(jìn)行概念化時,它們之間的交互呈現(xiàn)出一種不同的風(fēng)格。很明顯的,Agent能夠通過環(huán)境進(jìn)行持續(xù)交互:如果它們是機(jī)器人,可以采用彼此碰撞對方的方式;如果它們是信息Agent,可以通過修改文件或數(shù)據(jù)庫來實(shí)現(xiàn)。然而,通過環(huán)境交互可能會影響交互各方的自治性,也就是說,各方除了交互之外沒有其他選擇。例如,機(jī)器人除了碰撞可能沒有別的選擇,而這種碰撞可能導(dǎo)致一方或雙方打斷原來的程序。類似的,一個信息Agent或許需要修改一些數(shù)據(jù)項(xiàng)來完成一項(xiàng)任務(wù),另一個Agent或許需要讀這個數(shù)據(jù)項(xiàng),如果觀察到數(shù)據(jù)項(xiàng)被修改,那么就需要特別注意這些被修改的值。
我們把通信定義為“保留參與各方自治性的交互”。通信并不要求采用計劃或“信念—意圖”結(jié)構(gòu)來支持。從這個意義上講,“通信”概念是基于自治的;如果交互能夠保留相關(guān)各方的自治性,那么它就是符合要求的通信。很顯然,一個給定環(huán)境中的碰撞和修改數(shù)據(jù)都可以作為傳輸信息的手段。在低層次上,通信是借助于某些物理手段來實(shí)現(xiàn)(也就是環(huán)境),如通過一個數(shù)據(jù)鏈路來發(fā)送數(shù)據(jù)包。但是,如果上升到各方都能夠根據(jù)自己的意愿來進(jìn)行通信(也就是發(fā)送數(shù)據(jù)和接收數(shù)據(jù)),那么就可以把通信看做是一個交互。
通信語言被很典型地劃分為三個主要部分:傳輸層提供消息,在有限程度上是可靠的;內(nèi)容層提供了表達(dá)相關(guān)領(lǐng)域細(xì)節(jié)的一個手段,與一個本體典型關(guān)聯(lián),在語言本身之外就被確定了;通信行為層確定了通信態(tài)度,如這個通信是否為斷言、指令、許諾等。依靠這個理論,這組原語可能會發(fā)生變化,但是原語的數(shù)目一般很小(典型的是小于10)。雖然在何種情況下選擇何種通信行為是很清楚的,但是希望參與者在任何情況下都做出正確的行為選擇還是有些困難的。因此,就有了一個趨勢,僅僅選擇一個通信行為(通常這對應(yīng)于斷言一個事實(shí)的行為,被稱為“斷言”或“告知”),為它加載所有其他通信行為的含義。也有一些反對這種傾向的嘗試,采用更為豐富的對話和論證模型,也取得了一定的成功(Pasquier和Chaib-draa,2003),但是這些還沒有體現(xiàn)在核心的軟件方法學(xué)中。
通信是最重要的一個Agent概念抽象。大家經(jīng)常想當(dāng)然地,把這個概念和底層的數(shù)據(jù)傳輸(這個僅僅屬于通信機(jī)制)相混淆。通信語義的研究目前主要有兩種方法,分別基于心理概念和社會概念,已經(jīng)足以說明問題了。如上所述,心理概念主要處理Agent的內(nèi)部結(jié)構(gòu),因此并不適用于開放環(huán)境。社會概念則有著更廣泛的應(yīng)用,文獻(xiàn)(Singh,1998)對此進(jìn)行了更為嚴(yán)格的論述。
5.協(xié)議(Ptotocols)
很難采用一種獨(dú)立的方式對通信進(jìn)行研究。當(dāng)沒有辦法去查看通信Agent的內(nèi)部結(jié)構(gòu)時,對通信行為的組合進(jìn)行標(biāo)識可能是更簡單和更為合適的選擇。這些組合就是協(xié)議,也就是前面所暗示的“對于Agent行為所采取的限制”。簡言之,協(xié)議闡述了一個Agent應(yīng)該何時,以及如何同其他Agent進(jìn)行通信。舉一個簡單的商業(yè)案例,一個Agent在受到詢問時給出報價,在收到所訂購物品時完成付款等。
計算機(jī)科學(xué)的其他分支也對協(xié)議進(jìn)行了研究,尤其是在網(wǎng)絡(luò)領(lǐng)域。例如,網(wǎng)絡(luò)協(xié)議就限制了通信各方所能發(fā)送的消息和響應(yīng)。這些協(xié)議定義了在各種情況下如何為需要通信的數(shù)據(jù)進(jìn)行編碼,如報頭。嚴(yán)格的定義對于保證可靠的實(shí)現(xiàn)是非常重要的。然而,我們希望Agent的靈活性能夠最大化(換言之,就是盡可能少的限制它們的自治性)。要兼容靈活性是非常有挑戰(zhàn)性的,尤其是要確保Agent的行為能夠正確符合一個協(xié)議的規(guī)定。
6.承諾(Commitments)
盡管傳統(tǒng)的通信研究是基于心理概念的,而對協(xié)議的研究卻是在社會概念的框架中形成的。我們這里就使用“承諾”這個典型的社會概念來實(shí)現(xiàn)目的(Singh,1999a)。雖然也可以定義別的概念,但是“承諾”對于實(shí)現(xiàn)當(dāng)前目標(biāo)已經(jīng)足夠了。“承諾”涉及債務(wù)人、債權(quán)人、條件或行為,以及上下文。基本含義就是債務(wù)人有義務(wù)幫助債權(quán)人實(shí)現(xiàn)所陳述的條件,或者執(zhí)行所要求的行為;這些行為甚至經(jīng)常被當(dāng)成前提條件。給定的承諾可以在一定的上下文中獲得,例如虛擬企業(yè)這樣一個組織,或是供應(yīng)鏈這樣一個商業(yè)抽象。承諾可以通過以下手段進(jìn)行操作,如委派(變更債務(wù)人)、轉(zhuǎn)讓(變更債權(quán)人)、取消(債務(wù)人違反承諾)、豁免(債權(quán)人豁免債務(wù)人)。像“取消”這一類操作,很明顯是具有一定風(fēng)險的。需要通過進(jìn)一步的“元承諾”(用于定義基本層次承諾的操作環(huán)境)來限制它們。更重要的是,增加“元承諾”可以使我們?yōu)閼?yīng)用中的許多實(shí)際協(xié)議進(jìn)行建模(Yolum和Singh,2002)。
關(guān)于承諾的早期研究工作假定:根據(jù)對所期望交互的理解,直接由設(shè)計者來決定所期望的承諾和元承諾。最近的工作已經(jīng)產(chǎn)生了對于承諾更為精確的闡述,可以用做構(gòu)建系統(tǒng)的基礎(chǔ)。目前的時序邏輯方法中有可以表達(dá)承諾的語義,可以將“承諾的可重用交互模式”形式化(Fornara和Colombetti,2002)。這些模式可以用做設(shè)計多Agent系統(tǒng)的基礎(chǔ),并確保最終產(chǎn)生的交互具有某些屬性。另一些工作則是基于對所期望交互的分析,考慮提出正確承諾的方法要素(Wan和Singh,2003),這體現(xiàn)了文獻(xiàn)(Huhns等,2002)的精神,但目標(biāo)卻是針對承諾。
- 集成架構(gòu)中型系統(tǒng)
- Java編程全能詞典
- 計算機(jī)應(yīng)用
- 手把手教你玩轉(zhuǎn)RPA:基于UiPath和Blue Prism
- SharePoint 2010開發(fā)最佳實(shí)踐
- STM32嵌入式微控制器快速上手
- 大數(shù)據(jù)處理平臺
- 自動生產(chǎn)線的拆裝與調(diào)試
- 計算機(jī)網(wǎng)絡(luò)原理與技術(shù)
- 基于單片機(jī)的嵌入式工程開發(fā)詳解
- 人工智能趣味入門:光環(huán)板程序設(shè)計
- Dreamweaver CS6中文版多功能教材
- 簡明學(xué)中文版Flash動畫制作
- Hands-On Deep Learning with Go
- Kubernetes on AWS