→ gomi: abaqus 跑完數字存到文字檔 給其他 m 檔讀 09/27 11:12
跑abaqus這個動作我還是必須寫在目標函數的m檔裡,但是在fmincon模組裡,
提取限制條件的順序似乎不見得一定是在目標函數後面。
我有試過把限制條件值回傳到全域變數,我想這效果應該跟gomi大是一樣的意思,
然而我去觀察fmincon每一次的迭代算出來的限制條件值,有時候是上一步的值
有時候是當下這一步的值。很奇怪@@
※ 編輯: caron0225 (60.248.190.37), 09/28/2018 16:27:39
※ 編輯: caron0225 (60.248.190.37), 09/28/2018 16:28:04
推 mystage123: 你是說matlab迭代一次,abaqus會自動跑兩次分析?為 09/29 01:24
→ mystage123: 何ab無法一次跑出兩個數值? 09/29 01:24
ab可以一次跑出兩個數值,問題是我想要直接套用fmincon的模組,而input是函數而非一
個值。
我可以在目標函數的m檔裡,執行abaqus並且同時得到目標函數值與限制式值。雖然利用
global把限制式值變成全域變數,並且另外寫一個function的m檔來輸出該值。但是卻遇
到fmincon本身演算法呼叫目標函數與限制式兩個m檔的時機並不一致的問題。
※ 編輯: caron0225 (60.248.190.37), 09/29/2018 13:53:43
→ gomi: 簡單來說 你需要先判斷是否現在要跑得分析 其設計值跟上一 09/29 21:00
→ gomi: 次跑的是否一樣 若是則不跑 直接去找文字檔 若否則跑 09/29 21:01
→ gomi: 唯一會擔憂的是,你上一次跑得設計值存成文字檔 要跟這次跑 09/29 21:03
→ gomi: 的設計值作比較時,如果精度問題發生,就會被判定要跑 09/29 21:03
推 mystage123: 你的論文跟我的蠻像的,我是連mat lab ansys做最佳化^ 09/30 09:22
→ mystage123: _^,我也是用fmincon 09/30 09:22
推 mystage123: 我不知道運算法會不會改變呼叫時機,試試看這個option 09/30 09:45
→ mystage123: s: FiniteDifferenceType 09/30 09:45