Optimization: share additional output of cost function with constraint function
10 views (last 30 days)
I have a well defined optimization problem in which I have a separate cost function and a separate constraint function:
Cost = @(C)costcenterroad(C,lp,xref,yref,T,rw);
[C,fval] = fmincon(Cost,C1,,,,,,,Nonlinconstr);
Inside the cost function (which is called first by fmincon), I evaluate nonlinear functions of the decision variables (C in this case). The outputs of the nonlinear function determine the cost.
However, in the constraint function I need to evaluate the same function, with the same decesion variables (thats the way fmincon works; first the cost, then the contraints). Hence, I would rather use the values already calculated in the cost functions.
I tried to do this by using a structure SOL as an output of the cost function, and provide it as an input to the constraint function hence (also see code above);
However, Matlab will tell that "sol" is unknown. I'am guessing that "sol" is not an output when the function `costcenterroad` is called. I also used 'sol' as a global variable, but this is not very elegant and fast.
Does anyone have any suggestions how to do this? Your help will be greatly appreciated!
Seth DeLand on 7 Mar 2012
There was a good discussion on this issue here: http://www.mathworks.com/matlabcentral/newsreader/view_thread/269936
The technical term for this practice is "Memoization". There's some more good information on memoization in MATLAB in Loren's blog post: