资源

炼油厂优化(mpex06)

/***************************************************************//*                                                             *//*S A S S A M P L E L I B R A R Y*//*                                                             *//*名称:mpex06*//*标题:炼油厂优化(mpex06)*//*产品:或*//*系统:所有*//*程序:OPTMODEL*//*数据:*//*                                                             *//*支持:更新:*//*参考:*//*MISC:数学编程示例06*//*示例手册*//*                                                             *//***************************************************************/数据crude_data;输入原油$crude_ub;数据线;原油12000原油2 30000;数据arc_data;输入i$18。约18美元。乘数;数据线;源原油16源原油2 6crude1 light_naphtha 0.1crude1介质_naphtha 0.2原油1重质石脑油0.2原油1轻质油0.12原油1重油0.2原油1残渣0.13crude2 light_naphtha 0.15crude2介质_naphtha 0.25crude2重油0.18原油2轻质油0.08原油2重油0.19原油2残渣0.12light_naphtha常规汽油。光_纳phtha premium_petrol。medium_naphtha常规汽油。medium_naphtha预混汽油。重型汽油机。重质汽油。light_naphtha重整汽油0.6中型汽油重整汽油0.52重质石脑油重整汽油0.45轻油喷射燃油。轻质油燃料油。重油喷射燃料。重油燃料油。灯油灯油破裂2轻油开裂开裂油0.68轻油裂化汽油0.28重油重油裂化2重油裂纹开裂油0.75重油裂解裂解汽油0.2爆裂的燃油喷射器。裂化油燃料油。重整汽油常规汽油。重整汽油预混料汽油。裂化汽油常规汽油。裂化汽油高级汽油。残渣润滑油0.5渣油喷射燃料。渣油燃料油。;数据八进制数据;输入i$18。辛烷值;数据线;light_naphtha灯塔90medium_naphtha中_阿弗他80heavy _ naphtha重量级_纳芙塔70重整汽油115裂解汽油105;数据petrol_data;输入汽油15美元。辛烷_lb;数据线;正规石油84高级汽油94;数据蒸汽_压力_数据;输入油12美元。蒸汽压力;数据线;轻质油1.0重油0.6破裂机油1.5残渣0.05;数据fuel_oil_ratio_data;输入油12美元。系数;数据线;轻质油10裂化油4重油3残渣1;数据final_product_data;输入产品15美元。利润;数据线;高级汽油700常规_汽油600喷气燃料400燃油350润滑油150;%设vapour_pressure_ub=1;%设crude_total_ub=45000;%设石脑油_ub=10000;%设cracked_oil_ub=8000;%设lube_oil_lb=500;%设lube_oil_ub=1000;%设premium_ratio=0.40;过程操作模型;设置<str,str>ARCS;num arc_mult{ARCS}初始化1;将数据arc_data nomiss读入ARCS=[i j]arc_mult=乘数;var流{ARCS}>=0;设置FINAL_PRODUCTS;num利润{FINAL_PRODUCTS};将数据final_product_data读取为final_PRODUCTS=[产品]利润;对于{最终产品中的产品}利润[产品]=利润[产品]/100;ARCS=ARCS并集(FINAL_PRODUCTS交叉{“链接”});在ARCS中设置NODES=并集{<i,j>}{i,j};max TotalProfit=FINAL_PRODUCTS}利润[i]*流量[i,'sink']中的总和{i;节点diff{“源”,“链接”}}中的con Flow_balance{i:ARCS}流[i,j]中的和{<(i),j>=ARCS}arc_mult[j,i]*Flow中的和{<j,(i)>;设置<str>原油;var CrudeDistilled{CRUDES}>=0;将数据crude_data读入CRUDES=[原油]CrudeDistilled.ub=crude_ub;原油中ARCS:i的con蒸馏{<i,j>:流量[i,j]=蒸馏原油[i];设置OILS={'light_oil','heavy_oil'};set CRACKED_OILS=OILS中的集合{i}i||'_CRACKED';var油裂化{CRACKED_OILS}>=0;CRACKED_OILS}中ARCS:i中的con开裂{i,j>:流量[i,j]=油裂解[i];num辛烷值{节点}初始值。;将数据辛烷值_data nomiss读入[i]辛烷值;设置<str>汽油机;num辛烷_lb{汽油};将数据petrol_data读入PETROLS=[汽油]辛烷值_lb;数值蒸汽压力{节点}初始值。;将数据vapour_pressure_data-nomiss读入[油]vapour-pressure;con Blending_petrol{汽油中的汽油}:ARCS}中的总和{i,(汽油)>辛烷[i]*arc_mult[i,petrol]*流量[i,metrol]>=辛烷_lb[汽油]*ARCS中的sum{<i,(汽油)>}arc_mult[i,petrol]*Flow[i,petrol];con混合喷射燃料:ARCS}中的总和{<i,'jet_fuel'>蒸汽_压力[i]*电弧_结果[i,'jet_fuel']*流量[i,'喷射_燃料']<=&vapour_pressure_ub*ARCS}arc_mult[i,'jet_fuel']*流量[i,'喷射燃料']中的总和{;num fuel_oil_cefficient{NODES}初始化0;将数据fuel_oil_ratio_data nomiss读入[oil]fuel_oil_coefficient=系数;num总和燃油效率=ARCS}燃油效率[i]中的总和{<i,'fuel_oil'>;con Blending_fuel_oil{在ARCS中<i,‘fuel_oil’>:sum_fuel_oil_coefficient*流量[i,'燃油_oil']=ARCS}流量[j,'fuel_oil']中的fuel_ool_cefficient[i]*总和{<j,'uel_oil'>;con Crude_total_ub_con:原油中的总和{i}馏出的原油[i]<=&crude_total_ub;con石脑油_ub_con:ARCS中的总和{<i,'reformed_gasterol'>:索引(i,'naphtha')>0}流量[i,‘重整汽油’]<=石脑油ub;con Cracked_oil_ub_con:ARCS}流量[i,'cracked_oil']<=&cracked_ oil_ub;con润滑油量程con:&lube_oil_lb<=流量['lube_iol','sink']<=&lube_ool_ub;con溢价比率:ARCS}流量中的总和{<'premium_petrol',j>>=前置比率(&P)*ARCS}流量中的总和{<'regular_petrol',j>['regular _petrol],j];num辛烷醇{汽油中的汽油}=(ARCS}中的总和{<i,(汽油)>辛烷[i]*arc_mult[i,petrol]*流量[i,metrol].sol)/(ARCS}arc_mult[i,petrol]*Flow[i,metrol].sol中的总和{i,(petrol)>;数值蒸汽压力sol=(ARCS}蒸汽压力[i]中的总和{i,'jet_fuel'>*arc_mult[i,'jet_fuel']*流量[i,‘jet_fuel’].sol)/(ARCS}arc_mult[i,'jet_fuel']中的总和{*流量[i,'jet_fuel'].sol);ARCS中的num fuel_oil_ratio_sol=(arc_mult[i,'ful_oil']*流量[i,'ful_oil'].sol)/(ARCS}arc_mult[j,'fuel_oil']中的总和{<j,'uel_oil'>*流量[j,'fuel_oil'].sol);解决;打印CrudeDistilated;打印OilCracked Flow;打印辛烷溶胶辛烷lb;在ARCS}vapour_pressure vapour_pressure_sol中打印{i,'jet_fuel'>;在ARCS}fuel_oil_conficient fuel_iol_ratio_sol中打印{<i,'fuel_ool'>;从[i j]Flow创建数据sol_data1;退出;