化学工业与工程  2024, Vol. 41 Issue (1): 118-124
基于Python的化工流程优化系统开发
魏晓彤1 , 岳金彩1 , 杨安明1 , 周东健2 , 郑世清1     
1. 青岛科技大学化工学院, 山东 青岛 266042;
2. 青岛银科恒远化工过程信息技术有限公司, 山东 青岛 266042
摘要:作为一种通用化工流程模拟系统, Aspen Plus已广泛应用于化工流程的模拟、设计与优化。随着人们对复杂流程优化的需求越来越多, Aspen Plus自带的灵敏度分析已经不能满足需要, 将Aspen Plus与优化算法进行集成, 用于求解复杂优化问题有其必要。在Python环境下实现了对Aspen Plus流程模拟的控制和数据传递, 在此基础上开发了一套流程优化系统, 可将各种优化算法方便地集成在一起, 用于解决不同特点的优化问题。采用坐标轮换法以年度总费用TAC(Total Annual Cost)为目标函数, 对甲醇-丙酮共沸体系的双塔变压精馏进行优化, 灵活实现了对不同变量、不同顺序的优化, 均取得预期效果, 提高了工艺开发效率。
关键词Aspen Plus    Python    软件集成    优化    变压精馏    算法    
Development of chemical process optimization system based on Python
WEI Xiaotong1 , YUE Jincai1 , YANG Anming1 , ZHOU Dongjian2 , ZHENG Shiqing1     
1. School of Chemical Engineering, Qingdao University of Science and Technology, Shandong Qingdao 266042, China;
2. Qingdao Yinke Hengyuan Chemical Process Information Technology Co., Ltd., Shandong Qingdao 266042, China
Abstract: As a general chemical process simulation system, Aspen Plus has been widely used in simulation, design and optimization of chemical processes. As the need for complex process optimization increases, Aspen Plus's built-in sensitivity analysis is no longer sufficient. Therefore, it is necessary to integrate Aspen Plus with optimization algorithms for solving complex optimization problems. In the Python environment, the control and data transmission of the Aspen Plus process simulation are realized, and a process optimization system is developed on this basis, which can easily integrate various optimization algorithms to solve optimization problems with different characteristics. Using theunivariate search technique to optimize the double-column variable pressure distillation of methanol-acetone azeotropic system with the annual total cost as the target function, the optimization of different variables and different sequences is flexibly realized, and the expected effects are achieved and the process development efficiency is improved.
Keywords: Aspen Plus    Python    software integration    optimization    variable pressure distillation    algorithm    

Aspen Plus是美国能源部于20世纪70年代后期在麻省理工学院(MIT)组织下开发的,是一种大型通用流程模拟系统,已广泛应用于化工设计、稳态模拟和优化,经过几十年来不断改进、扩充和提高,先后推出了十多个版本,应用案例数以百万计[1]。随着化工行业的发展,对大型工艺流程进行优化和改进变得十分重要,Aspen Plus自带的灵敏度分析已经不能满足人们对复杂流程优化的需要。因此,将Aspen Plus与各种优化算法进行集成是非常有必要的。

Aspen Plus的Windows用户界面是一个ActiveX自动控制服务器[2],外部Windows应用程序可通过接口程序与Aspen Plus进行数据交换,实现系统集成。接口程序常用Visual Basic语言编写[2],也有研究者[3]用其他编程语言编写,Bhutani等[4-7]系统地研究了Aspen Plus与编程语言Visual Basic、C/C++和Visual FORTRAN的集成技术,实现了不同优化算法与Aspen Plus的集成,为流程优化综合提供了有效工具,但也存在界面不友好、扩充新算法不方便等问题。

近年来Python环境下算法与Aspen Plus的系统集成引起了研究者注意[8]。Python是一种动态解释型编程语言,拥有可与MATLAB比肩的庞大的数值分析模块(SciPy)和矩阵运算模块(NumPy)。Python语言提供了从2D到3D的多种图形绘制模块(Matplotlib),方便将计算结果进行可视化[9]。蒋雨升[10]利用Python与ABAQUS进行系统集成和二次开发,解决了ABAQUS分析修改时重复工作量大等难题,开发的软件操作简单便捷,提高了分析效率。

本研究在Python环境下实现了对Aspen Plus流程模拟的控制和数据传递,在此基础上开发了一套流程优化系统,可将各种优化算法与Aspen Plus集成,用于解决不同的优化问题。

1 Aspen Plus变量探测器及节点调用

每个Aspen Plus模拟问题的输入和结果数据都被组织在一个树状结构里,用户可以在Aspen Plus界面里的Tools菜单栏下使用Variable Explorer(变量探测器)找到物流和模块节点,所有涉及到的变量属性、数值及调用地址都在这个节点下面的分支里。根据变量地址就可以在集成环境中编写相应的代码实现对相关变量的读取和赋值。以物流S1为例说明如下:(1)在Aspen Plus界面下双击物流S1,找到需要的变量,单击右键复制这个变量;(2)复制变量后,点击Aspen Plus界面里的Tools菜单栏找到Variable Explorer;(3)进入Variable Explorer,在空白处单击右键,选择Go to Node。弹出一个对话框,点击OK;(4)找到该节点的Call和Value属性。Call为调用地址:Data\\Streams\\S1\\Output\\MASSFLOW\\MIXED\\;Value为当前变量的值;(5)在集成环境中用FindNode函数调用节点读取变量值或对变量赋值:Aspen.Tree.FindNode('\\Data\\Streams\\S1\\Output\\MASSFLOW\\MIXED\\').Value。

对于单元模块同样可以找到对应节点和相关变量。

2 基于Python的优化系统实现 2.1 Python与Aspen Plus数据交互接口

本论文使用PyQt5生成集成系统的GUI界面,应用PyQt5进行软件的点击和连接事件响应。PyQt5由一系列Python模块组成,是Digia的Qt5应用框架与Python的结合,Qt库由Riverbank Computing开发,是最强大的GUI库之一[11]。参考MATLAB调用Aspen Plus的文献[12]和Aspen Plus官方用户指南[2],在Python环境下编写了系统与Aspen Plus参数的交互接口。部分接口代码如下。

(1) Aspen Plus模拟文件的打开和运行

打开一个Aspen Plus文件:fileName, fileType=QtWidgets.QFileDialog. getOpenFileName(self, “选取文件”, os.getcwd( )

根据Aspen Plus版本创建本地服务器:Application=win32.Dispatch('Apwn.Document.36.0')

重置:Application.Reinit( )

运行模拟。Aspen Plus运行需要一定时间,用一个循环语句每2 s检查一次是否运行完毕:

Application.Engine.Run2( )

while Application.Engine.IsRunning==1:

time.sleep(2)

(2) 变量读取与赋值

遍历流程,读取每个模块(或物流)的名称和有关变量数值,输出在widget里:

for item in items:

path='\\Data\\Blocks\\'+item.text( )

self.strs.append(Application.Tree.FindNode(path).Value)

把系统界面上textEdit输入框里的数值赋值给某个变量并运行:

Application.Tree.FindNode(path).Value=self. textEdit.toPlainText( )

Application.Engine.Run2( )

2.2 系统开发及功能实现

化工过程优化(或综合)问题形式多样,各有特点,需要选择合适的优化算法进行求解。本系统提供了坐标轮换法、遗传算法、模拟退火算法等多种优化算法供选择使用,其它新算法也可方便地添加进来。Python环境下Aspen Plus与各优化算法的集成关系如图 1所示。

图 1 Python环境下Aspen Plus与优化算法的集成关系 Fig.1 The integration relationship between Aspen Plus and optimization algorithms in Python environment

系统运行过程如下:(1)在Aspen Plus环境下建立模拟流程,给出各优化变量初值,确认运行无误,保存bkp文件;(2)运行本系统,导入模拟流程的bkp文件,如图 2所示。在菜单栏点击“开始”,选择“打开bkp文件”,选择待优化的bkp文件;(3)点击“打开模块列表”,系统读取模拟流程中各模块和物流信息,选择优化变量所在的模块或物流,给出优化变量相关信息,选择优化算法和目标函数;(4)优化算法给出优化变量的修改值,赋给Aspen Plus进行模拟计算,模拟完成后把结果返回到优化算法中进行优化,直至得到最优解;(5)把优化结果输出到Excel表格中,并进行相关处理,输出最终优化结果。

图 2 系统导入Aspen Plus bkp文件界面 Fig.2 Importing Aspen Plus bkp file interface in the system
3 甲醇-丙酮变压精馏过程优化 3.1 甲醇-丙酮共沸体系工艺简介

甲醇和丙酮常压下可形成恒沸物,恒沸质量组成为丙酮88%、甲醇12%,恒沸温度为55.5 ℃,普通精馏方法无法进行共沸物的分离[13]。Luyben[14]采用启发式优化方法实现了变压精馏分离此共沸物体系的稳态工艺设计与优化。图 3为Aspen Plus用户界面建立的两塔变压精馏工艺流程图,进料流量为540 kmol·h-1,温度为320 K,进料组分为共沸物,B1为常压塔,操作压力固定为1 atm,塔底得到甲醇,摩尔分数为XM=99.5%,B2为加压塔,塔底得到丙酮,摩尔分数为XA=99.4%[13],模拟时采用设计规定实现产品纯度要求,两塔主要变量初值见表 1。优化目标为年度总费用TAC(Total Annual Cost),由设备总费用和能耗费用两部分组成[15],初始条件下年度总费用TAC为3 687 495 $·y-1

图 3 甲醇-丙酮共沸体系精馏工艺流程图 Fig.3 Flow diagram of distillation process of methanol-acetone azeotropic system
表 1 本文选取的优化变量初值及设置 Table 1 The initial values and settings of the optimization variables selected in this article
变量 设置
初值 优化范围 搜索步长
B1塔回流比 RB1 3.0 1.5~3.5 0.1
B1塔进料位置 FB1 25 2~(NB1-1) 1
B1塔理论板数 NB1 70 30~73 1
B1塔循环进料位置 CB1 32 2~(NB1-1) 1
B2塔回流比 RB2 3.0 1.5~3.5 0.1
B2塔进料位置 FB2 43 2~(NB2-1) 1
B2塔理论板数 NB2 70 30-73 1
B2塔压力 PB2/atm 10 8~12 0.1
3.2 优化过程

进料条件、分离要求固定后,影响TAC的主要变量有两塔理论板数、进料位置、回流比和B2塔操作压力等,既有整型又有实型,如果不借助优化算法,难以找到最优解。8个优化变量的初值、优化范围及搜索步长在表 1中列出。图 4显示了本系统主界面中B1塔一些变量的初值、优化变量的选择及设置界面。

图 4 化工流程优化系统主界面 Fig.4 The main interface of the chemical process optimization system

由于变量数比较少,本研究采用坐标轮换法对流程进行优化。坐标轮换法是一种沿坐标方向轮流进行搜索的寻优方法,它把多变量优化问题转化成一系列的单变量优化问题,又称变量轮换法。对某个变量进行寻优时,可根据变量类型选取合适的方法,比利用目标函数导数建立搜索方向的方法适应性更好,缺点是算法不容易收敛,收敛速度较慢,适用于优化变量较少的问题。本研究采用4种策略进行优化,考察变量优化顺序及B2塔压力对TAC结果的影响情况。

优化顺序1:RB1FB1NB1CB1RB2FB2NB2;B2塔操作压力固定为10 atm,不参加优化。

优化顺序2:RB1FB1NB1CB1RB2FB2NB2PB2

优化顺序3:RB2FB2NB2RB1FB1NB1CB1;B2塔操作压力固定为10 atm,不参加优化。

优化顺序4:RB2FB2NB2RB1FB1NB1CB1PB2

对于优化顺序1,第1轮优化目标函数TAC由3 687 495 $·y-1下降到3 274 521 $·y-1,优化到第17轮收敛,TAC最优值为3 246 133 $·y-1

对于优化顺序2,第1轮优化目标函数TAC由3 687 495 $·y-1下降到3 097 906 $·y-1,优化进程如图 5所示。优化到第16轮收敛,TAC最优值为3 063 500 $·y-1,各轮优化结果如图 6所示。

图 5 优化顺序2第1轮优化进程 Fig.5 The first round optimization process of sequence 2
图 6 优化顺序2各轮优化结果 Fig.6 Per round optimization results of sequence 2

对于优化顺序3,第1轮优化目标函数TAC由3 687 495 $·y-1下降到3 254 575 $·y-1,优化到第12轮收敛,TAC最优值为3 221 349 $·y-1

对于优化顺序4,第1轮优化目标函数TAC由3 687 495 $·y-1下降到3 102 533 $·y-1,优化进程如图 7所示。优化到第14轮收敛,TAC最优值为3 063 487 $·y-1,各轮优化结果如图 8所示。

图 7 优化顺序4第1轮优化进程 Fig.7 The first round optimization process of sequence 4
图 8 优化顺序4各轮优化结果 Fig.8 Per round optimization results of sequence 4

表 2列出了各优化顺序的最优变量值和TAC值。

表 2 不同优化顺序得到的最优变量值和TAC Table 2 The optimal variable values and TAC obtained in different optimization sequences
变量 优化顺序1 优化顺序2 优化顺序3 优化顺序4 初值
RB1 1.6 1.5 1.7 1.5 3.0
FB1 14 13 19 13 25
NB1 31 31 34 30 70
CB1 21 21 27 21 32
RB2 2.7 2.5 2.7 2.5 3.0
FB2 31 25 28 25 43
NB2 48 41 45 41 70
PB2/atm 固定10 12 固定10 12 10
TAC/($·y-1) 3 246 133 3 063 500 3 221 349 3 063 487 3 687 495
TAC减少/% 12.0 16.9 12.7 16.9

优化顺序1、3没有对B2塔操作压力进行优化,只是改变了变量优化顺序,二者TAC最优值差别不大。优化顺序2、4增加了B2塔操作压力的优化,TAC几乎一致。可以认为优化变量顺序改变对坐标轮换法的收敛基本没有影响。

比较优化顺序1、2结果可以看出,B2塔操作压力优化后由初值10 atm增加到12 atm,相应地其它变量的最优值也有变动,TAC最优值由3 246 133 $·y-1减小到3 063 500 $·y-1。提高B2塔操作压力有利于降低TAC。同理对优化顺序3、4结果进行比较,也得出了相同结论。B2塔操作压力提高对TAC的降低有较大的影响。

本研究采用坐标轮换法不对B2塔压力优化时,得到的TAC最优值较初值降低大于12%,对B2塔压力优化时TAC最优值较初值降低16.9%。

4 结论

在Python语言环境下开发了Aspen Plus与优化算法的集成优化系统。系统通过接口程序实现了对Aspen Plus模拟流程的数据输入、模拟运行以及数据输出。在集成系统中实现了基于经济费用模型的TAC计算并调用Excel对数据进行存储与后期处理。采用坐标轮换法对甲醇-丙酮共沸物的变压分离系统进行了4种策略的优化,均收敛到最优点,充分体现出了Python开发环境的优势,用户界面友好,便于实现各种算法的集成和应用。

参考文献
[1]
蔡振兴. Aspen Plus与Visual C++混合编程在化工模拟中的应用[J]. 上海化工, 2014, 39(2): 23-25.
CAI Zhenxing. Application of mixed programming based on aspen plus and visual C++ in chemical simulation[J]. Shanghai Chemical Industry, 2014, 39(2): 23-25. (in Chinese)
[2]
ASPEN PLUS. Aspen Plus user guide[M]. Massachusetts: Aspen Technology Limited, 2003.
[3]
耿大钊, 陈曦, 邵之江, 等. 基于COM技术的MATLAB与Aspen Plus接口及高级应用[J]. 化工自动化及仪表, 2006, 33(3): 30-34.
GENG Dazhao, CHEN Xi, SHAO Zhijiang, et al. Interface between MATLAB and Aspen Plus based on COM technology and its advanced application[J]. Control and Instruments in Chemical Industry, 2006, 33(3): 30-34. (in Chinese)
[4]
BHUTANI N, TARAFDER A, RANGAIAH G P, et al. A multi-platform, multi-language environment for process modelling, simulation and optimization[J]. International Journal of Computer Applications in Technology, 2007, 30(3): 197. DOI:10.1504/IJCAT.2007.015718
[5]
宋维仁, 漆志文, 朱建宁, 等. 大型煤化工甲醇精馏过程仿真系统的研究[J]. 计算机与应用化学, 2011, 28(11): 1415-1418.
SONG Weiren, QI Zhiwen, ZHU Jianning, et al. Simulation system of methanol distillation in large-scale coal chemical industry[J]. Computers and Applied Chemistry, 2011, 28(11): 1415-1418. (in Chinese)
[6]
孔祥冰. 模块环境下多目标遗传算法在过程优化综合中的应用研究[D]. 山东青岛: 青岛科技大学, 2006
KONG Xiangbing. Research on the application of multi-objective genetic algorithm in process optimization synthesis in modular environment[D]. Shandong Qingdao: Qingdao University of Science & Technology, 2006 (in Chinese)
[7]
卜光乐. 基于模拟退火算法的变压精馏经济优化[D]. 山东青岛: 青岛科技大学, 2017
BU Guangle. The economic optimization of pressure-swing distillation based on simulated annealing algorithm[D]. Shandong Qingdao: Qingdao University of Science & Technology, 2017 (in Chinese)
[8]
韩承宇, 刘丽英, 孙巍. 基于Python的Aspen Plus工艺过程优化及工业应用[C]//2019年中国过程系统工程年会(PSE2019)论文集. [出版者不详], 2019: 104-108
HAN Chengyu, LIU Liying, SUN Wei. Python based process optimization via Aspen Plus and its industrial application[C]. PSE2019, [Publisher unknown], 2019: 104-108(in Chinese)
[9]
孙喆, 尹晓红, 范文元, 等. 利用PYTHON实现化工原理管路计算的可视化教学[J]. 广东化工, 2020, 47(15): 183-184.
SUN Zhe, YIN Xiaohong, FAN Wenyuan, et al. Visualization on the pipeline calculation in chemical engineering using python program[J]. Guangdong Chemical Industry, 2020, 47(15): 183-184. DOI:10.3969/j.issn.1007-1865.2020.15.082 (in Chinese)
[10]
蒋雨升. 基于ABAQUS的振动特性分析及其软件二次开发[D]. 南京: 南京航空航天大学, 2010
JIANG Yusheng. Analysis of vibration characteristics based on ABAQUS and secondary development of its software[D]. Nanjing: Nanjing University of Aeronautics and Astronautics, 2010 (in Chinese)
[11]
陶文玲, 侯冬青. PyQt5与Qt设计师在GUI开发中的应用[J]. 湖南邮电职业技术学院学报, 2020, 19(1): 19-21.
TAO Wenling, HOU Dongqing. Application of PyQt5 and qt designer in GUI development[J]. Journal of Changsha Telecommunications and Technology Vocational College, 2020, 19(1): 19-21. (in Chinese)
[12]
陆佳伟, 汤吉海, 张竹修, 等. Matlab与Aspen Plus软件交互实现和应用[J]. 计算机与应用化学, 2018, 35(1): 53-61.
LU Jiawei, TANG Jihai, ZHANG Zhuxiu, et al. The realization and application of the integration between Matlab and Aspen Plus[J]. Computers and Applied Chemistry, 2018, 35(1): 53-61. (in Chinese)
[13]
吴菲. 甲醇和丙酮共沸物分离工艺的研究[D]. 天津: 天津大学, 2010
WU Fei. Study on separation process of azeotropic mixture of methanol and acetone[D]. Tianjin: Tianjin University, 2010 (in Chinese)
[14]
LUYBEN W L. Comparison of extractive distillation and pressure-swing distillation for acetone-methanol separation[J]. Industrial & Engineering Chemistry Research, 2008, 47(8): 2696-2707.
[15]
汪广恒, 赵泽高, 李建伟. 变压精馏分离1,2-二氯乙烷和正庚烷共沸物[J]. 化学工程, 2021, 49(10): 32-36.
WANG Guangheng, ZHAO Zegao, LI Jianwei. Separation of 1,2-dichloroethane-n-heptane azeotrope by pressure swing distillation[J]. Chemical Engineering, 2021, 49(10): 32-36. (in Chinese)