具有严格正约束的线性规划可行性问题


15

有一个线性约束系统。我希望找到一个满足这些约束的严格正向量。这意味着,所需的每个组件的{\ BF X} 。如何使用LP解算器找到这样一个严格的正向量{\ bf x}(或确认不存在 {\ bf x})?我不能简单地引入另一个约束x_i> 0的系统,因为必须始终在LP中允许相等性,但是我可以多次使用LP解算器,并更改目标函数。我认为我应该使用松弛变量方法,但我不知道如何。X > 0 X > 0 X X X X X > 0Axbx>0xi>0xixxxxi>0

Answers:


15

您可以通过大胆一些来避免选择小ϵ>0的问题:尝试找到x,使Axb以及x最小的条目{x}是最大可能的。

为此,引入一个新变量

y=[xϵ]Rn+1
(如果x位于Rn)中,并通过LP解算器
maxy[00 1]ys.t.[A 0]yband0[10010101011]y.

这是以下问题的重新表述:

maxϵs.tAxbandxϵ1.


做得好,这等效于我在最近的一篇论文中使用的技巧,绝对优于我建议的方法。
阿隆·艾玛迪亚

同意 长官,打得好。
Geoff Oxberry 2012年

在对原始问题的回答微不足道的情况下,重新制定的问题可能具有无限的目标。例如,如果约束系统只是。只要您检查lp求解器的返回状态是否可行,最佳或无界,或者明确绑定。εx1ϵ
David Nehme'2

@DavidNehme:可以添加约束以获得有界目标。yn+11
阿诺德·纳伊迈尔

5

对于LP可行性问题,我不会使用标准的单纯形。标准的原始(或对偶)单纯形算法将仅访问原始(或对偶)问题的可行集的顶点。

让您实际要解决的问题的可行集为,并假设您要解决问题():˚F εF={x:Axb,x>0}Fε

minx0s.t.Axbxε1.

您要解决的问题的最接近的近似值为,它承认点太多了。的问题是,在正orthant的(即,该组中的边界可以使在可行集的边界上,我们想排除这些点,一种方法是按照Aron的建议进行,即将设置为一些小的正值,然后使用任何标准的LP算法,该策略是一种很好的策略,可能会在多种情况下都有效,但是,如果不可行,它将失败。我们知道F0B={x:x0,i:xi=0}F0εFεF0FFε对于所有(滥用符号并通过其相应问题引用可行集),并且即使您选择了较小的正值,LP解算器也可能表示您的LP不可行。ε>0ε

对于LP解算器,我将对LP使用任何内部点算法,该算法以可行点开始并保持可行,这是在排除点的另一种方法。您不必为这些算法提供可行的方法。标准求解器将为您完成。仿射缩放,势能减少和势垒方法之类的方法设置了辅助LP,这些LP将找到可行的解决方案,这些算法的迭代遍历可行区域的内部。您只需要在可行区域中找到一个点,只要LP解算器使用的辅助问题为您的问题找到一个可行点,并且该可行点严格意义上是肯定的,那么您就可以了。如果解决失败了的小正值BFεε,您仍然可以使用这些方法在定位一个严格肯定的可行点。F0

但是,不要使用单纯形,因为它只会探索的顶点,而这正是您要避免做的事情。Fε


4

可行性问题比您注意到的一般线性问题要复杂一些。如果要解决大约(通过使用方程和约束的系统的浮点表示),它是合法的,要求,其中ε是一些非常小的数值,足够大以保证X 实际上生活在+中,但足够小,因此不考虑边界上的解。xi>=ϵϵxi+

您可能需要调整,和您的解决方案将是“倍范围之内资格ε ”,但这是满足多种工况。ϵϵ


2

请仔细阅读aeismail给出的答案,请注意lp

max(x1+x2)

ST

x1+x21

x1,x20

它的解决方案0 1 以及其他(退化)。问题的普遍性意味着也需要对这些案件进行处理。(1,0)(0,1)

由于您可以选择目标函数,因此可以尝试迭代修改它。例如,从所有等于1的变量的所有系数开始,检查是否获得了适当的解。如果一个变量为零,则增加其系数,然后重新开始...

尽管我无法给出数学证明,但该方法有效(或定义良好的过程如何修改目标函数)。我希望这有帮助 :)


但是,如果您有大量的简并解,您将如何从数字上解决这个问题?几乎没有任何数值解算器会发出警告(或更糟)来解决这个问题吗?
aeismail 2012年

不,他们不会;他们只会返回遇到的第一个最佳解决方案。您将继续生成解决方案的方式是添加切面(或其他约束),以排除先前计算的最优解决方案。在这种情况下,添加此类切割平面将使您能够返回无限组最优解的离散近似值。
Geoff Oxberry 2012年

我认为这是一个奇怪的编程决定。您为什么不想要告诉用户目标函数在所报告的解决方案附近做得很奇怪?对于一个非线性求解器,我可以发现正在发生的事情是有问题的。但是使用线性系统难道不容易分辨出来吗?
aeismail 2012年

我不得不考虑如何通过实际构造问题来检测退化,但是通常,用户需要一种最佳解决方案,因此,对于LP而言,最重要的信息是如果解决方案是最佳,可行(但不是最佳)的话就返回,不可行的,或无限的。(实际上,这些状态是CPLEX之类的求解器将返回的状态。)退化主要是一个理论问题;要在数值环境中进行讨论的唯一原因是在算法设计中或在实践中,要注意退化通常会使求解器变慢。
Geoff Oxberry 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.