考虑能耗优化的多目标原油短期调度问题研究
2022-02-18张亿仙滕少华王书娟朱清华
侯 艳,张亿仙,滕少华,王书娟,朱清华
(广东工业大学计算机学院,广东 广州 510000)
0 引言
原油作为一种不可再生资源,对现代经济发展具有重要的意义.随着全球生态环境污染的日益严重,传统的以消耗大量资源来实现经济增长的方式必须得以改变.如何在资源和能源有限的条件下进行生产是原油企业亟需解决的问题.
宏观上,原油短期调度被分为3个阶段:1)原油一次加工过程,包括原油卸载、混合和转运过程;2)生产过程,包括原油的蒸馏、催化裂化等化学加工过程;3)成品油的储存和运输过程,即选择合适的运输方式将加工好的原油产品及时运输到不同的目的地[1].原油一次加工过程包含着大量复杂的约束,因此,目前仍依赖有经验的调度员根据经验不断试错来得到一个可行的详细调度计划.原油一次加工过程是在炼油生产过程中的关键步骤,直接影响着后续生产环节的经济性和稳定性.因此,做好一次加工过程的调度,降低其中的各项成本,对于提高炼油企业经济效益和整体的自动化水平具有非常重要的意义.
作为一种比较成熟的建模求解方法,数学规划方法一直被广泛应用于工业生产问题的建模.目前,通过数学规划求解原油短期调度问题已有大量的相关研究.根据对时间的不同表示方法,这些数学模型可以分为离散时间模型和连续时间模型.文献[2]给出了在原油短期调度问题中原油一次加工过程的形式化定义,并建立了基于离散时间表示的混合整数规划模型.离散时间模型的主要优点是它提供了一个参考网格,所有竞争共享资源的操作都被放置到这个参考网格中,使得模型较为简单.然而,离散时间模型的主要问题是事件只允许发生在离散间隔的边界处,需要增加离散变量的数量来提高问题的求解精度.因此,极大地增加了时间变量的个数,从而增加了数学规划求解器的求解难度.为此,有学者提出了连续时间模型.文献[3]通过状态任务网对原油短期调度问题进行建模,为了最小化炼油厂在短期调度过程中的总操作成本,提出了一种基于连续时间表示的混合整数非线性规划模型;相对于离散时间模型,在该模型中决策变量的个数得到了极大地减少.文献[4]为了最大化炼油厂整体运行的总毛利润,提出了一种基于连续时间表示的单操作排序模型,并给出了其对应的2步求解方法.文献[5]为了最小化原油在转运过程中的能耗,建立了一个基于连续时间表示的线性规划模型.在连续时间表示的模型中,事件可以发生在调度区间内的任意时刻,时间点就是准确的事件开始点和结束点.利用连续时间表示,可以大大减少在模型中的离散变量,然而以产生非线性约束为代价,求解极其困难[6].
文献[7]认为将优化与启发式和仿真相结合的方法能够快速地解决大而复杂的问题,具有更好的实用性.为此,基于控制理论的角度,原油一次加工过程被分解为上下2层.在上层,为了最大化生产率等目标,利用数学规划的方法求解得到一个上层目标炼油计划; 在下层,得到一个详细调度计划.对于上层问题,文献[8]提出了一种有效的3阶段求解的数学规划模型,使得上层优化问题得到了较好的解决.然而,对于下层问题,由于其复杂的约束条件,所以很难保证解的可行性,优化就更难.因此,文献[9-12]通过建立Petri网模型,分析并提出了在不同状态下的可调度性条件,用于验证上层生成的炼油计划是否可行,以及指导下层详细调度的生成.
然而,上述工作只是保证解的可行性,并没有对生成下层在详细调度过程中的多个目标进行优化.由于原油短期调度问题是一个既包含有连续变量又包含有离散事件的混合系统,需要调度的任务事先未知,所以,需要在调度的过程中定义任务,导致启发式算法和元启发式算法无法直接应用.为此,文献[13]提出了一种转换方法,将该问题转换为一个动态资源指派问题,并使用遗传算法求解该问题.基于上述问题的转换,文献[14]以最小化蒸馏塔使用供油罐的切换成本、使用的供油罐的个数、在供油罐和管道中原油的混合成本为目标,利用多目标进化算法(non-dominated sorting genetic algorithm-II,NSGA-II)对该问题进行求解,为决策者提供多个可供选择的优化解.
以上研究为了最大化生产率和保证调度的可行性,在转运时均假设采用最大速率.然而,在实际生产中,管道上有多组不同的油泵,当开启不同组数的油泵时,对应的转运速率也不同,转运速率与油泵组数之间是非线性关系.同时,在大多数情况下,在供油罐中的原油往往需要等待较长的时间后才会被蒸馏塔所使用.这不仅造成电能的极大浪费,而且会占用更多的供油罐.因此,对于转运能耗的研究是非常必要的.除了能耗优化,同时还考虑了文献[14]中涉及的4个目标,本文建立了一个多目标优化数学模型.对于高维多目标优化问题,可以将其加权求和转换为单目标优化问题,或者直接利用多目标进化算法对其进行求解.目前,常见的多目标进化算法分为如下3类.
1)基于Pareto支配关系的多目标进化算法.文献[15]提出了一种基于快速非支配排序和拥挤距离的多目标遗传算法NSGA-II,该算法能够较好地解决低维多目标优化问题.然而,随着目标维度的增加,存在着由选择压力过小而导致收敛性较差的问题.为了解决这一问题,文献[16]对在NSGA-II中临界层选择策略进行改进,提出基于非支配排序和基于参考点的临界层选择的多目标遗传算法(reference-point-based non-dominated sorting genetic algorithm-III,NSGA-Ⅲ).文献[17]提出了基于网格的进化算法(grid-based evolutionary algorithm,GrEA),该算法通过改进的网格支配和网格差异来代替传统Pareto支配关系以增大选择算子的选择压力.
2)基于指标的多目标进化算法.性能评价指标通常用来分析算法运行的结果,为了让算法朝着决策者偏好的方向搜索,文献[18]提出了基于指标的进化算法(indicator-based evolutionary algorithm,IBEA).另外,选择Pareto前沿面上“最凹”的一个点作为非支配解集有助于提高解集的收敛性和多样性,基于该思想,文献[19]提出了基于拐点的多目标进化算法(knee point driven many-objective evolutionary Algorithm,KnEA).文献[20]提出了基于指标的参考点自适应多目标进化算法(indicator-based MOEA with reference point adaptation,ARMOEA),根据前沿面的形状自动地调整参考点集的分布,提高算法在不同形状前沿面上的求解性能.
3)基于分解的多目标进化算法.文献[21]提出了基于分解的多目标进化算法(multi-objective evolutionary algorithm based on decomposition,MOEA/D),它通过将一个多目标优化问题分解为多个单目标优化子问题,接着,优化每一个子问题使得原问题得以求解.文献[22]提出了一种基于参考向量的多目标进化算法(reference vector guided evolutionary algorithm,RVEA),该算法通过一组预定义的参考向量指导算法朝着用户偏好的方向搜索.
基于该问题的特点,本文提出一种改进的染色体编码和解码策略,并对比分析了上述8种具有代表性的多目标优化算法,实验结果表明NSGA-III算法在该问题上具有较好的性能.最后,将算法运行得到的非支配结果与现有的研究结果进行对比.
1 问题描述与建模
1.1 问题描述
一个典型的原油1次加工过程如图 1所示,油轮在港口时卸载原油到港口的储油罐中,然后通过一条较长的输油管道,将原油最终输送到炼油厂内的供油罐中.经过一段时间的驻留等待,分离出在原油中的海水.最终,将在供油罐中的原油提供给蒸馏塔进行炼油操作.
图1 原油1次加工过程
在原油1次加工过程中,存在着很多约束.一旦违背这些约束,则调度计划将变为不可行.一般地,这些约束分为资源约束和操作约束2类.其中资源约束包括:
1)储油罐和供油罐的容量是有限的;
2)在管道中原油的流速必须在指定的范围内;
3)原油在储油罐、供油罐、管道以及即将到来的油船上的油量是有限的.
操作约束主要包括:
1)所有蒸馏塔在整个调度周期内不能中断炼油;
2)供油罐和储油罐不能同时进油和出油;
3)管道不能同时向2个供油罐注入原油;
4)为了过滤出在原油中的海水,在储油罐和供油罐中的原油在注油结束后必须等待一段时间才能使用,记为驻留时间约束;
5)当一个供油罐给蒸馏塔供油时,在供油罐中的原油并不能完全用完,有约1/6的原油会留在供油罐中,称之为罐底;
6)输油管道的输油速率可以在一定的范围内变化,但其费用不同.
1.2 数学模型
除了在原油转运过程中会产生能耗成本外,该问题中还存在一些其他的优化目标,如减少不同种类的原油在管道和供油罐中混合时由原油的品质下降而产生的经济成本、尽量少地使用供油罐和减少蒸馏塔使用供油罐的切换成本等.
设炼油厂内原油种类数为O,蒸馏塔的个数为D,mi, j为原油i和原油j在管道中依次流动的单次混合成本,ni, j是罐底为原油i注入原油j的单次混合成本,ci, j为原油i和原油j在管道中依次流动的次数,di, j是罐底为原油i注入原油j的次数,ηd为第d个蒸馏塔(DSd)切换供油罐的次数,ud为DSd的炼油任务的个数.αd,u为DSd的第u个炼油任务的起始供油罐,W为原油在管道中转运任务的个数,Cw为第w个原油转运任务的单位时间能耗,τw为第w个原油转运任务的开始时刻,υw为第w个原油转运任务的结束时刻,VFd,p为DSd的在第p个原油进料包中需要转运原油的体积,Pd为DSd的原油进料包的个数,H为调度周期的长度,fd为DSd的炼油速率,Sd,u和Ed,u分别为DSd的第u个炼油任务的开始时刻和结束时刻,Ω为在原油转运结束后需要等待的驻留时间,μw为在第w个原油转运任务中的原油开始使用时间.为了形式化描述,本文建立了下述数学模型.
目标函数:
(1)
(2)
(3)
minJδ=|{αd,u|d∈{1,2,…,D},u∈{1,2,…,ud}}|,
(4)
(5)
约束条件:
(6)
0≤τ1<υ1≤τ2<υ2≤…≤τW<υW (7) Sd,1 (8) υw+Ω≤μw,∀w∈{1,2,…,W}. (9) 目标函数(1)表示在管道中不同种类原油混合所产生的成本,即在管道中相邻的2种不同种类的原油包会在其邻接的切面位置处发生混合产生的成本; 目标函数(2)表示在供油罐中不同种类原油混合所产生的成本,即由于供油罐中总会剩余部分原油,所以当新注入的原油与其种类不同时,由原油品质下降而会产生一定的经济成本; 目标函数(3)表示蒸馏塔切换供油罐的次数; 目标函数(4)表示在整个调度周期内使用的供油罐的数量; 目标函数(5)表示原油在管道中转运所产生的电能消耗; 约束(6)表示任意一个蒸馏塔的所有原油进料包的体积恰好能够满足其整个调度周期的需要; 约束(7)表示在任意时刻时管道至多为1个供油罐输送原油; 约束(8)表示在调度期间蒸馏塔炼油不能中断; 约束(9)表示在原油转运到炼油厂内的供油罐后,只有等待一段时间以过滤出在原油中的海水,才能供蒸馏塔炼油. 为了介绍生成一个详细调度的过程,先给出如下定义. 定义1原油进料包FP=(o,ξ,INT),其中o代表其中的原油类型,ξ代表其中的原油体积,INT=[a,b]代表原油包的使用时间,即原油包从时刻a开始使用到时刻b结束使用. 定义2在整个调度周期内的炼油计划RS={F1,1,…,F1,P1,…,Fd,1,…,Fd,Pd},其中Pd为蒸馏塔DSd的进料包个数. 定义3任务OD=(o,ξ,V,S,D,INT),其中o代表待处理的原油类型,ξ代表原油的体积,V代表管道中原油的流速,S代表原油的来源,D代表原油的目的地,INT=[a,b]代表任务的执行时间,即任务从时刻a开始到时刻b结束. 在原油短期调度问题中的任务可以分为3类,它们分别为原油卸载任务ODU、原油转运任务ODT和炼油任务ODF.在通常情况下,炼油厂会预购在未来一段时间内需要使用的原油,不妨假设在港口储油罐中的原油足够当前调度周期使用,即不考虑ODU任务.因此,一个详细的短期调度计划可以表示为SCHD={ODT1,ODT2,…,ODTW,ODF1,ODF2,…,ODFU},其中炼油任务的个数U=u1+u2+…+ud. 假设τ时刻,系统的状态如下: 1)Fd,p转运了一部分或Fd,p-1刚结束转运; 2)未完成炼油计划的蒸馏塔集合为ND; 3)可用的供油罐的集合为UT; 4)原油转运速率集合为FR; 5)在已经生成的部分调度计划中蒸馏塔DSd的炼油结束时间为θd. 基于文献[13]的思想,一个详细调度可以通过逐步确定转运任务和炼油任务得到,即根据文献[9-12]中的可调度性条件和已经生成的部分调度,逐个地产生ODT及其对应的ODF.最终,得到一个实现了给定炼油计划的详细调度. 为了确定一个ODT及其对应的ODF,首先,从UT中选择一个供油罐,记为CTk,从ND中选择一个蒸馏塔,记为DSd,从FR中选择一个原油转运速率,记为FRv.根据给定的炼油计划,可以确定当前需要提炼原油的类型,进而确定当前需要转运原油的类型.此时,一旦转运原油的体积ξ已知,则通过计算ξ/FRv可以得到转运任务的持续时间,进而确定一个ODT.同时,通过计算ξ/fd可以得到炼油任务的持续时间,并确定与当前ODT对应的ODF.为了表述方便,这里将蒸馏塔、供油罐和转运速率的一种选择记为一种指派方案. 从上面的分析可以看出,在选择了一种指派方案后,还需要确定转运原油的体积ξ.一方面,为了减少不同种类原油在管道和供油罐中的混合成本,提高供油罐的利用率,应尽可能多地转运原油;另一方面,每次转运的原油体积要满足供油罐容量约束和原油进料包约束,且在满足驻留时间约束的同时,保证转运的原油能够及时地提供给蒸馏塔.因此,体积的计算方法为ξ=min(CAPk,VFd,p,FRv(θd-Ω)),其中CAPk为供油罐的容量,VFd,p为Fd,p中还需要转运的原油的体积. 为了保证调度计划的可行性,这里给出安全状态的定义. 定义4假设时刻τ,系统处于安全状态,当且仅当在[τ,∞]时存在一个可行的调度. 为了保证最后生成一个可行的详细调度,必须保证系统时刻处于安全状态,即选择一系列合适的指派方案,并产生一系列的ODT及对应的ODF,使得在每次ODT结束时系统仍处于安全状态.一个可行的详细调度通过下述步骤得到: 1)判断在初始时系统是否处于安全状态,若是安全状态,则继续向下执行,否则,结束. 2)根据已知的炼油计划,安排在初始时装有原油的供油罐的ODF. 3)选择一个合适的指派方案,并根据选择的蒸馏塔和已知的炼油计划确定转运原油的类型,计算转运原油的体积,根据所选择的转运速率计算转运任务的持续时间并生成一个ODT,并根据蒸馏塔的炼油速率和在供油罐中的原油体积确定对应的ODF. 4)判断在ODT结束时系统是否处于安全状态,若是,则执行4),否则,执行5). 5)撤销上一次指派确定的ODT和ODF,并将系统状态回退到前一状态.此时,判断是否存在合适的指派方案.若是,则继续执行3),否则,继续执行5). 6)若已经完成炼油任务,则结束,否则,继续执行3). 在使用NSGA-III求解该问题时,在种群中的每一个染色体代表一个可行的详细调度.确定一个合适的染色体编码长度,对于提高算法的求解效率是非常重要的.根据给定的炼油计划,可以计算出最大的指派次数 (10) 其中U(N)代表对N向上取整,ω为在供油罐集合中最小的供油罐体积. 考虑每次转运决策需要确定蒸馏塔、供油罐和油泵的组数,本文提出的三染色体编码结构如图 2所示.因此,每个染色体编码长度均为3Γ. 图2 三染色体结构 一个染色体X=(x1,x2,…,x3Γ),其中,xj∈[0,1),∀j∈{1,2,…,3Γ}.染色体的第i次指派的解码过程如下: d=L(x3i-2|ND|)+1, (11) k=L(x3i-1|UT|)+1, (12) v=L(x3i(|FR|+1)), (13) 其中L(N)代表对数字N向下取整,|S|代表在集合S中元素的个数. 根据式(11)~(13),第i次指派从集合ND中选择第d个未完成炼油任务的蒸馏塔,从集合UT中选择第k个可用的空罐,从集合FR中选择第v个转运速率.特殊地,当v=0时,代表管道停止转运原油直到某一个供油罐被蒸馏塔释放.假设ND={DS1,DS2},UT={CT3,CT7,CT9},FR={V1,V2,V3},第i次指派所对应的编码为(0.35,0.82,0.64),则解码后,d=1,k=3,t=2,即以速率V2向CT9转运DS1所需要的原油. 对于任意一个染色体X,一旦X中任意一个指派发生变化,其后的指派都将发生变化.因此,本文结合单点交叉和单点变异的思路,提出了改进的模拟二进制交叉算子和多项式变异算子. 设2个父代个体x1和x2,则改进的模拟二进制交叉算子产生2个后代个体c1和c2的方式为 其中p是交叉的位置,α是由分布因子η1动态确定,η1越大,产生的后代个体越接近父代. p=L(rΓ), 其中随机数r∈[0,1). 假设父代个体xt,则改进的多项式变异算子产生后代个体xt+1的方式如下所示: 其中q是变异的位置,β是由分布因子η2动态确定,η2越大,产生的后代个体越接近父代. q=L(rΓ), 图3 选择操作的具体过程 NSGA-III算法的执行流程如下: 1)种群初始化,t=0,随机产生种群P0; 2)交叉和变异操作,对Pt执行改进的交叉和变异操作产生子代种群Qt; 3)选择操作,执行选择算子得到种群Pt+1,并令t=t+1; 4)重复执行步骤2)和3),直到t达到最大迭代次数. 某炼油厂共有3个蒸馏塔,记为DS1、DS2、DS3,它们的炼油速率分别为375、230和500 t·h-1.上层得到的一个10 d的炼油计划(见图 4).原油的驻留时间为6 h.在开启1组、2组和3组油泵时,管道中原油的转运速率分别为833.3、1 250.0和1 375.0 t·h-1,其对应的原油转运任务的单位时间能耗Cw分别为1、2和3. 图4 一个10 d的炼油计划 根据已知的炼油计划和表1中在炼油厂内9个供油罐CT1~CT9的初始状态可知,FP12、FP21和FP33分别需要转运原油63 000、25 200和38 000 t.因为表1中最小的供油罐容量为20 000 t,根据式(10)可得Γ=8.考虑管道可能停止转运的情况,这里Γ取12,染色体的编码长度为36. 表1 供油罐的初始状态 由上述可知,mi, j和ni, j分别表示原油i和原油j在管道和供油罐中发生1次混合所产生的经济成本,假设6种不同种类的原油在管道和供油罐中混合所产生的经济成本分别如下: 本文实验基于i5-5200U CPU,主频2.20 GHz,内存8 G的笔记本电脑,运行环境为Matlab 2020.8种算法的模拟二进制交叉算子的分布指数为η1=20,多项式变异算子的分布指数为η2=20. 图5 8种算法的IGD指标对比 衡量2个多目标优化算法的另一种方法是比较它们所得解集的覆盖率.设A、B为2个算法得到的2个解集,C(A,B)为集合A覆盖集合B的比率, C(A,B)=|u∈B|∃v∈A,v支配u|/|B|. 当C(A,B)>C(B,A)时,称A中解的质量高于B中解的质量; 否则,称A中解的质量低于B中解的质量.特殊地,当C(A,B)=1时,B中所有的个体均被A中的某些个体所支配;当C(A,B)=0时,B中没有个体被A中的任一个体所支配.将NSGA-III算法分别与其余的7种算法对比,7组实验的具体配置如表 2所示.设A为NSGA-III,B为待对比算法.如图 6所示,浅色区域代表C(A,B)的值,深色区域为C(B,A)的值.综合来看,在不同的种群规模和迭代次数的情况下,NSGA-III算法所得解的质量更优. 表2 NSGA-III与另外7种算法对比实验 种群规模为50迭代500次 种群规模为100迭代500次 种群规模为150迭代500次 种群规模为200迭代500次图6 NSGA-III与7种算法的覆盖率指标对比 为了综合评价算法的运行效率,对比了在不同的种群规模和迭代次数的情况下,8种算法的运行时间如图 7所示,其中每组实验独立运行30次. (a)种群规模50,迭代次数100,独立运行30次 (b)种群规模50,迭代次数200,独立运行30次 种群规模为50迭代100次 种群规模为100迭代100次 种群规模为150迭代100次 种群规模为200迭代100次 (c)种群规模150,迭代次数100,独立运行30次 (d)种群规模150,迭代次数200,独立运行30次图7 8种算法运行效率对比盒图 从上述实验结果可以看出,NSGA-III算法在求解质量和运行效率上均表现良好.根据图6,为了得到较好的调度结果,这里设置种群规模为200,迭代次数为500.此时,NSGA-III算法1次运行得到的非支配解集如图8所示. 注:a为管道混合成本,b为罐底混合成本,c为蒸馏塔使用供油罐的切换次数,d为供油罐个数,e为能耗成本.图8 运行NSGA-III算法得到的非支配解集 从上述得到的非支配解集中选取3个具有代表性的解与文献[5]中的结果对比,结果如表3所示.调度1和调度3的5个目标均比文献[5]中的结果更优.其中,调度3的在管道中原油混合成本比文献[5]中的成本降低了50%以上.调度2的原油在供油罐中的混合成本高于文献[5]中的结果,但是调度2使用了更少的供油罐.同时,3个解的能耗成本均减少了将近10%. 表3中调度3的甘特图如图9所示.从图9可以看出:在第2次指派时管道发生停运直到供油罐在CT3中的原油被DS3使用完并释放;同时,调度3共执行了5次转运操作,每次均采用最低速率V1转运原油. 表3 NSGA-III算法与现有研究对比 图9 调度3的转运和炼油计划甘特图 针对在原油管道运输过程中的能耗优化问题,本文在已有的可调度性条件的基础上,将该问题转换为一个多目标动态资源指派问题.接着,改进了染色体的编码和解码方式,并通过一系列实验分析对比了多种具有代表性的多目标优化算法的性能.实验结果表明NSGA-III算法在求解该问题时性能较好.与现有研究工作中的结果进行对比,可以看出本文算法在能耗等多个目标上均有较大程度的优化.2 详细短期调度计划
2.1 计算原油转运体积
2.2 生成详细调度计划
3 NSGA-III算法
3.1 确定染色体的编码长度
3.2 染色体编码与解码
3.3 交叉与变异算子
3.4 选择算子
3.5 NSGA-III算法的整体流程
4 工业实例与结果
5 结论