Global search and Handle function specification
显示 更早的评论
The original code was using "fmincon" to minimize the function MSM_likelihood below:
[parameters,LL,exitflag,output]=fmincon('MSM_likelihood',startingvals,[],[],[],[],LB,UB, [],options,kbar,data,A_template);
HOWEVER, I am trying to run the optimization by using Global Search instead and that requires a function handle, which I believe I used sixmin for that. My code is below:
sixmin = @(input,kbar,data,A_template,estim_flag)MSM_likelihood;
opts = optimoptions(@fmincon,'Algorithm','interior-point');
problem = createOptimProblem('fmincon','x0',startingvals,...
'objective',sixmin(input,kbar,data,A_template,estim_flag),'lb',LB,'ub',UB,...
'options',opts);
gs = GlobalSearch;
[x,f] = run(gs,problem)
Somehow, the code doesn't run as expected. Please help! I really appreciate it!
回答(2 个)
Walter Roberson
2016-2-26
0 个投票
'objective' needs to be followed by a function handle, but instead you are following it by the result of calling sixmin on particular parameters. You should probably just have sixmin (no parameters following) at that point.
4 个评论
Tien Nguyen
2016-2-26
Steven Lord
2016-2-29
When that function handle is invoked with five input arguments, it will call MSM_likelihood with ZERO input arguments. I'm guessing that's not what you want. If you want to pass all five inputs into MSM_likelihood:
sixmin = @(input,kbar,data,A_template,estim_flag) ...
MSM_likelihood(input,kbar,data,A_template,estim_flag);
I broke this definition across two lines using ... for ease of display in Answers, but you could put it all on one line if you want.
Tien Nguyen
2016-3-2
Walter Roberson
2016-3-2
sixmin = @(input) MSM_likelihood(input,kbar,data,A_template,estim_flag);
Alan Weiss
2016-2-29
You might want to try the following line of code instead:
sixmin = @MSM_likelihood;
The function handle for fmincon must contain exactly one argument. See Passing Extra Parameters for more information.
Alan Weiss
MATLAB mathematical toolbox documentation
类别
在 帮助中心 和 File Exchange 中查找有关 Surrogate Optimization 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!