本文是关于炼油厂优化问题的场景、模型、求解结果与建模技巧的内容。

一、问题描述
炼油厂购买两种原油(原油1和原油2)。这些原油经过四个过程:蒸馏、重整、裂解和混合,生产出汽油和燃料出售。
1. Distillation蒸馏
蒸馏根据沸点将每种原油分离成称为轻石脑油、中石脑油、重石脑、轻油、重油和渣油的馏分,轻、中和重石脑油的辛烷值分别为90、80和70。下表给出了每种原油中各成分的比例:
【补充知识:汽油的辛烷值(Octane Rating)是衡量汽油抗爆性能的一个指标,它表示汽油在内燃机中燃烧时抵抗自燃(即爆震)的能力。辛烷值越高,汽油的抗爆震性能越好,发动机在高压缩比下运行时越不容易发生爆震】

(注:蒸馏过程中有少量的浪费。)
2. Reforming重整
石脑油可以立即用于混合成不同等级的汽油,或者可以进入重整。重整产生重整汽油,辛烷值为115。每桶不同种类石脑油的重整汽油产率如下:
1桶轻石脑油产0.6桶重整汽油;
1桶中石脑油产0.52桶重整汽油;
1桶重石脑油产0.45桶重整汽油。
3. Cracking裂解
这些油(轻质和重质)可以直接混合成喷气燃料或燃料油,也可以投入催化裂化过程。催化裂化器产生裂化油和裂化汽油。裂化汽油的辛烷值为105。
1桶轻质油生产0.68桶裂化油和0.28桶裂化汽油;
1桶重油生产0.75桶裂化油和0.2桶裂化汽油。
裂化油用于调和燃料油和喷气燃料;裂解汽油用于调和汽油。
渣油可用于生产润滑油或调和喷气燃料和燃料油:
每桶渣油生产0.5桶润滑油。
4. Blending混合
(1)汽油(汽车燃料)
有两种汽油,普通汽油和优质汽油,是由石脑油、重整汽油和裂解汽油混合而成的。关于它们的唯一规定是,普通汽油的辛烷值必须至少为84,高级汽油的辛烷值必须至少为94。假定辛烷值按体积线性混合。
(2)喷气燃料
有关喷气燃料的规定是其蒸气压不得超过1公斤平方厘米。轻油、重油、裂化油和渣油的蒸气压分别为1.0、0.6、1.5和0.05 kg cm 2。可以再次假设蒸汽压按体积线性混合。
(3)燃料油
为了生产燃料油,轻油、裂化油、重油和渣油必须按10:4:3:1的比例混合。

原油转化过程图
在使用的数量和工艺上存在可用性和能力限制,如下所示:
1. 原油1的日供应量为20000桶。
2. 原油2的日供应量为30000桶。
3. 每天最多可蒸馏出45000桶原油。
4. 每天最多可重整10000桶石脑油。
5. 每天最多可裂解8000桶石油。
6. 润滑油的日产量必须在500至1000桶之间。
7. 优质车用燃料产量必须至少为常规车用燃料产量的40%。
来自最终产品销售的利润贡献(以便士/桶计)如下:

为了使总利润最大化,炼油厂的操作应如何规划?
二、求解
石油工业是线性规划模型的主要用户。这是典型应用中的一个非常小的部分。一般来说,所使用的模型将由数千个约束组成,可能将一个以上的炼油厂连接在一起。
1. 变量
考虑到这种模型中有许多不同种类的变量,在描述公式时使用助记符名称是方便的。以下变量用于表示材料的数量(以桶计):

2. 约束可供量
原油的有限可供量提供了简单的上界约束:

能力约束
蒸馏能力约束:

重整能力约束:

裂解能力约束:

关于润滑油生产的规定给出了以下下限和上限约束:

连续性:

轻石脑油的产量取决于所用原油的数量,同时考虑到每种原油在蒸馏下的分离方式。这给出:

对于MN、HN、LO、HO和R存在类似的约束。
-0.2CRA-0.25CRB+MN=0
-0.2CRA-0.18CRB+HN=0
-0.12CRA-0.08CRB+LO=0
-0.2CRA-0.19CRB+HO=0
-0.13-0.12CRB+R=0
生产的重整汽油的量取决于重整过程中使用的石脑油的量。这给出了约束:

生产的裂解油和裂解汽油的数量取决于使用的轻油和重油的数量。这给出了约束条件:

润滑油的生产(和销售)量是渣油使用量的0.5倍。这给出:

用于重整和混合的轻石脑油的量等于可用的量。这给出:

对于MN和HN存在类似的约束。
-MN+MNRG+MNPMF+MNRMF=0
-HN+HNRG+HNPMF+HNRMF=0
用于裂化和混合的轻油的数量与可用的数量相等。这给出:
-LO+LOCGO+LOJF+0.55FO=0
蒸馏后的轻油有:用于裂解(LOCGO)、用于生产喷气燃料(LOJF)和用于生产燃料油。对于燃料油的调和,轻油的比例固定为10/18。因此,这里并没有引入单独的变量,即用于生产燃料油的轻油,而是直接用轻油占用燃料油的比例表示。
HO、CO和R也存在类似的限制,也涉及固定比例的FO,以及CG和RG。
-HO+HOCGO+HOJF+3/18FO=0
-CO+COJF+4/18FO=0
-R+RJF+1/18FO+RLBO=0
-CG+CGRMF+CGPMF=0
-RG+RGRMF+RGPMF=0
生产的优质汽车燃料的数量等于其成分的总量。这给出:

RMF和JF也存在类似的限制。
-LNPMF-MNRMF-HNRMF-RGRMF-CGRMF+RMF=0
-LOJF-HOJF-COJF-RJF+JF=0
优质汽车燃料产量必须至少为常规汽车燃料产量的40%,

品质
有必要规定高级汽车燃料的辛烷值不低于94。这是由以下约束完成的:

(体积可看为权重系数,加权求和之后再除以总量,即PMF<=94)
RMF也有类似的限制。
-90LNPMF-80MNRMF-70HNRMF-115RGRMF-105CGRMF+84RMF<=0
对于喷气燃料,我们有蒸汽压的限制。

该模型有29个约束条件,以及三个变量的简单界限。
3. 目标函数
唯一涉及利润(或成本)的变量是最终产品。这给出了要最大化的目标(以磅为单位),

三、求解
最优解的利润为211365英镑。
第三部分中定义的变量的最佳值如下:


四、展示炼油厂优化问题页面展示
五、建模小tip
modal formulations用于减少约束数量
在这个问题中,对于燃料油混合,其中的成分(轻油、重油、裂化油和渣油)是按固定比例混合的。在此,最好将FO的生产视为一项固定的活动。这就是modal formulations方法,其中活动表示过程的极端操作模式。在石油工业中,从活动而不是数量的角度来思考是很常见的。在这种情况下,活动的数量会按比例自动固定各成分的数量。
模态公式举例:
在大型LP问题中,可以使用模态公式来减少约束的数量。如果一系列约束只涉及少数变量,则可以考虑这些变量空间的可行域。例如,假设x_A和x_B是LP模型中的两个(非负)变量,并且它们出现在以下约束中:

如图3.3所示,这种情况可以通过用变量而不是x_A和x_B来表示“极端运行模式”的活动来模拟。如果这些变量是λ0、λ1、λ2、λ3和λ4,我们只需指定单个约束。

当x_A和x_B出现在模型的其他部分时,除了现在被忽略的约束(3.26),(3.27)和(3.28)之外,我们替换以下表达式:

对于x_A,λ1,λ2,……的系数是图3.3中x_A轴上对应的值,同样地,对于x_B,替换后变量的系数是x_B轴对应的值。
在本例中,我们节省了两个约束。巧妙地使用这个想法可以大大节省模型中的约束数量。
参考文献
[1] Williams, H. P. (2013). Model Building in Mathematical Programming (5th ed.). Wiley.

作者 | 刘思佳
本文转载自久章智能微信公众号(原文发布于 2024-09-11),内容保持原貌。扫码关注公众号「久章智能」,第一时间获取智能决策系列文章。阅读原文 ↗

