Answers:
您可以通过大胆一些来避免选择小的问题:尝试找到,使以及最小的条目{x}是最大可能的。
为此,引入一个新变量
这是以下问题的重新表述:
对于LP可行性问题,我不会使用标准的单纯形。标准的原始(或对偶)单纯形算法将仅访问原始(或对偶)问题的可行集的顶点。
让您实际要解决的问题的可行集为,并假设您要解决问题():˚F ε
您要解决的问题的最接近的近似值为,它承认点太多了。的问题是,在正orthant的(即,该组中的边界可以使在可行集的边界上,我们想排除这些点,一种方法是按照Aron的建议进行,即将设置为一些小的正值,然后使用任何标准的LP算法,该策略是一种很好的策略,可能会在多种情况下都有效,但是,如果不可行,它将失败。我们知道对于所有(滥用符号并通过其相应问题引用可行集),并且即使您选择了较小的正值,LP解算器也可能表示您的LP不可行。
对于LP解算器,我将对LP使用任何内部点算法,该算法以可行点开始并保持可行,这是在排除点的另一种方法。您不必为这些算法提供可行的方法。标准求解器将为您完成。仿射缩放,势能减少和势垒方法之类的方法设置了辅助LP,这些LP将找到可行的解决方案,这些算法的迭代遍历可行区域的内部。您只需要在可行区域中找到一个点,只要LP解算器使用的辅助问题为您的问题找到一个可行点,并且该可行点严格意义上是肯定的,那么您就可以了。如果解决失败了的小正值,您仍然可以使用这些方法在定位一个严格肯定的可行点。
但是,不要使用单纯形,因为它只会探索的顶点,而这正是您要避免做的事情。
可行性问题比您注意到的一般线性问题要复杂一些。如果要解决大约(通过使用方程和约束的系统的浮点表示),它是合法的,要求,其中ε是一些非常小的数值,足够大以保证X 我实际上生活在ℜ +中,但足够小,因此不考虑边界上的解。
您可能需要调整,和您的解决方案将是“倍范围之内资格ε ”,但这是满足多种工况。
请仔细阅读aeismail给出的答案,请注意lp
ST
它的解决方案和(0 ,1 )以及其他(退化)。问题的普遍性意味着也需要对这些案件进行处理。
由于您可以选择目标函数,因此可以尝试迭代修改它。例如,从所有等于1的变量的所有系数开始,检查是否获得了适当的解。如果一个变量为零,则增加其系数,然后重新开始...
尽管我无法给出数学证明,但该方法有效(或定义良好的过程如何修改目标函数)。我希望这有帮助 :)