可行性,不可能实行
如果linprog告诉你问题是不可行的,这意味着它无法找到一个解决方案,满足所有约束和边界,平等等。
我会漂亮这个词忽略等式约束的情况下,因为我们总是可以使用它们来项目一个具有等式约束的问题到一个低维子空间,但是现在没有等式约束。(投影到一个低维子空间通常会绑定约束转化为不等式约束。在这种情况下,但这并不重要)。
但这是什么意思不可行吗?不可行告诉你你的问题代表了某种形式的矛盾。例如,假设我问linprog来解决这个问题
减少x
受约束x > = 2和x < = 1
任何解决方案都存在吗?当然不是,因为是空的可行的解决方案。金宝搏官方网站
f = 1;
一个= (1,1);
b = (2, 1);
linprog (f, A, b)
没有找到可行的解决方案。Linprog停止,因为没有点满足约束。ans = []
不可能实行真的没有比这更复杂。代表了一个矛盾的东西在你的约束。是的,在更高的维度,这可能是更复杂的可视化,但从本质上说,你已经选择的约束导致问题没有解决方案,满足他们所有人。
不可行性可能意味着您指定错误的问题。我猜想是这样的失败最常见的原因。所以回去,推导并检查问题。保证你做了正确的数学,第一个指定的数学问题,然后将一组约束,边界和客观。
如果你做了很明显正确的数学,和所有的矩阵约束正确指定,等等,然后一个不可行的问题意味着有问题的约束。他们太紧缩在某种意义上。那么解决方案是简单的概念(虽然不总是简单的解决。)在某种程度上,你需要放松一个更多的约束,充分可行集非空。在一个整数线性规划问题的情况下,可行集必须包含至少一个整数的解决方案,这可能会更放松。