fminsearchbnd optimization function in matlab
显示 更早的评论
i used fminsearchbnd for boundary problem but the matlab it tell me that Undefined function 'fminsearchbnd' can any one help me with is problem i used this example
fun = @(x)(x(1)-5)^2+(x(2)+6)^2+x(3); % x0 = [0 0 0]; Lb=[0 -1 2]; Ub=[1 2 3]; [x,fval,exitflag,output] = fminsearchbnd(fun,Lb,Ub); disp(fval)
thank you
采纳的回答
更多回答(3 个)
MASTER WHOS
2019-2-7
0 个投票
I DID THIS:
Do not put it in the MATLAB toolbox. Download the .zip file, and unzip it into a directory that has nothing else in it (and which is not under the MATLAB installation.) Then use pathtool to add the directory to the MATLAB path. After that MATLAB will be able to find the file.
but it gives error: Error in fminsearchbnd (line 264)
[xu,fval,exitflag,output] = fminsearch(intrafun,x0u,options,varargin);
what might be the problem?
11 个评论
John D'Errico
2019-2-7
Please show the COMPLETE error. That is, all the red text.
Walter Roberson
2019-2-7
and a full copy of the error message . you would not get that error report unless the function was found.
MASTER WHOS
2019-2-7
Attached image is the error;
And the refered equation 37 is below:
37: theta_noNull = fminsearchbnd(SQP_complex2 , [x0 , 1, x00],[x1 , 1, x3], [x2 , 1, x4]);
Torsten
2019-2-7
What is SQP_complex2 ? What are the values of x0, x00, x1, x3, x2, x4 ?
MASTER WHOS
2019-2-8
x0 = zeros (1 ,45); % initial value for optimization
x00 = zeros (1 ,10);
x1 = -pi/1 * ones (1 ,45);
x2 = pi/1 * ones (1 ,45);
x3 = -pi/1 * ones (1 ,10);
x4 = pi/1 * ones (1 ,10);
Torsten
2019-2-8
Can't you include executable code here ?
John D'Errico
2019-2-8
Ok. Your very first problem is that you cannot realistically use fminserchbnd with any serious hope of success.
You have 56 unknowns to estimate. Although one of them seems to have a lower bound of 1 which is equal to its upper bound of 1. The latter is not a problem though. Fminserchbnd can handle that case. In fact, I recall that I specifally catered to that case, looking for variables that had lower and upper bounds that were identical. So really, you have 55 unknowns to estimate.
Regardelss, that is by far too many unknowns for fminsearchbnd to handle. Perhaps 10-12 unknowns is a far more reasonable limit to gain convergence from a tool like fminsearchbnd. Once you start to try to solve problems with many tens of parameters like this, tools like fminsearch and fminsearchbnd tend to get bogged down, becoming far too inefficient. fminsearchbnd would probably require literally billions of function evaluations to achieve even approximate convergence.
I would strongly recommend instead using fmincon from the optimization toolbox, if that is an option.
(And please stop adding answers just to add comments.)
MASTER WHOS
2019-2-8
Thanks for your utmost responsive support.
NB: I do not have much experience YET with MATLAB as I almost started using it last year. So, if you can use SIMPLE (easy to understand guidance) then I will appreciate the most
I AM VERY GRATEFUL FOR YOUR HELP
Torsten
2019-2-8
I still don't see neither
@SQP_complex2
nor
@SQP_complex2_case2
Walter Roberson
2019-2-8
I have my own private implementation of tricking fminsearch into being bounded (stops when it hits the boundary rather than reflecting as might be nice.)
I know from experience that 55 variables is completely intractable to use seriously with fminsearch . fminsearch gets caught in local minima , not as easily as fmincon gets caught but it happens all the time. It is not a global minimizer. To use it for more than light use you need to start it at multiple locations . In particular you need starting points near every valid combination of upper and lower bounds . With 55 variables that would be 2^55 configuration to examine. If you could process 2^30 per second (gigaflop range ) then that would take you 2^25 seconds . That would be a year . You probably cannot process more than 1/100 of that speed so probably 100 or so years . Just for figuring out crudely which end of each bound you probably near.
MASTER WHOS
2019-2-8
0 个投票
Thanks for your comment.
sorry, so, is that the only problem? [missing @SQP_complex2, & @SQP_complex2_case2] (which bring the error I attached with fminsearchbnd)?
2 个评论
Walter Roberson
2019-2-8
There is @ missing before SQP_complex_case2 unless that is a function that returns aa function handle.
类别
在 帮助中心 和 File Exchange 中查找有关 Surrogate Optimization 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!