当前位置:   article > 正文

Python实现线性规划求解

python中运用pyomo求解矩阵形式的线性规划

线性规划标准形式:MATLAB

-------------

线性规划求解主要分  两个部分,目标函数(max,min)和约束条件(s.t.),求解时一般要化为MATLAB标准形式:

求解用到的模块(scipy 和  numpy):

  1. from scipy import optimize
  2. import numpy as np

例题:

转换成标准系数格式:

  1. c = [23, -5]
  2. A = [[-25, -1], [131]]
  3. b = [-1012]
  4. Aeq = [[111]]
  5. beq = [7]
  6. x1 = (0None)
  7. x2 = (0None)
  8. x3 = (0None)

LP求解函数:

  1. #-*- coding:utf-8 -*-
  2. #导入包
  3. from scipy import optimize
  4. import numpy as np
  5. def LP(m='',clist=[],Alist=[],blist=[],Aeqlist=[],beqlist=[],all_x=()):
  6.     #c,A,b,Aeq,beq,LB,UB,X0,OPTIONS
  7.     c = np.array(clist)
  8.     A = np.array(Alist)
  9.     b = np.array(blist)
  10.     Aeq = np.array(Aeqlist)
  11.     beq = np.array(beqlist)
  12.     #求解
  13.     if m == 'min':
  14.         res = optimize.linprog(c, A, b, Aeq, beq, bounds=all_x)
  15.         fun = res.fun
  16.         x = res.x
  17.     else:
  18.         res = optimize.linprog(-c, A, b, Aeq, beq, bounds=all_x)
  19.         fun = -(res.fun)
  20.         x = res.x
  21.     return fun,x

main函数,方便其它调用:

  1. #-*- coding:utf-8 -*-
  2. import LP
  3. import sys
  4. if __name__ == '__main__':
  5.     m = sys.argv[1]
  6.     clist = list(eval(sys.argv[2]))
  7.     Alist = list(eval(sys.argv[3]))
  8.     blist = list(eval(sys.argv[4]))
  9.     Aeqlist = list(eval(sys.argv[5]))
  10.     beqlist =list(eval(sys.argv[6]))
  11.     all_x = tuple(eval(sys.argv[7]))
  12.     r=LP.LP(m=m,clist=clist,Alist=Alist,blist=blist,Aeqlist=Aeqlist,beqlist=beqlist,all_x=all_x)
  13.     print(r)

说明: (1)因为系统参数传入的都是字符串格式,所以main文件中,将传入参数都转换成列表。

           (2)标准是最小值,如果是最大值,c应该换成-c

最后执行结果:


红圈里就是最大值,和最优解。


C#调用,参考:

https://blog.csdn.net/qq_42063091/article/details/82418630  









来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69915315/viewspace-2642242/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/69915315/viewspace-2642242/

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/844158
推荐阅读
相关标签
  

闽ICP备14008679号