工业数学模型——冶金烧结配矿(一)

news2024/11/16 1:26:52

1、工业场景

从很多种铁矿石中选出适合烧结配料的部分铁矿石及其比例,并使其成本最低。

2、数学模型

设Pi代表了第i种原料的成本,xi代表了第i种原料在总配料中的比例,其中i取值为1,2,…,n。计算1吨配料成本:
第种原料的成本是Yi=Pixi1,总成本是Y=∑Yi=∑Pixi,其中i取值为1,2,…,n。目标函数即为:
minY = ∑Yi=∑Pi
xi
在这里插入图片描述

3、使用函数

Scipy.optimize.linprog

def linprog(c, A_ub=None, b_ub=None, A_eq=None, b_eq=None,
            bounds=None, method='interior-point', callback=None,
            options=None, x0=None):
 Parameters
    ----------
    c : 1-D array
        The coefficients of the linear objective function to be minimized.
    A_ub : 2-D array, optional
        The inequality constraint matrix. Each row of ``A_ub`` specifies the
        coefficients of a linear inequality constraint on ``x``.
    b_ub : 1-D array, optional
        The inequality constraint vector. Each element represents an
        upper bound on the corresponding value of ``A_ub @ x``.
    A_eq : 2-D array, optional
        The equality constraint matrix. Each row of ``A_eq`` specifies the
        coefficients of a linear equality constraint on ``x``.
    b_eq : 1-D array, optional
        The equality constraint vector. Each element of ``A_eq @ x`` must equal
        the corresponding element of ``b_eq``.
    bounds : sequence, optional
        A sequence of ``(min, max)`` pairs for each element in ``x``, defining
        the minimum and maximum values of that decision variable. Use ``None``
        to indicate that there is no bound. By default, bounds are
        ``(0, None)`` (all decision variables are non-negative).
        If a single tuple ``(min, max)`` is provided, then ``min`` and
        ``max`` will serve as bounds for all decision variables.
c	    目标函数的决策变量对应的系数向量

在这里也就是由17种原料的每吨成本价格构成的向量

A_ub	不等式约束组成的决策变量系数矩阵

在这里也就是17种原料的每种化学成分构成的向量

b_ub	由A_ub对应不等式顺序的阈值向量

在这里也就是每种化学成分对应烧结矿的影响

A_eq	等式约束组成的决策变量系数矩阵
b_eq	由A_ub对应等式顺序的阈值向量

这一组是等式约束,在这里17种原料的比例之和等于1

bounds	表示决策变量x连续的定义域的n×2维矩阵,None表示无穷

这里表示的是对应17种原料的控制范围最小值最大值,是一个n×2维矩阵,n为原料的个数17,

method	调用的求解方法
callback	选择的回调函数
options	求解器选择的字典
x0	初始假设的决策变量向量,若可行linprog会对方法优化

4、代码

from scipy.optimize import linprog
import numpy as np

c=np.array([946,1062,592,1155,1375,1248,847,519,848,600,300,650,447,62,193,1843,800]).transpose()
A_ub = np.array([
                [0.6137, 0.6663, 0.5647, 0.6451, 0.7210, 0.6887, 0.6115, 0.5384, 0.6141, 0.5510, 0.6230, 0.7000, 0.00, 0.00, 0.00, 0.00, 0.00],
                [-0.6137, -0.6663, -0.5647, -0.6451, -0.7210, -0.6887, -0.6115, -0.5384, -0.6141, -0.5510, -0.6230, -0.7000, -0.00, -0.00, -0.00, -0.00, -0.00],
                [0.0391,0.0507 ,0.0570,0.0210 ,0.0052 ,0.0238 ,0.0465 ,0.0828 ,0.0775,0.0525 ,0.0588 ,0.0255 ,0.0280 ,0.0250 ,0.0580 ,0.4200 ,0.4150 ],
                [-0.0391,-0.0507 ,-0.0570,-0.0210 ,-0.0052 ,-0.0238 ,-0.0465 ,-0.0828 ,-0.0775,-0.0525 ,-0.0588 ,-0.0255 ,-0.0280 ,-0.0250 ,-0.0580 ,-0.4200 ,-0.4150 ],
                [0.0003,0.0054 ,0.0005,0.0001 ,0.0007 ,0.0026,0.0002,0.0011 ,0.0020,0.0270 ,0.0134 ,0.0026 ,0.0360 ,0.0175 ,0.4290 ,0.00 ,0.00 ],
                [-0.0003,-0.0054 ,-0.0005,-0.0001 ,-0.0007 ,-0.0026,-0.0002,-0.0011 ,-0.0020,-0.0270 ,-0.0134 ,-0.0026 ,-0.0360 ,-0.0175 ,-0.4290 ,-0.00 ,-0.00 ],
                [0.0240,0.0070 ,0.0335,0.0177 ,0.0010 ,0.0066 ,0.0217 ,0.0379 ,0.0190,0.0230 ,0.0132 ,0.0020 ,0.0080 ,0.0080 ,0.0081 ,0.2000 ,0.2800 ],
                [-0.0240,-0.0070 ,-0.0335,-0.0177 ,-0.0010 ,-0.0066 ,-0.0217 ,-0.0379 ,-0.0190,-0.0230 ,-0.0132 ,-0.0020 ,-0.0080 ,-0.0080 ,-0.0081 ,-0.2000 ,-0.2800 ],
                [0.00096 ,0.00019 ,0.00041 ,0.00114 ,0.00021 ,0.00010 ,0.00055 ,0.00069 ,0.00051 ,0.00080 ,0.00334 ,0.00013 ,0.00 ,0.00 ,0.00 ,0.0003 ,0.0004 ],
                [-0.00096 ,-0.00019 ,-0.00041 ,-0.00114 ,-0.00021 ,-0.00010 ,-0.00055 ,-0.00069 ,-0.00051 ,-0.00080 ,-0.00334 ,-0.00013 ,-0.00 ,-0.00 ,-0.00 ,-0.0003 ,-0.0004 ],
                [0.00001 ,0.0011,0.01520 ,0.0002 ,0.00490 ,0.00060 ,0.00230 ,0.000 ,0.00420 ,0.00400 ,0.01680 ,0.00480 ,0.00 ,0.00 ,0.00 ,0.00 ,0.00 ],
                [-0.00001 ,-0.0011,-0.01520 ,-0.0002 ,-0.00490 ,-0.00060 ,-0.00230 ,-0.000 ,-0.00420 ,-0.00400 ,-0.01680 ,-0.00480 ,-0.00 ,-0.00 ,-0.00 ,-0.00 ,-0.00]])
b_ub = np.array([57,-55,7,-4,3.5,-1.5,3,-1.5,1.1,-0.04,0.7,-0.2])

A_eq = np.array([[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]])
b_eq = np.array([100])

x=linprog(c,A_ub,b_ub,A_eq,b_eq,method='highs',bounds=np.array([[10,20],[1,10],[1,10],[1,10],[1,10],[1,10],[1,10],[1,10],[10,20],[10,20],[0,1],[0,2],[5,8],[0,2],[3,5],[3,5],[0.5,2]]))
print(x)

5、计算结果

           con: array([0.])
 crossover_nit: 0
         eqlin:  marginals: array([-2092.4011976])
  residual: array([0.])
           fun: 86687.33832335332
       ineqlin:  marginals: array([   -0.       , -4850.2994012,    -0.       ,    -0.       ,
          -0.       ,    -0.       ,    -0.       ,    -0.       ,
          -0.       ,    -0.       ,    -0.       ,    -0.       ])
  residual: array([2.        , 0.        , 0.7905684 , 2.2094316 , 1.62490589,
       0.37509411, 0.58011713, 0.91988287, 1.05100968, 0.00899032,
       0.31292236, 0.18707764])
         lower:  marginals: <MemoryView of 'ndarray' at 0xb0686e8>
  residual: array([ 0.        ,  9.        ,  9.        ,  0.        ,  9.        ,
        1.29607452,  9.        ,  1.20392548, 10.        ,  0.        ,
        1.        ,  2.        ,  0.        ,  0.        ,  0.        ,
        0.        ,  0.        ])
       message: 'Optimization terminated successfully.'
           nit: 9
         slack: array([2.        , 0.        , 0.7905684 , 2.2094316 , 1.62490589,
       0.37509411, 0.58011713, 0.91988287, 1.05100968, 0.00899032,
       0.31292236, 0.18707764])
        status: 0
       success: True
         upper:  marginals: <MemoryView of 'ndarray' at 0xb068540>
  residual: array([10.        ,  0.        ,  0.        ,  9.        ,  0.        ,
        7.70392548,  0.        ,  7.79607452,  0.        , 10.        ,
        0.        ,  0.        ,  3.        ,  2.        ,  2.        ,
        2.        ,  1.5       ])
             x: array([10.        , 10.        , 10.        ,  1.        , 10.        ,
        2.29607452, 10.        ,  2.20392548, 20.        , 10.        ,
        1.        ,  2.        ,  5.        ,  0.        ,  3.        ,
        3.        ,  0.5       ])

Process finished with exit code 0

最后的x: array就是我们想要的值

[10., 10., 10.,  1., 10.,2.29607452, 10.,  2.20392548, 20., 10.,1.,  2.,  5.,  0.,  3.,3.,  0.5]

6、带入实际验证公式

在这里插入图片描述
铁元素含量
tensor(0.5879)
吨度价
tensor(17.1714)

7、同一批料对比人工测算

在这里插入图片描述铁元素含量
tensor(0.5510)
吨度价
tensor(17.6456)

8、模型结果比人工结果含铁量高且吨度价更优

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1510573.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分布式系统超详解析

目录 常见概念 基本概念 应用/系统 模块/组件 分布式 集群 主/从 中间件 评价指标 可用性 响应时长 吞吐量/并发量 架构演进 单机架构 应用数据分离架构 引入更多的应用服务器结点 读写分离架构 引入缓存--冷热分离的结构 垂直分库 业务拆分--微服务 为了更…

【惠友小课堂】膝关节可以只换一半?单髁置换术,哪里坏了修哪里,重塑新“膝”望

髁 这个字念啥&#xff1f; 被指到的人来回答 不念“踝&#xff08;hui&#xff09;”也不念“果” 正确念法为“kē”&#xff08;科额~髁&#xff09; 膝关节是人体承重较大的关节&#xff0c;并且使用频率较高&#xff0c;因此膝关节很容易磨损、损伤等。年龄的增长、意外受…

魔法之线:探索string类的神秘世界

&#x1f389;个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名乐于分享在学习道路上收获的大二在校生 &#x1f648;个人主页&#x1f389;&#xff1a;GOTXX &#x1f43c;个人WeChat&#xff1a;ILXOXVJE &#x1f43c;本文由GOTXX原创&#xff0c;首发CSDN&…

小马智行与卢森堡签署自动驾驶合作谅解备忘录

近日&#xff0c;自动驾驶企业小马智行宣布与卢森堡大公国政府签署谅解备忘录&#xff0c;促进自动驾驶汽车及技术在卢森堡的发展。该文件由小马智行联合创始人、CEO彭军与卢森堡经济部长Lex Delles共同签署&#xff0c;这也标志着小马智行与卢森堡政府就推动该地区的自动驾驶研…

Python:数据分析工具Streamlit

简介&#xff1a;Streamlit是一个开源Python库&#xff0c;可以轻松创建和共享用于机器学习和数据科学的漂亮的自定义web应用程序。只需几分钟&#xff0c;您就可以构建和部署功能强大的数据应用程序&#xff0c;同时可以结合 matplotlib 做出漂亮的图表&#xff0c;实现数据可…

图像运算 - 图像像素点的加减异或操作

1、前言 图像是由像素组成的,而像素是由灰度值表现,灰度值由具体的正整数表现(0代表黑色,255代表白色)。因此,对于正整数可以进行一系列的数学运算,加减乘除等等,通过这些运算可以达到截取,合并图像等效果 2、图像的掩膜 掩膜的意思是利用特定的模板将图像感兴趣区域…

StringJoiner --java学习笔记

StringJoiner IDK8开始才有的&#xff0c;跟StrinaBuilder一样&#xff0c;也是用来操作字符串的&#xff0c;也可以看成是一个容器&#xff0c;创建之后里面的内容是可变的好处:不仅能提高字符串的操作效率&#xff0c;并且在有些场景下使用它操作字符串&#xff0c;代码会更…

Google发布创新AI工具Path Foundation和Derm Foundation,突破医学影像解读瓶颈,开启病理学与皮肤科研究新纪元

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

2024-3-11-C++作业

1>试编程 要求&#xff1a; 提示并输入一个字符串&#xff0c;统计该字符中大写、小写字母个数、数字个数、空格个数以及其他字符个数 源代码: #include <iostream>using namespace std;int main() {string s;cout << "请输入字符串&#xff1a;"…

采购管理系统:寻源到付款 (S2P) 流程自动化有什么好处?

企业的采购部门由各种流程和团队驱动&#xff0c;包括采购和应付账款。为实现战略目标而采用的策略流程之一是寻源到付款&#xff08;S2P&#xff09;流程。 何时使用 “寻源到付款”&#xff1f; 顾名思义&#xff0c;寻源到付款的主要目的是寻找最佳供应商以满足业务需求&a…

传感器是什么?有哪些类型及应用

什么是传感器 传感器是一种用于检测、测量和感知某种特定物理量或环境参数的设备或器件。它们能够将所测量的物理量转换为可供处理和分析的电信号、数字信号或其他形式的输出信号。传感器在各种领域中都有广泛的应用&#xff0c;包括工业、医疗、环境监测、汽车、航空航天、农…

MonkeyRunner在自动化测试里的应用场景!

MonkeyRunner是Android提供的一个自动化测试工具&#xff0c;主要用于对Android设备或模拟器进行功能和压力测试。以下是一些MonkeyRunner在自动化测试中的应用场景及实例代码&#xff1a; 基本操作测试 点击屏幕上的特定位置或元素。 模拟滑动和手势操作。 发送按键事件。 …

nginx的使用,homebrew安装及使用nginx。

Nginx 是一个高性能的 HTTP 和反向代理服务器&#xff0c;它提供了诸如 IMAP、POP3 和 SMTP 等邮件代理服务。以下是 Nginx 的主要作用&#xff1a;12345 作为 Web 服务器。Nginx 能够以较少的系统资源提供高效率的服务&#xff0c;尤其在高并发连接下表现出色。1…

双面布局贴补强,FPC焊接很受伤

高速先生成员--王辉东 FPC上有器件的位置添加补强&#xff0c;按理说是合情合理&#xff0c;为什么加了补强&#xff0c;就无法焊接。请走进今天的案例&#xff0c;为你揭秘&#xff0c;看看你是否也有相似的经历。 生活就像巧克力&#xff0c;你永远不知道下一颗是什么味道。…

【物联网设备端开发】FastBee平台设备 Arduino SDK接入指南

一、Arduino开发环境 开发工具&#xff1a; Arduino开 发 板&#xff1a; esp8266 core for arduino v3.0.2 或 esp32 core for arduino 1.0.6依 赖 库&#xff1a; PubSubClient2.8.0 、 ArduinoJson6.19.1 、 OneButton2.0.4 二、Arduino示例功能 WIFI连接、MQTT连接、设备…

【Web】浅浅地聊Hessian反序列化有诸多限制的原因

目录 前言 CC6的失效——LazyMap之殇 Rome-TemplatesImpl链的失效——transient之殇 结语 前文&#xff1a;【Web】浅聊Java反序列化之玩转Hessian反序列化的前置知识 【Web】浅聊Hessian反序列化之打Rome出网&不出网 前言 注意到很多 Java 原生反序列化利用链在 Hes…

自定义校验注解:枚举、列举模式

1、想使用枚举作为参数校验对象&#xff0c;减少手工代码量。 2、有些参数是固定的&#xff0c;列举校验&#xff0c;减少… 一、枚举模式 1、一般枚举 注释 Documented Retention(RetentionPolicy.RUNTIME) Target({ElementType.FIELD, ElementType.PARAMETER}) Constraint…

内网渗透-跨域环境渗透-1

目录 smbclient工具 mimikatz工具 Kerbers协议 NTLM认证 hash传递攻击&#xff08;PTH攻击&#xff09; 黄金票据攻击 白银票据 MS14-068 smbclient工具 在linux里面连接远程windows共享目录&#xff0c;可以使用这个工具 ​ 第一种连接方式&#xff1a;smbclient -L 目…

蝙蝠避障:我生活中的一道光

盲人的世界&#xff0c;是无尽的黑暗。看不见光&#xff0c;看不见色彩&#xff0c;甚至看不见自己的手。但在这个黑暗的世界里&#xff0c;我找到了一个光明的出口&#xff1a;一款可以障碍物实时检测的名为蝙蝠避障的盲人软件。 这款软件就像是我的一双眼睛。它通过先进的激光…

基于SpringBoot+MYSQL的大学生入学审核系统

目录 1、 前言介绍 2、主要技术 3、系统概要设计 3.1、概述 3.2、系统结构 3.3、数据库设计 3.3.1、数据库实体 3.3.2、数据库设计表 4、运行截图(部分) 4.1、学生信息管理 4.2、学生信息查询 4.3、学生信息修改 4.4、办理学生入学 4.5、学生学籍管理 4.6、入学办…