專利名稱::集裝箱碼頭單元化仿真平臺的制作方法
技術領域:
:本發明涉及集裝箱碼頭作業管理,具體是一種集裝箱碼頭仿真平臺。
背景技術:
:隨著離散事件系統仿真理論的完善和計算機技術的發展,以及集裝箱碼頭的不斷發展,計算機仿真技術越來越多的應用到集裝箱碼頭系統中。集裝箱碼頭物流系統是一個復雜的離散事件動態系統,幾乎涉及到物流運輸學科里各種復雜的問題。在集裝箱碼頭內部,有著前沿岸吊裝卸作業、拖車交通運輸、場吊集裝箱裝卸、堆場集裝箱堆存、閘口拖車進出等系統互相聯系,共同作業;在集裝箱碼頭外部,與海關、船舶、鐵路、公路等系統有著復雜的關系。現有的仿真軟件和傳統的仿真建模方法在對集裝箱碼頭這類復雜系統建模時存在缺點和不足。表現在以下方面(1)難以解決復雜系統的仿真復雜系統的規模龐大,系統內部關系復雜,使用現有仿真軟件和傳統建模方法建立的模型也會變得非常復雜龐大。另外龐大的模型在運行時對計算機要求也非常高,尤其是現在的3D仿真模型,導致這樣的模型難以運行。(2)建模不夠快速如今的項目開發大多是以團隊分工合作完成的,但是大多數仿真軟件的建模都是集中在一臺計算機上完成的,團隊成員難以分工作業。因此建模速度比較慢。(3)模型運行方式不夠靈活傳統的建模方法所建立的模型只能以固定的方式運行。對于復雜的系統,有時候可能會關注系統局部的問題,這時傳統的建模方法必須針對這些局部問題重新建模。這樣增加了成本,降低了效率。(4)缺乏重用性傳統建模方法建立的仿真模型一般都是針對于一個系統建立的,當系統有所改變或希望應用于其他系統時,這些已經建立的模型不能被重新利用。因此模型缺乏可重用性。(5)難以修改和擴展傳統建模方法建立的復雜模型,由于其規模龐大,關系復雜,所以對模型的修改會變得十分困難。同時擴展模型的時候,對某處的修改可能會影響到模型的其他地方。因此本發明提出了單元化仿真建模方法,并建立了集裝箱碼頭單元化仿真模型。
發明內容本發明的目的是提供一種運行方式靈活、速度快、成本低、易于修改和擴展的集裝箱碼頭單元化仿真平臺。為了實現上述目的,本發明集裝箱碼頭單元化仿真平臺的仿真模型包括若干單元模型,若干單元模型分別安裝于不同的計算機中,所有計算機通過網絡連接;各單元模型單獨工作,或者通過網絡進行單元模型之間信息的交互、實現各單元模型之間協同工作。進一步,上述仿真平臺所包含的若干單元模型可以是拖車運輸單元模型,該單元模型包括集裝箱碼頭內部所有拖車、系統外部的拖車和交通設施,用于研究集裝箱碼頭內部拖車運行的路線、拖車數量以及拖車調度策略對拖車使用率的影響;以及,下列三種單元^^莫型中的至少一種前沿岸吊單元模型,該單元模型包括集裝箱碼頭的泊位、前沿、岸吊和前沿裝卸拖車,用于研究裝卸船配載、岸吊的調度策略和集裝箱裝卸順序對裝卸船作業效率的影響;場吊作業單元模型,該單元模型包括集裝箱碼頭內部所有場吊及堆場布局,用于研究場吊調度策略、場吊數量以及堆場計劃對堆場作業效率的影響;閘口作業單元模型,該單元模型包括集裝箱碼頭閘口部分,用于研究不同時段閘口數量對閘口作業效率的影響。上述仿真平臺所包含的若干單元模型也可以是拖車運輸單元模型,該單元模型包括集裝箱碼頭內部所有拖車、系統外部的拖車和交通設施,用于研究集裝箱碼頭內部拖車運行的路線、拖車數量以及拖車調度策略對拖車使用率的影響;場吊作業單元模型,該單元模型包括集裝箱碼頭內部所有場吊及堆場布局,用于研究場吊調度策略、場吊數量以及堆場計劃對堆場作業效率的影響;堆場顯示單元模型,該單元模型包括集裝箱碼頭內部所有堆場,用于直觀的顯示堆場狀態和發現堆場存在的問題;以及,下列兩種單元模型中的至少一種前沿岸吊單元模型,該單元模型包括集裝箱碼頭的泊位、前沿、岸吊和前沿裝卸拖車,用于研究裝卸船配載、岸吊的調度策略和集裝箱裝卸順序對裝卸船作業效率的影響;閘口作業單元模型,該單元模型包括集裝箱碼頭閘口部分,用于研究不同時段閘口數量對閘口作業效率的影響。上述仿真平臺所包含的若干單元模型還可以是前沿岸吊單元模型,該單元模型包括集裝箱碼頭的泊位、前沿、岸吊和前沿裝卸拖車,用于研究裝卸船配載、岸吊的調度策略和集裝箱裝卸順序對裝卸船作業效率的影響;拖車運輸單元模型,該單元模型包括集裝箱碼頭內部所有拖車、系統外部的拖車和交通設施,用于研究集裝箱碼頭內部拖車運行的路線、拖車數量以及拖車調度策略對拖車使用率的影響;場吊作業單元模型,該單元模型包括集裝箱碼頭內部所有場吊及堆場布局,用于研究場吊調度策略、場吊數量以及堆場計劃對堆場作業效率的影響;堆場顯示單元模型,該單元模型包括集裝箱碼頭內部所有堆場,用于直觀的顯示堆場狀態和發現堆場存在的問題;以及,閘口作業單元模型,該單元模型包括集裝箱碼頭閘口部分,用于研究不同時段閘口數量對閘口作業效率的影響。上述各單元模型均設置單元模型接口,單元模型接口包括消息格式的定義,它定義了傳輸消息的格式;任務翻譯模塊,用于根據消息格式的定義,將單元模型中的任務轉換成能在網絡中傳輸的消息、以及將來自網絡的消息轉換成能夠被單元模型識別的任務;和,消息發送與接收模塊,該模塊使用網絡傳輸技術,在單元模型接口之間進行消息的交互。本發明仿真平臺將復雜的集裝箱碼頭系統劃分為若干個單元模型,這些單元模型同時在不同的計算機上運行,通過計算機網絡在單元模型的接口間傳遞任務,構成一個分布式仿真環境,大大提高了運行速度,同時降低了對計算機性能的要求,降低了仿真平臺的成本。各單元模型可以獨立運行,也可以協同完成仿真作業,運行方式靈活。由于將規模龐大、關系復雜的模型化分為多個單元模型,簡化了模型,使仿真平臺易于修改和護展。而且這些單元模型也可以應用于其他的單元化仿真系統,實現了仿真資源的重復利用。由于各個單元模型是單獨的設備,所以這些單元模型可以使用不同的仿真平臺開發,因此可以實現不同仿真平臺的協同作業。圖1為本實施例集裝箱碼頭單元化仿真平臺的仿真模型的總體結構框圖;圖2為其前沿岸吊單元模型主視圖,圖中為兩臺岸吊和拖車作業時的情況;圖3為其拖車運輸單元模型主視圖,圖中為兩拖車在前沿和堆場運輸集裝箱時的情況;圖4為其場吊作業單元模型主視圖,圖中為場吊和拖車作業的情況;圖5為其閘口作業單元模型主視圖,圖中為拖車在閘口通道排隊時的情況;圖6為其堆場顯示單元模型界面;圖7為其前沿岸吊單元模型的岸吊作業參數設置界面;圖8為其單元模型接口的結構圖;圖9為消息發送與接收模塊工作流程圖。具體實施例方式參照圖1,本實施例集裝箱碼頭單元化仿真平臺的仿真模型包括前沿岸吊單元模型1、拖車運輸單元模型2、場吊作業單元模型3、堆場顯示單元模型4和閘口作業單元模型5,五個單元模型分別模擬了集裝箱碼頭的前沿岸吊裝卸作業、拖車交通運輸、場吊集裝箱裝卸、堆場集裝箱堆存、閘口拖車進出五個部分的功能,它們分別安裝于不同的計算機中,所有計算機通過網絡連接;各單元模型單獨工作,或者通過網絡進行單元模型之間信息的交互、實現各單元模型之間協同工作,完成集裝箱碼頭的仿真。單元模型之間交互的信息為一個單元模型向另一個單元模型下達的任務。圖1中箭頭所指方向為兩個單元模型之間信息傳輸方向,箭頭上的內容為傳輸的信息。如前沿岸吊單元模型1卸船時,會向拖車運輸單元模型2發送"發車"的任務,拖車運輸單元模型2收到之后將派拖車駛向前沿岸吊單元模型1交通的起點,到達時候向前沿岸吊單元模型1發送"車到達"的任務,前沿岸吊單元模型1在交通起點駛出拖車,岸吊完成卸船作業。上述五個單元模型中,堆場顯示單元模型4只需要顯示堆場中集裝箱的位置與狀態,不需要仿真的功能,所以該單元模型是用數據庫系統(如Delphi)建立的圖形化界面;其他四個單元模型都是采用仿真軟件來建立的,可以在四臺計算機上對四個單元模型同時進行建模,以加快建模速度,四個單元模型可以采用相同的仿真軟件來建立,也可以根據模型的特點采用不同的仿真軟件來建立。本實施例中前沿岸吊單元模型1、拖車運輸單元模型2、場吊作業單元模型3、閘口作業單元模型5均采用Flexsim仿真軟件建立,其效果圖如圖2-5所示,堆場顯示單元;f莫型4采用Delphi數據庫系統建立圖形化界面,其效果圖如圖6所示。下面對本實施例中上述五個單元模型的設計進行詳細說明1前沿岸吊單元模型11.1功能及仿真目標該單元模型用于模擬集裝箱碼頭前沿區域內的岸吊、拖車等設備的裝卸船作業,研究裝卸船配載、岸吊的調度策略和集裝箱裝卸順序對裝卸船作業效率的影響。仿真目標包括裝卸船作業時間、岸吊利用率、岸吊數量優化。1.2組成部分該單元模型主要由船舶、岸吊、拖車、交通和其他靜態景物五個部分組成。它們分別包括了以下的部件(1)船舶部分a)船只船舶的外形構造,通過導入外部3D模型實現。b)船艙貨位堆積集裝箱的貨位,在模型中用rank表現。通過rank的參數以及屬性設置,控制集裝箱在船艙的位置擺放、卸船時間等等。(2)岸吊部分岸吊是裝卸作業的岸邊操作工具,其裝卸船作業由以下三部分組成a)大車負責岸吊沿泊位方向的運動。b)小車負責岸吊裝卸集裝箱時在垂直于泊位方向的運動,小車是建立在大車之上的。c)吊具負責豎直方向上抓取或放置集裝箱的運動',吊具是建立在小車之上的。(3)拖車部分a)拖車在前沿部分完成集裝箱運輸的作業。b)拖車任務分配器用于對拖車分配作業任務。(4)交通部分a)結點交通路徑的控制點,可以設置拖車在行進中的某些參數,包括行駛路線,停止或運行等狀態的改變。b)路徑拖車運行的路線。(5)靜態景物部分包括陸地、海洋、天空等靜態景物,通過導入外部3D模型實現,用于改善模型的美觀性。1.3參數設置參數設置包括兩部分,一部分是仿真模型的輸入參數,如集裝箱到達碼頭的時間分布;另一部分是仿真模型的運行參數,如拖車空載和滿載的速度。單元化仿真中的運行參數和傳統仿真模型基本相同,但是輸入參數有兩種實現方式一種是單元模型單獨運行時,和傳統仿真相同;另一種是各單元模型聯合作業時,將其他單元模型的任務作為輸入參數。運行參數一般根據系統實際參數來設置,包括以下幾個方面(l)岸吊的作業參數(如圖7所示)大車、小車、吊具的運行速度,作業順序,吊具在非工作時所處的位置。(2)拖車的作業參數空載的運行速度,滿載的運行速度。(3)交通參數路徑設置,前沿到堆場的路徑距離。輸入參數包括(1)卸船操作中船舶上集裝箱到達時間分布因為此處不存在和其他單元模型的任務交互,所以獨立運行和聯合運行時使用相同的設置方法使用歷史數據或者根據歷史數據擬和的分布函數。(2)裝船操作中從堆場到達的集裝箱時間分布單獨運行時,使用歷史數據或者根據歷史數據擬和的分布函數;聯合運行時,在收到拖車運輸單元模型的"車到達"任務時生成裝船集裝箱。2拖車運輸單元模型22.l功能及仿真目標該單元模型用于模擬集裝箱碼頭內部拖車的運行情況,考察不同的調度策略對拖車作業效率的影響。仿真目標包括拖車作業周期、拖車利用率、拖車數量優化。2.2組成部分該單元模型主要由拖車、交通、集裝箱存放區和靜態景物四個部分組成。它們分別包括了以下的部件(1)拖車部分a)拖車在前沿、堆場以及閘口之間完成集裝箱運輸的作業。b)拖車任務分配器用于對拖車分配作業任務,可以在此設置不同的拖車調度策略。(2)交通部分a)結點交通路徑的控制點,可以設置拖車在行進中的某些參數,包括行駛路線,停止或運行等狀態的改變。b)路徑拖車運行的路線。(3)集裝箱存放區拖車運輸單元模型中的船舶、堆場中不存放全部的集裝箱,只是根據實際模型需要,在船舶、堆場的位置存放一些臨時的集裝箱。這些存放集裝箱的實體為Rack或Queue。(4)靜態景物部分包括船舶、陸地、海洋、天空等靜態景物,通過導入外部3D模型實現,用于改善模型的美觀性。2.3參數設置運行參數一般根據系統實際參數來設置,包括以下幾個方面(1)拖車的作業參數空載的運行速度,滿載的運行速度。(2)交通參數路徑設置,前沿到堆場的路徑距離。(3)拖車作業時間拖車在前沿作業時間,拖車在堆場作業時間,拖車在閘口作業時間。單獨運行時,以上拖車作業時間使用歷史數據或者根據歷史數據擬和的分布函數;聯合運行時,拖車到達指定位置自動停止,再收到相應單元模型發送的任務時繼續作業。輸入參數包括(1)前沿集裝箱到達時間分布指前沿船舶卸船的集裝箱。單獨運行時,使用歷史數據或者根據歷史數據擬和的分布函數;聯合運行時,在收到前沿岸吊單元模型的"車離開"任務時生成卸船集裝箱。(2)堆場集裝箱到達時間分布指堆場提箱、裝船或倒箱的集裝箱。單獨運行時,使用歷史數據或者根據歷史數據擬和的分布函數;聯合運行時,在收到場吊作業單元模型的"車離開"任務時生成提箱、裝船或倒箱的集裝箱。(3)閘口集裝箱到達時間分布指閘口進堆場的集裝箱。單獨運行時,使用歷史數據或者根據歷史數據擬和的分布函數;聯合運行時,在收到閘口作業單元模型的"車到達,,任務時生成進堆場的集裝箱。3場吊作業單元模型33.1功能及仿真目標該單元模型用于模擬集裝箱碼頭堆場區域內的場吊、拖車等設備的裝卸集裝箱作業運行情況,考察不同的場吊調度策略、堆場計劃對場吊利用率和集裝箱裝卸效率的影響。仿真目標包括集裝箱裝卸時間、場吊的利用率、場吊數量優化。3.2組成部分該單元模型主要由場吊、堆場、拖車、交通和其他靜態景物五個部分組成。它們分別包括了以下的部件(1)場吊部分場吊是堆場內集裝箱裝卸的主要設備,其裝卸作業由以下三部分組成a)大車負責平行堆場方向的運動,可以3爭堆場運動。b)小車負責場吊裝卸集裝箱時在垂直于堆場方向的運動,小車是建立在大車之上的。c)吊具負責豎直方向上抓取或放置集裝箱的運動,吊具是建立在小車之上的。(2)堆場部分堆積集裝箱的貨位,在模型中用rank表現。但堆場中不存放全部的集裝箱,只起到暫存和對場吊作業位置的標識的作用。(3)拖車部分a)拖車在堆場部分完成集裝箱運輸的作業。b)拖車任務分配器用于對拖車分配作業任務。(4)交通部分a)結點交通路徑的控制點,可以設置拖車在行進中的某些參數,包括行駛路線,停止或運行等狀態的改變。b)路徑拖車運行的路線。(5)靜態景物部分包括陸地、海洋、天空等靜態景物,通過導入外部3D模型實現,用于改善模型的美觀性。3.3參數設置運行參數一般根據系統實際參數來設置,包括以下幾個方面(1)場吊的作業參數大車、小車、吊具的運行速度,作業順序,吊具在非工作時所處的位置。(2)拖車的作業參數空載的運行速度,滿載的運行速度。(3)交通參數路徑設置,堆場到閘口、前沿的路徑距離。輸入參數包括(1)收箱到達時間分布指前沿卸船、閘口進入和其他堆場倒箱的集裝箱。單獨運行時,使用歷史數據或者根據歷史數據擬和的分布函數;聯合運行時,在收到拖車運輸單元模型的"車到達"任務時生成收箱集裝箱。(2)提箱到達時間分布指場吊從堆場抓取的集裝箱。單獨運行時,使用歷史數據或者根據歷史數據擬和的分布函數;聯合運行時,在收到堆場顯示單元模型的"出貨,'任務時在堆場中生成提箱集裝箱。4堆場顯示單元模型4該單元模型用于顯示堆場內集裝箱的分布和狀態,使用戶可以直觀的觀察到堆場情況。因此該單元模型不是用于仿真,在開發中沒用使用Flexsim,而是使用Delphi開發圖形化界面,結合后臺數據庫來實現。該單元模型具有三種視圖,分別為沿堆場X、Y、Z軸的截面,用戶可以通過界面上的單選框來切換視圖。在每一種視圖用戶可以看到指定堆場的指定位置的截面情況。視圖中分為5個帶有坐標的區域,代表了堆場的截面。這些區域是由按坐標排列的方框組成的,區域的下方有參數設置輸入框,用戶可以調整該區域顯示的堆場和位置。區域中以帶有顏色的方塊代表集裝箱,不同的顏色代表了不同的狀態,如藍色代表"EMPTYOUT"即提空箱,黃色代表"FULLOUT"即提重箱等等。用戶通過集裝箱的顏色可以直觀的了解到堆場所處的狀態。實現該單元模型功能的原理比較簡單,后臺數據庫(SQLServer)記錄了堆場中集裝箱的位置和狀態,程序通過掃描后臺數據庫表,就可以根據數據庫記錄,將界面中相應位置的方框改變為集裝箱狀態所代表的顏色。表1為堆場顯示單元模型后臺數據庫表示例。<table>tableseeoriginaldocumentpage12</column></row><table>仿真模型運行之前,堆場中一般存有一部分集裝箱,因此堆場顯示單元模型的數據需要進行初始化,代表系統運行之前存在的集裝箱。該初始化數據可以使用港口已有數據,或者使用用戶自己定義的數據。不過該初始化數據必須要與指定的堆場計劃相匹配。5閘口作業單元模型55.1功能及仿真目標該單元模型用于模擬不同時段閘口數量對閘口作業效率的影響。仿真目標包括拖車平均排隊長度、拖車平均排隊時間、閘口通道數量優化。5.2組成部分該單元模型主要由閘口通道、拖車、交通和其他靜態景物五個部分組成。它們分別包括了以下的部件(1)閘口通道部分由處理器組成,以處理item時間模擬拖車通過閘口的時間。(2)拖車部分a)拖車在閘口部分完成集裝箱運輸,并在閘口通道排隊。b)拖車任務分配器用于對拖車分配作業任務。(3)交通部分a)結點交通路徑的控制點,可以設置拖車在行進中的某些參數,包括行駛路線,停止或運行等狀態的改變。其中第一個節點(離堆場一側最遠的節點)為閘口交通起點,最后一個(離堆場一側最近的節點)為閘口交通終點。b)路徑拖車運行的路線。(4)靜態景物部分包括陸地、天空等靜態景物,通過導入外部3D模型實現,用于改善模型的美觀性。5.3參數設置運行參數一般根據系統實際參數來設置,包括以下幾個方面(1)閘口通道檢查時間進入閘口時的檢查時間,離開閘口時的纟企查時間。(2)拖車的作業參數空載的運行速度,滿載的運行速度。(3)交通參數路徑設置,閘口到堆場的路徑距離。輸入參數包括(1)外拖到達閘口的時間分布因為此處不存在和其他單元模型的任務交互,所以獨立運行和聯合運行時使用相同的設置方法使用歷史數據或者根據歷史數據擬和的分布函數。(2)外拖在堆場作業時間的分布單獨運行時,使用歷史數據或者根據歷史數據擬和的分布函數;聯合運行時,在收到拖車運輸單元模型的"車離開"任務時表示外拖在堆場作業時間到達。上述各單元模型均設有單元模型接口,定義了統一的數據格式,使這些單元模型可以交互數據,達到協同工作的目的。單元模型接口承擔著數據傳輸、信息翻譯、仿真時間控制、單元模型動作協調等作用,是實現單元化仿真的至關重要的因素。參照圖8,單元模型接口包括消息格式的定義,它定義了傳輸消息的格式;任務翻譯模塊,用于根據消息格式的定義,將單元模型中的任務轉換成能在網絡中傳輸的消息、以及將來自網絡的消息轉換成能夠被單元模型識別的任務;和,消息發送與接收模塊,該模塊使用特定的網絡傳輸技術,在單元模型接口之間進行消息的交互。本實施例中采用Sockets通訊技術進行單元模型接口設計。Sockets通訊技術可以方便的在局域網內的兩臺計算機之間進行數據通訊,而且Flexsim對Sockets通訊技術有較好的支持。下面對本實施例中單元模型接口的設計作詳細說明1消息格式的定義Sockets通訊技術發送是使用ASCII編碼的字符串,我們可以用特殊的符號把一段字符串隔開,賦予不同字段不同的含義。本系統中釆用五段字符串表示一個消息,用逗號作為分隔符,最后一個字符為".",例如"qc-ts,ta,10234,1,0.",其中每個字符串為一個字段。消息的第一個字段表明了發送和接收消息的單元模型。因為同一個單元模型可能同時接收到多個單元模型發送的消息,所以在消息中注明發送方和接收方有利于對消息的處理和驗證。消息的第二個字段指明了任務的類型,即用于區分兩個單元模型間交互的不同任務,對于不同任務類型的消息,任務翻譯單元模型會有不同的處理。需要指出的是,識別任務格式的時候,不能只看任務類型,還需要看發送與接收單元模型。因為不同單元模型間發送和接收的消息,即使是相同類型,根據實際需求,其格式也是可以有變化的。消息的后三個字段為任務的參數,即傳遞的數據。不同類型的任務需要的參數的數量也有所不同,本系統消息格式定義過程中,需要的參數數量的最大值為3。因此為了格式的統一,將參數的字段定義為3個。參數不足3個的任務,不足部分用"0"補齊。表2列出了前沿岸吊單元模型和拖車運輸單元模型之間的消息格式。表中雙線間的兩行為一組,第一行為消息的具體內容,第二行為對該消息各個字段的解釋。表2消息格式的定義<table>tableseeoriginaldocumentpage14</column></row><table>2任務翻譯模塊Flexsim中的事件是通過觸發器來觸發的,大部分的實體都具有觸發器。比如Rack具有"0nEntry"、"0nExit"等觸發器。Flexsira基本上每個實體都有一個"OnMessage"觸發器,即實體收到消息時執行的觸發器。與該觸發器對應,有一條sendmessage命令用于向某實體發送消息,格式為sendmessage(objtoobject,objfromobject,[numpari,numpar2,numpar3])本接口中的任務翻i奪才莫塊代碼就存在于一個名為"socketcontroller"實體(通信控制實體)的OnMessage觸發器里。當模型需要向其他單元模型發送任務時,執行sendmessage命令向"socketcontroller"實體發送消息,消息的第一個參凄丈(#為首參數)用于區分任務類型,其余的兩個參數為任務使用的參數。比如,命令sendmessage(socketcontroller,current,7,tonum(loaditem),O)表示是從當前實體向"socketcontroller"實體發送消息,消息的類型為"7",參數為某集裝箱的代碼。"socketcontroller"實體收到這條消息后就會執行觸發器內的代碼,代碼是由一系列的If語句組成,用于判斷收到消息的任務類型,即根據消息的第一個參數的數值,執行不同的代碼。因此在該模塊設計時就需要對該參數值的含義進行定義。比如,拖車模塊中首參數值為"7"對應著ts發向qc的車到達任務。"socketcontroller"實體OnMessage觸發器中將該任務請求轉換為字符串的代碼如下if(msgparam(1)==7)〃sendasocketmessagetoresumethestoppedobjectfsnode*useditem=tonode(ms,ram(2)),stringsendstr;stringqc-itemid=numtostri「ig{getlabelnum(iJseditem,"qc-itemid"),Ci,Ci>;stringts-tid=riumtostring(getlabelnurn(iJseditem,''ts-tid''),Ci,Ci);sendstr="ts-qc,"+"t;3,"+qc-itemid+","十ts-tid+".";上述代碼中,最后的"sendstr"就是可以通過sockets發送的消息字符串。任務翻譯模塊中將任務翻譯為字符串部分就是由一系列這樣的if判斷語句組成,當然其數量要根據該模塊發送的任務種類決定。可以將以上過程歸納為以下步驟1.定義Message首參數含義,建立與任務類型的對應關系;2.為每一首參數建立以首參數值為判斷條件的If語句,并編寫與首參數相對應的任務翻譯代碼,置于通信控制實體的OnMessage觸發器中;3.模型在需要發送任務請求的部分執行sendmessage命令,使用和該任務類型對應的首參數值,并將必要的任務參數作為第二、第三參數;4.通信控制實體的OnMessage觸發器被觸發,執行相應的If語句,得到轉換后的字符串。-任務翻譯模塊不僅需要將發送給其他單元模型的任務轉換為字符串,還需要將收到的字符串按照消息格式轉換為單元模型可以識別的任務。該過程與之上步驟大同小異,只是順序不同。首先取得消息字符串各個字段的值,可以通過sscanf語句來實現。該語句將字符串的六個字段分別存放于變量sl至s6中;然后通過一系列的If判斷語句,執行符合sl和s2的值的操作。該If語句對應了sl和s2判定的任務類型,并按照該任務類型的格式將之后的參數賦予不同的變量。最后通過sendmessage命令將該任務發送給相應的實體,執行該任務指定的操作。3消息發送與接收模塊消息發送與接收模塊用于在單元模型間建立sockets連接,并通過該連接發送和接收sockets消息。Sockets采用了client/server的結構,即在兩個相鄰單元才莫型中,一個單元才莫型作為server,另一個作為client。一個server可以有多個c1ient,同時每個client到server可以有多個連j妄。可用的sockets類型有以下兩種(1)流式sockets:流式sockets一是供沒有記錄邊界的凄t據流,即字節流。字節流能確l呆以正確的順序無重復地;波送達。(2)數據文報sockets:數據文報sockets支持面向記錄的數據流,但不能確保能被送達,也無法確保按照發送順序或不重復。本實施例釆用了流式sockets模式作為接口技術,基于TCP/IP協議。雖然一個server-c1ient的連接可以同時發送和接收數據,但為了使代碼編寫方便和邏輯更加清晰,在每兩個相鄰單元模型間建立2個client連接,分別用于發送和接收數據。另外sockets可以處于"阻塞模式,,或"無阻塞模式"。處于阻塞(或同步)模式時,sockets的函凄t直到可以完成自己的才喿作時才返回。這稱為"阻塞",因為函數被調用的sockets在調用返回前無法執行任何操作——它被阻塞了。如果處于無阻塞模式(異步操作),調用會立即返回。從仿真模型運行的流暢性出發,本實施例采用了無阻塞式。經過測試發現,如果使用阻塞式Flexsim仿真運行會因為等待而暫時停止。參照圖9,消息發送與接收模塊的工作過程包括以下步驟1.建立socketsserver理論上socketsserver可以建立于任何一個單元模型上,但從實際系統中來看,將server建立在接口較多的單元模型上,可以減少server的數量,因此本實施例將socketsserver建立在^妄口最多的拖車運輸單元才莫型2上。另外由于堆場顯示單元模型4與拖車運輸單元模型2沒有接口,所以在堆場顯示單元模型4建立一個server,場吊作業單元模型3作為其client。接口的消息接收與發送模塊也是存放于名為"socketcontroller"實體(通信控制實體)的OnMessage觸發器里,它的觸發條件是收到的Message的首參數msgparam(1)值為T,建立server的代碼如下if(msgparam(1)==1)健立server{〃以下為server的建立過程socketinit();〃sockets初始化serverclosemain();〃刪除現有server和連接intserverport=getlabelnum(current,"serverport");〃獲得端口號,存放于本實體名為serverport的標簽中intserver=servercreatemain(serverport);〃在指定端n創建serverSOCKET—CHECK(server,"Errorcreatingmainserver")〃檢査成功與否,失敗則警告sendmessage(current,current,5,0,0);〃server創建成丄力,丌始等待連接循環"socketcontroller"實體的0nReset觸發器在模型每次Reset的時候都會被觸發,向自己發送消息。首參數值為1,從而觸發該實體的OnMessage觸發器,建立S6rv6r。2.server端監聽端口,等4寺client的連孑妄server建立成功后,開始等待來自client連接的循環進程。由于每個client有兩個連接,循環進程相應也存在兩段。第一段用于建立接收消息的連接,第二段用于建立發送消息的連4妄。函凄tserveraccept是基于WindowsAPI的Flexsim函凄丈,采用非阻塞的模式。由于釆用了非阻塞式sockets連^妾方式,server端監聽端口,等;f寺client的連接的循環進程,實際上是以2個時間單位為周期的server端口掃描進程。2時間單位是2個仿真鐘的計時單位,如果仿真鐘和實際時鐘速度一致,則為2秒,如果仿真鐘的速度是實際時間的5倍,則為0.4秒。3.建立client,并與server建立連接Client的建立和server的建立類似,都是在才莫型中名為"socketcontroller"實體.的OnMessage觸發器里實現。模型重置的時候向該模塊發送首參數為1的消息,觸發建立client代碼。主要代碼如下stringhostname=getlabelstr(current,"hostname");〃定義月艮務器名禾爾intdientport=getlabelnum(current,"clientport");〃定義端口,這兩個數據存放于該實體的"'hostname,,禾U"dientport"標簽中inttempi=clientconnect(client1,apchar(hostname),clientport);〃與server建i/.連接1SOCKET—CHECK(temp1,"Errorconnectingclient1");〃檢杳成功與否,失敗則警告4.使用兩個連接接收和發送消息兩個客戶端的連接建立之后,服務器立刻進入任務接收掃描進程和狀態發送就緒狀態。下面為任務掃描進程的設計。函數serverreceive和serversend是基于WindowsAPI的Flexsim函數,采用了非阻塞的模式。使用這兩個函數可以從指定連接接收和發送數據。client的消息發送與接收與server相同,只是注意使用clientl發送消息,用client2接收消息。本仿真平臺是在單元模型接口的作用下,將全部的單元模型構成一個完整的分布式仿真模型。下面從拖車運輸單元模型2和其接口如何完成拖車運輸單元模型2和前沿岸吊單元模型l之間的三個任務"請求發車"、"車到達"、"車離開"的角度來說明接口與單元模型的整合方法第一個任務是前沿岸吊單元模型1發向拖車運輸單元模型2的"請求發車"任務,任務字符串如下qc-ts,unload,5,110784648,54383.其中參數的意義分別為前沿岸吊單元模型1中作業的拖車編號為5,作業集裝箱編碼為110784648,拖車需要將集裝箱運至堆場位置為54383。接口收到該任務,任務翻譯模塊將執行對應該任務類型的代碼,該代碼將在名為"itemcreater"的實體創建一個集裝箱,并在該集裝箱上創建3個標簽,分別存放拖車編號、集裝箱編碼和堆場位置。Itemcreater為拖車運輸單元模型2中存放船舶到達集裝箱的實體,其類型為Queue。當拖車運輸單元模型2單獨運行時,該實體接收與之相連的source(Flexsim中用于生成臨時實體的生成器)創建的集裝箱。當聯合作業時,該source被關閉,Itemcreater中的集裝箱通過以上方式來生成。因此對于拖車運輸單元模型2,通過傳遞任務生成的集裝箱和通過source生成的集裝箱,功能上完全一樣,都可以驅動拖車任務分配器為拖車生成任務序列,使拖車駛來裝載集裝箱。簡單來說,"請求發車"任務是通過創建用于驅動拖車裝載動作的集裝箱來實現的。當拖車運行到前沿交通起點BottomRight實體(類型為網絡結點)時,該實體的0nArrival觸發器被觸發,該觸發器執行stopobject指令使拖車停下來,并向socketcontroller實體發送首參數為7的消息,接口向前沿岸吊單元模型1發送"車到達"任務。前沿岸吊單元模型1收到該任務后,將激活停留在前沿交通起點編號為"5"的拖車,岸吊將集裝箱卸載在該拖車上之后,拖車到達前沿交通終點后,向拖車運輸單元模型2發送"車離開"的任務。該任務只有一個參數,即拖車運輸單元模型2中作業的拖車編號,接口收到該任務后,使用resumeobject指令恢復該拖車的動作,同時itemcreater中的集裝箱跳至拖車上,拖車并跳至前沿交通終點,和前沿岸吊單元模型1同步完成在前沿的作業。"車到達"和"車離開"兩個任務,系統是通過控制指定拖車的動作來使兩部拖車在動作上達到前后銜接。任務中傳遞的參數是為了告訴系統有哪些參與作業的設備,或查詢這些信息.的方法。本集裝箱碼頭單元化仿真平臺運行方式靈活,根據需要可以有以下幾種運行方式1、單元模型獨立運行,對集裝箱碼頭系統的局部進行研究。'上述單元化仿真模型中的每個單元模型都是一個完整的仿真系統,通過將某個單元模型與其他單元模型交換的部分用隨機參數替換,就可以獨立運行該單元模型,完成該單元模型的仿真目標。單元模型是單元化仿真中的基本單位,使用這些單元模型獨立運行以解決局部問題,可以減少系統運行的規模,提高仿真效率。2、組合模型聯合運行組合模型是指由兩個或多個相鄰的單元模型組成的仿真模型。根據仿真的具體要求,用戶可以對單元模型進行不同的組合,通過單元模型接口組成組合模型,以這種聯合運行的方式完成多種仿真目標。組合模型主要用于解決較復雜或規模較大的仿真問題,可以用于研究系統間各部分的關系。3、系統模型整體運行系統模型指所有單元模型組成的最大規模的仿真模型。系統模型是組合模型的一個特例,它主要用來對系統整體進行研究。上述實施例僅是本發明的一種實施方式,本發明集裝箱碼頭單元化仿真平臺所包含的若干單元模型也可以是拖車運輸單元模型2,該單元模型包括集裝箱碼頭內部所有拖車、系統外部的拖車和交通設施,用于研究集裝箱碼頭內部拖車運行的路線、拖車數量以及拖車調度策略對拖車使用率的影響;以及,下列三種單元模型中的至少一種前沿岸吊單元模型l,該單元模型包括集裝箱碼頭的泊位、前沿、岸吊和前沿裝卸拖車,用于研究裝卸船配載、岸吊的調度策略和集裝箱裝卸順序對裝卸船作業效率的影響;場吊作業單元模型3,該單元模型包括集裝箱碼頭內部所有場吊及堆場布局,用于研究場吊調度策略、場吊數量以及堆場計劃對堆場作業效率的影響;閘口作業單元模型5,該單元模型包括集裝箱碼頭閘口部分,用于研究不同時段閘口數量對閘口作業效率的影響。本發明集裝箱碼頭單元化仿真平臺所包含的若干單元模型還可以是拖車運輸單元模型2,該單元模型包括集裝箱碼頭內部所有拖車、系統外部的拖車和交通設施,用于研究集裝箱碼頭內部拖車運行的路線、拖車數量以及拖車調度策略對拖車使用率的影響;場吊作業單元模型3,該單元模型包括集裝箱碼頭內部所有場吊及堆場布局,用于研究場吊調度策略、場吊數量以及堆場計劃對堆場作業效率的影響;堆場顯示單元模型4,該單元模型包括集裝箱碼頭內部所有堆場,用于直觀的顯示堆場狀態和發現堆場存在的問題;以及,下列兩種單元模型中的至少一種前沿岸吊單元模型l,該單元模型包括集裝箱碼頭的泊位、前沿、岸吊和前沿裝卸拖車,用于研究裝卸船配載、岸吊的調度策略和集裝箱裝卸順序對裝卸船作業效率的影響;閘口作業單元模型5,該單元模型包括集裝箱碼頭閘口部分,用于研究不同時段閘口數量對閘口作業效率的影響。本發明集裝箱碼頭單元化仿真平臺的各單元模型還可以是根據特定集裝箱碼頭的特點以及客戶的需求化分的單元模型。權利要求1、一種集裝箱碼頭單元化仿真平臺,其特征在于它的仿真模型包括若干單元模型,若干單元模型分別安裝于不同的計算機中,所有計算機通過網絡連接;各單元模型單獨工作,或者通過網絡進行單元模型之間信息的交互、實現各單元模型之間協同工作。2、根據權利要求1所述的仿真平臺,其特征在于它所包含的若干單元模型包括拖車運輸單元模型,該單元模型包括集裝箱碼頭內部所有拖車、系統外部的拖車和交通設施,用于研究集裝箱碼頭內部拖車運行的路線、拖車數量以及拖車調度策略對拖車使用率的影響;以及,下列三種單元模型中的至少一種前沿岸吊單元模型,該單元模型包括集裝箱碼頭的泊位、前沿、岸吊和前沿裝卸拖車,用于研究裝卸船配載、岸吊的調度策略和集裝箱裝卸順序對裝卸船作業效率的影響;場吊作業單元模型,該單元模型包括集裝箱碼頭內部所有場吊及堆場布局,用于研究場吊調度策略、場吊數量以及堆場計劃對堆場作業效率的影響;閘口作業單元模型,該單元模型包括集裝箱碼頭閘口部分,用于研究不同時段閘口數量對閘口作業效率的影響。3、根據權利要求1所述的仿真平臺,其特征在于它所包含的若干單元模型包括拖車運輸單元模型,該單元模型包括集裝箱碼頭內部所有拖車、系統外部的拖車和交通設施,用于研究集裝箱碼頭內部拖車運行的路線、拖車數量以及拖車調度策略對拖車使用率的影響;場吊作業單元模型,該單元模型包括集裝箱碼頭內部所有場吊及堆場布局,用于研究場吊調度策略、場吊數量以及堆場計劃對堆場作業效率的影響;堆場顯示單元模型,該單元模型包括集裝箱碼頭內部所有堆場,用于直觀的顯示堆場狀態和發現堆場存在的問題;以及,下列兩種單元模型中的至少一種前沿岸吊單元模型,該單元模型包括集裝箱碼頭的泊位、前沿、岸吊和前沿裝卸拖車,用于研究裝卸船配載、岸吊的調度策略和集裝箱裝卸順序對裝卸船作業效率的影響;閘口作業單元模型,該單元模型包括集裝箱碼頭閘口部分,用于研究不同時段閘口數量對閘口作業效率的影響。4、根據權利要求1所述的仿真平臺,其特征在于它所包含的若干單元模型包括前沿岸吊單元模型,該單元模型包括集裝箱碼頭的泊位、前沿、岸吊和前沿裝卸拖車,用于研究裝卸船配載、岸吊的調度策略和集裝箱裝卸順序對裝卸船作業效率的影響;拖車運輸單元模型,該單元模型包括集裝箱碼頭內部所有拖車、系統外部的拖車和交通設施,用于研究集裝箱碼頭內部拖車運行的路線、拖車數量以及拖車調度策略對拖車使用率的影響;場吊作業單元模型,該單元模型包括集裝箱碼頭內部所有場吊及堆場布局,用于研究場吊調度策略、場吊數量以及堆場計劃對堆場作業效率的影響;堆場顯示單元模型,該單元模型包括集裝箱碼頭內部所有堆場,用于直觀的顯示堆場狀態和發現堆場存在的問題;以及,閘口作業單元模型,該單元模型包括集裝箱碼頭閘口部分,用于研究不同時段閘口數量對閘口作業效率的影響。5、根據權利要求1-4任一項所述的仿真平臺,其特征在于,所述各單元模型均設有單元模型接口,該單元模型接口包括消息格式的定義,它定義了傳輸消息的格式;任務翻譯模塊,用于根據消息格式的定義,將單元模型中的任務轉換成能在網絡中傳輸的消息、以及將來自網絡的消息轉換成能夠被單元模型識別的任務;和,消息發送與接收模塊,該模塊使用網絡傳輸技術,在單元模型接口之間進行消息的交互。6、根據權利要求5所述的仿真平臺,其特征在于所述消息發送與接收模塊采用sockets通訊技術,它通過在單元模型間建立client/server結構的sockets連接來發送和接收消息,實現單元模型之間消息的交互。7、根據權利要求6所述的仿真平臺,其特征在于所述消息發送與接收模塊采用無阻塞、流式sockets通訊模式,采用TCP/IP協議,它在每兩個相鄰單元模型間建立2個c1ient連接,分別用于發送和接收消息。8、根據權利要求6所述的仿真平臺,其特征在于單元模型之間交互的信息為一個單元模型向另一個單元模型下達的任務。9、根據權利要求6所述的仿真平臺,其特征在于所述單元模型接口的消息格式為每個消息用五段字符串表示,用逗號作為分隔符,最后一個字符為".",每個字符串為一個字段,第一個字段表明了發送和接收消息的單元模型,第二個字段指明了任務的類型,后三個字段為任務的參數。全文摘要一種集裝箱碼頭單元化仿真平臺,其仿真模型包括若干單元模型,若干單元模型分別安裝于不同的計算機中,所有計算機通過網絡連接;各單元模型單獨工作,或者通過網絡進行單元模型之間信息的交互、實現各單元模型之間協同工作。本仿真平臺將復雜的集裝箱碼頭系統劃分為若干個單元模型,這些單元模型同時在不同的計算機上運行,通過計算機網絡在單元模型的接口間傳遞任務,構成一個分布式仿真環境,大大提高了運行速度,同時降低了對計算機性能的要求,降低了仿真平臺的成本。各單元模型可以獨立運行,也可以協同完成仿真作業,運行方式靈活。它將規模龐大、關系復雜的模型化分為多個單元模型,簡化了模型,使仿真平臺易于修改和護展。文檔編號G06F17/50GK101315646SQ20081006759公開日2008年12月3日申請日期2008年6月6日優先權日2008年6月6日發明者劉會強,張曉萍,鄭愛靜,旻陸申請人:清華大學深圳研究生院