首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让fminsearch只搜索整数?

如何让fminsearch只搜索整数?
EN

Stack Overflow用户
提问于 2016-04-28 00:16:36
回答 3查看 1.3K关注 0票数 2

我使用Matlab的fminsearch方法来最小化一个函数:

代码语言:javascript
复制
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)

最小值超过两个参数。

现在我想最小化第三个参数,但是这个参数只能取正整数值,即1,2,3,…

我如何告诉fminsearch只考虑正整数?

第二,如果我的第三个参数被初始化为10,但它的实际最大值是100,那么在这种情况下fminsearch会很快收敛吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-04-28 00:37:07

您不能告诉fminsearch只考虑整数。该算法不适用于离散优化,一般情况下比连续优化困难得多。

如果整数参数的可信值相对较少,则可以对它们进行循环,但这可能太昂贵了。或者,您可以编写自己的一维离散优化函数,并让它为它所尝试的整数参数的每个值调用fminsearch。(例如,您可以模拟一些标准的一维连续优化算法,并且只要找到一个参数值,比如说,比它的两个邻居都要好的参数值,就可以返回。)您很可能能够使此函数适应您正在试图解决的特定问题。

票数 3
EN

Stack Overflow用户

发布于 2016-04-28 04:21:59

正如@Gareth McCaughan所说,您不能告诉fminsearch将搜索空间限制为整数。如果要搜索能够处理此类问题的求解器,则需要搜索“混合整数规划”。混合整数用于部分连续整数规划。而“编程”是用于优化的行话(令人毛骨悚然的名称,但就像QWERTY键盘一样,我们被它困住了)。

请注意,整数规划通常是NP难的!更大的问题可能是完全难以解决的。

票数 1
EN

Stack Overflow用户

发布于 2017-03-24 13:31:27

在我处理的案例中,我寻找一个满足条件的向量索引。向量索引是正整数.我所做的fminsearch的解决方法是错误函数的插值。假设,fminsearch建议5.1267作为新索引。我计算了索引5和6的误差函数,并给出了一个插值。这导致了稳定和令人满意的结果。

@plr-magdeburg.de

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36903101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档