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. Executable Wrapper的妙用
由於VisualDOC
於內部介面使用Jython,故其內建Python
語法僅支援到Python2.x
版本,但使用者仍可以使用Executable Wrapper
連接本機的Python3.x
環境甚至其它Executable File
使用。
3.1 Work Flow
打開Opt Using PythonEquation
task
,另存一個新的task
,命名為Opt Using localPython
,並刪除PythonEquation
component
。
接著至E欄
中將Executable Wrapper
component
拖曳至Optimization
component
中。
要注意請選擇Executable Wrapper
component
,不是Executable
component
喔!
重新連接Work Flow
。
3.2 Component Editor內層
建立1
個.txt
檔案,命名為input.txt
,在第1
行及第2
行都輸入2.0
,來代表x
及y
的Initial Value
。
建立1
個空的.txt
檔案,命名為output.txt
。
建立1
個.py
檔案,命名為Equation.py
,輸入以下程式碼。
import math
with open('input.txt') as file:
ipt = [float(line) for line in file]
x, y = ipt
f = (x**2 + y**2) / 10 - math.cos(x) * math.cos(y)
g = x**2 + y**2
with open('output.txt', 'w') as file:
for line in (f, g):
file.write('{:28.16e}'.format(line) + '\n')
使用Executable Wrapper
,必須自己處理I/O
介面,雖然比較麻煩,但是對於複雜的I/O
文件,可以有很好的控制權。此外,由於已經接到了本機的Python
環境,所以這表示可以自由import
其它模組來運用,像是pandas
、numpy
、scipy
等等,後續可以做相當多的運用。
點選C欄
Component Editor
內的Executable Wrapper
component
,於右方欄位進行下列設定:
- 在
Local Analysis Program Definition
中選擇Python
的執行方法。老駱自己是習慣用環境變數,所以打了Python
。此外也可以直接用路徑來指定。舉例來說,例如想用Anaconda
下1
個名叫VisualDOC
的虛擬環境來執行的話,可以將Fie Path Type
設為Absolute
,並於File Path
輸入C:\Users\您的使用者名稱\Anaconda3\envs\VisualDOC\python.exe
。
- 在
Analysis options
裡的Program Arguments
內輸入Equation.py
。
- 在
Input File Definition
的File Path
選擇input.txt
。
- 在
Output File Definition
的File Path
選擇Output.txt
。
輸入完成後,右方的欄位應該會像:
點選左方欄位,進行下列設定:
- 輸入
x
、y
、f
及g
。
- 將
x
及y
的Input/Output
設定為input
。
- 將
f
及g
的Input/Output
設定為output
。
如 VDOC_01_PythonEquation 所述,其實不一定要指定x
及y
的Initial Value
,但如果指定的話,將有助於確認與本機Python
環境是否正確設定。事實上,如果不指定此處x
及y
的Initial Value
,VisualDOC
還是能正常執行。
輸入完成後,左方的欄位應該會像:
3.3 Data Linker
點選C欄
中的Data Linker
,使用Automatically add data to the selected model
來自動連接。
接下來點選C欄
中的component editor外層
的Optimization
component
,變數已經新增好了。
3.4 Component Editor內層
點選C欄
Component Editor
內的Optimization
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
。
右邊的演算法部份,維持預設。
3.5 Simulation Monitors
選擇最常用的BestObjetive
及WrostConstraint
來觀察。
3.6 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 |
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 |
Opt Using localPython(48) |
0.86087 |
0.87115 |
-0.26971 |
1.50001 |
可以看出來,求解結果與Opt Using PythonEquation
一致。
4. 聯絡老駱
如果您或貴單位:
- 有導入
VR&D
產品的意願,但是有報價、採購及發票等問題。
- 有教育訓練或顧問需求。
- 有些建言指教。
- 想交個朋友。
歡迎透過 camel@caeml.ai 聯絡老駱。
0. 目錄
1. 老駱提醒
VisualDOC
內的Executable Wrapper
連接您本機的Python
環境。2. 問題描述
Minimizef(x,y) :
f(x,y)=(x2+y2)10−cos(x)cos(y)
Objective Function
Subject to theg(x,y) :
g(x,y)=(x2+y2)≥1.5
Constraint Equation
Design Variables (Side Constraints)
:Initial Conditions
:3. Executable Wrapper的妙用
由於
VisualDOC
於內部介面使用Jython,故其內建Python
語法僅支援到Python2.x
版本,但使用者仍可以使用Executable Wrapper
連接本機的Python3.x
環境甚至其它Executable File
使用。3.1 Work Flow
打開
Opt Using PythonEquation
task
,另存一個新的task
,命名為Opt Using localPython
,並刪除PythonEquation
component
。接著至
E欄
中將Executable Wrapper
component
拖曳至Optimization
component
中。要注意請選擇
Executable Wrapper
component
,不是Executable
component
喔!重新連接
Work Flow
。3.2 Component Editor內層
建立
1
個.txt
檔案,命名為input.txt
,在第1
行及第2
行都輸入2.0
,來代表x
及y
的Initial Value
。建立
1
個空的.txt
檔案,命名為output.txt
。建立
1
個.py
檔案,命名為Equation.py
,輸入以下程式碼。使用
Executable Wrapper
,必須自己處理I/O
介面,雖然比較麻煩,但是對於複雜的I/O
文件,可以有很好的控制權。此外,由於已經接到了本機的Python
環境,所以這表示可以自由import
其它模組來運用,像是pandas
、numpy
、scipy
等等,後續可以做相當多的運用。點選
C欄
Component Editor
內的Executable Wrapper
component
,於右方欄位進行下列設定:Local Analysis Program Definition
中選擇Python
的執行方法。老駱自己是習慣用環境變數,所以打了Python
。此外也可以直接用路徑來指定。舉例來說,例如想用Anaconda
下1
個名叫VisualDOC
的虛擬環境來執行的話,可以將Fie Path Type
設為Absolute
,並於File Path
輸入C:\Users\您的使用者名稱\Anaconda3\envs\VisualDOC\python.exe
。Analysis options
裡的Program Arguments
內輸入Equation.py
。Input File Definition
的File Path
選擇input.txt
。Output File Definition
的File Path
選擇Output.txt
。輸入完成後,右方的欄位應該會像:
點選左方欄位,進行下列設定:
x
、y
、f
及g
。x
及y
的Input/Output
設定為input
。f
及g
的Input/Output
設定為output
。如 VDOC_01_PythonEquation 所述,其實不一定要指定
x
及y
的Initial Value
,但如果指定的話,將有助於確認與本機Python
環境是否正確設定。事實上,如果不指定此處x
及y
的Initial Value
,VisualDOC
還是能正常執行。輸入完成後,左方的欄位應該會像:
3.3 Data Linker
點選
C欄
中的Data Linker
,使用Automatically add data to the selected model
來自動連接。接下來點選
C欄
中的component editor外層
的Optimization
component
,變數已經新增好了。3.4 Component Editor內層
點選
C欄
Component Editor
內的Optimization
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
。右邊的演算法部份,維持預設。
3.5 Simulation Monitors
選擇最常用的
BestObjetive
及WrostConstraint
來觀察。3.6 Post Processing
PythonEquation
被呼叫次數x
y
f
g
Opt Using PythonEquation(48)
Opt Using DOE(9)
Opt Using DOE(Verified by PythonEquation)(40)
RSA Using DOE(33)
Opt Using localPython(48)
可以看出來,求解結果與
Opt Using PythonEquation
一致。4. 聯絡老駱
如果您或貴單位:
VR&D
產品的意願,但是有報價、採購及發票等問題。歡迎透過 camel@caeml.ai 聯絡老駱。