网易首页 > 网易号 > 正文 申请入驻

优化 | 内点法与单纯形法的一个关键区别:谁能真正落在 LP 的顶点上

0
分享至

来源:市场资讯

(来源:运筹OR帷幄)

很多人在学习线性规划求解器时,都会遇到一个看似“漫不经心”、其实非常重要的问题:

  • 内点法可以很快得到一个 LP 的最优解;

  • 但它通常不保证这个最优解是一个顶点解 / 基解;

  • 单纯形法则不同,它的迭代对象本身就是基可行解,所以算法结束时天然落在一个最优基解上。

是不是顶点解到底会影响以下几件事:

  • 求解器是否能返回 basis;

  • 是否方便做 reoptimization;

  • 是否便于做灵敏度分析;

  • 对整数规划的 LP 松弛而言,是否更利于后续 cut、branch、rounding 和 warm start。

1994 年 Bixby 和 Saltzman 的论文就把这个问题作为一个核心挑战来讨论:如何从 interior point solution 中恢复一个 optimal LP basis。现代求解器(Gurobi/CPLEX/COPT) 无一例外都有类似的策略 (称之为 Crossover)来将内点法得到的非顶点最优解恢复为一个顶点最优解。 本篇文章仅从科普的角度来拆解内点法为何难以直接获取顶点解,以及为什么顶点解重要。

1 用一个简单例子从几何直觉出发

内点法可以得到 LP 的最优解,但一般不保证得到的是“顶点最优解 / 最优基解”;而单纯形法的迭代对象本身就是基解,所以它结束时天然落在一个最优基解上。

我们先从一个简单的小例子出发,来直观阐述上述结论:

它的可行域是二维平面里的一个三角形,三个顶点是:

因为目标就是最大化 ,所以所有满足

的点都是最优解。具体的可行域见下图:


这条最优边的两个端点 和 是顶点;但中间点,比如

也是最优解,只是它显然不是顶点。

我们知道单纯形法是在顶点之间跳跃的算法。它的状态始终是基可行解,也就是顶点解;每一步 pivot 的本质,是从一个顶点走到相邻顶点。因此,对上面这个例子来说,单纯形法最终一定会停在:

总之,它会返回一个最优顶点解。

然而对于内点法来说情况则完全不同。内点法本身搜索的过程就不是沿着多面体的边界跑,而是从可行域内部逐步向外部推进。那么对于我们这个简单的例子来说

  • 内点法搜索过程不会贴着边走;

  • 内点法搜索过程会从三角形内部朝着最优面靠近;

  • 当最优解不是唯一,而是一整条边都最优时,它通常会逼近这条最优边的“中间位置”,而不是某个端点。

进一步我们可以得到内点法最终很可能收敛到 线段中间的某个点上去,而大概率并不会收敛到两个顶点上去。

2 进一步用代数的方式解释:内点法为什么通常无法保证得到顶点解?

上面是几何直觉。下面我们把这个现象写成内点法子问题。对于前面的 LP,内点法会求解一系列带障碍项的子问题,例如:

这里要求:

这个目标由两部分组成:

  1. 原始目标: :推动你去优化原 LP;

  2. 障碍项:, 它会在接近边界时趋向 ,因此强烈排斥边界。

我们从上述内点法的目标函数也可以看出内点法在搜索过程中遵循的原则是:

  • 既要让目标值尽量好;

  • 又要尽量别靠边界太近。

在我们的例子里,最优面是直线段 。如果比较这一条边上的不同点:

  • 端点 和 贴着更多边界;

  • 中间点 离两侧边界更“均衡”。 所以 barrier 会偏向最优面的中间,而不是顶点。内点法可以保证达到最优值,但不能天然保证返回的是最优顶点解。

在求解器中如果想要用内点法求解LP的顶点解,就先让内点法把最优值的 interior solution 算出来,再交给 simplex 一侧去恢复出来一个基解。

3 为什么我们需要顶点解?

到这里你自然会产生一个问题:既然 interior solution 也是最优解,那为什么还要执着于去找顶点解?

答案是:在很多优化算法和求解器工程里,顶点解不仅仅是“一个解”,它还是一种非常重要的结构性状态。在标准形 LP 里,顶点解和 basic feasible solution (BFS) 是等价的。也就是说,拿到顶点解,本质上就是拿到了一个 basis。而有了 basis,很多事情才能高效做起来,具体来说分为以下几个方面:

它让重优化变得高效:实际模型往往不是只解一次。 约束右端项变一点、目标系数改一点、加几条约束、删几条变量,模型就要重新求。这时,如果手里有一个旧 basis,很多 LP 可以直接在这个 basis 的基础上 warm start,而不必从零开始。 这也是 simplex 体系在 reoptimization 中一直非常强的原因之一。

Basis 本身会提供很多额外的重要信息:很多教材里耳熟能详的概念,例如 reduced cost,本质上都不是“只要有一个最优解就行”,而是与当前最优 basis 紧密相关。以 Gurobi 为例,目标系数和变量上下界的灵敏度属性都明确标注为:only available for basic solutions。所以如果你只有 interior solution,而没有 crossover 后的 basis,那么这类经典灵敏度分析就没有现成接口可用。

整数规划中很多时候需要顶点解:在 MIP 里,很多理论和工程机制比方说 cuts、branching 状态传递、basis warm start、节点 LP 的连续重优化——本来就是围绕 LP 极点/基解这一结构来组织的。此外,大多数情况下顶点解比非顶点解更加接近整数,这一点对整数规划问题来说尤为重要。

综上所述:我们需要顶点解,不只是因为它“看起来更极端”,而是因为它承载了 basis、组合结构、重优化能力、灵敏度分析能力,以及与整数规划模块衔接的能力。

4 数值实验结果

Gurobi 官方提供了专门的参数来控制 Crossover。Crossover 的作用就是把内点法得到的 interior solution 转换成一个 basic solution。

我们分别对比打开Gurobi的 Crossover 和 关闭 Crossover 两组实验,看对于同一个线性规划问题是不是获得的最优解如我们之前分析的结果。

以 Gurobi 为例,官方文档明确说明:

  • Crossover=0 表示关闭 crossover,这时 barrier 返回的是 interior solution;

  • 默认值 Crossover=-1 表示 自动选择策略;

如果我们想关闭掉 Crossover 可以这些写:

import gurobipy as gpfrom gurobipy import GRB# 创建模型m = gp.Model("lp_example")# 参数设置m.setParam("Presolve", 0)   # 关闭 presolvem.setParam("Method", 2)     # 内点法 (Barrier)m.setParam("Crossover", 0)  # 关闭 crossover# 变量:x1, x2 >= 0,连续变量x1 = m.addVar(lb=0.0, vtype=GRB.CONTINUOUS, name="x1")x2 = m.addVar(lb=0.0, vtype=GRB.CONTINUOUS, name="x2")# 约束:x1 + x2 <= 1m.addConstr(x1 + x2 <= 1, name="c1")# 目标:max x1 + x2m.setObjective(x1 + x2, GRB.MAXIMIZE)# 求解m.optimize()# 打印最优解if m.Status == GRB.OPTIMAL:print(f"最优目标值: {m.ObjVal}")print(f"x1 = {x1.X}")print(f"x2 = {x2.X}")else:print(f"模型未得到最优解,状态码: {m.Status}")

最后运行后得到的结果如下所示: 最优目标值: 0.9999999997224607;x1 = 0.49999999986123034; x2 = 0.49999999986123034

因为我们强制关闭了 Crossover,所以内点法只能得到一个非顶点解。数值实验的结果确实也印证了我们之前的理论。

反过来如果打开 Crossover,只需将上述设置 Crossover 参数的代码(当然什么也不设置也是可以的,因为默认就是打开状态)修改为如下所示即可:

m.setParam("Crossover", -1)  # 开启 crossover

修改后我们发现日志会多出来关于Crossover的内容:


那么进一步得到最终结果如下所示: 最优目标值: 1.0;x1 = 1.0;x2 = 0.0; 此时返回的是一个顶点解。

这并不是 barrier 本身突然“喜欢顶点”了,而是因为 Crossover 帮你把非顶点解恢复成了一个顶点解。

5 总结

很多初学者者会把“内点法”和“单纯形法”的区别简单理解成:一个适合大规模求解,一个适合中小规模求解,一个是多项式复杂度的算法,一个从算法复杂度来说是指数级别的。这样的理解方式当然有一部分事实基础,但还不够抓住本质。

更本质的差别是:

  • 单纯形法从头到尾都把“基解 / 顶点”作为自己的工作对象;

  • 内点法从头到尾都把“内部路径”作为自己的工作对象。

二者虽然都能到达 LP 的最优值,但它们天然产出的“最优解的形态”并不一样。前者天然给你 basis,后者只能给你 interior solution;

而现代求解器之所以要设计 Crossover 算法,正是为了把这两种世界接起来。Gurobi 文档对这一点的表述非常直接:内点法先给出 interior point solution,Crossover 再把它转成 basic solution

如果你更关心“如何把 interior point solution 恢复成 optimal basis”,可以继续看 Bixby 和 Saltzman 1994 年的经典文章(见参考文献【1】);直到今天为止 Crossover 依然是 LP 求解器工程中的必不可少的关键模块。

参考文献:

【1】Bixby R E, Saltzman M J. Recovering an optimal LP basis from an interior point solution[J]. Operations Research Letters, 1994, 15(4): 169-178.

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
人的命运能有多悲惨,仅仅7年,家破人亡!

人的命运能有多悲惨,仅仅7年,家破人亡!

A活着
2026-09-29 08:04:34
发现中国一个奇怪的现象:只要有公婆帮扶的家庭,儿媳都忙着回公婆家;而公婆不帮的家庭,儿媳早已断联!

发现中国一个奇怪的现象:只要有公婆帮扶的家庭,儿媳都忙着回公婆家;而公婆不帮的家庭,儿媳早已断联!

心理观察局
2026-08-01 07:10:30
英超官方:认定曼城严重违反英超联赛财务规则的指控均成立

英超官方:认定曼城严重违反英超联赛财务规则的指控均成立

懂球帝
2026-09-30 00:11:08
《兰香如故》圆房夜破防!林锦岐六年不近女色,根本不是痴情

《兰香如故》圆房夜破防!林锦岐六年不近女色,根本不是痴情

东方不败然多多
2026-09-30 09:56:19
50岁王力宏身材杀疯了!他用6块腹肌,给所有男人上了一课

50岁王力宏身材杀疯了!他用6块腹肌,给所有男人上了一课

小方说跑步
2026-09-30 13:40:05
田曦薇,绣花黑丝大肉腿

田曦薇,绣花黑丝大肉腿

东方不败然多多
2026-09-30 02:42:59
23金完美收官!中国队创造历史最佳战绩,稳居亚洲第一

23金完美收官!中国队创造历史最佳战绩,稳居亚洲第一

小蒋爱唠嗑
2026-09-29 09:33:54
张本宇遭乒协重罚,亚运会握手细节,揭开日乒队内真实现状!

张本宇遭乒协重罚,亚运会握手细节,揭开日乒队内真实现状!

故事终将光明磊落
2026-09-29 16:29:34
不忘旧情!罗马诺:凯恩续约拜仁要求加入匹配条款 以便重返热刺

不忘旧情!罗马诺:凯恩续约拜仁要求加入匹配条款 以便重返热刺

爱奇艺体育
2026-09-30 10:41:02
易会满被提起公诉 | 000002,昨日涨停,今天盘中跌停,利好落地前谁在买?

易会满被提起公诉 | 000002,昨日涨停,今天盘中跌停,利好落地前谁在买?

大众证券报
2026-09-30 12:12:14
本田新车上市:18.48万起,价格有点香啊

本田新车上市:18.48万起,价格有点香啊

科技堡垒
2026-09-29 10:23:08
菲律宾媒体愤怒了:中国在仁爱礁出动22型导弹艇等6艘舰艇,阻止了企图轮换人员的菲方舰艇!

菲律宾媒体愤怒了:中国在仁爱礁出动22型导弹艇等6艘舰艇,阻止了企图轮换人员的菲方舰艇!

扶苏聊历史
2026-09-27 13:42:17
16GB+1TB!新机官宣:10月12日,正式发布!

16GB+1TB!新机官宣:10月12日,正式发布!

科技堡垒
2026-09-29 10:18:18
WOC!詹姆斯被剃了个光头!24年生涯第一次...

WOC!詹姆斯被剃了个光头!24年生涯第一次...

詹姆斯吧
2026-09-30 01:24:29
日本:引进中国人,韩国人,甚至越南人都可以,但绝对不引进印度人和穆斯林!

日本:引进中国人,韩国人,甚至越南人都可以,但绝对不引进印度人和穆斯林!

步论天下事
2026-09-28 10:50:23
医生强烈提醒:明年开始,70岁以上长者请提前做好这3项生活准备

医生强烈提醒:明年开始,70岁以上长者请提前做好这3项生活准备

周哥一影视
2026-09-30 05:10:04
罗永浩压力山大!昔日盟友反目,投资人段鹏程发声力挺郑刚,网友:美国IP是亮点

罗永浩压力山大!昔日盟友反目,投资人段鹏程发声力挺郑刚,网友:美国IP是亮点

火山詩话
2026-09-30 06:47:17
10人参赛全员得牌,7人夺金,6人破世界纪录!韩媒:朝鲜举重震惊世界

10人参赛全员得牌,7人夺金,6人破世界纪录!韩媒:朝鲜举重震惊世界

新杀猪的秀才
2026-09-29 11:32:28
黄娟划向金牌!

黄娟划向金牌!

五星体育
2026-09-30 13:53:52
2-0掀翻联盟第一!中国女篮27岁2米07王牌创黑八奇迹:辅佐三巨头冲冠

2-0掀翻联盟第一!中国女篮27岁2米07王牌创黑八奇迹:辅佐三巨头冲冠

李喜林篮球绝杀
2026-09-30 11:37:54
2026-09-30 16:12:49
新浪财经 incentive-icons
新浪财经
新浪财经是一家创建于1999年8月的财经平台
4938875文章数 9699关注度
往期回顾 全部

科技要闻

OpenAI凌晨大上新!新助手dots迎战Muse

头条要闻

妈妈把12岁儿子留在出租屋独居 带着另外3个孩子搬走

头条要闻

妈妈把12岁儿子留在出租屋独居 带着另外3个孩子搬走

体育要闻

石雨豪:亚运金牌与背后的十年

娱乐要闻

金鹰这夜,演员争辉,有惊喜,反差

财经要闻

中央财政首次贴息房贷 定向支持首套刚需

汽车要闻

真实力用“大考”亮出来 猛士X700开启预售 24.98万起

态度原创

手机
数码
旅游
教育
游戏

手机要闻

华为新专利曝光:Pura也能外挂巨炮 看齐Mate 90 Pro Max

数码要闻

徐梦桃空降南京!TCL Q9M Art以壁纸美学诠释SQD冠军画质

旅游要闻

古人旅游也爱打卡?从泰山石刻看古代版的“到此一游”

教育要闻

哪有什么“快乐教育”,全世界的孩子都在补课!

N卡为《巫师3RE》打造最佳体验 DLSS+强力光追

无障碍浏览 进入关怀版