VDOC-00 Introduction

:bulb: 0. 目錄

:mega: 1. 聲明

:earth_americas: 2. VR&D介紹

VR&D全名為Vanderplaats Research & Development,是由Dr. Garret N. Vanderplaats1984年在美國創立,詳細介紹可以參考 VR&D官網About Us

關於Dr. Garret N. Vanderplaats的生平,VR&D官網提供了 Interview with Dr. Garret (Gary) N. VanderplaatsTechnical Story of Dr. Garret (Gary) N. Vanderplaats 兩篇文章,老駱覺得都相當值得一看。其中也提到了許多有關最佳化演算法及程式的歷史故事,例如:GENESISMSC Nastran SOL200的淵源、現在市售的某些結構最佳化軟體,是源自當初他所開發的CONMIN(1972)ADS(1984)程式等等。對最佳化理論及應用有興趣的朋友,可以繼續觀看下面這個由Dr. Garret (Gary) N. Vanderplaats所主講的影片。

此外,官網也提供了許多論文,可以下載

這邊老駱引用一段Interview with Dr. Garret (Gary) N. Vanderplaats內的話,裡面提到了成立VR&D的兩大初衷是:

  • 提供世界上最好的最佳化軟體。
  • 打造最頂尖的專家團隊。

Dr. Garret N. Vanderplaats確信他已經完成了目標,所以可以將管理公司的任務交棒給非常優秀的繼任者,Mr. Juan Pablo Leiva。自己則能夠多點空閒時間,來做點其它想做的事。

To back up, creating the company, I had two goals: one is to have the best software in the optimization world, and the other is to have the best staff of experts. I’m very confident that I’ve achieved those goals.That’s why about five years ago or six years ago, I forget when, I was able to turn the management of the company over to Juan Pablo Leiva who is a superstar in his own right. Now I can spend time doing a little bit of research, a little bit of relaxing, and letting other people do the day-to-day operations.
Dr. Garret N. Vanderplaats

:thumbsup: 3. VR&D產品

VR&D旗下有兩條主要產品線,GENESISVisualDOC

GENESIS是一款偏向結構分析及結構最佳化的產品,可以進行下列分析:

  • Topology
  • Sizing
  • Shape
  • Topometry
  • Topography
  • Freeform

51_genesis

Design Studio是專為GENESIS量身打造的前後處理環境,提供許多方便的介面來設定問題。但美中不足的是,目前並沒有產生網格的功能。

52_design_studio

VisualDOC則是一款通用型的最佳化軟體,並可以和幾乎所有Script或第三方分析軟體進行耦合分析,例如:ExcelPythonExcelMATLABANSYSLS-DYNATAIThermModelx3D等。

53_capability_chart

:orange_book: Multidiscipline Design Optimization 是由Dr. Garret N. Vanderplaats編寫的最佳化書籍,內容深入淺出,老駱閱讀之後,著實獲益良多。有興趣的朋友於官網訂購後,可直接寄送至台灣。

54_textbook_cover

目錄:

  • Chapter 1: Basic Concepts
  • Chapter 2: Functions of One Variable
  • Chapter 3: Unconstrained Functions of N Variables
  • Chapter 4: Constrained Functions of N Variables: Linear Programming
  • Chapter 5: Constrained Functions of N Variables: Sequential Unconstrained Minimization Techniques
  • Chapter 6: Constrained Functions of N Variables: Direct Methods
  • Chapter 7: Approximation Techniques
  • Chapter 8: Discrete Variable Optimization and Multi-Objective Optimization
  • Chapter 9: Structural Optimization
  • Chapter 10: General Design Applications
  • Chapter 11: Multidiscipline Design Optimization
  • Appendix A: Basic Matrix Theory
  • Appendix B: Optimization Software

:mag_right: 4. VisualDOC介面

下面是VisualDOC剛打開的全景圖。
61_overview

欄位 功能
A 操作欄
B A欄內一些常用的功能以icon顯示
C 主要工作區,方便設定問題時,可以切換不同的panel
D 流程樹,可以確認各componentWork Flow內的順序
E 每種icon代表一種component
F Work Flow,圖像化設定流程
G Work Flow連接工具
H 一些視覺輔助工具
I 顯示VisualDOC執行情況

:mag_right: 5. VisualDOC設定流程

C欄內有5panel,依序由左至右即是設定問題的流程。

Panel 說明
5.1 Work Flow 選出求解問題所須具備的component並正確連接
5.2 Component Editor 針對個別component做細部設定
5.3 Data Linker 連接Component Editor中各層關係
5.4 Simulation Monitors 進階視覺化輔助工具(雖非必要設定,但很有用!)
5.5 Post Processing 提供預先設定好的後處理工具

5.1 Work Flow

設定Work Flow有兩個方法。

5.1.1 拖曳法

拖曳法是利用拖拉的方式從E欄中選取所需要的icon,並拖曳至F欄,進行適當的組合後,再利用G欄的按鍵,完成Work Flow的連接。

拖曳法的特點為:

  • 操作上比較直觀。
  • 須要手動進行拖曳並連接。
  • 擁有比較高的建模彈性。
  • 適用於有多步流程的大模型或客製化的修改。

拖曳法須要用到G欄內的四個按鈕:

  • Switch to connection mode: 可以進入connetion mode,手動連接各個component。連接完成後,可按鍵盤ESC鍵跳離connection mode
  • Auto connect all models : 連接的邏輯是根據D欄內的順序,可以利用D欄下方的上下鍵調整各component的位置。如果使用者的滑鼠是點在D欄裡的Flowchart Components的話,會對整個Work Flow進行自動連接。但如果使用者只想自動連接特定Component Editor外/中層component的話,須要在D欄先將滑鼠點在那個Component Editor外/中層上。
  • Remove all connectors : 除去所有連接。
  • Automatically rearrange all models : 重新排版連接後的版面。

:flashlight: 連接時,請使用以component4個端點連到component4個端點的方式操作(避免component直接連到component),比較容易成功。

舉例來說,假如想要最小化一個函數,如何利用拖曳法完成呢?
一個可能的參考作法是:

E欄中選擇Add optimization component拖曳至F欄

101_work_flow

E欄中選擇Add PythonEquation component拖曳進F欄。接著對Add PythonEquation component按右鍵cut,然候對optimization component按右鍵Paste。如此就可以利用PythonEquation component來進行optimization

102_work_flow

E欄中選擇stop拖曳至F欄(很容易忘記…)。

103_work_flow

利用G欄內的第一個按鍵Switch to connection mode,手動連接各個component。或是將各componentD欄中的位置調整好後,再使用Auto connect all models連接。

104_work_flow

利用G欄內的最後一個按鍵Automatically rearrange all models,重新排版。

105_work_flow

5.1.2 Quick Start

Quick startVisualDOC內建的流程精靈。
Quick start的特點為:

  • 必須事先明確想做的分析類型。
  • 幾個鍵即能快速搭建並自動連接想要的應用。
  • 建模彈性比較小。
  • 適用流程單純的小模型及常規分析。
  • 僅適用於每個project的第1task

同樣地,假如想要最小化一個函數,如何利用Quick start完成呢?
一個可能的參考作法是:

A欄中點選File後,再點選Quick Start(另一個方法是點選B欄中的Quick Start icon)。

106_work_flow

選擇Direct Optimization

107_work_flow

選擇PythonEquation

108_work_flow

填入想要的檔案名並存檔後,Work Flow就完成了。

109_work_flow

5.2 Component Editor

Component Editor的功能是設定Work Flow中選取component的細部設定。

5.2.1 5種component類型

老駱自己將component分為5種類型。

5.2.1.1 Component Editor內層(直接支援的第三方軟體)

VisualDOC針對以下軟體的使用特性,幫使用者處理好I/O介面,方便使用。

  • MATLAB
  • Excel
  • GENESIS
  • ANSYS
  • Moldex3D
  • TAITherm
  • Lua Equation
  • PythonEquation

5.2.1.2 Component Editor內層(客製化串接其它軟體)

VisualDOC是一個通用型的最佳化軟體,所以也提供了使用者串接Script及軟體的接口。你也可以使用*.exe、本機Python環境,或是第三方軟體來作為媒介。當串接的是第三方軟體時,通常須要同時利用File I/O加上Executable這兩個component才能完成設定。

  • File I/O
  • Executable
  • Executable Wrapper
  • Shared Library

5.2.1.3 Component Editor外/中層

Component Editor外層/中層VisualDOC的核心,能不能得到滿意的答案,取決於是否於此,正確定義問題及挑選適宜的演算法及其參數。

至於為什麼有個中層呢,是因為有時候可以將一層套進另一層裡,老駱習慣稱這個情形為層中有層。一個常見的應用是,將Design of Experiments當作中層,而Optimization當作外層,如此一來就可以利用VisualDOC針對客製好的DOE來做最佳化。

  • Optimization
  • Design of Experiments (DOE)
  • Response Surface Approximated Optimization (RSA)
  • Probabilistic

5.2.1.4 流程控制工具

流程控制工具屬於比較進階的功能,老駱以後有機會再介紹。

  • If
  • While loop
  • For loop

5.2.1.5 輔助工具

利用拖曳法建模,一定要記得stop,再次提醒…。

  • Message
  • File Backup
  • Container
  • Stop

5.2.2 快速輸入變數

Component Editor外/中/內三層輸入變數的方式及相關設定很直觀。

老駱這邊提供兩個快速設定變數的方法。

5.2.2.1 Add new data

Add new data 方便新增單一變數。

例如要新增一個test_inputscalar input變數。
可以,先按下Add new data,輸入變數名test_input,按下Next

201_component_editor

再按下Finish

202_component_editor

這樣就創建完成。

203_component_editor

5.2.2.2 Component Data Generator

Component Data Generator適用於:

  • 大規模的建立變數及賦值。
  • 大規模的修改變數及其值。

舉例來說,如果要建造w1~w5 5input變數,並將各變數的Lower Bound設為2Upper Bound設為4Initial Value設為2,可以在create panel下這樣設定。

204_component_editor

按下Create Variables即創建完成。

205_component_editor

假如要將變數名改為a101~a105,並將各變數的Lower Bound設為20Upper Bound設為40Initial Value設為30,可以在Modify panel下這樣設定(輸入好數字後,請記得按下旁邊的setRename按鍵,VisualDOC才會更新變數)。

206_component_editor

變數即修改完成。

207_component_editor

5.3. Data Linker

Data Linker是一個建立Component Editor外/中層Component Editor內層溝通的橋粱。一般來說外/中/內三層的變數名最好設為一樣,但有時候因為建模的方便性或是想讓最後輸出的變數名有較好的辨識度時,各層變數名可能會不一致。此時,須要利用Data Linker連接各層變數。

如果外/中/內三層的各個變數皆相同,則可以利用左側的Automatically add data to the selected model來自動連接。

:flashlight: 請記得要先按旁邊綠色橢圓圈起來的Component Editor外/中層Automatically add data to the selected model這個按鈕才會有作用。

301_data_linker

設定完成後,可以藉由旁邊的表格來觀察Data Linker的連接狀態。

302_data_linker

一般來說,設定問題時,會先依照5.2 Component Editor所述,設定好Component Editor,再來設定Data Linker。但如果如果遇到變數名一樣的問題時,可以考慮先設定Component Editor內層,接著就設定Data Linker。因為如果先進行Data Linker中的Automatically add data to the selected modelVisualDOC將會自動將Component Editor內層設立的變數傳送到Component Editor外/中層,可以省去建立參數的功夫,專注於其它的設定。

另外要注意的是,如果選擇先手動建立Component Editor外/中層,那麼就無法使用Data Linker中的Automatically add data to the selected model的功能,須要手動連接各個變數之間的關係。

最後,如果模型只有外/內兩層Data Linker僅須設定一次;但若模型
是有外/中/內三層,那麼Data Linker須要設定兩次,一次是外層中層的連接,一次是中層內層的連接。

:flashlight: 連接時,請使用以箭頭連到箭頭的方式操作(避免變數直接連到變數),比較容易成功。

5.4 Simulation Monitors

Simulation Monitors是很好的視覺化輔助工具,但不是必要的設置。如果使用者覺得5.5 Post Processing預先建立好的模板結果已經能提供足夠的資訊,那麼即使沒有設置Simulation MonitorsVisualDOC還是能正確執行。

BestObjetiveWrostConstraint是在做optimization時,最常觀察的圖表。

按兩下Add optimization history monitor,來新增兩個monitor
連接BestObjetiveOptimization History Monitor 1WrostConstraintOptimization History Monitor 2

401_simulation_monitors

設定完成後,可以藉由旁邊的表格來觀察Simulation Monitors的連接狀態。

402_simulation_monitors

:flashlight: 連接時,請使用以箭頭連到箭頭的方式操作(避免變數直接連到變數),比較容易成功。

5.5 Post Processing

Post Processing6個按鍵。

  • Generate Summary Report
    提供求解的摘要報告。

501_post_processing

  • Show Design Points Table
    顯示出所使用的Deign Points

502_post_processing

  • Launch 2D Approximation Viewer
    RSA分析時,才能使用此功能,觀察2個變數間的關係。

503_post_processing

  • Launch 3D Approximation Viewer
    RSA分析時,才能使用此功能,觀察3個變數間的關係。

504_post_processing

  • Launch What-If Post-Processing Tool
    可以快速概略評估對變數做微小改動時的近似解。

505_post_processing

  • Passed/Failed Designed Points Pie Chart
    可以觀察有多少Deign PointsFailed,代表其傳回值可能是NaNinf無效回傳值等。

506_post_processing

:closed_lock_with_key: 6. 觀念解說

6.1 Project and Task

每一個檔案(*.vdbx)就是一個project,但一個project裡可以有多個task。每一個task都可以當作是一種分析,所以可以將同一個題目的各種研究主題都放在一個project裡,方便保存。同時,VisualDOC允許使用者從另一個project或同一個project裡的另一個task裡,讀入所需要的資料。

例如下面這個例子是Advanced Examples Manual第一章的例子。其中task0先做了一個Create DOE points with responses,後面的task3就可以基於此基礎下,繼續做RSA。又例如,task1先做了一個Create DOE with approximations,後面的task2就可以基於此基礎下,繼續做Optimization

901_camel.JPG

6.2 模組化設定

VisualDOC的每一個component都是模組化的設計,方便使用者可以獨立的讀入或保存。對於一些常用的component,甚至可以先進行客製化的設定後保存起來,於之後的分析重新利用。

:flashlight: 有時候Component Editor內層Component Editor外層會長得很像,有些人會覺得重做了一次相同的工作。但其實這樣設計的原意就是模組化,可以將各個component都獨立設定或保存,而不影響其它component

Work Flow中選取component按右鍵後,選擇save this compoent,可以將其存為一個*.vdoc檔。

902_camel.JPG

若要讀入這個檔的話,可以從A欄中點選File後,再點選Import Component(另一個方法是點選B欄中的Import Component icon)。

903_camel.JPG

:books: 7. VisualDOC手冊

VisualDOC安裝後,有幾本內建的手冊可以供使用者參考。

  • Getting Started Examples Manual
    提供一些基礎的操作及例題說明,適合剛開始接觸VisualDOC的使用者閱讀。

  • User's Manual
    詳細說明VisualDOC各個按鍵如何使用,可以在操作遇到疑問或不確定時查找。

  • Advanced Examples Manual
    說明如何利用VisualDOC進行進階的分析,適合當作字典來查找所需要的分析類型。

  • Theory Manual
    提供簡短的理論說明。如果沒心力閱讀整本 Multidiscipline Design Optimization 的話,這本手冊是一個很好的導論(僅86頁)。

:electric_plug: 8. 合作夥伴推薦

總部位於英國的 GRM Consulting ,除了是一家專業的CAE顧問公司外,也是VR&D長期的合作夥伴,創辦人為Mr. Martin GamblingGRM ConsultingDesign Studio開發了不少Plug-in,特別是在複材設定方面,可以大幅減少設定的時間。此外,其獨家開發的 Reinforcement Derivation Method(RDM) 技術利用GENESIS找出在給定想增加的質量下,如何最有效率的分配這些質量於模型中進行頻率、強度或碰撞性能等補強,且操作起來相當簡單,老駱個人給予這方法很高的評價。

:computer: 9. 本系列文使用之軟硬體

老駱使用GIGABYTEP15筆電作為本系列文的測試環境。

  • CPU : i7-6700HQ
  • Memory : DD3L 8G
  • OS : Windpws 10 Home
  • Python(Anoconda3) : version 3.7.3
  • NumPy : version 1.16.4
  • SciPy : version 1.2.1
  • VisualDOC : version 10.0
  • LS-DYNA : smp single precison version 10.1
  • LS-OPT : version 6.0.0

:mailbox: 10. 聯絡老駱

如果您或貴單位:

  • 有導入VR&D產品的意願,但是有報價、採購及發票等問題。
  • 有教育訓練或顧問需求。
  • 有些建言指教。
  • 想交個朋友。
    歡迎透過 :camel: camel@caeml.ai 聯絡老駱。