專利名稱:基于Agent的服務(wù)自主協(xié)商系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種信息技術(shù)領(lǐng)域的系統(tǒng),具體地說,是一種基于Agent (智能 主體)的服務(wù)自主協(xié)商系統(tǒng),即運(yùn)用分布式Agent進(jìn)行互相通信自主協(xié)商來處理 自主服務(wù)問題。
背景技術(shù):
面向服務(wù)的體系架構(gòu)已經(jīng)越來越得到廣泛的應(yīng)用。面向服務(wù)的體系架構(gòu)憑借 其松耦合的特性,使得企業(yè)可以按照模塊化的方式來添加新服務(wù)或更新現(xiàn)有服 務(wù),以解決新的業(yè)務(wù)需要。企業(yè)在利用服務(wù)實(shí)現(xiàn)系統(tǒng)時(shí),單個(gè)服務(wù)往往是滿足不 了要求的,而必須通過多個(gè)服務(wù)協(xié)作來完成系統(tǒng)功能。為了提供定義服務(wù)協(xié)作的 手段,多個(gè)服務(wù)通常按照流程的形式組合在一起。而現(xiàn)有的網(wǎng)頁服務(wù)復(fù)合一般都 采用靜態(tài)綁定的方法,無法實(shí)現(xiàn)服務(wù)的動(dòng)態(tài)綁定。為了滿足新業(yè)務(wù)需求,需要依 據(jù)需求動(dòng)態(tài)地進(jìn)行服務(wù)選擇和匹配,支持業(yè)務(wù)的優(yōu)化運(yùn)行。通過服務(wù)Agent封裝 多個(gè)服務(wù)后,可以依靠服務(wù)Agent之間的自主協(xié)作完成服務(wù)的優(yōu)化選擇和組合。
經(jīng)對(duì)現(xiàn)有技術(shù)的文獻(xiàn)檢索發(fā)現(xiàn),Makoto Yokoo等在《IEEE 1992》 (0-8186-2865-0/92)上發(fā)表的"Distributed Constraint Satisfaction for Formalizing Distributed Problem Solving"(用分布式約束滿足方法來開;式 化分布式問題求解),該文中提出了一個(gè)解決分布式問題的基礎(chǔ)模塊,該基礎(chǔ)模 塊為把分布式的問題求解形式化為分布時(shí)約束滿足問題,并提出了一個(gè)分布式 異步的約束滿足算法來解決分布時(shí)約束滿足問題。其不足在于僅僅用了一些簡 單的數(shù)學(xué)問題來表示分布時(shí)約束求解問題,缺乏實(shí)踐性和可操作性,并只提供了 一個(gè)理論可實(shí)施的模塊,但對(duì)該模塊面對(duì)實(shí)際問題,特別是網(wǎng)頁服務(wù)問題時(shí),所 應(yīng)該特有的具體的實(shí)施流程以及應(yīng)用規(guī)范都沒有進(jìn)行很好的闡述。
發(fā)明內(nèi)容
本發(fā)明針對(duì)現(xiàn)有技術(shù)的不足與缺陷,提供一種基于Agent的服務(wù)自主協(xié)商系統(tǒng),使其能夠在分布式環(huán)境下為不同服務(wù)提供一種高效靈活的、通用的自主協(xié) 商,以解決當(dāng)前網(wǎng)頁服務(wù)方案不靈活、融合效率低,可靠性差,無法實(shí)現(xiàn)服務(wù)的 動(dòng)態(tài)綁定的問題,推動(dòng)信息化服務(wù)領(lǐng)域的應(yīng)用和發(fā)展。
本發(fā)明是通過以下技術(shù)方案實(shí)現(xiàn)的,本發(fā)明包括協(xié)商Agent模塊、裁判 AgMt模塊,以及它們之間的通信模塊、決策模塊,其中.-
所述協(xié)商Agent模塊就是參與協(xié)商的Agent的世界模型、鄰居模型、約束模 型、服務(wù)模型、以及它們的計(jì)劃和動(dòng)作,最后協(xié)商Agent通過執(zhí)行具體的計(jì)劃來 達(dá)成協(xié)同服務(wù)的目的;
所述裁判Agent模塊是來協(xié)調(diào)服務(wù)Agent之間的協(xié)商,并對(duì)各個(gè)服務(wù)Agervt 提供指令,此外它本身也是一個(gè)Agent模塊,也包括了以上所述協(xié)商的Agent模 塊所擁有的那些模型,如世界模型、鄰居模型、約束模型以及計(jì)劃和動(dòng)作等,只 是目的不同(協(xié)調(diào)服務(wù)Agent之間的協(xié)商〉。
所述通信模塊是服務(wù)Agent之間互相通信的中間件,為Agent之間的協(xié)商提 供支持。
所述決策模塊在Agent之間進(jìn)行協(xié)商后進(jìn)行,讓Agent通過協(xié)商結(jié)果決策 具體執(zhí)行哪一項(xiàng)服務(wù),決策模塊實(shí)際上包含在具體的Agent執(zhí)行模塊中,此外 Agent的每條計(jì)劃都是由收到的消息來驅(qū)動(dòng)的。
本發(fā)明協(xié)商Agent模塊中,所述世界模型代表了 Agent所擁有的知識(shí)及一些 相關(guān)變量;所述鄰居模型表示了 Agent所知道的其它和其一同協(xié)同工作的Agent 的信息(包括名字或地址);所述約束模型表示了 Agent所要遵守的約束信息(如 一些變量之間的不等式等);所述服務(wù)模型表述了這個(gè)Agent具體協(xié)商完成后 將要執(zhí)行的服務(wù)(當(dāng)然該模型只有在協(xié)商Agent模塊中有,裁判Agent沒有,因 為裁判Agent的作用僅僅是幫助協(xié)商順利進(jìn)行,而不是為了最終執(zhí)行服務(wù));所 述計(jì)劃表示了 Agent所要自主化運(yùn)行的流程,這些計(jì)劃事先定義,Agent根據(jù)不 同條件進(jìn)行流程驅(qū)動(dòng)——選擇某一計(jì)劃進(jìn)行執(zhí)行(本發(fā)明中流程驅(qū)動(dòng)根據(jù)消息的 到達(dá)來進(jìn)行);所述動(dòng)作表示了 Agent在計(jì)劃中所需要操作的一個(gè)個(gè)動(dòng)作,亦是 事先進(jìn)行定義并包含到計(jì)劃的設(shè)計(jì)中。
所述協(xié)商Agent模塊的世界模型中存儲(chǔ)了提供服務(wù)Agent的一些服務(wù)參數(shù) 的變量以及該Agent知道的一些外部知識(shí),Agent協(xié)商結(jié)果即是為其世界模型的
變量進(jìn)行賦值,使其可以提供服務(wù)。
所述協(xié)商Agent模塊的鄰居模型存儲(chǔ)了該Agent知道的與其共同協(xié)商合作提 供服務(wù)的其它Agent的名字或地址,只有該模型的存在Agent才能和其它Agent 通信協(xié)商。
所述協(xié)商Agent模塊的約束模型是該協(xié)商Agent在協(xié)商過程中必須遵守的約束。
所述協(xié)商Agent模塊的服務(wù)模型存儲(chǔ)了一到多個(gè)具體的網(wǎng)頁服務(wù),當(dāng)Agent 協(xié)商完畢后將觸發(fā)這些網(wǎng)絡(luò)服務(wù)。
所述協(xié)商Agent模塊,其計(jì)劃由協(xié)商Agent模塊收到裁判Agent模塊或其它 協(xié)商Agent模塊發(fā)來的消息后進(jìn)行驅(qū)動(dòng),來運(yùn)行一系列動(dòng)作。協(xié)商Agent模塊共 會(huì)收到5類消息(也就是一共有5個(gè)計(jì)劃),分別為Init (初始化)消息,Ok
(尋求同意)消息,NoGood (不同意)消息,Stop (停止)消息,Solution (解 決)消息,其中
所述Init消息是Agent初始化時(shí)收到系統(tǒng)默認(rèn)發(fā)送的Init消息運(yùn)行的 Plan,主要完成協(xié)商Agent的初始化工作;
所述0k 消息是協(xié)商Agent收到其它鄰居Agent發(fā)送的OK 消息后運(yùn)行的 計(jì)劃,主要完成更新Agent知識(shí),并檢査Agent知識(shí),必要時(shí)改變自己的值來滿 足約束;
所述NoGood消息是協(xié)商Agent收到其它鄰居Agent發(fā)送的NoGood消息后運(yùn) 行的計(jì)劃,主要完成更新NoGood列表,并檢査Agent知識(shí),必要時(shí)修改自己的 值來滿足約束,或進(jìn)行回溯;
所述Stop消息是協(xié)商Agent收到裁判Agent發(fā)送的Stop消息后運(yùn)行的計(jì)劃, 主要完成停止工作,協(xié)商無解;
所述Solution消息是協(xié)商Agent收到裁判Agent發(fā)送的Solution消息后運(yùn) 行的計(jì)劃,主要完成停止協(xié)商工作,根據(jù)協(xié)商結(jié)果運(yùn)行服務(wù)。
所述Init消息,它的初始化工作主要是把它自己所知道的約束進(jìn)行分解成 一個(gè)個(gè)字符段,然后存入到一個(gè)約束表達(dá)式的容器中以便后面需要檢測(cè)約束時(shí)可 以快速賦值啟用。同時(shí),它還需要檢測(cè),自己是否在每一條約束中是評(píng)價(jià)者,即 它在約束表達(dá)式中是否是所有Agent中優(yōu)先級(jí)最低的Agent,如果是它就是最后
來檢測(cè)該約束是否滿足的Agent。只要有一條約束中它是優(yōu)先級(jí)最低的Agent, 它就是評(píng)價(jià)者。它初始化要發(fā)給裁判Agent消息,而這消息類型是evaluator (我 是評(píng)價(jià)者)或者unevluator (我不是評(píng)價(jià)者)。此外它還要從它鄰居模型中找 出所有優(yōu)先級(jí)比它小的Agent以0k 消息的形式發(fā)送自己的初始值給它們。
所述Ok 消息只可能是高優(yōu)先級(jí)的Agent發(fā)送給低優(yōu)先級(jí)的Agent,表示問 這個(gè)Agent,它取這個(gè)值是否可以。收到0k 消息也就是該Agent收到優(yōu)先級(jí)比 它高的Agent發(fā)給它的協(xié)商值。它先把這個(gè)值存入自己的Agent知識(shí)表中,然后 檢查自己當(dāng)前的值和Agent知識(shí)表中的值是否匹配,不但要檢查約束還要檢查不 同意表。如果匹配,并且自己是評(píng)價(jià)者且它知道了所有它是評(píng)價(jià)者的約束中的其 它Agent的值,即它得到了部分解就會(huì)發(fā)IMOK (我這里檢査都沒問題)消息給 裁判Agent。否則什么都不做。如果不匹配,它就從值域中尋找一個(gè)值來匹配, 如果找到了個(gè)新值就替換掉原值,并發(fā)ok 消息告訴所有比它優(yōu)先級(jí)低的Agent, 這時(shí)候如果它也找到了部分解,也應(yīng)該發(fā)IMOK消息給Controllers如果找不到 新值,它就異步回溯,產(chǎn)生一個(gè)當(dāng)前不能取得值組合。如果這個(gè)NoGood為空, 就發(fā)Stop消息給裁判Agent,說明解不存在。如果不為空,就發(fā)送這條組合的 所有值給組合中優(yōu)先級(jí)最低的Agent。
所述NoGood消息和ok 消息恰恰相反,NoGood消息只可能是低優(yōu)先級(jí)的 Agent發(fā)給高優(yōu)先級(jí)Agent,并且只有在回溯時(shí)才可能發(fā),表示告訴該Agent取 這一系列值是不可以的。收到nogood消息后,把它放入不同意列表中,成了新 的一條約束。接下去的工作和收到ok 消息類似,在此不贅述。
所述Stop消息,當(dāng)裁判Agent模塊收到某個(gè)Agent發(fā)給它的停止消息后后, 它知道這個(gè)協(xié)商無解,它就會(huì)發(fā)給所有協(xié)商Agent模塊一條St叩消息,Agent 收到后就停止協(xié)商。
所述Solution消息,當(dāng)裁判Agent模塊收到Agent發(fā)給它的頂0K消息后, 會(huì)檢查所有的頂0K如果部分解全找到,且全匹配(具體裁判Agent的情況將在 下文論述),就會(huì)發(fā)送給所有Agent Solution消息,并告訴它們各自協(xié)商下來 的選擇,Agent收到消息后根據(jù)不同的選擇調(diào)用服務(wù)模型中不同的服務(wù),協(xié)商完 成。
本發(fā)明中,所述裁判Agent模塊的世界模型中存儲(chǔ)了提供其它協(xié)商Agent
發(fā)來的協(xié)商結(jié)果(協(xié)商成功及協(xié)商成果或者協(xié)商失敗),來幫助裁判Agent進(jìn)行 協(xié)商調(diào)解。所述裁判Agent模塊的鄰居模型存儲(chǔ)了該Agent存儲(chǔ)的其它所有協(xié)商 Agent的信息,以幫助裁判Agent和其它協(xié)商Agent通信。裁判Agent如上文所 述是Agent的一種,也擁有Agent模塊的結(jié)構(gòu),原則上同樣擁有約束模型和服務(wù) 模型,但本系統(tǒng)裁判Agent的功能尚無需運(yùn)用到約束模型和服務(wù)模型,故省略之。 所述裁判Agent?!姥?,其計(jì)劃由裁判Agent收到自己或協(xié)商Agent發(fā)來的消 息后進(jìn)行驅(qū)動(dòng),來運(yùn)行一系列動(dòng)作。裁判Agent模塊共會(huì)收到5類消息(也就是 一共有5個(gè)計(jì)劃)分別為Init (初始化)消息,IMOK (我約束都滿足了)消 息,Unevaluator (非評(píng)價(jià)者)消息,Evaluator (評(píng)價(jià)者)消息,Stop (停止) 消息,其中-
所述Init消息是裁判Agent初始化時(shí)收到系統(tǒng)默認(rèn)發(fā)送的Init消息運(yùn)行的 計(jì)劃,主要完成裁判Agent的初始化工作;
所述IMOK消息是裁判Agent收到協(xié)商Agent發(fā)送的IMOK消息后運(yùn)行的計(jì)劃, 主要完成紀(jì)錄Agent的部分解,如所有部分解都發(fā)送,檢査它們是否匹配;
所述Evaluator消息是裁判Agent收到協(xié)商Agent發(fā)送的Evaluator消息后 運(yùn)行的計(jì)劃,主要完成紀(jì)錄協(xié)商Agent的相關(guān)信息;
所述Unevaluator消息是裁判Agent收到協(xié)商Agent發(fā)送的Unevaluator消 息后運(yùn)行的計(jì)劃,主要完成紀(jì)錄協(xié)商Agent的相關(guān)信息;
所述Stop消息是裁判Agent收到Stop消息后運(yùn)行的計(jì)劃,主要完成轉(zhuǎn)發(fā)消 息給所有協(xié)商Agent,讓它們停止協(xié)商。
所述Init消息,當(dāng)裁判Agent啟動(dòng)時(shí),系統(tǒng)會(huì)默認(rèn)發(fā)Init消息給裁判Agent, 裁判Agent初始化的工作主要是根據(jù)協(xié)商Agent列表參數(shù),在數(shù)據(jù)庫裁判Agent 運(yùn)行時(shí)表中建好協(xié)商Agent名稱。
所述IMOK消息,當(dāng)協(xié)商Agent找到自己的部分解后會(huì)將它的Agent知識(shí)和 自己的值發(fā)給裁判Agent,裁判Agent收到值把它放入裁判Agent運(yùn)行時(shí)表中相 應(yīng)的行中,并檢測(cè)是否所有的Agent都發(fā)了 Evaluator或者Unevaluator消息, 如果都發(fā)了就繼續(xù)檢測(cè)是否所有的評(píng)價(jià)者Agent都發(fā)了頂0K消息,如果都發(fā)了 最后再檢測(cè)是否所有的部分解都匹配,即部分解中Agent重疊的部分是否一
致,如果都是匹配的,即找到了解把最后解的信息以St叩消息的形式發(fā)給自 己。
所述Unevaluator消息,當(dāng)協(xié)商Agent檢測(cè)到自己不是評(píng)價(jià)者時(shí)發(fā)消息給裁 判Agent,裁判Agent把該消息紀(jì)錄進(jìn)裁判Agent運(yùn)行時(shí)表中。最后為了避免以 下情況的發(fā)生當(dāng)所有評(píng)價(jià)者Agent都發(fā)了信息給裁判Agent,最后非評(píng)價(jià)者 Agent才發(fā)信息給裁判Agent,這樣有可能會(huì)造成程序無法結(jié)束。因此裁判Agent 的Unevaluator計(jì)劃最后還必須做一下IM0K計(jì)劃中做的事情。
所述Evluator消息,當(dāng)協(xié)商Agent檢測(cè)到自己是評(píng)價(jià)者時(shí)發(fā)消息給裁判 Agent,裁判Agent把該消息紀(jì)錄放進(jìn)裁判Agent運(yùn)行時(shí)表中。
所述Stop消息,St叩消息一般有兩種情況,當(dāng)協(xié)商Agent發(fā)Stop消息給 裁判Agent時(shí)說明協(xié)商無解,當(dāng)裁判Agent自己給自己發(fā)Stop時(shí)說明協(xié)商完成。 但不管是哪種情況,裁判Agent都把該消息轉(zhuǎn)發(fā)給所有協(xié)商Agent 。
Agent之間通過以上消息進(jìn)行通信并決策,最后得到滿足約束的結(jié)果。
所述通信模塊,是基于Java Agent Development Environment (Java Agent 開發(fā)者環(huán)境)中間件的擴(kuò)展,為協(xié)商Agent與協(xié)商Agent,協(xié)商Agent與裁判 Agent之間的通信提供支持,為它們定義通信端口等消息基礎(chǔ)設(shè)施。
所述決策模塊,是Agent根據(jù)協(xié)商需求,在協(xié)商過程中不斷調(diào)整自己的值, 該模塊必須和該類型Agent的計(jì)劃模型進(jìn)行配合完成。
本發(fā)明針對(duì)分布式多Agent的特點(diǎn),根據(jù)每次協(xié)商的具體需求和情況,采用 了分布式異步傳消息策略,最大限度的減少系統(tǒng)的時(shí)間復(fù)雜度。
本發(fā)明既能夠?qū)崿F(xiàn)分布式環(huán)境中多Agent的協(xié)商功能,用戶界面直觀,用戶 可以通過圖形界面對(duì)多Agent進(jìn)行管理,計(jì)劃,執(zhí)行,顯示方式進(jìn)行設(shè)置管理, 具有可擴(kuò)展性強(qiáng),維護(hù)開銷小的特點(diǎn)。
本發(fā)明采用開放、模塊化、可擴(kuò)展的架構(gòu),多個(gè)Agent包括協(xié)商和裁判Agent 可以位于一臺(tái)計(jì)算機(jī)中,也可以是分布在分布式網(wǎng)絡(luò)環(huán)境中的多臺(tái)設(shè)備中集成了 現(xiàn)有基礎(chǔ)設(shè)施,適應(yīng)了系統(tǒng)未來增長需要。
本發(fā)明的各Agent服務(wù)處在分布式的環(huán)境中,可以通過局域網(wǎng)互連,也可 以廣域網(wǎng)互聯(lián),并遵循統(tǒng)一的通信協(xié)議,能夠相互通信和交換信息。
本發(fā)明的特點(diǎn)和效果-
1) 高效性本發(fā)明為了高效的多Agent的協(xié)商,采用了異步通信方式,大 大提高了系統(tǒng)的執(zhí)行效率。
2) 提供統(tǒng)一的查詢接口管理員可以方便地査詢各個(gè)Agent的決策情況。
3) 靈活性可以運(yùn)行在一臺(tái)主機(jī)上,也可以分布在不同主機(jī)上。
4) 使用及管理方便通過顯示終端可以跨平臺(tái)和地域使用和管理系統(tǒng),同
時(shí)人機(jī)交互界面友好,操作簡單。
5) 安全性Agent之間保持隱私性,保證了商業(yè)應(yīng)用的安全性,協(xié)商Agent 無法知道別的Agent的所有情況。
圖l為本發(fā)明總體結(jié)構(gòu)框圖2為Agent的體系結(jié)構(gòu)圖3為實(shí)例服務(wù)流程圖4為協(xié)商Agent的計(jì)劃和動(dòng)作模型配置圖5為裁判Agent的計(jì)劃配置圖。
具體實(shí)施例方式
下面結(jié)合附圖對(duì)本發(fā)明的實(shí)施例作詳細(xì)說明本實(shí)施例在以本發(fā)明技術(shù)方案 為前提下進(jìn)行實(shí)施,給出了詳細(xì)的實(shí)施方式和具體的操作過程,但本發(fā)明的保護(hù) 范圍不限于下述的實(shí)施例。
如圖1所示,本實(shí)施例分為4個(gè)模塊協(xié)商Agent模塊、裁判Agent模塊、 通信模塊以及決策模塊。其中協(xié)商Agent模塊和裁判Agent模塊之間通過通信模 塊這一橋梁進(jìn)行互通消息,同時(shí)協(xié)商Agent模塊和裁判Agent模塊都需要聯(lián)系決 策模塊進(jìn)行相關(guān)信息的處理決策,然后協(xié)商Agent模塊把中間處理過程以及相關(guān) 的本地決策通過通信模塊告知裁判Agent模塊,裁判Agent模塊得到知識(shí)后運(yùn)用 決策模塊進(jìn)行判斷結(jié)果,并通過通信模塊返回給協(xié)商Agent模塊。
所述協(xié)商的Agent模塊就是參與協(xié)商的Agent的世界模型、鄰居模型、約束 模型、服務(wù)模型、以及它們的計(jì)劃和動(dòng)作,最后協(xié)商Agent通過執(zhí)行具體的計(jì)劃 來達(dá)成協(xié)同服務(wù)的目的。
所述裁判Agent模塊是來協(xié)調(diào)服務(wù)Agent之間的協(xié)商,并對(duì)各個(gè)服務(wù)Agent 提供指令,此外它本身也是一個(gè)Agent模塊,也包括了以上所述的協(xié)商Agent
所擁有的那些模型。
所述通信模塊是服務(wù)Agent之間互相通信的中間件,為Agent之間的協(xié)商提 供支持。
所述決策模塊在Agent之間進(jìn)行協(xié)商后進(jìn)行。讓Agent通過協(xié)商結(jié)果決策 具體執(zhí)行哪一項(xiàng)服務(wù),由于決策模塊實(shí)際上包含在具體的Agent執(zhí)行模塊中,以 下在詳細(xì)介紹協(xié)商Agent模塊后將對(duì)決策模塊的介紹進(jìn)行省略。
如圖2所示,Agent模塊(包括協(xié)商Agent模塊和裁判Agent模塊)的世界 模型,鄰居模型,約束模型,服務(wù)模型及Agent的計(jì)劃組成。以下將通過實(shí)例來 介紹具體對(duì)這些模型的配置實(shí)施。
具體實(shí)例有個(gè)人從北京去上海出差,預(yù)計(jì)時(shí)間為4天(住宿3天),總花 費(fèi)不超過3000,其中希望能預(yù)留至少500元在最后半天在南京路為朋友買些禮 物。在出差期間,首先要花半天的時(shí)間開會(huì),最后的半天買禮物,其余時(shí)間用來 游玩。在這三天的住宿中,它希望3天能住在同一家旅館中。服務(wù)流程如圖3所 示。
這里需要4個(gè)協(xié)商Agent,每個(gè)Agent負(fù)責(zé)一個(gè)服務(wù)。用Agent ServiceForGo 訂去上海的票,有一個(gè)變量go;用Agent ServiceForHotel選擇住宿,有一個(gè) 變量hotel;用Agent ServiceForSight選擇游玩景點(diǎn),有一個(gè)變量sight;用 Agent ServiceForBack定回程票,有一個(gè)變量back。
各個(gè)Agent搜索自己的知識(shí)庫,找到各種服務(wù)。Agent ServiceForGo和Agen ServiceForBack找到如下服務(wù):飛機(jī)(0. 5天,1500元),特快火車(l天,500 元),普通火車(1.5天,300元),兩個(gè)參數(shù)分別是抵達(dá)目的地所需的時(shí)間和 這種服務(wù)所需要的花費(fèi)。Agent ServiceForHotel找到了如下服務(wù)豪華賓館(500 元/天),中等旅館(200元/天),小旅館(100元/天)。Agent ServiceForSight 找到了如下服務(wù)景點(diǎn)組合1東方明珠+外灘(1天,500元),景點(diǎn)組合2周 莊(1.5天,800元),景點(diǎn)組合3城隍廟(0.5天,300元)。此外開會(huì)需要 半天,最后到南京路步行街去購買禮物需要半天。
接著對(duì)該4個(gè)協(xié)商Agent的世界模型,鄰居模型,約束模型及服務(wù)模型建模, 以ServiceForGo (訂去上海的票服務(wù))為例
世界模型變量go
值域的xml Schema: 〈go>〈cost>〈/cost>〈timeX/time〉〈/go〉 值域〈go><cost>1500</cost〉<time>0. 5</timeX/go> 〃飛機(jī) <go〉〈cost>500〈/cost>〈time〉K/timeX/go> 〃特快火車 <go〉<cost>300</cost〉〈time>l. 5〈/time〉〈/go〉 〃普通火車 鄰居模型令P居ServiceForBack, ServiceForSight, ServiceForHotel
約束模型兩個(gè)約束
1. serviceForGo. go. cost + ServiceForSight. sight, cost + 3 氺 serviceForHotel. hotel, cost + serviceForBack. back, cost + 500 〈= 3000
2. serviceForGo. go. time + ServiceForSight. sight, time + serviceForBack. back, time + 0.5 +0.5 <= 4
即總花費(fèi)不大于3000元,總時(shí)間不大于4天 服務(wù)模型提供訂票服務(wù)的網(wǎng)頁服務(wù)。
其它協(xié)商Agent的世界模型、鄰居模型、約束模型和服務(wù)模型的建模類似, 在此不贅述。
接下來,對(duì)協(xié)商Agent的計(jì)劃和動(dòng)作模型進(jìn)行配置,4個(gè)協(xié)商Agent的計(jì)劃 配置基本一樣,如圖4為協(xié)商Agent的計(jì)劃的配置,以及其中包括的動(dòng)作。由于 計(jì)劃由消息驅(qū)動(dòng),所以將從以收到消息出發(fā)闡述計(jì)劃的實(shí)施。在這個(gè)計(jì)劃模型中, 在分支最多的情況中,如收到0K 消息后,決策模塊將進(jìn)行智能化處理,決定 發(fā)還的消息類型,來決定其他Agent的計(jì)劃選擇,最多可能會(huì)發(fā)出四種消息分 別是0K 消息,Nogood消息,IM0K消息以及St叩消息。但是這四條消息不可 能同時(shí)發(fā),最多只可能發(fā)兩條消息。有些消息是不可能同時(shí)發(fā)出的,如Nogood 消息和IM0K消息,0K 消息和Nogood消息等。因此,只有以下這幾種情況
1. 不發(fā)消息匹配所有Agen知識(shí)但不是評(píng)價(jià)者Agent或者還有Agent值未
知
2. 發(fā)IM0K消息匹配所有Agent知識(shí)且得到部分解
3. 發(fā)0K 消息當(dāng)前值不匹配,但從值域中選擇了另一個(gè)值匹配,但還未 找到部分解
4. 發(fā)OK 消息和IMOK消息當(dāng)前值不匹配,但從值域中選擇了另一個(gè)值 匹配,且得到部分解
5. 發(fā)Nogood消息找不到匹配的解,但Nogood未空
6. 發(fā)stop消息找不到匹配的解,且Nogood為空
為了能適應(yīng)直線型機(jī)制,引入空消息概念,計(jì)劃模型規(guī)定收到Ok /Nogood 消息后將回復(fù)2條消息,如果只有一條消息的情況下就發(fā)送一條消息模板為空消 息,這條消息由于沒有賦予匹配計(jì)劃,所以不會(huì)被任何人接受到。并且為了方便 起見,由于0K 消息是發(fā)給多人的,而其它消息都是發(fā)給單人的,并且只有發(fā) 0K 消息時(shí)才可能同時(shí)發(fā)兩條消息,因此人為的規(guī)定,第二條消息固定發(fā)0K 消息或空消息,而第一條消息發(fā)除了0K 消息外的任何消息。
在Init計(jì)劃中,1. Agent先初始化。2.接著調(diào)用系統(tǒng)方法,添加消息的消 息模板,這里添加發(fā)給裁判Agent的評(píng)價(jià)者或者非評(píng)價(jià)者。3.然后系統(tǒng)方法,添 加消息的收件人,這里添加裁判Agent。 4.再調(diào)用系統(tǒng)方法,添加消息的消息模 板,這里添加第二條消息的模板,為0K 。 5.接著調(diào)用用戶方法,得到0K 消 息的收件人,即熟人模型中所有優(yōu)先級(jí)比它低的Agent。 6.然后調(diào)用用戶方法, 以Agent當(dāng)前值包裝進(jìn)信件內(nèi)容中,返回要發(fā)的0K消息的內(nèi)容。7.最后調(diào)用系 統(tǒng)方法,添加消息的內(nèi)容,此處添加ok 消息的消息內(nèi)容。
在0k 計(jì)劃中,l.得到Ok 消息的發(fā)送者。2.調(diào)用系統(tǒng)方法,得到消息的內(nèi) 容。3.調(diào)用用戶方法,這個(gè)方法包括了收到ok 消息后的所有處理,包括添加0k 消息到Agent知識(shí),檢查Agent知識(shí),以及可能的回溯,該方法返回值是一個(gè)字 符串,包含了世界模型需要變更的值,以及可能發(fā)送的兩條消息的模板、內(nèi)容、 發(fā)送者。4.調(diào)用用戶方法,從上面的返回值中,解析出該Agent變量的新值。5. 調(diào)用系統(tǒng)方法,為該Agent的變量賦予新值。6.用戶方法,從返回值中得到第一 條消息中的模板,這條消息模板為除了 0K 外的其它四種消息。7.調(diào)用系統(tǒng)方 法,添加第一條消息模板。8.調(diào)用用戶方法,從上面的返回值中,解析出第一 條消息的發(fā)送者。9.調(diào)用系統(tǒng)方法,添加第一條消息的接收者。10.調(diào)用用戶方 法,從上面的返回值中,解析出第一條消息的內(nèi)容。ll.調(diào)用系統(tǒng)方法,添加第 一條消息的內(nèi)容。12.調(diào)用用戶方法,從上面的返回值中,解析出第二條消息的 模板,這里的消息模板可能為0k 或者是空消息。13.調(diào)用系統(tǒng)方法,添加第二
條消息模板。14.調(diào)用用戶方法,得到發(fā)0k 消息的接收者,即熟人模型中所有 優(yōu)先級(jí)比它低的Agent。 15.調(diào)用系統(tǒng)方法,添加第二條消息的接收者。16.用戶 方法,從返回值中,解析出第二條消息的內(nèi)容。17.調(diào)用系統(tǒng)方法,添加第二條 消息的內(nèi)容。
在NoGood計(jì)劃中,l.得到NoGood消息的發(fā)送者。2.調(diào)用系統(tǒng)方法,得到消 息的內(nèi)容。3.調(diào)用用戶方法,這個(gè)方法包括了收到NoGood消息后的所有處理, 包括添加該信息到專門存放該消息的表中(Nogood List),檢查Agent知識(shí), 以及可能的回溯,該方法返回值是一個(gè)字符串,包含了世界模型需要變更的值, 以及可能發(fā)送的兩條消息的模板、內(nèi)容、發(fā)送者。4.調(diào)用用戶方法,從上面的返 回值中,解析出該Agent變量的新值。5.調(diào)用系統(tǒng)方法,為該Agent的變量賦予 新值。6.用戶方法,從返回值中得到第一條消息中的模板,這條消息模板為除了 0K 外的其它四種消息。7.調(diào)用系統(tǒng)方法,添加第一條消息模板。8.調(diào)用用戶方 法,從上面的返回值中,解析出第一條消息的發(fā)送者。9.調(diào)用系統(tǒng)方法,添加 第一條消息的接收者。IO.調(diào)用用戶方法,從上面的返回值中,解析出第一條消 息的內(nèi)容。ll.調(diào)用系統(tǒng)方法,添加第一條消息的內(nèi)容。12.調(diào)用用戶方法,從上 面的返回值中,解析出第二條消息的模板,這里的消息模板可能為ok 或者是空 消息。13.調(diào)用系統(tǒng)方法,添加第二條消息模板。14.調(diào)用用戶方法,得到發(fā)0k 消息的接收者,即熟人模型中所有優(yōu)先級(jí)比它低的Agent。 15.調(diào)用系統(tǒng)方法, 添加第二條消息的接收者。16.用戶方法,從返回值中,解析出第二條消息的內(nèi) 容。17.調(diào)用系統(tǒng)方法,添加第二條消息的內(nèi)容。
在St叩計(jì)劃中,直接調(diào)用系統(tǒng)方法,結(jié)束Agent進(jìn)程。 在Solution計(jì)劃中,l.調(diào)用系統(tǒng)方法,得到消息的內(nèi)容。2.調(diào)用用戶方法, 從消息內(nèi)容中得到服務(wù)的選擇。3.調(diào)用用戶方法,根據(jù)選擇調(diào)用相應(yīng)的服。4. 調(diào)用系統(tǒng)方法,結(jié)束Agent。
接下來,要對(duì)裁判Agent的世界模型、鄰居模型及計(jì)劃進(jìn)行配置。 裁判Agent的世界模型變量Result,記錄協(xié)商最終結(jié)果。 裁判 Agent 的鄰居模型ServiceForGo 、 ServiceForBack 、 ServiceForHotel、 ServiceForHotel。 如圖5是裁判Agent的計(jì)劃配置
在Init計(jì)劃中,l.調(diào)用用戶方法,得到需要協(xié)商的所有Agent的名單和地 址。2.調(diào)用用戶方法,在數(shù)據(jù)庫建好相應(yīng)的協(xié)商Agent信息的表。
在IMOK計(jì)劃中,l.調(diào)用系統(tǒng)方法,得到發(fā)送者名字。2.調(diào)用用戶方法,更 新相應(yīng)數(shù)據(jù)庫中字段。3.調(diào)用用戶方法,判斷所有Agent是否都發(fā)了 evaluator/unevlauator消息。4.調(diào)用用戶方法,判斷所有Agent是否都發(fā)了 IMOK 消息。5.調(diào)用用戶方法,判斷所有解是否都匹配。6.調(diào)用系統(tǒng)方法,發(fā)送解給裁 判Agent。
在Unevaluator計(jì)劃中,l.調(diào)用系統(tǒng)方法,得到發(fā)送者名字。2.調(diào)用用戶方 法,該Agent為非評(píng)價(jià)者。3.調(diào)用用戶方法,更新相應(yīng)數(shù)據(jù)庫中字段。4.調(diào)用用 戶方法,判斷所有Agent是否都發(fā)了 evaluator/unevlauator消息。5.調(diào)用用戶 方法,判斷所有Agent是否都發(fā)了 IM0K消息。6.調(diào)用用戶方法,判斷所有解是 否都匹配。7.調(diào)用系統(tǒng)方法,發(fā)送解給裁判。
在Evaluator計(jì)劃中,1.調(diào)用系統(tǒng)方法,得到發(fā)送者名字。2.調(diào)用用戶方法, 該Agent為評(píng)價(jià)者。
在Stop計(jì)劃中,l.調(diào)用系統(tǒng)方法,得到消息內(nèi)容。2.調(diào)用用戶方法,分析 消息內(nèi)容。3.調(diào)用系統(tǒng)方法,根據(jù)內(nèi)容的不同,發(fā)送給所有Agent Solution或 者Stop消息。
最終結(jié)果,協(xié)商Agent最后協(xié)商一致,坐普通火車去上海,回來乘飛機(jī)返程, 去景點(diǎn)組合3游玩,住小旅館。并調(diào)用各自得網(wǎng)頁服務(wù)為用戶提供服務(wù)。 本實(shí)施例模塊清晰、具有高效性、準(zhǔn)確性及安全性的特點(diǎn),解決了當(dāng)前網(wǎng)頁 服務(wù)方案不靈活、融合效率低,可靠性差,無法實(shí)現(xiàn)服務(wù)的動(dòng)態(tài)綁定的問題。
權(quán)利要求
1、一種基于Agent的服務(wù)自主協(xié)商系統(tǒng),其特征在于,包括協(xié)商Agent模塊、裁判Agent模塊,以及它們之間的通信模塊、決策模塊,其中所述協(xié)商的Agent模塊就是參與協(xié)商的Agent的世界模型、鄰居模型、約束模型、服務(wù)模型、以及它們的計(jì)劃和動(dòng)作,最后協(xié)商Agent通過執(zhí)行具體的計(jì)劃來達(dá)成協(xié)同服務(wù)的目的;所述裁判Agent模塊是來協(xié)調(diào)服務(wù)Agent之間的協(xié)商,并對(duì)各個(gè)服務(wù)Agent提供指令,此外它本身也是一個(gè)Agent模塊,也包括了世界模型、鄰居模型、約束模型、以及它們的計(jì)劃和動(dòng)作;所述通信模塊是服務(wù)Agent之間互相通信的中間件,為Agent之間的協(xié)商提供支持;所述決策模塊在Agent之間進(jìn)行協(xié)商后進(jìn)行,讓Agent通過協(xié)商結(jié)果決策具體執(zhí)行哪一項(xiàng)服務(wù),決策模塊實(shí)際上包含在具體的Agent執(zhí)行模塊中,此外Agent的每條計(jì)劃都是由收到的消息來驅(qū)動(dòng)的。
2、 根據(jù)權(quán)利要求l所述的基于Agent的服務(wù)自主協(xié)商系統(tǒng),其特征是,所 述協(xié)商Agent模塊,其計(jì)劃由協(xié)商Agent模塊收到裁判Agent模塊或其它協(xié)商 Agent模塊發(fā)來的消息后進(jìn)行驅(qū)動(dòng),來運(yùn)行一系列動(dòng)作,協(xié)商Agent模塊共會(huì)收 到5類消息,也就是一共有5個(gè)計(jì)劃,分別為Init消息,Ok 消息,NoGood 消息,St叩消息,Solution消息,其中所述Init消息是Agent初始化時(shí)收到系統(tǒng)默認(rèn)發(fā)送的Init消息運(yùn)行的 Plan,主要完成協(xié)商Agent的初始化工作;所述0k 消息是協(xié)商Agent收到其它鄰居Agent發(fā)送的OK 消息后運(yùn)行的 計(jì)劃,主要完成更新Agent知識(shí),并檢查Agent知識(shí),必要時(shí)改變自己的值來滿 足約束;所述NoGood消息是協(xié)商Agent收到其它鄰居Agent發(fā)送的NoGood消息后運(yùn) 行的計(jì)劃,主要完成更新NoGood列表,并檢查Agent知識(shí),必要時(shí)修改自己的 值來滿足約束,或進(jìn)行回溯;所述Stop消息是協(xié)商Agent收到裁判Agent發(fā)送的Stop消息后運(yùn)行的計(jì) 劃,主要完成停止工作,協(xié)商無解;所述Solution消息是協(xié)商Agent收到裁判Agent發(fā)送的Solution消息后運(yùn) 行的計(jì)劃,主要完成停止協(xié)商工作,根據(jù)協(xié)商結(jié)果運(yùn)行服務(wù)。
3、 根據(jù)權(quán)利要求2所述的基于Agent的服務(wù)自主協(xié)商系統(tǒng),其特征是,所 述Init消息,它的初始化工作是把它自己所知道的約束進(jìn)行分解成一個(gè)個(gè)字符 段,然后存入到一個(gè)約束表達(dá)式的容器中以便后面需要檢測(cè)約束時(shí)可快速賦值啟 用,同時(shí),它還需要檢測(cè),自己是否在每一條約束中是評(píng)價(jià)者,即它在約束表達(dá) 式中是否是所有Agent中優(yōu)先級(jí)最低的Agent,如果是,它就是最后來檢測(cè)該約 束是否滿足的Agent,只要有一條約束中它是優(yōu)先級(jí)最低的Agent,它就是評(píng)價(jià) 者,它初始化要發(fā)給裁判Agent消息,而這消息類型是evaluates或者 unevluator,此外它還要從它鄰居模型中找出所有優(yōu)先級(jí)比它小的Agent以O(shè)k 消息的形式發(fā)送自己的初始值給它們。
4、 根據(jù)權(quán)利要求2所述的基于Agent的服務(wù)自主協(xié)商系統(tǒng),其特征是,所 述Ok 消息只可能是高優(yōu)先級(jí)的Agent發(fā)送給低優(yōu)先級(jí)的Agent,表示問這個(gè) Agent,它取這個(gè)值是否可以,收到0k 消息也就是該Agent收到優(yōu)先級(jí)比它高 的Agent發(fā)給它的協(xié)商值,它先把這個(gè)值存入自己的Agent知識(shí)表中,然后檢査 自己當(dāng)前的值和Agent知識(shí)表中的值是否匹配,不但要檢查約束還要檢査不同意 表,如果匹配,并且自己是評(píng)價(jià)者且它知道了所有它是評(píng)價(jià)者的約束中的其它 Agent的值,即它得到了部分解就會(huì)發(fā)IM0K消息給裁判Agent,否則什么都不做; 如果不匹配,它就從值域中尋找一個(gè)值來匹配,如果找到了個(gè)新值就替換掉原值, 并發(fā)ok 消息告訴所有比它優(yōu)先級(jí)低的Agent,這時(shí)候如果它也找到了部分解, 也應(yīng)該發(fā)IMOK消息給Controller,如果找不到新值,它就異步回溯,產(chǎn)生一個(gè) 當(dāng)前不能取得值組合,如果這個(gè)NoGood為空,就發(fā)St叩消息給裁判Agent,說 明解不存在,如果不為空,就發(fā)送這條組合的所有值給組合中優(yōu)先級(jí)最低的 Agentc
5、 根據(jù)權(quán)利要求2所述的基于Agent的服務(wù)自主協(xié)商系統(tǒng),其特征是,所 述NoGood消息和ok 消息恰恰相反,NoGood消息只可能是低優(yōu)先級(jí)的Agent發(fā) 給高優(yōu)先級(jí)Agent,并且只有在回溯時(shí)才可能發(fā),表示告訴該Agent取這一系列 值是不可以的,收到nogood消息后,把它放入不同意列表中,成了新的一條 約束。
6、 根據(jù)權(quán)利要求2所述的基于Agent的服務(wù)自主協(xié)商系統(tǒng),其特征是,所 述Stop消息,當(dāng)裁判Agent模塊收到某個(gè)Agent發(fā)給它的停止消息后后,它知 道這個(gè)協(xié)商無解,就會(huì)發(fā)給所有協(xié)商Agent模塊一條Stop消息,Agent收到后 就停止協(xié)商。
7、 根據(jù)權(quán)利要求2所述的基于Agetit的服務(wù)自主協(xié)商系統(tǒng),其特征是,所 述Solution消息,當(dāng)裁判Agent模塊收到Agent發(fā)給它的IM0K消息后,會(huì)檢査 所有的IM0K如果部分解全找到,且全匹配,就會(huì)發(fā)送給所有Agent Solution消 息,并告訴它們各自協(xié)商下來的選擇,Agent收到消息后根據(jù)不同的選擇調(diào)用服 務(wù)模型中不同的服務(wù),協(xié)商完成。
8、 根據(jù)權(quán)利要求1或2或6或7所述的基于Agent的服務(wù)自主協(xié)商系統(tǒng), 其特征是,所述裁判Agent模塊,其計(jì)劃由裁判Agent收到自己或協(xié)商Agent發(fā) 來的消息后進(jìn)行驅(qū)動(dòng),來運(yùn)行一系列動(dòng)作,裁判Agent模塊共會(huì)收到5類消息, 也就是一共有5個(gè)計(jì)劃,分別為Init消息,IM0K消息,Unevaluator消息, Evaluator消息,Stop消息,其中所述Init消息是裁判Agent初始化時(shí)收到系統(tǒng)默認(rèn)發(fā)送的Init消息運(yùn)行的 計(jì)劃,主要完成裁判Agent的初始化工作;所述IMOK消息是裁判Agent收到協(xié)商Agent發(fā)送的IMOK消息后運(yùn)行的計(jì)劃, 主要完成紀(jì)錄Agent的部分解,如所有部分解都發(fā)送,檢查它們是否匹配;所述Evaluator消息是裁判Agent收到協(xié)商Agent發(fā)送的Evaluator消息后 運(yùn)行的計(jì)劃,主要完成紀(jì)錄協(xié)商Agent的相關(guān)信息;所述Unevaluator消息是裁判Agent收到協(xié)商Agent發(fā)送的Unevaluator消 息后運(yùn)行的計(jì)劃,主要完成紀(jì)錄協(xié)商Agent的相關(guān)信息;所述Stop消息是裁判Agent收到St叩消息后運(yùn)行的計(jì)劃,主要完成轉(zhuǎn)發(fā)消 息給所有協(xié)商Agent,讓它們停止協(xié)商。
9、 根據(jù)權(quán)利要求l所述的基于Agent的服務(wù)自主協(xié)商系統(tǒng),其特征是,所 述通信模塊,是基于Java Agent Development Environment中間件的擴(kuò)展,為 協(xié)商Agent與協(xié)商Agent、協(xié)商Agent與裁判Agent之間的通信提供支持,為它 們定義消息基礎(chǔ)設(shè)施。
全文摘要
本發(fā)明公開一種信息技術(shù)領(lǐng)域的基于Agent的服務(wù)自主協(xié)商系統(tǒng),包括協(xié)商Agent模塊、裁判Agent模塊,以及它們之間的通信模塊、決策模塊,其中協(xié)商Agent模塊和裁判Agent模塊之間通過通信模塊這一橋梁進(jìn)行互通消息,同時(shí)協(xié)商Agent模塊和裁判Agent模塊都需要聯(lián)系決策模塊進(jìn)行相關(guān)信息的處理決策,然后協(xié)商Agent模塊把中間處理過程以及相關(guān)的本地決策通過通信模塊告知裁判Agent模塊,裁判Agent模塊得到知識(shí)后運(yùn)用決策模塊進(jìn)行判斷結(jié)果,并通過通信模塊返回給協(xié)商Agent模塊,Agent的每條計(jì)劃都是由收到的消息來驅(qū)動(dòng)的。本發(fā)明模塊清晰、具有高效性、準(zhǔn)確性及安全性的特點(diǎn)。
文檔編號(hào)H04L12/16GK101355584SQ20081020004
公開日2009年1月28日 申請(qǐng)日期2008年9月18日 優(yōu)先權(quán)日2008年9月18日
發(fā)明者傅一峰, 劉賢斐, 健 曹, 童紅霞, 蔡思捷 申請(qǐng)人:上海交通大學(xué)