作者caron0225 (淯仔)
看板Cad_Cae
标题[请益] Matlab最佳化abaqus目标函数 限制条件
时间Wed Sep 26 17:00:55 2018
大家好~
想跟乡民大大们请教一下!!
小弟我利用MATLAB对某个结构问题作最佳化计算。
目标函数值与限制条件值利用abaqus分析结果得到,而
Matlab最佳化模组用的是 fmincon。
在每一次迭代中,目标函数值与限制条件值我只需要用abaqus
计算一次便可取得这两个值。
但是在fmincon的input格式中,我需要分别 define 目标函数与限制条件并输入。
这意味着我在一次迭代中,我要作了两次abaqus计算来定义Matlab的目标函数与限制条件!!
请问有甚麽办法去避免徒劳的一次计算!!有办法在matlab语法上去修正吗??
谢谢~~~~
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 60.248.190.37
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Cad_Cae/M.1537952457.A.016.html
1F:→ 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
2F:推 mystage123: 你是说matlab迭代一次,abaqus会自动跑两次分析?为 09/29 01:24
3F:→ 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
4F:→ gomi: 简单来说 你需要先判断是否现在要跑得分析 其设计值跟上一 09/29 21:00
5F:→ gomi: 次跑的是否一样 若是则不跑 直接去找文字档 若否则跑 09/29 21:01
6F:→ gomi: 唯一会担忧的是,你上一次跑得设计值存成文字档 要跟这次跑 09/29 21:03
7F:→ gomi: 的设计值作比较时,如果精度问题发生,就会被判定要跑 09/29 21:03
8F:推 mystage123: 你的论文跟我的蛮像的,我是连mat lab ansys做最佳化^ 09/30 09:22
9F:→ mystage123: _^,我也是用fmincon 09/30 09:22
10F:推 mystage123: 我不知道运算法会不会改变呼叫时机,试试看这个option 09/30 09:45
11F:→ mystage123: s: FiniteDifferenceType 09/30 09:45