In short I would like to know if it is possible to define the DiffMinChange option in fmincon so that in a multivariable optimisation different DiffMinChange options are used for the different variables? And if so how this should be implemented.
A more complete explanation:
I am simulating a 6 degree of freedom system, where each degree of freedom is characterised by a single variable. These variables determine the motion in each degree of freedom. I am trying to optimise the variables so that a predicted motion in each direction matches the measure motion in the corrisponding direction. To do this I have been using fmincon to optimise the variables by minimising the cost function, which I have defines as the sum of the squared error (measured-predicted motion).
Until now I have been optimising a single variable at a time and changing the DiffMinChange option to help guide the step size fmincon used to find the optimal solution. Doing this I was able to drastically reduce the number of iterations. I am now trying to optimise all 6 variables simultaneously, however the cost function is highly sensitive to certain variables while much less sensitive to others. Therefore I am trying to implement different DiffMinChange values for different variables so that I can encourage fmincon to take larger steps for the variables which do not affect the cost function rapidly and small steps for the variables which have a large effect on the cost function. Is it possible to specify different DiffMinChange values for the different variables or would I need to consider a different optimisation function?
I have tried to assign a 1x6 matrix to DiffMinChange (in the same way you assign a matrix of variables to be optimised) but this does not work as DiffMinChange requires a real non-negative scalar.