Python关于线性规划问题

相关函数:linprog()函数

函数功能:

    用于寻找目标函数的最小值(如果求最大值需做相应变化)

注意事项

  • 1.目标函数f要写成列矩阵的形式

  • 2.约束要写成 <= 的形式

  • 3.函数是为求最小值设置的

 

参数解释:

    参数1:所求目标函数未知数的系数                                           {一维数组}

    参数2 :A_up,此参数为不等式包含未知数一侧  未知数的系数  { 二维数组}

    参数3:B_up,此参数为不等式不包含未知数一侧  的数值         {一维数组}

    参数4:A_eq,此参数为等式 包含未知数一侧   未知数的系数    {二维数组}

    参数5:B_eq ,此参数为等式 不包含未知数一侧  的数值             {一维数组}

    参数6:每个系数的限制

样例:

 

import numpy as np
from scipy import optimize as op
np.set_printoptions(suppress=True)
z = np.array([4, 3])
A_ub = np.array([[2, 1], [1, 1]])
B_ub = np.array([10, 8])
x1 = (0, 8)
x2 = (0, 7)
res = op.linprog(-z, A_ub, B_ub, bounds = (x1,x2))#由于求解最大值,所以此处为-z,答案就是相反数
print(res)

结果:

***Repl Closed***
     con: array([], dtype=float64)
     fun: -25.9999999991197               # 最终结果
 message: 'Optimization terminated successfully.'
     nit: 5
   slack: array([0., 0.])
  status: 0
 success: True
       x: array([2., 6.])               #x1和x2的值

***Repl Closed***

样例2:

要点:

不等式1为  大于等于,应该转换为小于等于:   -2X1 + 5X2 - X3 <= -10

import numpy as np
from scipy import optimize as op
np.set_printoptions(suppress=True)
z = np.array([2, 3, -5])
A_up = np.array([[-2, 5, -1], [1, 3, 1]])
B_up = np.array([-10, 12])
A_eq = np.array([1, 1, 1])
B_eq = np.array([7])
x1 = (0, 7)
x2 = (0, 7)
x3 = (0, 7)
res = op.linprog(-z, A_up, B_up, A_eq, B_eq, bounds=(x1, x2, x3))
print(res)

运行结果:

***Repl Closed***
     con: array([], dtype=float64)
     fun: -14.571428509517212                  #相反数即为所求最大值
 message: 'Optimization terminated successfully.'
     nit: 5
   slack: array([0.00000022, 3.85714293, 0.00000001])
  status: 0
 success: True
       x: array([6.42857145, 0.57142854, 0.        ])

***Repl Closed***

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值