[fmincon] Can I use the fmincon when the objective funtion is not analytic, i.e., when the objective funtion includes variables that changes at each iteration ?

3 次查看(过去 30 天)
for my knowlege, "fmincon" can solve an optimization problem when the objective function is an analytic function. However, in my case I should include some data(or variables) from a numerical method like FEM to the objective function.
for example, consider the objective function such as
fun = (x(1)-a)^2 + (x(2)-b)^2
where "x" is the design variable vector, "a" and "b" are data which depend on the value of "x" so that the values of the data change at each iteration. In my case, the values of "a" and "b" are determined from FEM based on the value of "x".
In this case, can I use "fmincon?" If so, how can I set the objective function?
Any comment is appreciated.
Thanks for your consideration.

回答(2 个)

Daniel Dolan
Daniel Dolan 2018-6-7
Calculations of a=a(x) and b=b(x) can incorporated inside the objective function. All the optimizer cares about is how the output fun varies with x.
  3 个评论
Young-Rok Kwon
Young-Rok Kwon 2018-6-7
Thanks for the answer. In my case, "a" and "b" will be descrete values that varies with the result of FEM at each iteration, so I think the objective function might be regared as not continuous. Then, can't I use "fmincon?"
Walter Roberson
Walter Roberson 2018-6-7
If you can break the problem up into regions where the a and b values are consistent for the region, then you can optimize over each region, and then at the end you can take the best over all of the regions.

请先登录,再进行评论。


Alan Weiss
Alan Weiss 2018-6-7
You might be interested in the documentation topic Optimizing a Simulation or ODE. Finite element calculations have pretty much the same considerations.
Alan Weiss
MATLAB mathematical toolbox documentation

类别

Help CenterFile Exchange 中查找有关 Solver Outputs and Iterative Display 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by