文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python实现线性规划求解

2023-06-02 07:01

关注

线性规划标准形式:MATLAB

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

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

Python实现线性规划求解

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

from scipy import optimizeimport numpy as np

例题:

Python实现线性规划求解

转换成标准系数格式:

c = [2, 3, -5]A = [[-2, 5, -1], [1, 3, 1]]b = [-10, 12]Aeq = [[1, 1, 1]]beq = [7]x1 = (0, None)x2 = (0, None)x3 = (0, None)

LP求解函数:

#-*- coding:utf-8 -*-#导入包from scipy import optimizeimport numpy as npdef LP(m='',clist=[],Alist=[],blist=[],Aeqlist=[],beqlist=[],all_x=()):    #c,A,b,Aeq,beq,LB,UB,X0,OPTIONS    c = np.array(clist)    A = np.array(Alist)    b = np.array(blist)    Aeq = np.array(Aeqlist)    beq = np.array(beqlist)    #求解    if m == 'min':        res = optimize.linprog(c, A, b, Aeq, beq, bounds=all_x)        fun = res.fun        x = res.x    else:        res = optimize.linprog(-c, A, b, Aeq, beq, bounds=all_x)        fun = -(res.fun)        x = res.x    return fun,x

main函数,方便其它调用:

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

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

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

最后执行结果:

Python实现线性规划求解


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

C#调用,参考:

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

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯