单纯形法求解线性规划问题
线性规划里的单纯形法,用得久了真觉得它就是个老朋友。优点是思路清晰,迭代逻辑也好理解,适合中小型问题,像是你在做资源调度、成本最小化这类场景,用它还挺方便的。只要把模型整理成标准型,一步一步迭代,结果基本都能收敛。
标准型的转换,主要靠加松弛变量或剩余变量,这个操作你一开始有点懵,但其实就是为了把不等式变成等式,好构造出第一个基本可行解。这一步做顺了,后面建单纯形表也就顺利了。
整个过程大致是:先找初始解,选一个变量进基,再踢一个出基——就像打牌换手牌。每轮迭代都在让目标函数更优,直到你找不到更优解为止,结束!目标函数像是Min Z = -3u - 2u1 + 2u2
这种,变量多了点也没关系,算得动。
不过也有坑,比如变量太多、约束一堆的时候,单纯形法就有点吃力了,迭代次数刷刷地飙。这个时候你就得看看内点法、割平面法那类更强的了。但话说回来,单纯形法依旧是入门必学,多论文、项目初步建模还都是靠它。
我整理了几个不错的资源,既有原理,也有代码实现,覆盖Python、VC、MFC、VB这些平台,感兴趣的可以点进去看看:
如果你正好要搞线性规划建模,尤其还没用过单纯形法的,建议找个简单模型跑一遍试试,代码结构也蛮清晰的。
下载地址
用户评论