6.14使用者手冊
輸入檔案
變量
變量類型
- design : 用于優化和率定
- uncertain : 用于不确定性量化和靈敏度分析
- state : 固定不變
- continuous : 連續
- discrete : 離散
變量上下限
- lower_bounds : 下限
- upper_bounds :上限
- descriptors :變量名
接口
分析驅動
函數名:Dakata輸入變量到函數,并從函數輸出響應
函數與Dakota連接配接
- direct : 直接連
- fork : 檔案連
- system : 檔案連
響應
資料類型
與method塊所定義方法有關
用于優化
- num_objective_functions
- num_nonlinear_inequality_constraints
- num_nonlinear_equality_constraints
要求響應檔案results.out必須按照objectives、inequalities、equalities順序排列
用于率定
- calibration_terms
- num_nonlinear_inequality_constraints
- num_nonlinear_equality_constraints
要求響應檔案results.out必須按照calibration terms、inequalities、equalities順序排列
适用于非線性最小二乘算法
用于靈敏度分析和不确定性量化
- num_response_functions
限制和導數資訊
接口傳回給Dakota的額外資訊
梯度向量
即一階導數,有以下類型
- no_gradients:不需要梯度
- numerical_gradients:Dakota通過有限差分近似計算
- analytic_gradients:由黑箱代碼計算并提供
- mixed_gradients:一部分由Dakota計算,另一部分由黑箱代碼計算
是否需要梯度與method塊所定義方法有關,基于梯度的優化、不确定性量化的可靠性分析和局部靈敏度分析需要用到梯度
海塞矩陣
即二階導數,有以下類型
- no_hessians:不需要二階導數
- numerical_hessians:Dakota通過有限差分近似計算
- quasi_hessians:Hessians 是需要的,并且将通過一系列梯度評估的割線更新(BFGS 或 SR1)來近似。
- analytic_hessians:由黑箱代碼計算并提供
- mixed hessians:一部分由Dakota計算,另一部分由黑箱代碼計算
是否需要梯度與method塊所定義方法有關,通常用于通過完全牛頓方法進行的基于梯度的優化,或用于使用二階極限狀态近似或二階機率積分的可靠性分析
字段資料
Field Data
有些響應是時間序列,是互相關聯的,是以可以使用字段資料将其與實測序列作比較。
- field_objectives
- field_calibration_terms
- field_responses
目前僅有率定方法實作殘差計算,其他方法仍将其作為标量集合看待。
梯度無限制優化
響應
- numerical_gradients:由Dakota計算
- analytic_gradients:由黑箱代碼計算
方法
- conmin_frcg :CONMIN優化軟體包中的Fletcher-Reeves conjugate gradient algorithm算法
- max_iterations :最大疊代次數
- convergence_tolerance:收斂容差,三次疊代值差小于該值則表示收斂
不确定性量化
分類
- aleatory uncertainties :偶然不确定性,采用機率方法
- epistemic uncertainties :認知不确定性,資料一般是系數的,采用基于區間規範的非機率方法
變量
- uniform_uncertain :均勻分布
響應
- response_functions :用于靈敏度分析和不确定性量化
方法
- sampling :采樣
- response_levels :響應門檻值,用于計算機率級
結果
- LHS*.out :由LHS軟體包生成的随機采樣,可以忽略
- Statistics based on xxx samples: 基于采樣的統計
- Mean : 均值
- Std Dev : 标準差
- Skewness : 偏度,對稱分布、左尾分布、右尾分布
- kurtosis : 峰度
- Correlation Matrix : 相關系數
黑箱代碼
params.in
- ASV :active set vector,響應
- DVV : derivative values vector,導數值向量
- AC :analysis components,分析元件,分析驅動的集合
ASV前面的數字代表擷取hessian矩陣、梯度或值,具體見下表。
results.out
黑箱代碼輸出值,由Dakota讀入。
黑色代表要求的函數值,後面可以帶一個文字标簽,但标簽被Dakota忽略,除非接口部分有
labeled
關鍵字
藍色代表梯度向量(即一階導數),紅色代表海塞矩陣(即二階導數),禁止有标簽
輸入輸出腳本
當黑箱代碼不能讀取
params.in
和
results.out
檔案時,需要寫腳本完成從
params.in
讀取資料到黑箱代碼輸入檔案,從黑箱代碼輸出檔案提取資料寫入
results.out
檔案。
問題分類
需要根據所研究問題的特點,合理選擇研究方法。
變量
變量類型
- design : 用于優化和率定
- uncertain : 用于不确定性量化和靈敏度分析
- state : 固定不變
- continuous : 連續
- discrete : 離散
變量上下限
- lower_bounds : 下限
- upper_bounds :上限
- descriptors :變量名
設計變量
連續設計變量
在上下限範圍内的所有實數
離散設計變量
- 某範圍内的整數:
discrete_design_range
- 整數集合:
discrete_design_set integer
- 字元串集合:
discrete_design_set string
- 實數集合:
discrete_design_set real
離散變量可分為“絕對的”和“相對的”,如果是“相對的”,那麼範圍外的變量對目标函數仍有意義,可以被松弛。“絕對的”離散變量僅在集合内有意義。受限 vs. 放松
梯度優化方法不能直接應用到含離散變量的問題。對于“相對的”離散變量可以用
branch_and_bound
放松離散限制,進而應用梯度方法。對于“絕對的”離散變量隻能用非梯度方法比如
colint_ea
。
不确定變量
一般而言,根據不确定性的屬性不同,可以将不确定性分為随機不确定性(也稱固有不确定性或客觀不确定性) (Aleatory Uncertainty)和認知不确定性(Epistemic Uncertainty)。
前者表示實體現象中存在的固有随機性,它無法通過增加樣本控制或減小這類随機性;後者則是由于人們主觀認識不足、知識與資料的缺乏而導緻無法精确地建構實體模型,或是不能對某些因素/參數的不确定度用精确的機率分布進行準确描述。
通常情況下,随機不确定性可用機率分布或随機場表征,而認知不确定性可用機率方法(如:貝葉斯理論)或非機率方法(如:區間理論、D-S證據理論、機率盒(Probability-Box,P-Box)理論、凸集模型、模糊理論等)表征。
當随機和認知這兩類不确定性共存時,被稱為混合不确定性。CFD模拟技術中,既存在模型參數或邊界條件的固有不确定性,也存在由于真實流體與實體模型不同、模型參數估計不準确、模型數值離散精度不夠等帶來的認知不确定性。
随機不确定變量
aleatory uncertain variables,随機不确定性(也稱固有不确定性或客觀不确定性)。變量服從某種機率分布,正态分布、均勻分布等。對于偶然随機變量,Dakota允許使用者提供變量相關矩陣,Dakota預設變量間是獨立的。
連續随機不确定變量
- 正态分布
- 對數正态
- 均勻分布
- 對數均勻
- 指數分布
- Beta分布
- Gamma分布
- Gumbel分布
- Frechet分布
- Weibull分布
- 直方圖箱:一種基于經驗的分布
離散随機不确定變量
- 泊松分布
- 二項式分布
- 負二項式分布
- 幾何分布
- 超幾何分布
- 直方圖點分布
認知不确定變量
連續認知不确定性
- 連續區間
離散認知不确定性
- 離散區間
- 離散集合
狀态變量
不活躍的,不被優化、率定和不确定性量化算法疊代。
參數研究和實驗設計方法會疊代包含狀态變量。
接口
direct
不需要反複讀取IO檔案
system
在這種方法中,系統調用建立了一個新程序,該程序通過參數和響應檔案與 Dakota 進行通信。
強烈建議使用者盡可能使用 fork 模拟接口,盡管系統接口仍受支援以實作可移植性和向後相容性。
fork
fork 模拟接口使用fork、exec 和wait 系列函數來管理模拟代碼或模拟驅動程式。
- verbatim : 防止參數和結果檔案在過濾器和驅動後
- {PARAMETERS}
- {RESULTS}
fork可以保證異步,而system可能會出現問題。
通用腳本接口檔案
使用腳本語言完成輸入輸出檔案的轉換即前處理和後處理。C-shell、Perl、Python等
前處理
Sandia實驗室可用APREPRO,其餘人可用DPREPRO
dakota/bin
、PYPREPRO
dakota/scripts/pyprepro/
或BPREPRO。
根據
params.in
和
ros.template
建立
ros.in
供黑箱代碼使用。
寫死
黑箱代碼的輸入和輸出檔案是被寫死成可執行程式的,無法改變。
後處理
第三部分執行後處理并将響應結果寫入檔案以供 Dakota 讀取。使用 UNIX“grep”實用程式,從原始模拟器輸出中提取感興趣的特定響應值并儲存到臨時檔案 (results.tmp)。
案例
參見
E:\software\Dakota\share\dakota\examples\official\drivers\bash
模拟接口元件
元件包括輸入過濾器、一個或多個分析驅動、輸出過濾器。
通常有兩個參數接收Dakota輸入檔案和輸出檔案名。
單分析驅動不帶有過濾器
blocking fork: driver params.in results.out
異步:
nonblocking fork: driver params.in.1 results.out.1
異步時,分析驅動必須取回指令行參數,因為檔案名每次都在變化。UNIX C-shell 使用$argv[1]和$argv[2],Perl 腳本使用@ARGV[0]和@ARGV[1],C或C++使用argc(argument count)和argv(argument vector)。
單分析驅動帶過濾器
blocking fork: ifilter params.in results.out;
driver params.in results.out ofilter params.in results.out
異步:
blocking fork: ifilter params.in.1 results.out.1;
driver params.in.1 results.out.1 ofilter params.in.1 results.out.1
多分析驅動不帶有過濾器
blocking fork: driver1 params.in results.out.1;
driver2 params.in results.out.2; driver3 params.in results.out.3
異步:
blocking fork: driver1 params.in.1 results.out.1.1;
driver2 params.in.1 results.out.1.2; driver3 params.in.1 results.out.1.3
多分析驅動帶過濾器
blocking fork: ifilter params.in.1 results.out.1;
driver1 params.in.1 results.out.1.1;
driver2 params.in.1 results.out.1.2;
driver3 params.in.1 results.out.1.3;
ofilter params.in.1 results.out.1
異步:
blocking fork: ifilter params.in.1 results.out.1;
driver1 params.in.1 results.out.1.1;
driver2 params.in.1 results.out.1.2;
driver3 params.in.1 results.out.1.3;
ofilter params.in.1 results.out.1
參見
dakota/share/dakota/test/dakota_3pc/dakota_3pc.in
模拟檔案管理
檔案儲存
在執行分析驅動程式之前,将立即删除現有的結果檔案。這一行為解決了一個常見的使用者問題,該問題是由于在運作目錄中使用陳舊的結果檔案啟動 Dakota 而導緻的。要覆寫此預設行為并保留任何現有結果檔案,請指定
allow_existing_results
。
使用
file_save
指令儲存參數和結果檔案。
檔案标記
在檔案名後添加評估數字以使得名字唯一。
Dakota預設不添加檔案标記。
添加檔案标記可防止檔案被覆寫,可用于并行計算。
當僅有
file_save
時,當評估結束時,Dakota會自動添加檔案辨別。
當有嵌套模型時,可以采用分層标記
hierarchical_tagging
。
臨時檔案
如果沒有指定參數檔案和結果檔案名,則Dakota會使用臨時檔案名。
分析驅動的檔案标記
當有多個分析驅動時,需要對結果檔案名添加标記。
工作目錄
- work_directory :使每一次評估都在單獨的檔案夾内,檔案夾由Dakota随機生成
- work_directory named ‘my/special/directory’:黑箱代碼會在定義的目錄内運作,運作後會删除黑箱代碼
- directory_save:不會删除黑箱代碼,與named同時出現
- directory_tag:檔案标記
- copy_files:将臨時目錄中的檔案複制到工作目錄
批量評估
使用
batch
關鍵字激活批量模式。使用
size
關鍵字指定批量規模。
檔案格式
将批量參數檔案合并得到如下參數檔案:
結果檔案用
#
分隔每次評估結果。
工作目錄
- 不允許輸入和輸出過濾器
- 僅允許單個分析驅動
- 不允許異步評估