• 技术文章 >Python技术 >Python基础教程

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

    小妮浅浅小妮浅浅2021-09-14 09:21:53原创4728

    说明

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

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

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

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

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

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

    实例

    以整数线性规划为例

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

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

    import pulp as pulp

      

    def solve_ilp(objective , constraints) :

        print objective

        print constraints

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

        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学习指路:python基础教程

    本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。

    专题推荐:python线性规划
    上一篇:python线性规划问题的处理步骤 下一篇:python如何对单个值测试多个变量?

    相关文章推荐

    • python列表中if语句的用途• Python f-string字符串格式化的介绍• Python Dijkstra算法是什么• python最短路径问题的介绍• python Bellman-Ford算法是什么• python Floyd算法是什么• python A*算法是什么• python最短路径算法如何选择• python数据导入的使用注意• python线性规划的求解方法• python线性规划问题的处理步骤

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网