I'm using fmincon to solve a nonconvex optimization problem. Mainly my problem is optimizing some function over a 2D area, where the optimizing variables are the x and y coordinates of N points, so my minimizer myX for my objective function f(myX) is a (2 by N) matrix representing the x and y coordinates. For this optimization, I'm interested in changes >1 meter because my objective function is not very sensitive for small changes in x and y.
So, mainly I have these two problems:
- The step size of fmincon is very small. I'm using this configuration for fmincon:
myoptions = optimoptions(@fmincon,'Algorithm','interior-point','Display','iter', 'FiniteDifferenceStepSize', 5,...
'TolX', 1, 'UseParallel',1);
Example of the output:
First-order Norm of
Iter F-count f(x) Feasibility optimality step
0 21 -1.660633e+00 0.000e+00 7.942e-04
1 42 -1.660634e+00 0.000e+00 7.942e-04 1.598e-03
Local minimum possible. Constraints satisfied.
fmincon stopped because the size of the current step is less than
the selected value of the step size tolerance and constraints are
satisfied to within the default value of the constraint tolerance.
As you can see, the objective function f(myX) is slightly changing (that is also happening to x and y coordinates). In this simulation I'm starting from points that satisfy the constraints but they are very far from optimality. So, how can I change the step size of fmincon (I'm interested in steps greater than 1 meter or changes on objective function that is greater than 0.1).
- My objective function and constraint contain integral that needs to be evaluated numerically, so fmin is very slow. Are there ways to speed up fmincon.
Best Regards and thank you in advance for your help.