python 线性规划问题_一学高数,线代就头疼?让python帮你解决(内含教程)

本文介绍了如何使用Python的Scipy库中的linprog函数解决线性规划问题。通过一个实际例题,详细解释了linprog的使用方法,包括目标函数的转换和参数设置。示例中展示了如何找到目标函数的最小值及其对应的最优解。
摘要由CSDN通过智能技术生成
374b3ef43f4ecc7ac731c553f8f7659a.png

栏目「有学问」是UBook知识在线的趣味科普专栏,专注于分享有趣好玩的科普知识,旨在发现更多有趣好玩的冷知识,发掘更多生活中的趣味。

自从上了大学以后,各种高数线代数学课防不胜防,有人说,如果你觉得高数难,那是因为你没有遇到过线性规划

29f67eb8f15b67dbd3fa2bc4cc579b28.png

但是小编一直觉得线性规划问题不大,每次作业我都能保证全对,并且能够快速做完,因为在大学里早已经学会了用python来帮我解决问题

a9f893ee5830e8e0da2ab9b9fdaf8a26.png

当然,也不是鼓励大家自己不做作业,只是学会利用工具使得自己更加效(tou)率(lan),最重要的是,每次做出题目答案后可以检验下自己是否能做对,再者说,能够用编程实现问题求解,本身也是对知识的掌握。

b236e982bad4f15ea00950fd0e32dcc6.png

市面上有不少软件可以直接求解,但是灵活性要低于python,python提供了很多包可以用来数学计算,今天我为大家介绍的是scripy的linprog,我们利用linprog可以很好的求解线性规划问题。

话不多说,让我们一起进入正式学习——

我们以一个实际例题为例:

例1 求解下列线性规划问题

Min Z = 2x1 + 3x2 + x3

s.t.     

-x1 - x2 + 2x3 <= 10

2x1 - 2x2 + x3 >= 2

x1 + 2x2 + x3 = 5

在这里我们用到scipy中的linprog进行求解,linprog官方的介绍链接如下:https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.linprog.html 

我们要使用的函数为:

scipy.optimize.linprog(c,A_ub=None,b_ub=None,A_eq=None,b_eq=None,bounds=None, method='simplex', callback=None, options=None)

注意要使用linprog,目标函数要变成求最小值,如果原题目要求求max(最大值),只需对目标函数取负,但要注意求解的最终值是取负后的目标函数的最小值,取负即为最大值

下面开始代码编写——

导入我们所需要的linprog

7d1b97a2840836050bf5d8db1f52640b.png e3cd1d8ecdf652d18b7a753c7c3a34aa.png

运行结果如下:

e7bcfb94773d610c66cfd8c8224abe02.png

un为目标函数的最优值slack松弛变量status表示优化结果状态x最优解

在该例题中,目标函数最小值约为-22.5,最优解为 x1=-5.75, x2=12.25, x3=-13.75。

好啦,本次python求解线性规划的问题就介绍到这,如果大家感兴趣的话,后期会继续推出更为复杂的数学求解

代码已打包,在后台回复“线性规划”即可获取。

a280acd9262da1896dbd17140579eae1.png

Archer

UBook签约作者

励志做一个不掉头发的程序员

对改变世界尤其热衷

011c78341c7ee9cd1f939959cf9c4fc2.png

喜欢就星标我们,不要走丢了哦~

6401881240ac97676a58d55716235dcd.png 13f9790d24925a7cda4c5be7ed1e5cad.png 55beb380e20986c3bc577eda191ff67f.png 09e1f565ffd4246c2504659b81847cf1.png df3f25a738de67a0d0a680bf7ee6cff0.png f3c089deb61e0cc45837c5ae460d8901.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值