Python线性规划

这篇博客介绍了如何利用Python的scipy模块中的linprog函数解决线性规划问题。通过实例展示了如何设定目标函数、约束条件以及变量范围,并解释了如何转化不等式方向以符合求解器的标准形式。最终,两个示例展示了如何获取目标函数的最小值和最优解。
摘要由CSDN通过智能技术生成

线性规划需要使用scipy模块

以及一般需要使用scipy模块中的linprog

 

 

#导入包
from scipy import optimize
import numpy as np
#确定c,A,b,Aeq,beq
c = np.array([-1,4])
A = np.array([[-3,1],[1,2]])
b = np.array([6,4])
x1_bounds=[-3,None]
#求解
res = optimize.linprog(c,A,b,bounds=(x1_bounds)) 
   #此处使用的linprog函数,最后的bound指的是变量的范围限制,x1_bound的范围是大于等于负三。
   #再者,需要将所需要满足的等式不等式均列在linprog中
print(res)

 此处使用的linprog函数,最后的bound指的是变量的范围限制,x1_bound的范围是大于等于负三。再者,需要将所需要满足的等式不等式均列在linprog中

fun: -22.0
       ineqlin:  marginals: array([-0., -1.])
  residual: array([39.,  0.])
         lower:  marginals: array([0., 6.])
  residual: array([13.,  0.])
       message: 'Optimization terminated successfully. (HiGHS Status 7: Optimal)'
           nit: 0
         slack: array([39.,  0.])
        status: 0
       success: True
         upper:  marginals: array([0., 0.])
  residual: array([inf, inf])
             x: array([10., -3.])

我们所需要的结果只有fun和x

fun就是目标函数最小值,x就是最优解。

再举一个例子

 

因为方程2和方程三的不等号方向不同,所以改变不等号的方向,转换成同向的不等式,即可最终求出正确结果。 

同时,在建立矩阵时,我们需要把方程右边放在一起,方程左边放在一起。(一个矩阵取得是方程左边の各个变量的系数,另外一个矩阵取得是方程右边)

#导入包
from scipy import optimize
import numpy as np

#确定c,A,b,Aeq,beq
c = np.array([2,3,-5])
A = np.array([[-2,5,-1],[1,3,1]])
b = np.array([-10,12)]
Aeq = np.array([[1,1,1]])
beq = np.array([7])

#求解
res = optimize.linprog(-c,A,b,Aeq,beq)
print(res)

reslult:
     fun: -14.571428571428571
 message: 'Optimization terminated successfully.'
     nit: 2
   slack: array([3.85714286, 0.        ])
  status: 0
 success: True
       x: array([6.42857143, 0.57142857, 0.        ])

在求解时带入-c并且把第二个式子的系数加了负号,是因为需要化为MATLAB标准形式,最终求出来的值为最小值即-14.57,去掉负号就是我们要的最大值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牛哥带你学代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值