7

我想知道R中是否有处理非线性整数优化的包。

“基本上”,我想解决以下问题:

max f(x) s.t x in (0,10) and x is integer.

我知道一些分支算法能够处理这个问题的线性版本,但这里我的函数f()可能更复杂。(我什至不能确定它是形式的二次方f(x)=xQx)。

我想总会有蛮力解决方案来测试所有可能性,只要它们是有界的,但我想知道是否没有更聪明的方法。

4

4 回答 4

8

我有几个选项给你,但没有一个是灵丹妙药,虽然看起来你的灵丹妙药正在rino项目下工作:http ://r-forge.r-project.org/projects/rino/ .

由于您的函数很复杂,您可能希望使用遗传算法(即,基于梯度的优化器可能不可靠)。genoudrgenoud图书馆中可能会成功(链接文本)。如果你设置data.type.int=TRUE它应该可以解决问题。我没有使用过这个库,但对 matlab 中的 GAs 有一些经验,并且收敛时间对设置很敏感,所以你会很好地阅读手册页几次。

optim或者,如果您的函数严格凹入(不太可能,因为您说它可能很复杂),您可以使用梯度求解器(例如,)。

对不起,我不能提供更多帮助。

于 2010-07-13T13:43:36.853 回答
4

如果它几乎不是非线性的,那么没有比蛮力更好的方法(你永远不会知道最小值是否是局部的,或者某些看起来平坦的片段是否没有任何狭窄和深谷),当然除了符号计算(这可能赢了'不起作用,因为函数太复杂)或软计算,我的意思是遗传算法,蒙特卡罗,群体等(在这里你不能保证它会找到非常全局的最小值,因为你有整数 x 它可能比蛮力慢)。

于 2010-07-13T08:25:32.607 回答
3

http://cran.r-project.org/web/views/Optimization.html列出了Rdonlp2可能Rsolnp适合的包。

于 2010-07-13T09:40:38.153 回答
2

离散填充函数法是最近的一种方法,它可以找到具有大约 100 个约束和变量的非线性整数规划的全局解。

于 2011-08-27T20:04:50.223 回答