How to let fminsearch only search over integers?

12 ビュー (過去 30 日間)
Tom Gerard
Tom Gerard 2016 年 4 月 28 日
回答済み: Walter Roberson 2016 年 4 月 28 日
I'm using the fminsearch Method of Matlab to minimize a function:
c = cvpartition(200,'KFold',10);
minfn = @(z)kfoldLoss(fitcsvm(cdata,grp,'CVPartition',c,...
'KernelFunction','rbf','BoxConstraint',exp(z(2)),...
'KernelScale',exp(z(1))));
opts = optimset('TolX',5e-4,'TolFun',5e-4);
[searchmin fval] = fminsearch(minfn,randn(2,1),opts)
The minimization is over two parameters.
Now I would like to minimize a third parameter, but this parameter can only take positive integer values, i.e. 1,2,3,...
How can I tell fminsearch to only consider positive integers?
Second, if my third parameter gets initialized to 10 but it actual best value is 100, does fminsearch converge fast in such cases?
  1 件のコメント
Torsten
Torsten 2016 年 4 月 28 日
fminsearch can not handle constraints that a certain variable to be optimized is an integer. Choose a reasonable range for this parameter (say 1,2,3,4,...,100), run fmincon with this parameter set to 1,2,3,4,5... 100 (thus 100 times) and choose the case out of the 100 results where "minfn" is minimal.
Best wishes
Torsten.

サインインしてコメントする。

採用された回答

Walter Roberson
Walter Roberson 2016 年 4 月 28 日
fminsearch does not handle constraints of any kind.
You can use floor(abs()) of the parameter in your calculation.
fminsearch is not necessarily going to converge quickly for any particular parameter. A lot depends upon how "bumpy" the function is (because of local minima) and how "flat" the function is (very flat functions can take a lot of time to converge because the step might need to be very large in that parameter, and yet might need to be very small in some other parameter.)

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeNonlinear Optimization についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by