天天看點

【Dakota】03 手冊筆記輸入檔案黑箱代碼變量接口

6.14使用者手冊

【Dakota】03 手冊筆記輸入檔案黑箱代碼變量接口

輸入檔案

變量

變量類型

  • 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矩陣、梯度或值,具體見下表。

【Dakota】03 手冊筆記輸入檔案黑箱代碼變量接口

results.out

黑箱代碼輸出值,由Dakota讀入。

黑色代表要求的函數值,後面可以帶一個文字标簽,但标簽被Dakota忽略,除非接口部分有

labeled

關鍵字

藍色代表梯度向量(即一階導數),紅色代表海塞矩陣(即二階導數),禁止有标簽

【Dakota】03 手冊筆記輸入檔案黑箱代碼變量接口

輸入輸出腳本

當黑箱代碼不能讀取

params.in

results.out

檔案時,需要寫腳本完成從

params.in

讀取資料到黑箱代碼輸入檔案,從黑箱代碼輸出檔案提取資料寫入

results.out

檔案。

問題分類

需要根據所研究問題的特點,合理選擇研究方法。

【Dakota】03 手冊筆記輸入檔案黑箱代碼變量接口

變量

變量類型

  • 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 系列函數來管理模拟代碼或模拟驅動程式。

【Dakota】03 手冊筆記輸入檔案黑箱代碼變量接口
  • 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

關鍵字指定批量規模。

檔案格式

将批量參數檔案合并得到如下參數檔案:

【Dakota】03 手冊筆記輸入檔案黑箱代碼變量接口

結果檔案用

#

分隔每次評估結果。

工作目錄

  • 不允許輸入和輸出過濾器
  • 僅允許單個分析驅動
  • 不允許異步評估

繼續閱讀