python实现规划求解_使用Python进行线性规划示例

f3d3572c11dfa9ec6133513806e65f05918fc1b9.jpeg?token=a18860c39ac659a2343feb05472ac163

运筹学

运筹学是一种科学的决策方法,它通常是在需要分配稀缺资源的条件下,寻求系统的最佳设计。科学的决策方法需要使用一个或多个数学模型(优化模型)来做出最优决策。

优化模型试图在满足给定约束的决策变量的所有值的集合中,找到优化(最大化或最小化)目标函数的决策变量的值。 它的三个主要组成部分是:

目标函数:要优化的函数(最大化或最小化)。决策变量:影响系统性能的可控变量。约束:决策变量的一组约束(即线性不等式或等式)。非负性约束限制了决策变量取正值。优化模型的解称为最优可行解。

建模步骤

对运筹学问题进行准确建模是最重要的任务,也是最困难的任务。错误的模型会导致错误的解决方案,从而不能解决原来的问题。团队成员应按照以下步骤进行建模:

问题定义:定义项目的范围,并确定三个要素:决策变量、目标和限制(即约束)。模型构建:将问题定义转化为数学关系。模型求解:使用标准优化算法。在获得解后,需要进行灵敏度分析,以找出由于某些参数的变化而导致的解的行为。模型有效性:检查模型是否按预期工作。实现:将模型和结果转换为解决方案。线性规划

线性规划(Linear Programming,也称为LP)是一种运筹学技术,当当所有的目标和约束都是线性的(在变量中)并且当所有的决策变量都是连续的时使用。线性规划是最简单的运筹学方法。

Python的SciPy库包含用于解决线性编程问题的linprog函数。在使用linprog时,编写代码要考虑的两个注意事项:

这个问题必须表述为一个最小化问题。不等式必须表示为≤。最小化问题

让我们考虑以下要解决的最小化问题:

4034970a304e251f6c276346c3b061117e3e537d.jpeg?token=5475ff554dea03b7e36839ad6ac19c9e

让我们看一下Python代码:

faf2b2119313b07e85686fc269e1392595dd8cdb.jpeg?token=8f9a51536746cbfe6dd7ffdab985fe68

输出结果:

0dd7912397dda144b3f91b08d68178a40df48650.jpeg?token=a3a5c8de1d0527fd6c335c761c3e3f97

最大化问题

由于Python的SciPy库中的linprog函数是用来解决最小化问题的,因此有必要对原始目标函数进行转换。通过将目标函数的系数乘以-1(即通过改变其符号),可以将最小化问题转化为一个最大化问题。

让我们考虑下面需要解决的最大化问题:

a08b87d6277f9e2fe1c70c467a064122b999f34f.jpeg?token=162e3f19bebfdc32845bba653966fde3

让我们看一下Python的实现:

32fa828ba61ea8d3428ba415f13c9848251f5837.jpeg?token=777daeabb2648c3a94770b6ba6d4e93f

上述代码的输出结果为:

8718367adab44aed0844560dd72a2f07a08bfb8a.jpeg?token=11c2a43df5ceb78bb0bcde33e45cdc6f

最后

线性规划为更好的决策提供了一种很好的优化技术。Python的SciPy库中的linprog函数允许只用几行代码就可以解决线性编程问题。虽然还有其他免费的优化软件(如GAMS、AMPL、TORA、LINDO),但使用linprog函数可以节省大量时间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值