[請益] Matlab最佳化abaqus目標函數 限制條件

看板Cad_Cae (電腦輔助設計)作者 (淯仔)時間6年前 (2018/09/26 17:00), 6年前編輯推噓3(308)
留言11則, 2人參與, 6年前最新討論串1/1
大家好~ 想跟鄉民大大們請教一下!! 小弟我利用MATLAB對某個結構問題作最佳化計算。 目標函數值與限制條件值利用abaqus分析結果得到,而 Matlab最佳化模組用的是 fmincon。 在每一次迭代中,目標函數值與限制條件值我只需要用abaqus 計算一次便可取得這兩個值。 但是在fmincon的input格式中,我需要分別 define 目標函數與限制條件並輸入。 這意味著我在一次迭代中,我要作了兩次abaqus計算來定義Matlab的目標函數與限制條件!! 請問有甚麼辦法去避免徒勞的一次計算!!有辦法在matlab語法上去修正嗎?? 謝謝~~~~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.248.190.37 ※ 文章網址: https://www.ptt.cc/bbs/Cad_Cae/M.1537952457.A.016.html

09/27 11:12, 6年前 , 1F
abaqus 跑完數字存到文字檔 給其他 m 檔讀
09/27 11:12, 1F
跑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

09/29 01:24, 6年前 , 2F
你是說matlab迭代一次,abaqus會自動跑兩次分析?為
09/29 01:24, 2F

09/29 01:24, 6年前 , 3F
何ab無法一次跑出兩個數值?
09/29 01:24, 3F
ab可以一次跑出兩個數值,問題是我想要直接套用fmincon的模組,而input是函數而非一 個值。 我可以在目標函數的m檔裡,執行abaqus並且同時得到目標函數值與限制式值。雖然利用 global把限制式值變成全域變數,並且另外寫一個function的m檔來輸出該值。但是卻遇 到fmincon本身演算法呼叫目標函數與限制式兩個m檔的時機並不一致的問題。 ※ 編輯: caron0225 (60.248.190.37), 09/29/2018 13:53:43

09/29 21:00, 6年前 , 4F
簡單來說 你需要先判斷是否現在要跑得分析 其設計值跟上一
09/29 21:00, 4F

09/29 21:01, 6年前 , 5F
次跑的是否一樣 若是則不跑 直接去找文字檔 若否則跑
09/29 21:01, 5F

09/29 21:03, 6年前 , 6F
唯一會擔憂的是,你上一次跑得設計值存成文字檔 要跟這次跑
09/29 21:03, 6F

09/29 21:03, 6年前 , 7F
的設計值作比較時,如果精度問題發生,就會被判定要跑
09/29 21:03, 7F

09/30 09:22, 6年前 , 8F
你的論文跟我的蠻像的,我是連mat lab ansys做最佳化^
09/30 09:22, 8F

09/30 09:22, 6年前 , 9F
_^,我也是用fmincon
09/30 09:22, 9F

09/30 09:45, 6年前 , 10F
我不知道運算法會不會改變呼叫時機,試試看這個option
09/30 09:45, 10F

09/30 09:45, 6年前 , 11F
s: FiniteDifferenceType
09/30 09:45, 11F
文章代碼(AID): #1Rgqh90M (Cad_Cae)
文章代碼(AID): #1Rgqh90M (Cad_Cae)