一種改進(jìn)的移動(dòng)Agent主動(dòng)通信算法

時(shí)間:2022-07-15 05:10:00

導(dǎo)語:一種改進(jìn)的移動(dòng)Agent主動(dòng)通信算法一文來源于網(wǎng)友上傳,不代表本站觀點(diǎn),若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。

一種改進(jìn)的移動(dòng)Agent主動(dòng)通信算法

摘要:通信機(jī)制是Agent技術(shù)研究的重要課題,該文在移動(dòng)Agent主動(dòng)通信算法的基礎(chǔ)上,提出了一種改進(jìn)移動(dòng)agent主動(dòng)通信算法,解決了可靠通信問題,通過設(shè)置時(shí)間變量和超速等待,在Agent高速移動(dòng)的情況下,強(qiáng)迫Agent停止移動(dòng),避免消息長時(shí)間不能傳遞的問題,完成可靠的消息傳遞。

關(guān)鍵詞:移動(dòng)Agent主動(dòng)通信通信失效消息等待

移動(dòng)智能體(mobileAgent,簡稱MA)是當(dāng)前分布計(jì)算領(lǐng)域的研究熱點(diǎn)。它可以在異構(gòu)網(wǎng)絡(luò)上的主機(jī)之間自主遷移,尋找合適的資源,利用與這些資源同處一臺(tái)主機(jī)或子網(wǎng)的優(yōu)勢,處理或使用這些資源,代表用戶完成特定的任務(wù)。通信機(jī)制是移動(dòng)Agent的關(guān)鍵技術(shù)之一,通信的可靠性和效率直接影響到整個(gè)移動(dòng)Agent系統(tǒng)的性能。

1當(dāng)前研究現(xiàn)狀及存在問題

1.1移動(dòng)Agent的通信機(jī)制

許多移動(dòng)Agent支撐系統(tǒng)均提供了移動(dòng)Agent的通信機(jī)制,一是廣播方式,將網(wǎng)絡(luò)看作是以消息發(fā)起者為根結(jié)點(diǎn)的樹型結(jié)構(gòu),廣播方式使得消息可以按某種規(guī)則(如深度優(yōu)先,廣度優(yōu)先)在網(wǎng)絡(luò)中傳遞,直到遍歷所有的葉結(jié)點(diǎn)。二是消息轉(zhuǎn)發(fā)方式,又可細(xì)分為HomeAgent轉(zhuǎn)發(fā)模式和按路徑轉(zhuǎn)發(fā)模式。在HomeAgent轉(zhuǎn)發(fā)模式中,每個(gè)移動(dòng)Agent對(duì)應(yīng)一個(gè)駐留在初始化結(jié)點(diǎn)上的HomeAgent,用于定位移動(dòng)Agent的當(dāng)前位置[1]。在按路徑轉(zhuǎn)發(fā)模式中移動(dòng)Agent途經(jīng)的每個(gè)結(jié)點(diǎn)都保留有其下一目標(biāo)結(jié)點(diǎn)的位置信息,所有需要傳遞給MA的消息從初始結(jié)點(diǎn)開始按這條路徑傳遞下去,直到移動(dòng)Agent能真正接收到這些信息[2]。另外,還有一些移動(dòng)智能體支撐系統(tǒng)只提供了通用的消息傳遞機(jī)制,而將由于移動(dòng)Agent移動(dòng)所引發(fā)的問題留給應(yīng)用開發(fā)者處理。

1.2通信失效問題

在移動(dòng)Agent的通信過程中,經(jīng)常會(huì)發(fā)生如圖1所示的情況:AgentA向Host1上的AgentB發(fā)送消息,但在傳輸過程中,AgentB從Host1遷移到了Host2,因而,當(dāng)消息到達(dá)Host1時(shí),已經(jīng)無法找到消息的接受者了,我們把這種在消息傳輸過程中目標(biāo)Agent發(fā)生物理位置的變化,從而導(dǎo)致消息不能到達(dá)目標(biāo)Agent的問題稱為通信失效問題[4]。

現(xiàn)在解決通信失效問題主要都是采用集中式的尋址方式,即基于Home的尋址機(jī)制,用Home緩存所有消息,再轉(zhuǎn)發(fā)給Agent,為了不產(chǎn)生沖突,要求Agent在遷移前必須向Home提出請求[2]。但是這種算法中Home負(fù)擔(dān)過重,存在瓶頸問題。當(dāng)然,也可以采用指針式尋址,采用同步通信的方法從結(jié)構(gòu)上避免了通信失效的發(fā)生[3]。

2主動(dòng)通信算法

2.1主動(dòng)通信算法的通信過程

主動(dòng)通信算法的主要過程:AgentB從“出生地"Place2移動(dòng)到Place3(圖2中的1);B到達(dá)Place3以后,向其Home報(bào)告新位置(圖2中的2);發(fā)送方A將要發(fā)送的消息發(fā)送給當(dāng)前Place的Communicator(圖2中的3);Communicator通知接收方B的Home(圖2中的4);Home通知B到Place1取信息(圖2中的5);B主動(dòng)聯(lián)系Place1的Communicator并取回信息(圖2中的6)。接收方的地址對(duì)于發(fā)送方是透明的,發(fā)送方在發(fā)送信息的時(shí)候只需指定接收者的名字,而不必關(guān)心接收方在哪里或是否正在移動(dòng)。發(fā)送方將消息發(fā)送給本地的Communicator以后,即認(rèn)為消息已經(jīng)正確地發(fā)送到接收方,可以繼續(xù)執(zhí)行其他操作[5]。

2.2消息等待問題

主動(dòng)通信屬于“自由移動(dòng)通信”方式,發(fā)送方和接受方在通信過程中都可以自由移動(dòng),且不會(huì)影響通信的可靠性,當(dāng)接受方從發(fā)送方的Communicator的消息隊(duì)列中讀取消息時(shí),接受方如果要發(fā)生移動(dòng),會(huì)觸發(fā)一個(gè)OnLeave操作,Agent離開當(dāng)前位置,發(fā)送方接受一個(gè)接受方的中斷請求,此時(shí)有兩種情況,發(fā)送方的消息隊(duì)列中消息均被取走或者仍有消息未被讀取,當(dāng)發(fā)生后一種情況時(shí),接受方到達(dá)新位置后,再從其Home讀取通知,繼續(xù)讀取剩余消息。但是,如果Agent移動(dòng)過快,可能會(huì)出現(xiàn)下面的情況:Agent讀取消息時(shí),發(fā)生移動(dòng)產(chǎn)生中斷,接受方到達(dá)新位置后繼續(xù)從Home讀取通知,取走剩余消息,消息隊(duì)列還未為空,發(fā)送方Agent又有移動(dòng)中斷,那么消息隊(duì)列中可能會(huì)有一部分消息長時(shí)間的不被讀取。

2.3變量的加入

為了避免2.2中出現(xiàn)的情況,我們設(shè)置了一個(gè)時(shí)間變量和Agent超速等待,來避免有消息長時(shí)間不被發(fā)送。我們對(duì)Communicator中的每個(gè)消息設(shè)一個(gè)時(shí)間變量Wtime,當(dāng)Wtime達(dá)到我們設(shè)定的一個(gè)固定值T0后,我們認(rèn)為它等待時(shí)間過長,對(duì)它進(jìn)行標(biāo)記。Agent每移動(dòng)到一個(gè)節(jié)點(diǎn),都要計(jì)算自己的移動(dòng)速率V(V為曾經(jīng)到達(dá)的節(jié)點(diǎn)個(gè)數(shù)/(當(dāng)前時(shí)間.出生時(shí)間)或者現(xiàn)在時(shí)刻以前的一段時(shí)間內(nèi)到達(dá)的節(jié)點(diǎn)個(gè)數(shù)/時(shí)間跨度),當(dāng)V超過給定的最高速率V0時(shí),Agent必須與Home建立連接,獲得保存在Home上的發(fā)送方通知,主動(dòng)去取空接受方Communicator中的等待時(shí)間過長的消息。其通信過程和主動(dòng)通信算法大致相同,但在發(fā)送方A將要發(fā)送的消息發(fā)送給當(dāng)前Place的Communicator(圖2中的3)時(shí),會(huì)觸發(fā)該消息的Wtime變量,AgentB從“出生地"Place2移動(dòng)到Place3(圖2中的1)的時(shí)候,Agent會(huì)計(jì)算它的移動(dòng)速率V值,并與V0比較,當(dāng)V超過給定的最高速率V0時(shí),Agent被強(qiáng)制與Home建立連接,獲得保存在Home上的發(fā)送方通知,主動(dòng)去取空接受方Communicator中的Wtime值超過我們設(shè)定的T0值的消息。

3通信過程的算法實(shí)現(xiàn)

Communicator與通信有關(guān)的操作:

ReceiveMessage(msg){/*Communicator收到A發(fā)送的消息時(shí),該操作被觸發(fā)*/

將msg存入Queue;初始化Wtime;}

Interrupt(){IF(Queue不空){向B的Home發(fā)送“新消息"通知;}

ELSEQueue.interrupt=false;}

Home與通信有關(guān)的操作:

ReceiveMessage(msg){將“新消息"通知msg存入消息隊(duì)列Queue;

Updata(){IF(Queue不空)haveMessage=true;

ELSEhaveMessage=flase;}

移動(dòng)Agent與通信有關(guān)的操作:

OnArrive(){/*每當(dāng)移動(dòng)Agent到達(dá)新位置時(shí),該操作被觸發(fā)*/

Home2>Updata();

IF(haveMessage=true)發(fā)送“消息到達(dá)"通知給自己;}

GetMessagefromHome(){/*Agent接收到“消息到達(dá)”通知時(shí),觸發(fā)該操作*/

While(Home2>Queue不空){從Home2>Queue讀取一個(gè)通知msg,存入自身的消息隊(duì)列Queue;};

GetLongMessagefromHome(){計(jì)算Agent移動(dòng)速率V;

WHILE(V>V0∧Wtime>T0)繼續(xù)從Home2>Queue讀取一個(gè)通知msg;}

SendMessage(msg){向本地的Communicator發(fā)送msg;}

OnLeave(){通知本地的Communicator;}

4算法分析及應(yīng)用

改進(jìn)的算法同原算法一樣,保證了通信的可靠性,移動(dòng)A-gent的自由移動(dòng)性雖然有了一定的限制,但是保證了不會(huì)有消息長時(shí)間不能到達(dá)目標(biāo),同時(shí)時(shí)間變量和Agent超速等待的設(shè)置,避免了消息長時(shí)間等待問題的發(fā)生,同樣增加了系統(tǒng)的可靠性。

該算法在Agent之間展開協(xié)作通信,使若干個(gè)移動(dòng)Agent可以在網(wǎng)絡(luò)中通過可靠通信協(xié)作完成某一項(xiàng)任務(wù),可以應(yīng)用于面向應(yīng)用領(lǐng)域的協(xié)同模式的研究中,提供一種統(tǒng)一的、靈活的分布式計(jì)算,使用移動(dòng)Agent模型搭建各種分布式計(jì)算平臺(tái)和應(yīng)用,在軟件構(gòu)件技術(shù)和高性能計(jì)算環(huán)境方面有十分重要的意義,本算法有助于完善移動(dòng)智能體支撐環(huán)境,為開發(fā)基于MA的分布式應(yīng)用提供基礎(chǔ)。

5結(jié)束語

本文分析了移動(dòng)Agent的可靠性通信問題,在主動(dòng)通信算法的基礎(chǔ)上,針對(duì)消息等待問題進(jìn)行了改進(jìn),提出了一個(gè)能夠保證移動(dòng)Agent之間可靠、高效地進(jìn)行通信的通信機(jī)制,該算法有以下特點(diǎn):(1)如果底層網(wǎng)絡(luò)可靠通信,則主動(dòng)通信機(jī)制能保證消息的可靠提交;(2)如果底層網(wǎng)絡(luò)可靠通信,主動(dòng)通信機(jī)制承諾消息提交的exactly2once語義。但該算法對(duì)移動(dòng)agent間的自由移動(dòng)有一定的限制,還有待我們的進(jìn)一步研究。

參考文獻(xiàn):

[1]馮新宇,陶先平,呂建,等.一種改進(jìn)的移動(dòng)Agent通信算法[J].計(jì)算機(jī)學(xué)報(bào),2005,25(4):357.

[2]周競揚(yáng),陳濤略,呂建,等.一種高效可靠的移動(dòng)Agent間通信機(jī)制[J].軟件學(xué)報(bào),2003,14(8):1470.

[3]吳兆勝,姜峰,謝俊元.一種新的移動(dòng)Agent的可靠通信算法[J].計(jì)算機(jī)應(yīng)用研究,2004,21(1):219.

[4]吳剛,王懷民,等.一種移動(dòng)智能體的位置管理和可靠通信算法[J].軟件學(xué)報(bào),2002,13(2):269.

[5]楊博,劉大有,楊鯤,等.移動(dòng)Agent系統(tǒng)的主動(dòng)通信機(jī)制[J].軟件學(xué)報(bào),2003,14(7):1338.