【Python】线性规划问题求解(cvxpy库)

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

文章目录

介绍

参考此论文此网站中的描述。


已知:

  1. 一个 m × n m×n m×n大小的实矩阵 A A A
  2. 大小为 m m m的实向量 b b b
  3. 大小为 n n n的实向量 c c c

在线性规划的目标中,我们的目标是找到一个大小为 n n n的实向量 x x x,使得① A x ≤ b Ax≤b Axb,② c T x c^Tx cTx最大。( c T c^T cT c c c的转置矩阵)


分析:

  1. 对于 A x ≤ b Ax≤b Axb,左侧可以看做是 x x x中个元素的线性组合。
  2. 右侧则是对左侧每一组线性组合的约束
  3. ≤ b ≤b b说明这个约束是通过指定上界来进行约束。
  4. 实际上也可以用 = = = ≥ ≥ 来约束。
  5. 在这样的约束下,所追求的是目标函数 f = c T x f=c^Tx f=cTx的最大值(也可能最小值)。
  6. 而目标函数同样也是 x x x中各元素的线性组合。

对于具体的问题来说,我们需要分析问题,从中找到已知条件: A 、 b 、 c A、b、c Abc,然后就可以求解。

求解

求解算法本文不作介绍,而是直接利用Python中的cvxpy库进行求解。(库的安装,参考官网cvxpy使用指南。)

案例1

从文库中随意找到一个线性规划的案例。该案例提供了答案,可以用来验证。
案例截图如下:
在这里插入图片描述


首先从案例中提取出已知条件中的 A 、 b 、 c A、b、c Abc


其中 A 、 b A、b Ab与条件约束有关,可能有多组。因为cvxpy支持多组约束的计算,所以为了问题的清晰表述,将分成了三组约束:

  1. 相等约束
    根据 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值