本站小編為你精心準備了艦船系統設計方法綜述參考范文,愿這些范文能點燃您思維的火花,激發您的寫作靈感。歡迎深入閱讀并收藏。
面向智能體的分析設計
基于角色的智能體設計“面向智能體”是“面向對象”的進一步發展,也是對真實世界更自然,更擬人化的建模。從現實世界中人類、事物和環境出發,認為事物的屬性特別是動態特性在很大程度上受到與其密切相關的人和環境的影響,強調認識、思維與客觀事物及其所處環境之間的相互作用,將影響事物的主觀與客觀特征相結合,抽象為系統中的智能體,作為系統的基本構成單位,通過智能體之間的合作、競爭、協商來實現系統的整體目標。在智能體生命周期中引入角色概念[12],一個智能體至少需要扮演一個角色,但是在其生命周期中,可以根據不同的環境情況扮演不同的角色。角色的實例僅僅存在于同智能體的聯系中,其生命周期開始于智能體類實例化的過程中。當一個智能體根據當前需要和一個角色綁定時,此角色的生命周期就此開始。當環境發生變化時,該智能體又和另外一個角色相結合,則上一個角色的生命周期就此宣告終結,下一個角色的生命周期開始。在智能體的生命周期中,智能體會扮演不同的角色,每個角色都有自己的執行周期,除非發生異常中止。基于角色的概念,給出一個某平臺中的智能體結構:智能體從外界獲取消息;然后根據其目標來規劃選擇一個角色,對外進行反應;相應角色的方法被激發來完成對外界的反應;智能體的屬性和外界決策將會根據行為反饋進行調整。智能體模型的構建1)角色模型通過角色模型可以將系統分解成各個角色模塊以及定義每個智能體的角色劃分。角色劃分描述了一個智能體如何被分解成為子模塊,以及這些子模塊組合在一起的方式。每個角色至少同一個功能相聯系,不同的角色承擔不同的責任。在大多數情況下,智能體同角色之間是一一對應的關系,但是一些緊密相關的角色為了方便和模塊化,可以封裝到一個智能體之中。2)交互模型它描述了智能體和角色之間的交互機制。智能體有一些功能必須通過相互之間的交互才能夠實現。通過交互,智能體能夠獲取信息,然后更新內部狀態(信念,目標和能力),然后調整自身來對外界進行反應。交互機制提供了合適的條件來保障智能體之間的交互,這是協作的基礎。通過交互模型,確定智能體之間的接口,找到和糾正運行時的錯誤和潛在的通信瓶頸。這個模型對于智能體之間的管理是至關重要的。3)狀態模型它提供一種描述智能體內部工作流和角色轉換機制的手段。同時,狀態模型能夠反映出外界事件對智能體內部狀態所產生的影響。要注意,1個交互對應于2個智能體的狀態轉換。每個狀態具有輸入,輸出,前提和結果。智能體的狀態依賴于它的輸入和前提狀態。作為對輸入事件的一個反應,智能體根據當前狀態能夠決定是轉到一個不同的角色還是繼續保持當前狀態。根據這些規則,推導出每個角色的功能和角色類的繼承框架。
案例設計與分析
艦船作戰系統的情景描述通過對一個簡單的試驗來詳細闡明“基于角色的面向智能體”軟件分析方法。案例以“我軍2艘軍艦在追擊敵方1艘軍艦”為背景,分析重點在于艦船作戰系統如何能夠對各種情況做出恰當的反應,各個智能體能夠相互協作,共同完成任務。作戰情景如圖3所示。我軍的2艘軍艦在一片海域中協作追擊敵方的1艘艦艇,二者速度基本相同。在規定的時間內,當我軍艦只與敵艦在同一個格子時,表示追上了敵艦,我軍獲勝;否則算敵艦逃走。在這片海域中行進,需要繞開障礙物,圖中黑色部分代表障礙物,白色部分代表通道,這些信息存儲在代表環境的一個矩陣結構中,每個格子都用一個類型值來表示障礙或者通道。我軍艦只和敵艦在移動位置時,都需要獲取自己周圍方格的類型信息,以判斷能否前進。當我軍艦只與敵艦之間的距離小于4時,會相互發現對方。當我軍的1艘軍艦發現敵艦時,會立即通知另1艘軍艦趕來支援。這是一個明顯的并發系統,我軍與敵人的行動同步進行,又相互制約,可以按照多智能體系統來進行分析建模。每個智能體都有自己的意愿和行為,有的目的相悖,有的目的相同。由于智能體之間的交互具有不確定性,采用面向對象的方法進行分析,艦船作戰系統的結構會變得十分龐雜,難以控制。采用“面向智能體”的分析設計,能夠比較清晰地描述出整個結構框架,而且便于擴展。下面就逐一介紹整個系統的具體分析設計流程。可以很清楚地看出智能體的目標,分解的角色以及每個角色所實現的功能。分離出4個智能體,2個代表我軍艦只;1個代表敵艦,1個代表環境。我軍艦只的目標是抓住敵艦。為了實現目標,必須完成以下任務:能夠偵察到敵艦的蹤跡;同友艦交換信息;發現敵艦后能追上它。為了完成每個任務,分派了3個角色:信息、指揮和武器。信息角色承擔信息獲取和信息處理的任務,負責發現障礙物和敵人的行蹤;指揮角色承擔指揮決策的任務,還負責同友艦進行協商,共同行動,共享信息等;武器角色則承擔消滅敵人的任務,根據當時的具體情況采取不同的作戰策略。交互模型模型目的:描述智能體之間的交互方式,如何獲取自己所需要的信息。通過交互圖可以找出任何潛在的通信瓶頸,運行時可能引起的問題,以便進行改正。如圖5所示,陰影部分代表協調者,方塊代表各個智能體,由用于交互的函數和底層通信原語組成。智能體之間在邏輯層的交互用虛線表示,實際底層通信機制用實線表示,經過交互介質來實現。虛線上的單詞表示通信原語,數字表示交互的先后次序。我軍艦只與環境之間的交互主要包括:InformNayPosition(),通知環境自己的當前位置坐標;GetEnemyPosition(),獲得敵艦的當前位置坐標;GetGridType(),從環境獲得四周方格的類型,判斷是障礙物還是通路,能否前進。敵艦與環境之間的交互采用類似方式。狀態模型展現了我軍艦只智能體隨著具體環境的變化而不斷改變自己的狀態。整個狀態圖由信息角色、指揮角色和武器角色3個角色圖組成,每個角色內部又包含了角色自己的狀態轉換圖。我軍艦只智能體每移動1格作為1個行為周期,在這個周期內,角色轉換可能發生2~3次。首先是信息角色與環境智能體交互,詢問在可觀察范圍內是否有敵艦,如果有,就獲得了最新的敵艦位置;接著就是轉到指揮角色,察看友艦是否知道敵艦的位置,并請求援助;接著由武器角色承擔進攻任務。當我軍艦只智能體處于指揮角色時,就與友艦互換信息,以求獲得最新的敵艦位置信息,如果雙方都沒有,則仍保持原有信息,轉到信息角色。在信息角色階段,先以我軍艦只智能體所在位置為中心,判斷四周8個格子中哪1個沒有障礙,可以前進。然后根據敵艦的方向選擇下一步前進的最佳位置。最后向逼近敵艦的方向移動1格,完成本周期的任務,如果敵艦就在這個格子中,則獲得勝利。智能體模型的實施效果及注意事項通過上述智能體模型的結構可以看出,它符合程序設計中的開放封閉原則(Open-ClosedPrinciple,OCP),既能夠很好地利用已有的種類和對象,做到最大程度上的重用;又具有很好的擴展性,能夠根據需要來添加所需角色,而不會影響軟件系統結構。但這個模型也存在以下缺陷:1)智能體問題求解和智能體BDI狀態之間的關系尚未得到充分表達。具體的應用往往是面向問題求解的,如果問題求解和智能體的BDI狀態不能結合在一起,那么BDI狀態的描述只能是“早熟的數學”,不能為開發人員所接受。2)智能體模型和具體的智能體結構之間沒有明確的映射關系,使實際智能體建造者難以用軟件實現智能體理論者提出的抽象智能體模型。從BDI理論模型出發而形成的軟件模型與解決的軟件開發過程中的具體問題相脫離,具體表現在:由于智能體理論描述和實際系統結構之間缺乏清晰的關系,軟件模型幾乎不能對現有的軟件智能體的設計和實現起到指導和驗證作用,而僅僅成為軟件實現邏輯模塊的一個名詞而已。3)實踐表明,用邏輯語言描述智能體BDI的形式化方法與軟件實現之間存在較大距離。BDI模型本身幾乎不支持軟件開發過程中所遇到的一些根本性問題,如由于并行性和網絡計算等特點帶來的軟件復雜性問題,又如提高軟件粒度重用問題以提高開發效率的問題或軟件功能驗證的可維護性問題。
結語
雖然“面向智能體”的分析方法確實具有“面向對象”所不具備的很多優勢,但是目前并不成熟,難以在實際項目中應用。要改變這種局面,首先要把研究“面向智能體”的分析方法同研究智能體模型本身區分開來。智能體模型本身主要是研究策略選擇方面,是多變的,隨著人們對智能體認識的不斷深入,新的模型會不斷涌現,這就造成基于某種固定智能體模型的軟件分析方法比較僵化,靈活性差,很容易被淘汰。但是智能體在整個軟件體系構架中的位置和作用一般是相對穩定的,可以構建一個智能體在軟件體系結構中的構件模型,作為實際智能體到軟件體系結構的一個映射,這個模型較穩定,即使智能體模型本身不斷變化,但都可以映射到這個構件模型上,避免了面向智能體分析方法的變動。其次,把智能體的研究同人工智能區分開,在實際項目中,并不需要智能體具有多高的智能,或者具備智能體的所有屬性,應該根據項目的實際需要來對智能體的屬性進行取舍,并且要盡可能地利用目前已經比較成熟的各種軟件開發技術,以降低軟件開發成本。本文從基于角色概念和智能體技術出發,對軟件開發進行了模型架構設計,給出模型的層次結構,通過艦船作戰系統協同來實現所設計的模型。同時,對模型如何應用于實際系統作了初步的分析,并就其中出現的問題給出了一些初步的解決方案。正在對以上3個模型進行細化,將面向服務框架(ServiceOrientedArchitecture,SOA)的設計思想應用于系統實現,使系統更易于擴展,增強其互操作性,為實現實際的可用系統做進一步的工作。
作者:王興眾董曉明單位:武漢大學動力與機械學院中國艦船研究設計中心