从单纯形法中给定的基本可行解开始

计算科学 优化 线性规划
2021-12-24 13:54:56

我有一个单纯形问题,其中 b 的一些元素正的,一些是负的,因此设置并不能给出基本的可行解(BFS)。然而,通过以前的工作,我碰巧知道一个特定的 BFS。然后我如何设置表格以从这个 BFS而不是标准开始?Aybby=0y=0

请注意:我不想使用单纯形法的第一阶段,因为我想使用我已经知道的特定 BFS,而第一阶段为我找到了 BFS。

我假设我必须做一些行操作,但我不知道我需要做什么。(另外,我的具体情况相当大,所以我不想手工做,但想要一些我可以实现的方法!)

(对不起,标签不好 - 在我获得更高的声誉之前,我不允许使用更好的标签!另外,我意识到在其他地方发布了类似的问题,但关注的是不同的点:我对如何最初设置表,这不是其他帖子的重点。)

提前致谢!:)

3个回答

如果您的问题是标准形式(即,具有约束 ,矩阵的哪些列要选择以形成基,从中选择您可以通过计算降低的成本等来设置您的初始画面。Ax=bx0A

除非您必须自己实现单纯形算法,否则我会使用库。在建模语言中,您可以提供初始猜测;据推测,如果这是线性程序的基本可行解决方案,它将立即可用。如果不是,则应该有使用该信息找到一个的程序(例如,第一阶段单纯形法,将内点方法迭代转换为 BFS 的交叉程序,或仅使用内点算法而不是单纯形法)。

如果您必须自己实现单纯形,请将问题转换为标准形式。Bertsimas 和 Tsitsiklis 书中的算法很容易理解(但可能效率不高,因为它是一本关于线性规划理论的教科书);图书馆会更快,并且可能会节省您的时间。

你可以简单地修改你的问题

Ayb

AxbAy0,

新的未知在哪里x=(yy0)y0是您已知的特定 BFS 吗?然后你可以使用x=0开始,并通过以下方式恢复初始问题的解决方案y=x+y0.

用一个简单的算法替换“第一阶段”,该算法从已知的 BFS(一个接一个)获取索引并将相应的列转换为[0..Xi..0]T通过 Gauss-Jordan 消元法在具有约束(和目标函数)的矩阵中。这将创建具有 RHS(自由)值 = BFS 值的单位矩阵。

在此阶段消除可能的过度约束(完全归零的行)并捕获退化(X=0在哪里X是基变量)。