位置: IT常识 - 正文

Python数学建模系列(一):规划问题之线性规划(python进行数学建模)

编辑:rootadmin
Python数学建模系列(一):规划问题之线性规划 文章目录前言线性规划样例1:求解下列线性规划问题scipy库求解样例2:求解下列线性规划问题pulp库求解样例3.运输问题说明结语前言

推荐整理分享Python数学建模系列(一):规划问题之线性规划(python进行数学建模),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python数学建模资料,python进行数学建模,python数学建模基础教程,python小白的数学建模课,python数学建模基础教程,python高数建模,python小白的数学建模课,python数学建模基础教程,内容如对您有帮助,希望把文章链接给更多的朋友!

Hello!小伙伴! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~   自我介绍 ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计算机专业,有幸拿过一些国奖、省奖…已保研。目前正在学习C++/Linux/Python 学习经验:扎实基础 + 多做笔记 + 多敲代码 + 多思考 + 学好英语!   初学Python 小白阶段 文章仅作为自己的学习笔记 用于知识体系建立以及复习 题不在多 学一题 懂一题 知其然 知其所以然!   本文仅从Pyhton如何解决建模问题出发 未对建模思路等进行深一步探索

线性规划

​ 线性规划求解需要清晰两部分,目标函数(max, min) 和 约束条件 ,求解前应转化为标准形式:

样例1:求解下列线性规划问题

maxz=2x1+3x2−5x3max z = 2x_1 + 3x_2 - 5x_3maxz=2x1​+3x2​−5x3​ s.t.={x1+x2+x3=72x1−5x2+x3>=10x1+3x2+x3<=12x1,x2,x3>=s.t. = \begin{cases} x_1 + x_2 + x_3 = 7 \\ 2x_1 - 5x_2 + x_3 >= 10\\ x_1 + 3x_2 + x_3 <= 12\\ x_1,x_2,x_3 >= 0 \end{cases}s.t.=⎩⎪⎪⎪⎨⎪⎪⎪⎧​x1​+x2​+x3​=72x1​−5x2​+x3​>=10x1​+3x2​+x3​<=12x1​,x2​,x3​>=0​

scipy库求解

涉及知识点

optimize.linprog

Demo代码

from scipy import optimizeimport numpy as npc = np.array([2,3,-5])A = np.array([[-2,5,-1],[1,3,1]])B = np.array([-10,12])Aeq = np.array([[1,1,1]])Beq = np.array([7])res = optimize.linprog(-c,A,B,Aeq,Beq)res

运行结果

注:x结果为array数组,从左到右依次表示x1 x2 x3…

对很大/小的数不使用科学计数法 np.set_printoptions(suppress=True)

Demo代码

from scipy import optimizeimport numpy as npnp.set_printoptions(suppress=True)c = np.array([2,3,-5])A = np.array([[-2,5,-1],[1,3,1]])B = np.array([-10,12])Aeq = np.array([[1,1,1]])Beq = np.array([7])res = optimize.linprog(-c,A,B,Aeq,Beq)res

运行结果

样例2:求解下列线性规划问题Python数学建模系列(一):规划问题之线性规划(python进行数学建模)

pulp库求解

设计知识点

LpProblem(name=‘NoName’, sense=LpMinimize)solve(solver=None, **kwargs)LpVariable(name, lowBound=None, upBound=None, cat=‘Continuous’, e=None)

Demo代码

import pulp as pp# 目标函数的系数z = [2, 3, 1]a = [[1, 4, 2], [3, 2, 0]]b = [8,6]aeq = [[1,2,4]]beq = [101]# 确定最大最小化问题,当前确定的是最大化问题m = pp.LpProblem(sense=pp.LpMaximize)# 定义三个变量放到列表中x = [pp.LpVariable(f'x{i}', lowBound=0) for i in [1, 2, 3]]# 定义目标函数,并将目标函数加入求解的问题中m += pp.lpDot(z, x) # lpDot 用于计算点积# 设置比较条件for i in range(len(a)): m += (pp.lpDot(a[i], x) >= b[i])# 设置相等条件for i in range(len(aeq)): m += (pp.lpDot(aeq[i], x) == beq[i])# 求解m.solve()# 输出结果print(f'优化结果:{pp.value(m.objective)}')print(f'参数取值:{[pp.value(var) for var in x]}')

运行结果:

注:

最优结果为202x1 = 101 x2=0 x3=0样例3.运输问题

Demo代码

import pulpimport numpy as npfrom pprint import pprintdef transportation_problem(costs, x_max, y_max): row = len(costs) col = len(costs[0]) prob = pulp.LpProblem('Transportation Proble',sense=pulp.LpMaximize) var = [[pulp.LpVariable(f'x{i}{j}',lowBound=0,cat=pulp.LpInteger) for j in range(col)] for i in range(row)] # 转为一维 flatten = lambda x:[y for l in x for y in flatten(l)] if type(x) is list else [x] prob += pulp.lpDot(flatten(var),costs.flatten()) for i in range(row): prob += (pulp.lpSum(var[i]) <= x_max[i]) for j in range(col): prob += (pulp.lpSum([var[i][j] for i in range(row)]) <= y_max[j]) prob.solve() return {'objective':pulp.value(prob.objective),'var':[[pulp.value(var[i][j]) for j in range(col)] for i in range(row)]}costs = np.array([[500,550,630,1000,800,700], [800,700,600,950,900,930], [1000,960,840,650,600,700], [1200,1040,980,860,880,780]])max_plant = [76,88,96,40]max_cultivation = [42,56,44,39,60,59]res = transportation_problem(costs, max_plant, max_cultivation)print(f'最大值为{res["objective"]}')print("各个变量的取值为:")pprint(res['var'])

运行结果:

说明

运行环境:Vs Code

结语

学习来源:B站及其课堂PPT,对其中代码进行了复现

链接:https://www.bilibili.com/video/BV12h411d7Dm? from=search&seid=5685064698782810720

文章仅作为学习笔记,记录从0到1的一个过程

希望对您有所帮助,如有错误欢迎小伙伴指正~

我是 海轰ଘ(੭ˊᵕˋ)੭

如果您觉得写得可以的话,请点个赞吧

谢谢支持 ❤️

本文链接地址:https://www.jiuchutong.com/zhishi/300544.html 转载请保留说明!

上一篇:从0到1搭建Vue项目(webpack版)(vue从0创建一个项目)

下一篇:用PyTorch构建基于卷积神经网络的手写数字识别模型(pytorch jit)

  • 怎样创qq号小号(怎样创qq号小号微信)

    怎样创qq号小号(怎样创qq号小号微信)

  • 微信刷脸为什么验证不通过(微信刷脸为什么通不过)

    微信刷脸为什么验证不通过(微信刷脸为什么通不过)

  • qq群发什么会掉东西(qq群发消息什么意思)

    qq群发什么会掉东西(qq群发消息什么意思)

  • 淘宝退货填错单号怎么修改呢(淘宝退货填错单号运费险还理赔吗?)

    淘宝退货填错单号怎么修改呢(淘宝退货填错单号运费险还理赔吗?)

  • 微信群聊群主退出群还在吗(微信群聊群主退群)

    微信群聊群主退出群还在吗(微信群聊群主退群)

  • 电脑反应突然特别慢(为什么电脑反应突然迟缓)

    电脑反应突然特别慢(为什么电脑反应突然迟缓)

  • qq可以分身可以分三个吗(qq分身可以升等级吗)

    qq可以分身可以分三个吗(qq分身可以升等级吗)

  • 单片机是计算机吗(单片机是计算机专业学的)

    单片机是计算机吗(单片机是计算机专业学的)

  • 手机信号显示x怎么解决(华为手机信号显示x)

    手机信号显示x怎么解决(华为手机信号显示x)

  • ibm怎么进去重装系统(ibm怎么进去重装系统界面)

    ibm怎么进去重装系统(ibm怎么进去重装系统界面)

  • 小米手机恢复出厂设置系统会还原吗(小米手机恢复出厂设置后小米账号还会有吗)

    小米手机恢复出厂设置系统会还原吗(小米手机恢复出厂设置后小米账号还会有吗)

  • 苹果11pro max后盖是玻璃的吗(苹果11promax后盖是什么材质)

    苹果11pro max后盖是玻璃的吗(苹果11promax后盖是什么材质)

  • 淘宝心在哪里看(怎么查看淘宝的心)

    淘宝心在哪里看(怎么查看淘宝的心)

  • iphonex广角镜头怎么用(iphoneX广角镜头怎么开)

    iphonex广角镜头怎么用(iphoneX广角镜头怎么开)

  • 哈罗单车助力车怎么充电(哈罗单车助力车计费规则)

    哈罗单车助力车怎么充电(哈罗单车助力车计费规则)

  • 抖音别人@我的怎么删除(抖音别人@我的怎么批量删除)

    抖音别人@我的怎么删除(抖音别人@我的怎么批量删除)

  • 小米8se是什么意思(小米8se 百度百科)

    小米8se是什么意思(小米8se 百度百科)

  • 戴尔xps为什么这么贵

    戴尔xps为什么这么贵

  • u盘为什么会变raw(u盘变成乱码,修复后空了)

    u盘为什么会变raw(u盘变成乱码,修复后空了)

  • 云闪付app坐公交车操作步骤(云闪付app坐公交怎么用nfc)

    云闪付app坐公交车操作步骤(云闪付app坐公交怎么用nfc)

  • 喜马拉雅为啥不能下载(喜马拉雅为啥不能评论)

    喜马拉雅为啥不能下载(喜马拉雅为啥不能评论)

  • Redmi K20 Pro的GPU是那种

    Redmi K20 Pro的GPU是那种

  • pavupg.exe是什么进程 pavupg进程查询(pnaico.exe是什么软件)

    pavupg.exe是什么进程 pavupg进程查询(pnaico.exe是什么软件)

  • phpcms怎么配置邮箱(php匹配邮箱)

    phpcms怎么配置邮箱(php匹配邮箱)

  • 织梦ckeditor编辑器升级为ckeditor4-word图片自动上传mp4播放批量图片上传(织梦怎样实现文件上传)

    织梦ckeditor编辑器升级为ckeditor4-word图片自动上传mp4播放批量图片上传(织梦怎样实现文件上传)

  • 公司注销股东收回公司车辆做什么账务处理
  • 自行研发的无形资产不确认递延所得税
  • 个人独资企业要承担无限责任吗
  • 2021年白酒新政策
  • 货运代理费属于运费还是其他
  • 合同每三个月付一次款
  • 工商银行资产负债表
  • 行政单位特殊人工手机电话费是否可以报销
  • 长期借款利息计入在建工程
  • 申报退税金额是0是怎么回事
  • 承接所有业务
  • 建筑业简易征收差额征税的计算案例
  • 发票已入账跨年可以红冲重开吗
  • 营改增后劳务公司账务处理
  • 房产税的改革方向
  • 允许列支的捐赠比例
  • 西部大开发政策2020到期
  • 取得抵债房产的涉税风险,你清楚吗?
  • 什么时候计入其他综合收益什么时候计入投资收益
  • 超过认证期限的发票还能认证吗
  • 小规模适用税率
  • 验资报告需要什么材料
  • 不交社保是否可以马上辞职
  • 稳定用工社保补贴和岗位补贴多久发下来
  • 转账和电汇哪个便宜
  • win7缓存设置方法
  • linux获取网络接口及ip命令
  • 怎么安装Win7系统
  • 景区门票定价方法
  • 减值测试步骤
  • 年终奖税务筹划合法吗
  • 销售合同怎么计提折旧
  • php 调试工具
  • edge浏览器about:flags
  • 机票报销属于什么费
  • vue 浮动窗口
  • HTML常用标记
  • 前端网页设计的三大技术
  • wordpress neve
  • php 验证类
  • 应收账款期末余额在借方还是贷方
  • 没进项票
  • 企业职工薪酬如何确定
  • 帝国cms采集发布的文章链接打不开
  • sqlsever无法连接到服务器
  • 进项加计抵扣
  • 报表怎么报送
  • 没有原始凭证可以记账吗
  • access数据库丢失原因
  • mysql数据表存储引擎
  • 包装就是包装物
  • 出口货物做免税处理
  • 向投资者支付的股息
  • 合并报表问题
  • 免缴土地使用税是不是不用交税
  • 暂估入库后发票来不了
  • 公司自己制造设备怎么办
  • 营改增之后是不是就没有营业税了
  • 劳动仲裁要出面吗
  • 宾馆里面的牙膏收费吗
  • 应收应付账款如何清理
  • 主营业务收入减少记哪方
  • 小型企业介绍怎么写
  • Sql Server 2012 转换函数的比较(Cast、Convert和Parse)
  • sql语句示例
  • win7卸载KB2952664/KB3035583补丁的详细图文教程
  • 微软软件怎么用
  • 播放winner
  • ubuntu18 设置静态ip
  • linux使用rar命令压缩文件
  • opengl 投影矩阵
  • python erf
  • clipboard.js无需Flash无需依赖任何JS库实现文本复制与剪切
  • Python3使用requests登录人人影视网站的方法
  • python中getattr函数例子
  • 国家辽宁税务总局
  • 国家税务总局,河北省税务局
  • 锐志2.5新车报价
  • 国税地税什么时候申报
  • 局党组中心组成员
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设