gpt4 book ai didi

matlab - 为什么 Matlab 的 `intlinprog` 会为整数变量返回接近整数的值?

转载 作者:太空宇宙 更新时间:2023-11-03 20:32:05 25 4
gpt4 key购买 nike

我的背景不是线性规划。我正在研究 Matlab 的混合整数线性规划 (intlinprog),目的是正确应用它,而不是推进底层引擎的科学。

根据intlinprog页,在 Limitations 部分,解决方案似乎是在非整数空间中寻求的,并且如果表面上是整数的变量具有非常小的非整数部分,则被认为满足整数约束。

为什么要这样做?为什么它不像在组合问题中那样只搜索整数空间呢?这样一来,就不存在生成的解决方案是否足够接近整数的问题。

最佳答案

intlinprog 的底层算法基于称为“分支定界”(BnB) 的过程。在这个算法框架中,解决方案空间不是字面意义上的“搜索”,而是隐式处理完整性约束。该方案已被证明是解决一般 MILP 问题的最有效算法。 (当然,有许多针对特定问题的算法,它们的工作原理不同,并将整数数量真正视为整数,例如图/网络算法)。

连续松弛在 BnB 中起着重要作用:在移除(“松弛”)变量的完整性约束后,剩下的问题只是一个可以非常有效地解决的线性优化问题。在该分支定界过程中,求解了一系列此类连续松弛,每个松弛在整数变量上具有不同的界限。

现在这些子问题都是用浮点运算求解的,自然不能保证结果是整数。因此,大多数 MILP 求解器都有一个可设置的公差来控制“整数”的含义。

intlinprog 背后的不同算法组件的概要在 documentation 中给出。 .

关于matlab - 为什么 Matlab 的 `intlinprog` 会为整数变量返回接近整数的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55854974/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com