Python替代Excel表格的线性规划配料计算实践

Abstract: Based on the working mode that metallurgical technologists widely use linear calculation formula for burden calculation in Excel table , combined with the object-oriented friendly application of Python programming language, on the basis of Excel burden table, this paper optimizes the function, realizes the burden operation more convenient and efficient, expands the related functions, and puts forward the corresponding data analysis and visualization functions . Firstly, taking sintering batching as an example, the process of processing and calculating basic batching data with Python language is introduced, and then the development of related functions is prospected.

Key words: burden calculation, linear programming, Pre-Ironmaking.

引言

在“碳达峰,碳中和”中长远目标及环保形式严峻、巩固去产能成果的大背景下,钢铁企业转向升级工作从“量变到质变”,从“粗犷到精细”的过程不断深化,并逐步步入“两化融合”的新阶段。铁前区域作为长流程钢铁企业自身优化的成本高地,如何通过精准配料,获取成本优势,是亟待解决的系统性问题,高效、智能的配料计算方式对降低铁前成本具有重要意义。

铁前工艺配料计算目前主要的方式有人工计算、配料软件计算两种方式,人工计算是工艺技术人员通过纯手工计算或者利用嵌入配料机理计算公式的Excel表格进行;配料软件是在结合机理计算,充分考虑铁前生产工艺强耦合性、非线性、大滞后性等特点后,利用线性规划、多目标求解、BP神经 络、粒子群算法(PSO)、遗传算法(GA)等模型或者多算法联合模型开发出的具有高级处理模式和运算能力的人机交互应用系统。两种主流配料方式虽然在求解阈、计算效率、适应程度上有很大不同,但都充分结合了物料平衡、热量平衡以及人工经验,通过设定目标配料值,通过人工调整或者机器学习,不断靠近最优值,在满足产品质量要求下,获得最低配料成本。

技术介绍

Python语言具有简洁性、易读性和可扩展性,高度面向开发对象等特点,方便钢铁企业人员自行学习,其语言逻辑可读性强,能够充分将工艺机理与配料计算结合,其提供的标准库数量强大,能够满足铁前工艺配料要求,在数据可视化、机器学习、数据挖掘方面存在巨大的优势。

1.1线性规划

线性规划是满足一组等式或者不等式方程约束条件下线性函数极值的统称,其主要包含由决策变量(物料含量)构成的一组目标函数(成本最低);条件约束(物料配比范围);非负约束条件三个方面。以烧结配料为例建立模型如下:

在建设模型之前,首先要了解各种原料价格(Cost,Ci,i=1,2,3……n)以及物料有效成分含量(ai,i=1,2,3……n)。

确定决策变量。在烧结配料过程中,决策变量由参与配料的原料组成,以Xi表示,i为第i种原料,i=1,2,3……n.(参与配料的原料为n种)。

确定目标函数。以配料成本最低(亦可以烧结矿品质最优、能耗最低等为目标函数。设最低配料成本为P,则有:

MinP=ΣCi*Xi,i=1,2,3……n

设置目标烧结矿成分约束(bi)。根据高炉对烧结矿的质量要求,对目标烧结矿成分进行约束,主要包含TFe、CaO、SiO2、Al2O3、MgO等。即:

Σai*xi(=,≥)≤bi(i=1,2,3……n)

平衡约束。根据物料守恒定理,建立物料平衡约束。参与配料的物料减去烧结过程烧损之和等于单位烧结矿重量,即:

1=Σ(1-烧损)*xi(i=1,2,3……n)

1.2线性配料过程python语言展示(部分):

#引入科学计算库

from scipy import optimize as op

import numpy as np

#”c”指目标函数的系数数组(原料价格)

c=np.array([目标函数变量系数])

A_ub=np.array([[不等式的系数矩阵],[]])

B_ub=np.array([不等式值(成分约束)])

A_eq=np.array([[等式系数矩阵]])

B_eq=np.array([等式值])

x1=()

x2=()

x3=()

……

Xn=(物料用量约束范围)

#线性规划求解,打印求解结果

res=op.linprog(-c,A_ub,B_ub,A_eq,B_eq,bounds=(x1,x2,x3……xn))

print(res)

1.3结果展示:

C:UsershbggvenvScriptspython.exe

“C:/Users/hbgg/PycharmProjects/AI and Iron&Steel/线性规划.py”

con: array([******])

fun: ****(目标函数——最低配料成本)

message: ‘Optimization terminated successfully.’

nit: *

slack: array([***, ***])

status: 0

success: True

x: array([****, ****, ***参与配料计算各种原料的配比])

Process finished with exit code 0

烧结智能配料案例设计

(1)数据获取

因烧结配料作业与烧结基础原料检化验在时间上不能够完全吻合,现有的实时在线成分分析系统缺乏,可根据企业自身实际,充分利用铁区MES,将不同批次原料信息,按照生产时间节点,将检验信息导出并放在指定的存储区域,并依据配料计算所需格式(如CSV),将原料信息按指定要求安排表格内容。

(2)读取数据

MES系统及检化验系统将有效数据按照规定格式存储后,利用python中的xlrd/xlwt模块对配料基础数据进行读取,可实现逐行逐列以及精准坐标读取。即在选定参与配料的原料信息后,可按照物料编码或者名称,在线读取原料信息,参与配料计算。原料基础信息读取过程如下:

图2-1 数据读取过程示意图

(3)操作处理数据

可按照原料基础性能,如同化性、熔化性等对原料基础信息进行标注,方便在配料计算时,自动筛选可替代原料选项,并对相应的数据进行调整,如异常数据移除、数据缺失自动填补等。

基于python强大的数据可视化功能,可对原料成分变化、使用频次等数据进行汇总统计,并进一步挖掘数据价值。

(4)给出最优配料方案

将MES及检化验系统获得数据进行相应转换后,按照python线性规划计算公式,对参与配料的原料基础数据进行处理,最终获得最低成本下各个基础物料的配比,并对输出结果进行保存,对不同数量及品种的配料计算,都可使用,可根据实际情况,选择最优结果。

软件开发及展望

利用python语言开发的烧结智能配料软件具有很强的兼容性,支持Window及Linux双环境下运行,且在目前烧结配料数据量下,运算速度高效,满足配料需要。

在配料基础数据处理满足要求的情况下,可在软件中尝试使用不同的算法模型进行配料计算实践,如BP神经 络、粒子群、遗传算法等,这些智能算法使用python编程语言很容易调取并进行模块封装,为智能算法的在铁前配料的应用提供了便捷的计算机语言平台。

结束语

面对激烈的市场竞争,作为长流程钢铁工业“成本高地”的铁前工艺生产优化具有举足轻重的意义,尤其是以低成本配料为核心的工艺优化,将成为提升钢企竞争力、挖掘成本潜力的重中之重。利用python开源、友好、简洁的特点,以及其在智能算法上“高效直接”的优势,方便钢铁企业技术人员将钢铁生产工艺与计算机语言无缝融合,在满足生产工艺要求的同时,实现传统工艺与智能制造的跨界融合!

– END –

撰稿/李世杰

校审/侯建宏

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年5月9日
下一篇 2021年5月9日

相关推荐