摘 要:銀河仿真工作站是航天控制工程中的重要研制平臺,其平臺下運行的YHSim軟件能夠對連續、離散混合系統進行建模。但YHSim在進行大規模計算時遇到了困境,本文旨在介紹這種困境,并探討改進YHSim系統以實現大規模計算的方法,最后再介紹了一種通過改進yhsim執行偶以實現YHSim系統進行大規模計算的數據轉存法的實際操作過程。
關鍵詞:YHSim;大規模計算;執行偶;數據轉存法
中圖分類號:TP393.01 文獻標識碼:A 文章編號:1674-7712 (2014) 10-0000-01
一般情況下,運用YHSIM語言編寫仿真程序就可完成仿真任務;但當需要進行狀態數目極大、總耗時較長的大規模計算,我們不可能完全按不同狀態逐次人工操作仿真模型進行計算,理想的實現方法是把仿真模型編制完成后由計算機自動完成計算并自動記錄仿真結果。為此我們設計了一種數據轉存法,該方法采用在YHSIM的仿真過程中及時將數據文件進行轉存,從而實現影響yhsim耗時的計算大規模無人值守的仿真計算。下面我們先介紹YHSim仿真計算的過程及編譯過程,然后主要描述利用YHSIM進行大規模無人值守的仿真計算的實現方法,最后給出一個完整的實現及效果。
一、YHSim模型編譯運行過程
(一)YHSim模型的結構及運行過程。作為一種編程建模語言,YHSim采用模塊化的編程結構,典型的模塊編制及程序運行過程如圖1所示。
(二)YHSim模型編譯過程。一個全面的yhsim模型包含三類文件:插值函數文件(.dat)、主程序文件(.yfs)、用戶程序文件(.cpp、.h)。從YHSIM模型源程序到可執行程序通常需要4步:
(1)Yhsim函數生成器將插值函數文件(.dat)編譯成插值函數目標文件(.obj);
(2)Yhsim轉化器將主程序文件(.yfs)轉換成分塊的C代碼(.c);
(3)C編譯器將分塊C代碼、用戶C++代碼、執行偶simexec.cpp編譯成分塊目標文件和用戶目標文件(.obj);
(4)操作系統鏈接器將插值函數目標文件、分塊目標文件,連同YHSim環境的其它目標代碼和庫文件一起鏈接生成可執行程序。
二、YHSim進行大規模無人值守的仿真計算的實現方法
(一)實現原理。為了實現想要的數據不被清空,就需要在region terminal塊的goto執行前先進行將數據存儲到文件,并將數據備份,然后再跳轉到region initial塊進行下一個狀態的計算。為了實現該功能可以在修改執行偶simexec.cpp的部分代碼:在執行偶simexec.cpp調用region terminal塊前先調用save_stored_data(z_store_table);進行數據存儲,然后再封裝一個數據備份函數實現數據備份。
(二)實現示例。為了實現在region terminal塊goto執行前進行數據存儲和數據備份,在執行偶simexec.cpp中封裝4個函數findExeBackupDat()、fnsplit()、CreateMultilevelPath()、datacopy():
findExeBackupDat()用于搜索當前目錄下的第個*.EXE文件,并將與該*.EXE文件同名的*.dat文件的名稱后加一個編號進行重命名;
fnsplit()用于進行路徑分解,在findExeBackupDat()中重命名時調用;
CreateMultilevelPath()用于創建多層目錄,在findExeBackupDat()中創建目錄時調用;
datacopy()用于調用findExeBackupDat(),并實現相應的初始化,在region terminal塊中調用。
(三)使用方法。使用步驟:
(1)用封裝好findExeBackupDat()、fnsplit()、CreateMultilevelPath()、datacopy()的執行偶替換yhsim系統中原有的執行偶;
(2)在YHSim模型的region terminal塊中顯示調用進行調用datacopy()函數,使用的完整region terminal塊如下:
region terminal
backupNo=tsn
temp=datacopy(backupMode,backupNo)
if(tsnCount goto tabNo endif end region terminal 三、結束語 本文講述了改進yhsim執行偶以實現YHSim系統進行大規模計算的數據轉存法,在轉存過程中工程人員可以根據需要進行轉存過程及其它數據進行詳細記錄,如記錄數據文件修改時間、大小,文件轉存完成時間、轉存完畢后的文件大小,記錄仿真運行時間等。通過本文講述的數據轉存發能夠實現運用yisim進行大規模仿真計算,能夠快速完成導彈設計過程中的全空域仿真分析。 參考文獻: [1]國防科學技術大學計算機學院.YHSIM用戶手冊[M].2011. [2]YHAStar高性能實時仿真平臺[M].2003. [3]全國仿真技術學會.YHSIM仿真程序調用C程序的實現方法[M].2001. [4]Peter Prinz,Tony Crawford.C語言核心技術[M].北京:機械工業出版社,2007. [5]中國科學院計算技術研究所.大規模并行計算[M],2010. [6]浙江大學計算機科學與技術學院.大規模科學計算[M],2004.