0. 目錄
1. 老駱提醒
2. 問題描述
Minimize Objective Function
f(x,y):
f(x,y)=(x2+y2)10−cos(x)cos(y)
Subject to the Constraint Equation
g(x,y):
g(x,y)=(x2+y2)≥1.5
Design Variables (Side Constraints)
:
−2≤x≤2−2≤y≤4
Initial Conditions
:
x=2y=2
3. VisualDOC操作細節
3.1 Optimization Using DOE
本節講述如何將DOE
設定為Component Ediror內層
,並新增Optimization
為Component Ediror外層
。
3.1.1 Work Flow
打開DOE with approximations
,另存一個新的task
,命名為Opt Using DOE
。接著至E欄
中將Add optimization component
拖曳至F欄
。
將DOE
component
剪下貼上至Optimization
中。
重新連接所有component
。
3.1.2 Data Linker
點選C欄
Data Linker
,使用左側的Automatically add data to the selected model
自動連接。
3.1.3 Component Editor
點選C欄
Component Editor
外層的Optimization
component
,並進行下列操作:
- 設定
x
及y
的Lower Bound
及Upper Bound
。
- 勾選
f
為Objective
、不勾選其為Constraint
,並確定其Goal
維持預設的Minimize
。
- 勾選
g
為Constraint
,並設定其Lower Bound
為1.5
。
點選C欄
Component Editor
中層的DOE
component
,選擇User Defined
,使用Import From File
讀入 VDOC_02_DOE 中產生的DOE_with_responses.txt
,作為DOE
點位,而不重新計算。此外,因為之前曾經另存一個DOE with responses
的task
,所以也可以選擇使用Import From Database
來讀入預先計算好的點位。
在這個問題裡,因為選點策略及數量已經固定,所以其f
及g
的近似函數並不會改變,所以可以在Show Advanced Options
裡勾選Reuse approximation from first invocation when run as subflow
。如此一來,可以僅進行一次f
及g
近似函數的求解,之後每次在呼叫Optimization
component
進行最佳化的時候,都可以用第一次f
及g
的近似函數來代替。
3.1.4 Simulation Monitors
點選C欄
Simulation Monitors
,刪除於DOE
中所建立的圖表,新增兩張Optimization
最常用的BestObjetive
及WrostConstraint
來輔助觀察。
3.1.5 Post processing
()內為PythonEquation 被呼叫次數 |
x |
y |
f |
g |
Opt Using PythonEquation(48) |
0.86087 |
0.87115 |
-0.26971 |
1.50000 |
Opt Using DOE(9) |
2.00000 |
0.29777 |
-0.07096 |
4.08891 |
3.2 Optimization Using DOE(利用PythonEquation驗證)
本節試著驗證看看,如果直接利用PythonEquation
component
輸入近似的f
及g
,並對其直接進行最佳化,其結果會不會和 3.1 Optimization Using DOE 一樣。
打開Opt Using PythonEquation
這個task
,另存一task
,命名為Opt Using DOE(Verified by PythonEquation)
,將f
及g
的近似函數,取代原有的方程式。
()內為PythonEquation 被呼叫次數 |
x |
y |
f |
g |
Opt Using PythonEquation(48) |
0.86087 |
0.87115 |
-0.26971 |
1.50000 |
Opt Using DOE(9) |
2.00000 |
0.29777 |
-0.07096 |
4.08891 |
Opt Using DOE(Verified by PythonEquation)(40) |
2.00000 |
0.29777 |
-0.07096 |
4.08891 |
以上,可證明3.1
節與3.2
節操作,可得到相同的答案。
3.3 RSA Using DOE
本節講述如何將RSA
為Component Ediror外層
, PythonEquation
為Component Ediror內層
。
3.3.1 Work Flow
打開Opt Using PythonEquation
這個task
,另存一個新的task
,命名為RSA Using DOE
。接著至E欄
中將Add Response Surface Approximated optimization component
拖曳至F欄
。
將PythonEquation
component
剪下貼上至RSA
中,並刪除DOE
component
。
重新連接所有component
。
3.3.2 Data Linker
點選C欄
Data Linker
,使用左側的Automatically add data to the selected model
自動連接。
3.3.3 Component Editor
點選C欄
Component Editor
外層的RSA
component
,並進行下列操作:
- 設定
x
的Lower Bound
為-2
及Upper Bound
為2
。
- 設定
y
的Lower Bound
為-2
及Upper Bound
為4
。
- 勾選
f
為Objective
、不勾選其為Constraint
,並確定其Goal
維持預設的Minimize
。
- 勾選
g
為Constraint
,並設定其Lower Bound
為1.5
。
點選C欄
Component Editor
外層的RSA
component
,選擇User Defined
為Starting Strategy
,使用Import From File
讀入 VDOC_02_DOE 中產生的DOE_with_responses.txt
,作為DOE
點位,而不重新計算。當然,如 3.1 Optimization Using DOE 一樣,可以使用Import From Database
來讀入預先計算好的點位。Model Order
維持預設的Full Quadratic
。
3.3.4 Simulation Monitors
點選C欄
Simulation Monitors
,新增兩張Optimization
最常用的BestObjetive
及WrostConstraint
來輔助觀察。
3.3.5 Post processing
點選Post Processing
中的Show Design Points Table
,可以看到總共使用點數為33
。也就是說扣掉我們輸入的9
個點位,PythonEquation
component
又被呼叫了33 - 9 =24
次。
對比直接進行最佳化Opt Using PythonEquation
task
的48
次,次數少了48 - 33 = 15
次。
這證明RSA
+DOE
是一個求解問題的好策略。
()內為PythonEquation 被呼叫次數 |
x |
y |
f |
g |
Opt Using PythonEquation(48) |
0.86087 |
0.87115 |
-0.26971 |
1.50000 |
Opt Using DOE(9) |
2.00000 |
0.29777 |
-0.07096 |
4.08891 |
Opt Using DOE(Verified by PythonEquation)(40) |
2.00000 |
0.29777 |
-0.07096 |
4.08891 |
RSA Using DOE(33) |
0.86787 |
0.86306 |
-0.26985 |
1.49966 |
4. 聯絡老駱
如果您或貴單位:
- 有導入
VR&D
產品的意願,但是有報價、採購及發票等問題。
- 有教育訓練或顧問需求。
- 有些建言指教。
- 想交個朋友。
歡迎透過 camel@caeml.ai 聯絡老駱。
0. 目錄
1. 老駱提醒
VisualDOC
結合DOE
與Optimization
或RSA
求解問題。2. 問題描述
Minimize Objective Function
Subject to the Constraint Equation
Design Variables (Side Constraints)
:Initial Conditions
:3. VisualDOC操作細節
3.1 Optimization Using DOE
本節講述如何將
DOE
設定為Component Ediror內層
,並新增Optimization
為Component Ediror外層
。3.1.1 Work Flow
打開
DOE with approximations
,另存一個新的task
,命名為Opt Using DOE
。接著至E欄
中將Add optimization component
拖曳至F欄
。將
DOE
component
剪下貼上至Optimization
中。重新連接所有
component
。3.1.2 Data Linker
點選
C欄
Data Linker
,使用左側的Automatically add data to the selected model
自動連接。3.1.3 Component Editor
點選
C欄
Component Editor
外層的Optimization
component
,並進行下列操作:x
及y
的Lower Bound
及Upper Bound
。f
為Objective
、不勾選其為Constraint
,並確定其Goal
維持預設的Minimize
。g
為Constraint
,並設定其Lower Bound
為1.5
。點選
C欄
Component Editor
中層的DOE
component
,選擇User Defined
,使用Import From File
讀入 VDOC_02_DOE 中產生的DOE_with_responses.txt
,作為DOE
點位,而不重新計算。此外,因為之前曾經另存一個DOE with responses
的task
,所以也可以選擇使用Import From Database
來讀入預先計算好的點位。在這個問題裡,因為選點策略及數量已經固定,所以其
f
及g
的近似函數並不會改變,所以可以在Show Advanced Options
裡勾選Reuse approximation from first invocation when run as subflow
。如此一來,可以僅進行一次f
及g
近似函數的求解,之後每次在呼叫Optimization
component
進行最佳化的時候,都可以用第一次f
及g
的近似函數來代替。3.1.4 Simulation Monitors
點選
C欄
Simulation Monitors
,刪除於DOE
中所建立的圖表,新增兩張Optimization
最常用的BestObjetive
及WrostConstraint
來輔助觀察。3.1.5 Post processing
PythonEquation
被呼叫次數x
y
f
g
Opt Using PythonEquation(48)
Opt Using DOE(9)
3.2 Optimization Using DOE(利用PythonEquation驗證)
本節試著驗證看看,如果直接利用
PythonEquation
component
輸入近似的f
及g
,並對其直接進行最佳化,其結果會不會和 3.1 Optimization Using DOE 一樣。打開
Opt Using PythonEquation
這個task
,另存一task
,命名為Opt Using DOE(Verified by PythonEquation)
,將f
及g
的近似函數,取代原有的方程式。PythonEquation
被呼叫次數x
y
f
g
Opt Using PythonEquation(48)
Opt Using DOE(9)
Opt Using DOE(Verified by PythonEquation)(40)
以上,可證明
3.1
節與3.2
節操作,可得到相同的答案。3.3 RSA Using DOE
本節講述如何將
RSA
為Component Ediror外層
,PythonEquation
為Component Ediror內層
。3.3.1 Work Flow
打開
Opt Using PythonEquation
這個task
,另存一個新的task
,命名為RSA Using DOE
。接著至E欄
中將Add Response Surface Approximated optimization component
拖曳至F欄
。將
PythonEquation
component
剪下貼上至RSA
中,並刪除DOE
component
。重新連接所有
component
。3.3.2 Data Linker
點選
C欄
Data Linker
,使用左側的Automatically add data to the selected model
自動連接。3.3.3 Component Editor
點選
C欄
Component Editor
外層的RSA
component
,並進行下列操作:x
的Lower Bound
為-2
及Upper Bound
為2
。y
的Lower Bound
為-2
及Upper Bound
為4
。f
為Objective
、不勾選其為Constraint
,並確定其Goal
維持預設的Minimize
。g
為Constraint
,並設定其Lower Bound
為1.5
。點選
C欄
Component Editor
外層的RSA
component
,選擇User Defined
為Starting Strategy
,使用Import From File
讀入 VDOC_02_DOE 中產生的DOE_with_responses.txt
,作為DOE
點位,而不重新計算。當然,如 3.1 Optimization Using DOE 一樣,可以使用Import From Database
來讀入預先計算好的點位。Model Order
維持預設的Full Quadratic
。3.3.4 Simulation Monitors
點選
C欄
Simulation Monitors
,新增兩張Optimization
最常用的BestObjetive
及WrostConstraint
來輔助觀察。3.3.5 Post processing
點選
Post Processing
中的Show Design Points Table
,可以看到總共使用點數為33
。也就是說扣掉我們輸入的9
個點位,PythonEquation
component
又被呼叫了33 - 9 =24
次。對比直接進行最佳化
Opt Using PythonEquation
task
的48
次,次數少了48 - 33 = 15
次。這證明
RSA
+DOE
是一個求解問題的好策略。PythonEquation
被呼叫次數x
y
f
g
Opt Using PythonEquation(48)
Opt Using DOE(9)
Opt Using DOE(Verified by PythonEquation)(40)
RSA Using DOE(33)
4. 聯絡老駱
如果您或貴單位:
VR&D
產品的意願,但是有報價、採購及發票等問題。歡迎透過 camel@caeml.ai 聯絡老駱。