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

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 arrayThe coefficients of the linear objective function to be minimized.A_ub : 2-D array, optionalThe inequality constraint matrix. Each row of ``A_ub`` specifies thecoefficients of a linear inequality constraint on ``x``.b_ub : 1-D array, optionalThe inequality constraint vector. Each element represents anupper bound on the corresponding value of ``A_ub @ x``.A_eq : 2-D array, optionalThe equality constraint matrix. Each row of ``A_eq`` specifies thecoefficients of a linear equality constraint on ``x``.b_eq : 1-D array, optionalThe equality constraint vector. Each element of ``A_eq @ x`` must equalthe corresponding element of ``b_eq``.bounds : sequence, optionalA sequence of ``(min, max)`` pairs for each element in ``x``, definingthe 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 npc=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: 0eqlin:  marginals: array([-2092.4011976])residual: array([0.])fun: 86687.33832335332ineqlin:  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: 9slack: array([2.        , 0.        , 0.7905684 , 2.2094316 , 1.62490589,0.37509411, 0.58011713, 0.91988287, 1.05100968, 0.00899032,0.31292236, 0.18707764])status: 0success: Trueupper:  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.rhkb.cn/news/274205.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Caffeine--实现进程缓存

本地进程缓存特点 缓存在日常开发中起着至关重要的作用, 由于存储在内存中, 数据的读取速度非常快,能大量减少对数据库的访问,减少数据库的压力. 缓存分为两类: 分布式缓存, 例如Redis: 优点: 存储容量大, 可靠性更好, 可以在集群间共享缺点: 访问缓存存在网络开销场景: 缓存数…

第二十一天-NumPy

目录 什么是NumPy NumPy使用 1.数组的创建 2.类型转换 3.赠删改查 4.数组运算 5.矩阵运算 什么是NumPy 1.NumPy操作的是多维数组&#xff0c;什么是纬度&#xff1f; NumPy使用 1. 安装 pip install numpy import numpy as np 2.官网&#xff1a; 中文官网&#xff1a…

Python高级二

一、异常 1、定义 异常是在程序执行过程中出现的错误或意外情况。当程序遇到异常时&#xff0c;它会中断当前的执行流程&#xff0c;并尝试找到相应的异常处理机制来解决问题。 2、常见异常类型 SyntaxError&#xff1a;语法错误&#xff0c;通常是代码书写不符合Python语法规则…

LVS集群 ----------------(直接路由 )DR模式部署 (二)

一、LVS集群的三种工作模式 lvs-nat&#xff1a;修改请求报文的目标IP,多目标IP的DNAT lvs-dr&#xff1a;操纵封装新的MAC地址&#xff08;直接路由&#xff09; lvs-tun&#xff1a;隧道模式 lvs-dr 是 LVS集群的 默认工作模式 NAT通过网络地址转换实现的虚拟服务器&…

day01vue学习

day01 一、为什么要学习Vue 1.前端必备技能 2.岗位多&#xff0c;绝大互联网公司都在使用Vue 3.提高开发效率 4.高薪必备技能&#xff08;Vue2Vue3&#xff09; 二、什么是Vue 概念&#xff1a;Vue (读音 /vjuː/&#xff0c;类似于 view) 是一套 **构建用户界面 ** 的 …

网络基础aaa

三次握手 四次挥手 网络模型 TCP or UDP 的特点 如何理解 TCP 的5层协议 TCP的5层协议是指计算机网络体系结构中&#xff0c;与TCP&#xff08;传输控制协议&#xff09;相关的五个层次。这五个层次从高到低依次是&#xff1a;应用层、传输层、网络层、数据链路层和物理层。每…

Flask python开发篇: 写一个简单的接口

第一步&#xff1a;新建flask项目 参考使用pycharm新建一个项目 打开pycharm&#xff0c;根据下面图中箭头顺序&#xff0c;新建一个flask的项目&#xff1b; 第二步&#xff1a;运行项目&#xff0c; 安装成功以后&#xff0c;会有个app.py文件&#xff0c;打开以后&#…

OSI七层模型TCP四层模型横向对比

OSI 理论模型&#xff08;Open Systems Interconnection Model&#xff09;和TCP/IP模型 七层每一层对应英文 应用层&#xff08;Application Layer&#xff09; 表示层&#xff08;Presentation Layer&#xff09; 会话层&#xff08;Session Layer&#xff09; 传输层&#x…

JavaWeb--Maven

一&#xff1a;概述 1.简介 Maven 是专门用于管理和构建 Java 项目的工具&#xff0c;它的主要功能有&#xff1a; 提供了一套标准化的项目结构 提供了一套标准化的构建流程&#xff08;编译&#xff0c;测试&#xff0c;打包&#xff0c;发布 …… &#xff09; 提供了一套…

【存储】ZYNQ+NVMe小型化全国产存储解决方案

文章目录 1、背景2、基础理论3、设计方案3.1、FPGA设计方案3.1.1、NVMe控制器实现3.1.2、NVMe控制器实现 3.2 驱动软件设计方案3.2.1 读写NVMe磁盘软件驱动3.2.2 NVMe磁盘驱动设计3.2.3 标准EXT4文件系统设计 3.3 上位机控制软件设计方案 4、测试结果4.1 硬件测试平台说明4.2 测…

计算机网络:应用层知识点汇总

文章目录 一、网络应用模型二、域名系统&#xff08;DNS&#xff09;三、文本传输协议&#xff08;FTP&#xff09;四、电子邮件五、万维网和HTTP协议 一、网络应用模型 p2p也就是对等模型 二、域名系统&#xff08;DNS&#xff09; 我们知道&#xff0c;随着人们建立一个网站…

打字通小游戏制作教程:用HTML5和JavaScript提升打字速度

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

Mac M1:通过docker安装RocketMQ、RocketMQ-Dashboard

0. 引言 最近本地启动以前docker安装的rocketmq发现报错了&#xff0c;因为是从老mac迁移过来的&#xff0c;发现支持的芯片还是amd的&#xff0c;于是重新在docker下安装rocketmq&#xff0c;并记录下步骤&#xff0c;方便大家后续参考。 1. 步骤 1、先下载项目源码 git c…

记录一个vue编辑的移动端页面

<template><div class"wrap"><el-form :model"queryParams" ref"queryForm" size"small" :inline"true" label-width"120px"><el-form-item label"班级" prop"classId"…

运维自动化之ansible

pxe 一键安装操作系统 操作系统只是提供一个平台 lnmp 需要多软件协同完成的一个简单项目 服务器正常运行 日常运维 巡检 服务器上的软件正常运行 zabbix 普罗米修斯 系统调优&#xff0c;架构调优 云计算核心职能 搭建平台架构 日常运营保障 性能效率优化 相关工具 代…

【SQL】601. 体育馆的人流量(with as 临时表;id减去row_number()思路)

前述 知识点学习&#xff1a; with as 和临时表的使用12、关于临时表和with as子查询部分 题目描述 leetcode题目&#xff1a;601. 体育馆的人流量 思路 关键&#xff1a;如何确定id是连续的三行或更多行记录 方法一&#xff1a; 多次连表&#xff0c;筛选查询方法二&…

护眼灯什么价位的好用?推荐五款好价护眼台灯

如今&#xff0c;我们不难发现许多年轻人早早地就戴上了眼镜&#xff0c;近视问题日益严重。在改善近视问题的众多因素中&#xff0c;营造适宜的照明环境&#xff0c;特别是选择一款合适的护眼台灯&#xff0c;显得尤为重要。然而&#xff0c;对于初次选购护眼台灯的人来说&…

vue+Nodejs+Koa搭建前后端系统(九)-- 上传图片

web2.0的到来使网页世界正式进入了寒武纪&#xff0c;各式各样的多媒体资源屡见不鲜&#xff0c;上传资源变得刻不容缓&#xff01; 前言 本文是在该系列的基础上&#xff0c;针对前后端代码的修改。 准备 HTTP上传图片时Content-Type值常见的有2种&#xff1a;application…

解决:chrome无痕模式下找不到插件问题

如需在 Chrome 浏览器或 ChromeOS 设备上以无痕模式使用扩展程序&#xff0c;请执行以下操作&#xff1a; 在新的无痕式窗口中&#xff0c;打开 chrome://extensions。找到要在无痕模式下使用的扩展程序。点击详情。开启在无痕模式下启用。 此时打开无痕模式&#xff0c;就能看…

经营分析怎么做?详解企业月度经营分析的思路与方法

企业经营分析是企业成功的关键之一&#xff0c;无论企业规模大小&#xff0c;都需要通过系统性的数据分析来指导经营决策。这一过程不仅仅是对集团大局数据的简单处理&#xff0c;还包括对市场、客户、生产、财务、运营、项目进展、人效等多个方面数据的全面审视。通过深入分析…