位置: 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)

  • 支付宝小微商户怎样申请二维码(支付宝小微商户怎么注销)

    支付宝小微商户怎样申请二维码(支付宝小微商户怎么注销)

  • 华为抠图功能怎么使用(华为抠图功能怎么关闭)

    华为抠图功能怎么使用(华为抠图功能怎么关闭)

  • 电脑玩lol卡顿不流畅是什么原因(电脑玩lol卡顿不流畅应该加什么硬件)

    电脑玩lol卡顿不流畅是什么原因(电脑玩lol卡顿不流畅应该加什么硬件)

  • iqoo 3的屏幕刷新率是多少(iqoo屏幕刷新hz)

    iqoo 3的屏幕刷新率是多少(iqoo屏幕刷新hz)

  • 苹果11与苹果11pro屏幕对比(苹果11与苹果11pro推荐)

    苹果11与苹果11pro屏幕对比(苹果11与苹果11pro推荐)

  • 手机怎么取消密码(手机怎么取消密码重试模式)

    手机怎么取消密码(手机怎么取消密码重试模式)

  • iphone为什么sim卡会出现无服务现象(iphone为什么sim卡读不出来)

    iphone为什么sim卡会出现无服务现象(iphone为什么sim卡读不出来)

  • 华为p40悬浮球在哪里(华为p40悬浮球自定义菜单设置)

    华为p40悬浮球在哪里(华为p40悬浮球自定义菜单设置)

  • 淘宝收藏店铺怎么弄(淘宝收藏店铺怎么分类)

    淘宝收藏店铺怎么弄(淘宝收藏店铺怎么分类)

  • 飞行模式微信能收到吗(飞行模式微信能收款吗)

    飞行模式微信能收到吗(飞行模式微信能收款吗)

  • 微信怎么禁言群成员(微信怎么禁言群成员单人)

    微信怎么禁言群成员(微信怎么禁言群成员单人)

  • 手机淘宝聊天窗口打开失败怎么回事(手机淘宝聊天窗口打开失败怎么解决)

    手机淘宝聊天窗口打开失败怎么回事(手机淘宝聊天窗口打开失败怎么解决)

  • 苹果手机屏幕上出现一个圆点在哪里关闭(苹果手机屏幕上有一条竖线怎么办)

    苹果手机屏幕上出现一个圆点在哪里关闭(苹果手机屏幕上有一条竖线怎么办)

  • 没有苹果手机可以用ipad吗(没有苹果手机可以使用苹果平板吗)

    没有苹果手机可以用ipad吗(没有苹果手机可以使用苹果平板吗)

  • 手机音乐没有声音怎么回事(手机音乐没有声音)

    手机音乐没有声音怎么回事(手机音乐没有声音)

  • word文档添加空白页(word文档添加空白横线)

    word文档添加空白页(word文档添加空白横线)

  • 安装介质是什么(安装介质不可用)

    安装介质是什么(安装介质不可用)

  • 哔咔漫画苹果怎么下(哔咔漫画苹果怎么用)

    哔咔漫画苹果怎么下(哔咔漫画苹果怎么用)

  • 手机怎么交医保(手机怎么交医保费视频)

    手机怎么交医保(手机怎么交医保费视频)

  • 魅族16T怎么恢复备份(魅族16t怎么恢复root)

    魅族16T怎么恢复备份(魅族16t怎么恢复root)

  • wps文本框链接怎么设置(wps文字链接)

    wps文本框链接怎么设置(wps文字链接)

  • 苹果未信任app如何恢复(iphone 未信任应用)

    苹果未信任app如何恢复(iphone 未信任应用)

  • 快手换绑申诉要多久(快手换绑请求存在风险什么情况)

    快手换绑申诉要多久(快手换绑请求存在风险什么情况)

  • 苹果掌阅怎么导入本地(苹果怎么把掌阅的书导出来)

    苹果掌阅怎么导入本地(苹果怎么把掌阅的书导出来)

  • win10自动修复死循环(win10自动修复不成功一直重启)

    win10自动修复死循环(win10自动修复不成功一直重启)

  • 车辆购置税会计科目怎么做账
  • 预提费用
  • 公司用的口罩放哪个科目
  • 报销为什么不能多家赔付
  • 出票后定期付款的汇票是什么意思
  • 没有收入也可以信用贷
  • 一般纳税人资格认定条件
  • 物料耗用
  • 企业所得税逾期了一定要去税局前台申报吗
  • 发出材料是借还是贷
  • 账务处理和税前扣除如何处理
  • 股权转让溢价部分怎么做分录
  • 出口退税计算方式
  • 免费样品开具发票如何入账处理?
  • 账本印花税怎么做账
  • 利息收入属于现金流入吗
  • 个人独资企业可以不开公户吗
  • 房屋出售缴纳税种
  • 收取技术服务费
  • 存货跌价准备会影响利润总额吗
  • 农产品收购抵扣税额可以申请留抵退税
  • 以土地入股需要开发票吗
  • 小规模企业出口可以不报关吗
  • 建筑工地伙食费会计分录
  • window10 怎么避免弹窗广告
  • 费用票可以抵扣什么税
  • 承兑找零怎么做凭证
  • 个人所得税如何退税操作步骤
  • 购物卡销售的重点工作是什么
  • 苹果15手机价格和图片颜色
  • 代扣代缴个人所得税怎么算
  • 公司交社保需要承担多少费用
  • 旅游企业税务筹划
  • 封装和调用
  • cobit框架
  • vue优化方案
  • ConvNeXt V2学习笔记
  • java前后端加密解密请求
  • 深度强化学习-DQN算法原理与代码
  • effective c++ github
  • 预缴增值税借方余额
  • 帝国cms视频教程
  • python poetry如何创建项目
  • 不抵扣勾选的发票在哪里查看
  • 营改增一般纳税人简易征收的范围
  • sql语句中单引号是什么
  • 电子税务局能不能逾期申报个税
  • 民办非企业单位什么意思
  • 原材料发生退货怎么处理
  • 建筑企业结转成本附件
  • 以个人名义汇货要交税吗
  • 劳务派遣公司该不该去
  • 坏账准备的核销的分录怎么做
  • 文化事业建设费计入什么科目
  • 现金日记账每月都要写期初余额吗
  • 有限责任公司和有限公司区别在哪
  • 开红字发票做账时记账凭证上如何写摘要?
  • 政府补贴项目需要审批吗
  • 收到知识产权服务费入什么科目
  • 个人往对公账户上存款怎么存
  • 企业注销前是不是资产必须处理完
  • 企业开发有多个产品
  • 年度总预算一般在次年
  • ghost装win7无法启动
  • windows vista server
  • windows 2000.
  • xp查看用户名和密码
  • 如何解决win7系统卡顿
  • macbook xcode
  • 未知类型的文件怎么打开
  • virtualbox no bootable medium
  • jquery 操作json
  • 传智播客javappt
  • python中的面向对象
  • django优势在哪里
  • 如何开发一个新的向量库
  • 企业如何在网上申请缴税三方协议
  • 税务检查的三种常用方法
  • 江西省国家税务局发票查询
  • 加强党的作风建设是目前全党的中心
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设