python培训之有哪些求解线性规划的包

发布时间:2023-01-09 09:32:11 人气:78 作者:多测师

  python有哪些求解线性规划的包

  说明

  1、Scipy库提供简单的线性或非线性规划问题。

  但不能解决背包问题的0-1规划问题,或者整数规划问题,混合整数规划问题。

  2、PuLP可以解决线性规划、整数规划、0-1规划和混合整数规划问题。

  为不同类型的问题提供各种解决方案。

  3、Cvxpy是一个凸优化工具包。

  可以解决线性规划、整数规划、0-1规划、混合整数规划、二次规划和几何规划等问题。

  实例

  以整数线性规划为例

  # -*- coding: utf-8 -*-

  import pulp as pulp

  def solve_ilp(objective , constraints) :

  print objective

  print constraints

  prob = pulp.LpProblem('LP1' , pulp.LpMaximize)

python培训之有哪些求解线性规划的包

  prob += objective

  for cons in constraints :

  prob += cons

  print prob

  status = prob.solve()

  if status != 1 :

  #print 'status'

  #print status

  return None

  else :

  #return [v.varValue.real for v in prob.variables()]

  return [v.varValue.real for v in prob.variables()]

  #解如下整数线性规划

  #maximize z = c*x = 3*x1 + 4*x2 + 5*x3

  #subject to :

  #x1 2 3 >= 0

  #x1 + 2*x2 < 20

  #x2 + 3*x3 <= 40

  V_NUM = 3

  #变量,直接设置下限

  variables = [pulp.LpVariable('X%d'%i , lowBound = 0 , cat = pulp.LpInteger) for i in range(0 , V_NUM)]

  #目标函数

  c = [3 , 4 , 5]

  objective = sum([c[i]*variables[i] for i in range(0 , V_NUM)])

  #约束条件

  constraints = []

  a1 = [1 , 2 , 0]

  constraints.append(sum([a1[i]*variables[i] for i in range(0 , V_NUM)]) <= 100)

  a2 = [0 , 1 , 3]

  constraints.append(sum([a2[i]*variables[i] for i in range(0 , V_NUM)]) <= 40)

  print constraints

  res = solve_ilp(objective , constraints)

  print res

  以上就是python求解线性规划的包,希望对大家有所帮助。更多Python学习指路:请关注多测师。https://www.e70w.com/xwzx/


返回列表
在线客服
联系方式

热线电话

17727591462

上班时间

周一到周五

二维码
线