介绍
已知:
- 一个 m × n m×n m×n大小的实矩阵 A A A。
- 大小为 m m m的实向量 b b b。
- 大小为 n n n的实向量 c c c。
在线性规划的目标中,我们的目标是找到一个大小为 n n n的实向量 x x x,使得① A x ≤ b Ax≤b Ax≤b,② c T x c^Tx cTx最大。( c T c^T cT是 c c c的转置矩阵)
分析:
- 对于 A x ≤ b Ax≤b Ax≤b,左侧可以看做是 x x x中个元素的线性组合。
- 右侧则是对左侧每一组线性组合的约束。
- ≤ b ≤b ≤b说明这个约束是通过指定上界来进行约束。
- 实际上也可以用 = = =或 ≥ ≥ ≥来约束。
- 在这样的约束下,所追求的是目标函数 f = c T x f=c^Tx f=cTx的最大值(也可能最小值)。
- 而目标函数同样也是 x x x中各元素的线性组合。
对于具体的问题来说,我们需要分析问题,从中找到已知条件: A 、 b 、 c A、b、c A、b、c,然后就可以求解。
求解
求解算法本文不作介绍,而是直接利用Python中的cvxpy库进行求解。(库的安装,参考官网。cvxpy使用指南。)
案例1
从文库中随意找到一个线性规划的案例。该案例提供了答案,可以用来验证。
案例截图如下:

首先从案例中提取出已知条件中的 A 、 b 、 c A、b、c A、b、c。
其中 A 、 b A、b A、b与条件约束有关,可能有多组。因为cvxpy支持多组约束的计算,所以为了问题的清晰表述,将分成了三组约束:
- 相等约束
根据 x 1 + x 4 = 400 ; x 2 + x 5 = 600 ; x 3 + x 6 = 500 x_1+x_4=400;x_2+x_5=600;x_3+x_6=500 x

本文介绍了如何使用Python库cvxpy解决线性规划问题,通过案例1探讨了约束条件下的目标函数最大化,包括相等、小于等于和大于等于约束。案例2则来自实际生活场景,展示了如何运用cvxpy求解营业员上班时间安排问题。
最低0.47元/天 解锁文章
3284

被折叠的 条评论
为什么被折叠?



