I am using the SLSQP algorithm in openMDAO, but I am having trouble understanding how it actually works. I am just looking at the common paraboloid example, which has 2 design variables and aims to minimise f, without any constraints. By printing out the values of x,y and f for each iteration (iteration is probably not the right word for this), I can see that occasionally the first derivative is evaluated using forward finite difference for each design variable(x, y). These derivatives are then used to find the next x and y values, however I cannot see the pattern.
Also, when I read about the SLSQP method, the second derivatives are also required. However, I do not see it being calculated. Let me give an example of my output:
iteration 1:
x = 0
y = 0
f = 22
iteration 2:
x = 0.01
y = 0
f = 21.9401
iteration 3:
x = 0
y = 0.01
f = 22.0801
from these last 2 iterations we can calculate, df/dx = 5.99 , df/dy = -8.01
The next iteration happens to be:
x = 5.99
y = -8.01
f = -25.9597
Then again two finite difference calculations from this point to find: df/dx = 2.02 , df/dy = 2.02
Then the next iteration has variables: x = 8.372726, y = -6.66007 And I have no idea how to obtain those values.
Also, sometimes a large step is taken without even calculating the derivatives at that point. Possibly because the previous step was too large resulting in the function going away from the minimum.
I am hoping someone can explain to me or give a useful source for the exact algorithm that is used, or give any tips that could be used to better understand it. Thanks a lot!