16
Multi-Utility Scheduling Optimization (MUSO) Industrial Modeling Framework (MUSO-IMF) “Optimize the Real-Time and Short-Term Operations of Integrated Multi- Utility Systems” i n d u s t r IAL g o r i t h m s LLC. (IAL) www.industrialgorithms.com November 2014 Introduction to Multi-Utility Scheduling Optimization (MUSO), UOPSS and QLQP Presented in this short document is a description of how to model and solve multi-utility scheduling optimization (MUSO) problems in IMPL. Multi-utility systems (co/tri-generation) are typically found in petroleum refineries and petrochemical plants (multi-commodity systems) especially when fuel-gas (i.e., off-gases of methane and ethane) is a co- or by-product of the production from which multi- pressure heating-, motive- and process-steam are generated on-site. Other utilities include hydrogen, electricity, water, cooling media, air, nitrogen, chemicals, etc. where a multi-utility system is shown in Figure 1 with an intermediate or integrated utility (both produced and consumed) such as fuel-gas, steam or electricity. Itemized benefit areas just for better management of an integrated steam network can be found in Pelham (2013) where his sample multi-pressure steam utility flowsheet is found in Figure 2.

Multi-Utility Scheduling Optimization (MUSO) Industrial Modeling Framework (MUSO-IMF)

Embed Size (px)

DESCRIPTION

Presented in this short document is a description of how to model and solve multi-utility scheduling optimization (MUSO) problems in IMPL. Multi-utility systems (co/tri-generation) are typically found in petroleum refineries and petrochemical plants (multi-commodity systems) especially when fuel-gas (i.e., off-gases of methane and ethane) is a co- or by-product of the production from which multi-pressure heating-, motive- and process-steam are generated on-site. Other utilities include hydrogen, electricity, water, cooling media, air, nitrogen, chemicals, etc. where a multi-utility system is shown in Figure 1 with an intermediate or integrated utility (both produced and consumed) such as fuel-gas, steam or electricity. Itemized benefit areas just for better management of an integrated steam network can be found in Pelham (2013) where his sample multi-pressure steam utility flowsheet is found in Figure 2.

Citation preview

Page 1: Multi-Utility Scheduling Optimization (MUSO) Industrial Modeling Framework (MUSO-IMF)

Multi-Utility Scheduling Optimization (MUSO)Industrial Modeling Framework (MUSO-IMF)

“Optimize the Real-Time and Short-Term Operations of Integrated Multi-Utility Systems”

i n d u s t r IAL g o r i t h m s LLC. (IAL)www.industrialgorithms.com

November 2014

Introduction to Multi-Utility Scheduling Optimization (MUSO), UOPSS and QLQP

Presented in this short document is a description of how to model and solve multi-utility scheduling optimization (MUSO) problems in IMPL. Multi-utility systems (co/tri-generation) are typically found in petroleum refineries and petrochemical plants (multi-commodity systems) especially when fuel-gas (i.e., off-gases of methane and ethane) is a co- or by-product of the production from which multi-pressure heating-, motive- and process-steam are generated on-site. Other utilities include hydrogen, electricity, water, cooling media, air, nitrogen, chemicals, etc. where a multi-utility system is shown in Figure 1 with an intermediate or integrated utility (both produced and consumed) such as fuel-gas, steam or electricity. Itemized benefit areas just for better management of an integrated steam network can be found in Pelham (2013) where his sample multi-pressure steam utility flowsheet is found in Figure 2.

Page 2: Multi-Utility Scheduling Optimization (MUSO) Industrial Modeling Framework (MUSO-IMF)

Figure 1. Multi-Utility System (MUS) Flowsheet.

Page 3: Multi-Utility Scheduling Optimization (MUSO) Industrial Modeling Framework (MUSO-IMF)

Figure 2. Multi-Pressure Steam Utility Flowsheet (Pelham, HP, 2013).

The process flow diagram (PFD) in Figure 2 can be easily generalized to that shown in Figure 1 except that we are representing the topology in our UOPSS flowsheet paradigm (Kelly, 2004; Kelly 2005; Zyngier and Kelly, 2012) instead of using typical PFD shapes or icons. The UOPSS shapes shown in Figure 1 are diamonds for perimeter unit-operations, circles with and without “x”’s for outlet and inlet port-states respectively, a rectangle with an “x” for a continuous-process unit-operation and the lines with arrow-heads for port-to-port transfers or external streams and lines without arrow-heads for internal streams between the unit-operation and the port-state.

The approach taken here is to determine both the M producers (e.g., boilers/HP-steam) and the N consumers (e.g., turbines/motive-steam, reboilers/heating-steam and process-steam) for each K utility with or without integration, interchange or intermediation where for example high-pressure steam is an intermediate utility given that it is converted to medium- and low-pressure steam in back-pressure or non-condensing turbines (including let-down stations) as can be seen in Figure 2. However, we do not need to stop at integrating or interchanging the various steam utilities given that the primary source of fuel for the steam generators is fuel-gas (and sometimes fuel-oil) and usually a large portion of motive-steam is used to

Page 4: Multi-Utility Scheduling Optimization (MUSO) Industrial Modeling Framework (MUSO-IMF)

produce electricity in the turbo-generators or to reduce the electricity demand when dual-drive pumps and compressors are present. Therefore, modeling and solving the fuel-gas, steam, electrical and water headers together, will prove more beneficial in terms of better optimizing and controlling the overall multi-utility system balance as opposed to managing each utility separately in isolation as is typical done. For instance, why buy natural gas or use LPG when there is significant low-pressure steam venting. This is a direct result of an energy imbalance somewhere in the system that may or may not be manipulated by better multi-utility systems integration in real-time or in the short-term, but if longer-term design considerations (revamps or retrofits) are required such as installing more turbines or improving the boiler’s burner management system to achieve lower turndowns, etc. then at least you are confident that every possible handle, actuator or degree-of-freedom to reduce the imbalance has been considered.

Another case for better multi-utility system integration is the treatment of boiler feed water (BFW) via demineralization before the water enters the high-temperature and high-pressure environment of the boilers. In Figure 2 from Pelham (2013), treated BFW is considered as a simple producer where its supply is considered as essentially unlimited or unconstrained. Unfortunately in some facilities this is not the case where the BFW supply can be a significant bottleneck or barrier. Figure 3 depicts a typical but relatively large demineralization process with cation/anion resins and reverse osmosis. Each of the unit-operations operate in a production-regeneration cycle of usually twelve (12) to three (3) hours i.e., up for 12-hours and down for 3-hours depending on the throughput which requires discrete or logic decision-making. Ultimately, the capacity of the treating process must be taken into consideration when determining the capacity of the steam generation which also impacts the internal power grid or electrical header and of course the petroleum/petrochemcial processing; hence the need for holistic multi-utility systems integration and coordination.

Page 5: Multi-Utility Scheduling Optimization (MUSO) Industrial Modeling Framework (MUSO-IMF)

Figure 3. Boiler Feed Water (BFW) Treatment Flowsheet.

Figure 4 below highlights a small but representative multi-utility scheduling optimization (MUSO) system with fuel, steam and electrical headers although the other utilities can be added incrementally as required for reasons mentioned above (i.e., focus on the bottlenecks first). The model contains two (2) high-pressure steam boilers with three (3) separate operating- or processing-regions (X1, X2 and X3), a BFW Pump, a pressure reducing or let-down valve (PRV1), back-pressure steam turbo-generator (STG) and a processing unit (Unit 1) power demand. The UOPSS and QLQP details can be found in Appendices A and B.

Page 6: Multi-Utility Scheduling Optimization (MUSO) Industrial Modeling Framework (MUSO-IMF)

Figure 4. Multi-Utility Scheduling Optimization (MUSO) Flowsheet.

An interesting aspect of the model is our use of what IMPL calls “factors” and is used for the PRV1 unit-operation. A factor is an intensive value similar to a density or property but its value does not propagate through the flowsheet or network as the other qualities do i.e., it is fixed and not a variable. In this instance, a specific-enthalpy factor is configured for the HP, BFW and MP port-states to model the required enthalpy or heat balance on PRV1. That is, not only is there a flow, material or mass (quantity) balance but there is also a flow times specific-enthalpy balance (quantity * quality) balance where as mentioned the specific-enthalpy or factor is fixed and not a variable hence a linear conservation relation. The value of the specific-enthalpy factor can be supplied by a physicothermal properties package such as STEAM67.DLL found at https://www.winsim.com/steam/steam.html for example or a third-party rigorous process simulator.

The other interesting feature found in Figure 4 is the use of multiple operating-modes or operations on the two boilers. This is to proxy the nonlinear operating-

Page 7: Multi-Utility Scheduling Optimization (MUSO) Industrial Modeling Framework (MUSO-IMF)

regions of the boilers characterized by the steam throughput of the boiler – see the Capacity Data in Appendix B for the different lower and upper charge-size bounds. There is also Constriction Data to state that if a particular operating-mode is setup or started-up then it must last for at least three (3) hours as configured by the up-timing lower bound and of course given that this is a scheduling optimization problem, the single-use, unary or unit-commitment logic constraint that only one operation per time-period is allowed is also respected. The detailed modeling of these and other types of logic and logistics constraints can be found in Kelly and Zyngier (2007) and Zyngier and Kelly (2009).

Industrial Modeling Framework (IMF), IMPL and SSIIMPLE

To implement the mathematical formulation of this and other systems, IAL offers a unique approach and is incorporated into our Industrial Modeling Programming Language we call IMPL. IMPL has its own modeling language called IML (short for Industrial Modeling Language) which is a flat or text-file interface as well as a set of API's which can be called from any computer programming language such as C, C++, Fortran, C#, VBA, Java (SWIG), Python (CTYPES) and/or Julia (CCALL) called IPL (short for Industrial Programming Language) to both build the model and to view the solution. Models can be a mix of linear, mixed-integer and nonlinear variables and constraints and are solved using a combination of LP, QP, MILP and NLP solvers such as COINMP, GLPK, LPSOLVE, SCIP, CPLEX, GUROBI, LINDO, XPRESS, CONOPT, IPOPT, KNITRO and WORHP as well as our own implementation of SLP called SLPQPE (Successive Linear & Quadratic Programming Engine) which is a very competitive alternative to the other nonlinear solvers and embeds all available LP and QP solvers.

In addition and specific to DRR problems, we also have a special solver called SECQPE standing for Sequential Equality-Constrained QP Engine which computes the least-squares solution and a post-solver called SORVE standing for Supplemental Observability, Redundancy and Variability Estimator to estimate the usual DRR statistics. SECQPE also includes a Levenberg-Marquardt regularization method for nonlinear data regression problems and can be presolved using SLPQPE i.e., SLPQPE warm-starts SECQPE. SORVE is run after the SECQPE solver and also computes the well-known "maximum-power" gross-error statistics (measurement and nodal/constraint tests) to help locate outliers, defects and/or faults i.e., mal-functions in the measurement system and mis-specifications in the logging system.

The underlying system architecture of IMPL is called SSIIMPLE (we hope literally) which is short for Server, Solvers, Interfacer (IML), Interacter (IPL), Modeler, Presolver Libraries and Executable. The Server, Solvers, Presolver and Executable are primarily model or problem-independent whereas the Interfacer, Interacter and Modeler are typically domain-specific i.e., model or problem-dependent. Fortunately, for most industrial planning, scheduling, optimization, control and monitoring problems found in the process industries, IMPL's standard Interfacer, Interacter and Modeler are well-suited and comprehensive to model the most difficult of production and process complexities allowing for the formulations of straightforward coefficient equations, ubiquitous conservation laws, rigorous constitutive relations, empirical correlative expressions and other necessary side constraints.

Page 8: Multi-Utility Scheduling Optimization (MUSO) Industrial Modeling Framework (MUSO-IMF)

User, custom, adhoc or external constraints can be augmented or appended to IMPL when necessary in several ways. For MILP or logistics problems we offer user-defined constraints configurable from the IML file or the IPL code where the variables and constraints are referenced using unit-operation-port-state names and the quantity-logic variable types. It is also possible to import a foreign *.ILP file (row-based MPS file) which can be generated by any algebraic modeling language or matrix generator. This file is read just prior to generating the matrix and before exporting to the LP, QP or MILP solver. For NLP or quality problems we offer user-defined formula configuration in the IML file and single-value and multi-value function blocks writable in C, C++ or Fortran. The nonlinear formulas may include intrinsic functions such as EXP, LN, LOG, SIN, COS, TAN, MIN, MAX, IF, NOT, EQ, NE, LE, LT, GE, GT, AND, OR, XOR and CIP, LIP, SIP and KIP (constant, linear and monotonic spline interpolations) as well as user-written extrinsic functions (XFCN). It is also possible to import another type of foreign file called the *.INL file where both linear and nonlinear constraints can be added easily using new or existing IMPL variables.

Industrial modeling frameworks or IMF's are intended to provide a jump-start to an industrial project implementation i.e., a pre-project if you will, whereby pre-configured IML files and/or IPL code are available specific to your problem at hand. The IML files and/or IPL code can be easily enhanced, extended, customized, modified, etc. to meet the diverse needs of your project and as it evolves over time and use. IMF's also provide graphical user interface prototypes for drawing the flowsheet as in Figure 1 and typical Gantt charts and trend plots to view the solution of quantity, logic and quality time-profiles. Current developments use Python 2.3 and 2.7 integrated with open-source Gnome Dia and Matplotlib modules respectively but other prototypes embedded within Microsoft Excel/VBA for example can be created in a straightforward manner.

However, the primary purpose of the IMF's is to provide a timely, cost-effective, manageable and maintainable deployment of IMPL to formulate and optimize complex industrial manufacturing systems in either off-line or on-line environments. Using IMPL alone would be somewhat similar (but not as bad) to learning the syntax and semantics of an AML as well as having to code all of the necessary mathematical representations of the problem including the details of digitizing your data into time-points and periods, demarcating past, present and future time-horizons, defining sets, index-sets, compound-sets to traverse the network or topology, calculating independent and dependent parameters to be used as coefficients and bounds and finally creating all of the necessary variables and constraints to model the complex details of logistics and quality industrial optimization problems. Instead, IMF's and IMPL provide, in our opinion, a more elegant and structured approach to industrial modeling and solving so that you can capture the benefits of advanced decision-making faster, better and cheaper.

References

Kelly, J.D., "Production modeling for multimodal operations", Chemical Engineering Progress, February, 44, (2004).

Page 9: Multi-Utility Scheduling Optimization (MUSO) Industrial Modeling Framework (MUSO-IMF)

Kelly, J.D., "The unit-operation-stock superstructure (UOSS) and the quantity-logic-quality paradigm (QLQP) for production scheduling in the process industries", In: MISTA 2005 Conference Proceedings, 327, (2005).

Kelly, J.D., Zyngier, D., "An improved MILP modeling of sequence-dependent switchovers for discrete-time scheduling problems", Industrial and Engineering Chemistry Research, 46, 4964, (2007).

Zyngier, D., Kelly, J.D., "Multi-product inventory logistics modeling in the process industries", In: W. Chaovalitwonse, K.C. Furman and P.M. Pardalos, Eds., Optimization and Logistics Challenges in the Enterprise", Springer, 61-95, (2009).

Zyngier, D., Kelly, J.D., "UOPSS: a new paradigm for modeling production planning and scheduling systems", ESCAPE 22, June, (2012).

Pelham, R. O., “Improve your plantwide steam network”, Hydrocarbon Processing, January, 75, (2013).

Appendix A – MUSO-IMF.UPS File i M P l (c)

Copyright and Property of i n d u s t r I A L g o r i t h m s LLC.

checksum,220!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Unit-Operation-Port-State-Superstructure (UOPSS) *.UPS File.! (This file is automatically generated from the Python program IALConstructer.py)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

&sUnit,&sOperation,@sType,@sSubtype,@sUseBD Flash,,perimeter,,contiguousBFW Pump,,perimeter,,contiguousBoiler1,X1,processc,blackbox%,contentiousBoiler1,X2,processc,blackbox%,contentiousBoiler1,X3,processc,blackbox%,contentiousBoiler2,X1,processc,blackbox%,contentiousBoiler2,X2,processc,blackbox%,contentiousBoiler2,X3,processc,blackbox%,contentiousBuyFuel,,perimeter,,contiguousBuyPower,,perimeter,,contiguousElectrical Header,,processc,blackbox%,contentiousFuel Header,,processc,blackbox%,contentiousHP Header,,processc,blackbox%,contentiousMP Header,,perimeter,,contiguousPRV1,,processc,blackbox%,contentiousSTG,,processc,blackbox%,contentiousUnit 1,,perimeter,,contiguous&sUnit,&sOperation,@sType,@sSubtype,@sUse

! Number of UO shapes = 17

&sAlias,&sUnit,&sOperationALLPARTS,BD Flash,ALLPARTS,BFW Pump,ALLPARTS,Boiler1,X1ALLPARTS,Boiler1,X2ALLPARTS,Boiler1,X3ALLPARTS,Boiler2,X1ALLPARTS,Boiler2,X2ALLPARTS,Boiler2,X3ALLPARTS,BuyFuel,ALLPARTS,BuyPower,ALLPARTS,Electrical Header,ALLPARTS,Fuel Header,ALLPARTS,HP Header,ALLPARTS,MP Header,ALLPARTS,PRV1,ALLPARTS,STG,ALLPARTS,Unit 1,&sAlias,&sUnit,&sOperation

&sUnit,&sOperation,&sPort,&sState,@sType,@sSubtypeBD Flash,,Blowdown,,in,BFW Pump,,Discharge,,out,Boiler1,X1,BFW,,in,Boiler1,X1,Blowdown,,out,Boiler1,X1,Fuel,,in,utility

Page 10: Multi-Utility Scheduling Optimization (MUSO) Industrial Modeling Framework (MUSO-IMF)

Boiler1,X1,HP Stm,,out,Boiler1,X2,BFW,,in,Boiler1,X2,Blowdown,,out,Boiler1,X2,Fuel,,in,utilityBoiler1,X2,HP Stm,,out,Boiler1,X3,BFW,,in,Boiler1,X3,Blowdown,,out,Boiler1,X3,Fuel,,in,utilityBoiler1,X3,HP Stm,,out,Boiler2,X1,BFW,,in,Boiler2,X1,Blowdown,,out,Boiler2,X1,Fuel,,in,utilityBoiler2,X1,HP Stm,,out,Boiler2,X2,BFW,,in,Boiler2,X2,Blowdown,,out,Boiler2,X2,Fuel,,in,utilityBoiler2,X2,HP Stm,,out,Boiler2,X3,BFW,,in,Boiler2,X3,Blowdown,,out,Boiler2,X3,Fuel,,in,utilityBoiler2,X3,HP Stm,,out,BuyFuel,,Fuel1,,out,BuyFuel,,Fuel2,,out,BuyPower,,Powerout,,out,utilityElectrical Header,,IN,,in,Electrical Header,,OUT,,out,Fuel Header,,Boiler Fuel,,out,Fuel Header,,Supply,,in,HP Header,,Blr Stm,,in,HP Header,,PRV1,,out,HP Header,,STG Stm,,out,MP Header,,PRV1,,in,MP Header,,STG Exhaust,,in,PRV1,,BFW,,in,PRV1,,HP,,in,PRV1,,MP,,out,STG,,Exhaust Stm,,out,STG,,HP Stm,,in,STG,,Powerout,,out,utilityUnit 1,,Powerin,,in,utility&sUnit,&sOperation,&sPort,&sState,@sType,@sSubtype

! Number of UOPS shapes = 45

&sAlias,&sUnit,&sOperation,&sPort,&sStateALLINPORTS,BD Flash,,Blowdown,ALLINPORTS,Boiler1,X1,BFW,ALLINPORTS,Boiler1,X1,Fuel,ALLINPORTS,Boiler1,X2,BFW,ALLINPORTS,Boiler1,X2,Fuel,ALLINPORTS,Boiler1,X3,BFW,ALLINPORTS,Boiler1,X3,Fuel,ALLINPORTS,Boiler2,X1,BFW,ALLINPORTS,Boiler2,X1,Fuel,ALLINPORTS,Boiler2,X2,BFW,ALLINPORTS,Boiler2,X2,Fuel,ALLINPORTS,Boiler2,X3,BFW,ALLINPORTS,Boiler2,X3,Fuel,ALLINPORTS,Electrical Header,,IN,ALLINPORTS,Fuel Header,,Supply,ALLINPORTS,HP Header,,Blr Stm,ALLINPORTS,MP Header,,PRV1,ALLINPORTS,MP Header,,STG Exhaust,ALLINPORTS,PRV1,,BFW,ALLINPORTS,PRV1,,HP,ALLINPORTS,STG,,HP Stm,ALLINPORTS,Unit 1,,Powerin,ALLOUTPORTS,BFW Pump,,Discharge,ALLOUTPORTS,Boiler1,X1,Blowdown,ALLOUTPORTS,Boiler1,X1,HP Stm,ALLOUTPORTS,Boiler1,X2,Blowdown,ALLOUTPORTS,Boiler1,X2,HP Stm,ALLOUTPORTS,Boiler1,X3,Blowdown,ALLOUTPORTS,Boiler1,X3,HP Stm,ALLOUTPORTS,Boiler2,X1,Blowdown,ALLOUTPORTS,Boiler2,X1,HP Stm,ALLOUTPORTS,Boiler2,X2,Blowdown,ALLOUTPORTS,Boiler2,X2,HP Stm,ALLOUTPORTS,Boiler2,X3,Blowdown,ALLOUTPORTS,Boiler2,X3,HP Stm,ALLOUTPORTS,BuyFuel,,Fuel1,ALLOUTPORTS,BuyFuel,,Fuel2,ALLOUTPORTS,BuyPower,,Powerout,ALLOUTPORTS,Electrical Header,,OUT,ALLOUTPORTS,Fuel Header,,Boiler Fuel,ALLOUTPORTS,HP Header,,PRV1,ALLOUTPORTS,HP Header,,STG Stm,ALLOUTPORTS,PRV1,,MP,ALLOUTPORTS,STG,,Exhaust Stm,ALLOUTPORTS,STG,,Powerout,&sAlias,&sUnit,&sOperation,&sPort,&sState

&sUnit,&sOperation,&sPort,&sState,&sUnit,&sOperation,&sPort,&sStateBFW Pump,,Discharge,,Boiler1,X1,BFW,BFW Pump,,Discharge,,Boiler1,X2,BFW,

Page 11: Multi-Utility Scheduling Optimization (MUSO) Industrial Modeling Framework (MUSO-IMF)

BFW Pump,,Discharge,,Boiler1,X3,BFW,BFW Pump,,Discharge,,Boiler2,X1,BFW,BFW Pump,,Discharge,,Boiler2,X2,BFW,BFW Pump,,Discharge,,Boiler2,X3,BFW,BFW Pump,,Discharge,,PRV1,,BFW,Boiler1,X1,Blowdown,,BD Flash,,Blowdown,Boiler1,X1,HP Stm,,HP Header,,Blr Stm,Boiler1,X2,Blowdown,,BD Flash,,Blowdown,Boiler1,X2,HP Stm,,HP Header,,Blr Stm,Boiler1,X3,Blowdown,,BD Flash,,Blowdown,Boiler1,X3,HP Stm,,HP Header,,Blr Stm,Boiler2,X1,Blowdown,,BD Flash,,Blowdown,Boiler2,X1,HP Stm,,HP Header,,Blr Stm,Boiler2,X2,Blowdown,,BD Flash,,Blowdown,Boiler2,X2,HP Stm,,HP Header,,Blr Stm,Boiler2,X3,Blowdown,,BD Flash,,Blowdown,Boiler2,X3,HP Stm,,HP Header,,Blr Stm,BuyFuel,,Fuel1,,Fuel Header,,Supply,BuyFuel,,Fuel2,,Fuel Header,,Supply,BuyPower,,Powerout,,Electrical Header,,IN,Electrical Header,,OUT,,Unit 1,,Powerin,Fuel Header,,Boiler Fuel,,Boiler1,X1,Fuel,Fuel Header,,Boiler Fuel,,Boiler1,X2,Fuel,Fuel Header,,Boiler Fuel,,Boiler1,X3,Fuel,Fuel Header,,Boiler Fuel,,Boiler2,X1,Fuel,Fuel Header,,Boiler Fuel,,Boiler2,X2,Fuel,Fuel Header,,Boiler Fuel,,Boiler2,X3,Fuel,HP Header,,PRV1,,PRV1,,HP,HP Header,,STG Stm,,STG,,HP Stm,PRV1,,MP,,MP Header,,PRV1,STG,,Exhaust Stm,,MP Header,,STG Exhaust,STG,,Powerout,,Electrical Header,,IN,&sUnit,&sOperation,&sPort,&sState,&sUnit,&sOperation,&sPort,&sState

! Number of UOPSPSUO shapes = 34

&sAlias,&sUnit,&sOperation,&sPort,&sState,&sUnit,&sOperation,&sPort,&sStateALLPATHS,Boiler1,X1,Blowdown,,BD Flash,,Blowdown,ALLPATHS,Boiler1,X2,Blowdown,,BD Flash,,Blowdown,ALLPATHS,Boiler1,X3,Blowdown,,BD Flash,,Blowdown,ALLPATHS,Boiler2,X1,Blowdown,,BD Flash,,Blowdown,ALLPATHS,Boiler2,X2,Blowdown,,BD Flash,,Blowdown,ALLPATHS,Boiler2,X3,Blowdown,,BD Flash,,Blowdown,ALLPATHS,BFW Pump,,Discharge,,Boiler1,X1,BFW,ALLPATHS,Fuel Header,,Boiler Fuel,,Boiler1,X1,Fuel,ALLPATHS,BFW Pump,,Discharge,,Boiler1,X2,BFW,ALLPATHS,Fuel Header,,Boiler Fuel,,Boiler1,X2,Fuel,ALLPATHS,BFW Pump,,Discharge,,Boiler1,X3,BFW,ALLPATHS,Fuel Header,,Boiler Fuel,,Boiler1,X3,Fuel,ALLPATHS,BFW Pump,,Discharge,,Boiler2,X1,BFW,ALLPATHS,Fuel Header,,Boiler Fuel,,Boiler2,X1,Fuel,ALLPATHS,BFW Pump,,Discharge,,Boiler2,X2,BFW,ALLPATHS,Fuel Header,,Boiler Fuel,,Boiler2,X2,Fuel,ALLPATHS,BFW Pump,,Discharge,,Boiler2,X3,BFW,ALLPATHS,Fuel Header,,Boiler Fuel,,Boiler2,X3,Fuel,ALLPATHS,BuyPower,,Powerout,,Electrical Header,,IN,ALLPATHS,STG,,Powerout,,Electrical Header,,IN,ALLPATHS,BuyFuel,,Fuel1,,Fuel Header,,Supply,ALLPATHS,BuyFuel,,Fuel2,,Fuel Header,,Supply,ALLPATHS,Boiler1,X1,HP Stm,,HP Header,,Blr Stm,ALLPATHS,Boiler1,X2,HP Stm,,HP Header,,Blr Stm,ALLPATHS,Boiler1,X3,HP Stm,,HP Header,,Blr Stm,ALLPATHS,Boiler2,X1,HP Stm,,HP Header,,Blr Stm,ALLPATHS,Boiler2,X2,HP Stm,,HP Header,,Blr Stm,ALLPATHS,Boiler2,X3,HP Stm,,HP Header,,Blr Stm,ALLPATHS,PRV1,,MP,,MP Header,,PRV1,ALLPATHS,STG,,Exhaust Stm,,MP Header,,STG Exhaust,ALLPATHS,BFW Pump,,Discharge,,PRV1,,BFW,ALLPATHS,HP Header,,PRV1,,PRV1,,HP,ALLPATHS,HP Header,,STG Stm,,STG,,HP Stm,ALLPATHS,Electrical Header,,OUT,,Unit 1,,Powerin,&sAlias,&sUnit,&sOperation,&sPort,&sState,&sUnit,&sOperation,&sPort,&sState

Appendix B – MUSO-IMF.IML File i M P l (c)

Copyright and Property of i n d u s t r I A L g o r i t h m s LLC.

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Calculation Data (Parameters)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

&sCalc,@sValuePERIOD,1.0START,-PERIODBEGIN,0.0END,20.0&sCalc,@sValue !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Chronological Data (Periods)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Page 12: Multi-Utility Scheduling Optimization (MUSO) Industrial Modeling Framework (MUSO-IMF)

@rPastTHD,@rFutureTHD,@rTPDSTART,END,PERIOD@rPastTHD,@rFutureTHD,@rTPD

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Construction Data (Pointers)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Include-@sFile_NameCOGEN-IMF.upsInclude-@sFile_Name

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Capacity Data (Prototypes)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

&sUnit,&sOperation,@rRate_Lower,@rRate_UpperFuel Header,,0.0,10000.0Boiler1,X1,0.0,160.0Boiler1,X2,160.0,190.0Boiler1,X3,190.0,999.0Boiler2,X1,0.0,140.0Boiler2,X2,140.0,170.0Boiler2,X3,170.0,999.0HP Header,,0.0,10000.0Electrical Header,,0.0,10000.0STG,,0.0,10000.0PRV1,,0.0,10000.0&sUnit,&sOperation,@rRate_Lower,@rRate_Upper

&sUnit,&sOperation,&sPort,&sState,@rTotalRate_Lower,@rTotalRate_UpperBuyFuel,,Fuel1,,0.0,10000.0BuyFuel,,Fuel2,,0.0,10000.0Fuel Header,,Supply,,0.0,10000.0Fuel Header,,Boiler Fuel,,0.0,10000.0Boiler1,X1,Fuel,,0.0,10000.0Boiler1,X2,Fuel,,0.0,10000.0Boiler1,X3,Fuel,,0.0,10000.0Boiler1,X1,HP Stm,,0.0,10000.0Boiler1,X2,HP Stm,,0.0,10000.0Boiler1,X3,HP Stm,,0.0,10000.0Boiler1,X1,BFW,,0.0,10000.0Boiler1,X2,BFW,,0.0,10000.0Boiler1,X3,BFW,,0.0,10000.0Boiler1,X1,Blowdown,,0.0,10000.0Boiler1,X2,Blowdown,,0.0,10000.0Boiler1,X3,Blowdown,,0.0,10000.0Boiler2,X1,Fuel,,0.0,10000.0Boiler2,X2,Fuel,,0.0,10000.0Boiler2,X3,Fuel,,0.0,10000.0Boiler2,X1,HP Stm,,0.0,10000.0Boiler2,X2,HP Stm,,0.0,10000.0Boiler2,X3,HP Stm,,0.0,10000.0Boiler2,X1,BFW,,0.0,10000.0Boiler2,X2,BFW,,0.0,10000.0Boiler2,X3,BFW,,0.0,10000.0Boiler2,X1,Blowdown,,0.0,10000.0Boiler2,X2,Blowdown,,0.0,10000.0Boiler2,X3,Blowdown,,0.0,10000.0BFW Pump,,Discharge,,0.0,10000.0BD Flash,,Blowdown,,0.0,10000.0HP Header,,Blr Stm,,0.0,10000.0HP Header,,STG Stm,,0.0,10000.0BuyPower,,Powerout,,0.0,10000.0Electrical Header,,IN,,0.0,10000.0Electrical Header,,OUT,,0.0,10000.0STG,,HP Stm,,0.0,10000.0STG,,Exhaust Stm,,0.0,10000.0STG,,Powerout,,0.0,10000.0Unit 1,,Powerin,,0.0,10000.0MP Header,,STG Exhaust,,0.0,10000.0HP Header,,PRV1,,0.0,10000.0PRV1,,HP,,0.0,10000.0PRV1,,BFW,,0.0,10000.0PRV1,,MP,,0.0,10000.0MP Header,,PRV1,,0.0,10000.0&sUnit,&sOperation,&sPort,&sState,@rTotalRate_Lower,@rTotalRate_Upper

&sUnit,&sOperation,&sPort,&sState,@rTeeRate_Lower,@rTeeRate_UpperBuyFuel,,Fuel1,,0.0,10000.0BuyFuel,,Fuel2,,0.0,10000.0Fuel Header,,Supply,,0.0,10000.0Fuel Header,,Boiler Fuel,,0.0,10000.0Boiler1,X1,Fuel,,0.0,10000.0Boiler1,X2,Fuel,,0.0,10000.0Boiler1,X3,Fuel,,0.0,10000.0Boiler1,X1,HP Stm,,0.0,10000.0Boiler1,X2,HP Stm,,0.0,10000.0Boiler1,X3,HP Stm,,0.0,10000.0Boiler1,X1,BFW,,0.0,10000.0Boiler1,X2,BFW,,0.0,10000.0Boiler1,X3,BFW,,0.0,10000.0Boiler1,X1,Blowdown,,0.0,10000.0Boiler1,X2,Blowdown,,0.0,10000.0

Page 13: Multi-Utility Scheduling Optimization (MUSO) Industrial Modeling Framework (MUSO-IMF)

Boiler1,X3,Blowdown,,0.0,10000.0Boiler2,X1,Fuel,,0.0,10000.0Boiler2,X2,Fuel,,0.0,10000.0Boiler2,X3,Fuel,,0.0,10000.0Boiler2,X1,HP Stm,,0.0,10000.0Boiler2,X2,HP Stm,,0.0,10000.0Boiler2,X3,HP Stm,,0.0,10000.0Boiler2,X1,BFW,,0.0,10000.0Boiler2,X2,BFW,,0.0,10000.0Boiler2,X3,BFW,,0.0,10000.0Boiler2,X1,Blowdown,,0.0,10000.0Boiler2,X2,Blowdown,,0.0,10000.0Boiler2,X3,Blowdown,,0.0,10000.0BFW Pump,,Discharge,,0.0,10000.0BD Flash,,Blowdown,,0.0,10000.0HP Header,,Blr Stm,,0.0,10000.0HP Header,,STG Stm,,0.0,10000.0BuyPower,,Powerout,,0.0,10000.0Electrical Header,,IN,,0.0,10000.0Electrical Header,,OUT,,0.0,10000.0STG,,HP Stm,,0.0,10000.0STG,,Exhaust Stm,,0.0,10000.0STG,,Powerout,,0.0,10000.0Unit 1,,Powerin,,0.0,10000.0MP Header,,STG Exhaust,,0.0,10000.0HP Header,,PRV1,,0.0,10000.0PRV1,,HP,,0.0,10000.0PRV1,,BFW,,0.0,10000.0PRV1,,MP,,0.0,10000.0MP Header,,PRV1,,0.0,10000.0&sUnit,&sOperation,&sPort,&sState,@rTeeRate_Lower,@rTeeRate_Upper

&sUnit,&sOperation,&sPort,&sState,@rYield_Lower,@rYield_Upper,@rYield_FixedFuel Header,,Supply,,1.0,1.0,0.0Fuel Header,,Boiler Fuel,,0.0,10.0,0.0Boiler1,X1,Fuel,,0.1826,0.1826,163.563Boiler1,X2,Fuel,,1.20482,1.20482,0.0Boiler1,X3,Fuel,,3.7605,3.7605,-485.5787Boiler1,X1,HP Stm,,1.0,1.0,0.0Boiler1,X2,HP Stm,,1.0,1.0,0.0Boiler1,X3,HP Stm,,1.0,1.0,0.0Boiler1,X1,BFW,,0.0,10.0,0.0Boiler1,X2,BFW,,0.0,10.0,0.0Boiler1,X3,BFW,,0.0,10.0,0.0Boiler1,X1,Blowdown,,0.025,0.025,0.0Boiler1,X2,Blowdown,,0.025,0.025,0.0Boiler1,X3,Blowdown,,0.025,0.025,0.0Boiler2,X1,Fuel,,0.5890,0.5890,86.2115Boiler2,X2,Fuel,,1.20482,1.20482,0.0Boiler2,X3,Fuel,,2.9752,2.9752,-300.9710Boiler2,X1,HP Stm,,1.0,1.0,0.0Boiler2,X2,HP Stm,,1.0,1.0,0.0Boiler2,X3,HP Stm,,1.0,1.0,0.0Boiler2,X1,BFW,,0.0,10.0,0.0Boiler2,X2,BFW,,0.0,10.0,0.0Boiler2,X3,BFW,,0.0,10.0,0.0Boiler2,X1,Blowdown,,0.025,0.025,0.0Boiler2,X2,Blowdown,,0.025,0.025,0.0Boiler2,X3,Blowdown,,0.025,0.025,0.0HP Header,,Blr Stm,,1.0,1.0,0.0HP Header,,STG Stm,,0.0,10.0,0.0Electrical Header,,IN,,1.0,1.0,0.0Electrical Header,,OUT,,0.0,10.0,0.0STG,,HP Stm,,1.0,1.0,0.0STG,,Exhaust Stm,,0.0,10.0,0.0STG,,Powerout,,0.05,0.05,-0.5HP Header,,PRV1,,0.0,10.0,0.0PRV1,,HP,,1.0,1.0,0.0PRV1,,BFW,,0.0,10.0,0.0PRV1,,MP,,0.0,10.0,0.0&sUnit,&sOperation,&sPort,&sState,@rYield_Lower,@rYield_Upper,@rYield_Fixed

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Constriction Data (Practices/Policies)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

&sUnit,&sOperation,@rUpTiming_Lower,@rUpTiming_UpperBoiler1,X1,3.0,0.0Boiler1,X2,3.0,0.0Boiler1,X3,3.0,0.0Boiler2,X1,3.0,0.0Boiler2,X2,3.0,0.0Boiler2,X3,3.0,0.0&sUnit,&sOperation,@rUpTiming_Lower,@rUpTiming_Upper

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Cost Data (Pricing)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

&sUnit,&sOperation,&sPort,&sState,@rFlowPro_Weight,@rFlowPer1_Weight,@rFlowPer2_Weight,@rFlowPen_WeightBuyFuel,,Fuel1,,-1.0,,,BuyFuel,,Fuel2,,-2.0,,,BuyPower,,Powerout,,-100.0,,,Unit 1,,Powerin,,50.0,,,BFW Pump,,Discharge,,-0.01,,,

Page 14: Multi-Utility Scheduling Optimization (MUSO) Industrial Modeling Framework (MUSO-IMF)

&sUnit,&sOperation,&sPort,&sState,@rFlowPro_Weight,@rFlowPer1_Weight,@rFlowPer2_Weight,@rFlowPen_Weight

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Constituent Data (Properties)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

&sFactorH_&sFactor

&sUnit,&sOperation,&sPort,&sState,&sFactor,@rFactor_ValuePRV1,,HP,,H_,1300.0PRV1,,BFW,,H_,220.0PRV1,,MP,,H_,1200.0&sUnit,&sOperation,&sPort,&sState,&sFactor,@rFactor_Value

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Content Data (Past, Present Provisos)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

&sUnit,&sOperation,@rHoldup_Value,@rStart_Time&sUnit,&sOperation,@rHoldup_Value,@rStart_Time

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Command Data (Future Provisos)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

&sUnit,&sOperation,@rSetup_Lower,@rSetup_Upper,@rBegin_Time,@rEnd_TimeBuyFuel,,0.0,1.0,BEGIN,ENDFuel Header,,0.0,1.0,BEGIN,ENDBoiler1,X1,0.0,1.0,BEGIN,ENDBoiler1,X2,0.0,1.0,BEGIN,ENDBoiler1,X3,0.0,1.0,BEGIN,ENDBoiler2,X1,0.0,1.0,BEGIN,ENDBoiler2,X2,0.0,1.0,BEGIN,ENDBoiler2,X3,0.0,1.0,BEGIN,ENDHP Header,,0.0,1.0,BEGIN,ENDBFW Pump,,0.0,1.0,BEGIN,ENDBD Flash,,0.0,1.0,BEGIN,ENDBuyPower,,0.0,1.0,BEGIN,ENDElectrical Header,,0.0,1.0,BEGIN,ENDSTG,,0.0,1.0,BEGIN,ENDUnit 1,,0.0,1.0,BEGIN,ENDMP Header,,0.0,1.0,BEGIN,ENDPRV1,,0.0,1.0,BEGIN,END&sUnit,&sOperation,@rSetup_Lower,@rSetup_Upper,@rBegin_Time,@rEnd_Time

&sUnit,&sOperation,&sPort,&sState,&sUnit,&sOperation,&sPort,&sState,@rSetup_Lower,@rSetup_Upper,@rBegin_Time,@rEnd_TimeBuyFuel,,Fuel1,,Fuel Header,,Supply,,0.0,1.0,BEGIN,ENDBuyFuel,,Fuel2,,Fuel Header,,Supply,,0.0,1.0,BEGIN,ENDFuel Header,,Boiler Fuel,,Boiler1,X1,Fuel,,0.0,1.0,BEGIN,ENDFuel Header,,Boiler Fuel,,Boiler1,X2,Fuel,,0.0,1.0,BEGIN,ENDFuel Header,,Boiler Fuel,,Boiler1,X3,Fuel,,0.0,1.0,BEGIN,ENDBoiler1,X1,HP Stm,,HP Header,,Blr Stm,,0.0,1.0,BEGIN,ENDBoiler1,X2,HP Stm,,HP Header,,Blr Stm,,0.0,1.0,BEGIN,ENDBoiler1,X3,HP Stm,,HP Header,,Blr Stm,,0.0,1.0,BEGIN,ENDBFW Pump,,Discharge,,Boiler1,X1,BFW,,0.0,1.0,BEGIN,ENDBFW Pump,,Discharge,,Boiler1,X2,BFW,,0.0,1.0,BEGIN,ENDBFW Pump,,Discharge,,Boiler1,X3,BFW,,0.0,1.0,BEGIN,ENDBoiler1,X1,Blowdown,,BD Flash,,Blowdown,,0.0,1.0,BEGIN,ENDBoiler1,X2,Blowdown,,BD Flash,,Blowdown,,0.0,1.0,BEGIN,ENDBoiler1,X3,Blowdown,,BD Flash,,Blowdown,,0.0,1.0,BEGIN,ENDFuel Header,,Boiler Fuel,,Boiler2,X1,Fuel,,0.0,1.0,BEGIN,ENDFuel Header,,Boiler Fuel,,Boiler2,X2,Fuel,,0.0,1.0,BEGIN,ENDFuel Header,,Boiler Fuel,,Boiler2,X3,Fuel,,0.0,1.0,BEGIN,ENDBoiler2,X1,HP Stm,,HP Header,,Blr Stm,,0.0,1.0,BEGIN,ENDBoiler2,X2,HP Stm,,HP Header,,Blr Stm,,0.0,1.0,BEGIN,ENDBoiler2,X3,HP Stm,,HP Header,,Blr Stm,,0.0,1.0,BEGIN,ENDBFW Pump,,Discharge,,Boiler2,X1,BFW,,0.0,1.0,BEGIN,ENDBFW Pump,,Discharge,,Boiler2,X2,BFW,,0.0,1.0,BEGIN,ENDBFW Pump,,Discharge,,Boiler2,X3,BFW,,0.0,1.0,BEGIN,ENDBoiler2,X1,Blowdown,,BD Flash,,Blowdown,,0.0,1.0,BEGIN,ENDBoiler2,X2,Blowdown,,BD Flash,,Blowdown,,0.0,1.0,BEGIN,ENDBoiler2,X3,Blowdown,,BD Flash,,Blowdown,,0.0,1.0,BEGIN,ENDHP Header,,STG Stm,,STG,,HP Stm,,0.0,1.0,BEGIN,ENDBuyPower,,Powerout,,Electrical Header,,IN,,0.0,1.0,BEGIN,ENDSTG,,Powerout,,Electrical Header,,IN,,0.0,1.0,BEGIN,ENDElectrical Header,,OUT,,Unit 1,,Powerin,,0.0,1.0,BEGIN,ENDSTG,,Exhaust Stm,,MP Header,,STG Exhaust,,0.0,1.0,BEGIN,ENDHP Header,,PRV1,,PRV1,,HP,,0.0,1.0,BEGIN,ENDPRV1,,MP,,MP Header,,PRV1,,0.0,1.0,BEGIN,ENDBFW Pump,,Discharge,,PRV1,,BFW,,0.0,1.0,BEGIN,END&sUnit,&sOperation,&sPort,&sState,&sUnit,&sOperation,&sPort,&sState,@rSetup_Lower,@rSetup_Upper,@rBegin_Time,@rEnd_Time