optimizer to use in MEX

4 views (last 30 days)
Alireza Azampour
Alireza Azampour on 5 Nov 2021
Edited: Alireza Azampour on 9 Nov 2021
I wanted to use an optimizer in a code that I want to MEX it. As far as I know the only suitable optimizer is fmincon but I have faced some problems wiht it. Is there any other optimizers that can be used in a MEX code?
  2 Comments
Jan
Jan on 7 Nov 2021
What do you need? A local or global optimization? What kind of restraints does your problem have? There are dozens of different optimizations tools for the different types of prblems. What das "used in a MEX code mean"? Are you writing a C-Mex function? Do you want to call a Matlab function or coud it be a C or C++ tool also?
Alireza Azampour
Alireza Azampour on 9 Nov 2021
Edited: Alireza Azampour on 9 Nov 2021
I'm writing a function that should be called multiple times. It is a time consuming code and I need to change it to a MEX function to increase the speed (which has a huge effect). The optimizer I'm asking for is used inside this function. It can be a local optimizer cause it's used to refine an answer obtained from an on-gird optimization. It's a C_Mex function but my main purpose is to call in inside Matlab so it does not matter for my purpose.
Also the optimiztion problem has both linaer and non-linear inequality constraints.

Sign in to comment.

Answers (1)

Matt J
Matt J on 7 Nov 2021
Edited: Matt J on 7 Nov 2021
You're not going to get any advantage from including the optimization in the MEX unless possibly the optimizer is also implemented in C-code. If you have Matlab Coder, which supports both fmincon and fminsearch, you can convert the total code to C\C++ including the optimizer,
Be mindful, though, that fminsearch works well only for problems with a handful of unknowns (<=6 approximately).

Categories

Find more on Problem-Based Optimization Setup in Help Center and File Exchange

Products


Release

R2021b

Community Treasure Hunt

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

Start Hunting!