Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Dither Signal Design Problem (DSDP) for Closed-Loop Estimation Industrial Modeling Framework (DSDP-CLE-IMF)


Published on

Published in: Data & Analytics
  • Be the first to comment

  • Be the first to like this

Dither Signal Design Problem (DSDP) for Closed-Loop Estimation Industrial Modeling Framework (DSDP-CLE-IMF)

  1. 1. Dither Signal Design Problem (DSDP) for Closed-Loop Estimation Industrial Modeling Framework (DSDP-CLE-IMF) i n d u s t r IAL g o r i t h m s LLC. (IAL) December 2014 This short note describes a relatively simple methodology, procedure or approach to improve the estimation of already installed industrial models used for optimization, control (active applications), simulation and/or monitoring (passive applications) purposes subject to omnipresent feedback i.e., under either loose or tight closed-loop control. Performing system identification with closed-loop data is relatively well-studied (Ljung et. al., 1974, Box and MacGregor, 1974 and 1976, MacGregor and Fogal, 1995, Shreesha and Gudi, 2004, Vanli and Del Castillo, 2007) where it is also well-known that better identification of the structure and coefficients in parametric models under feedback control can be obtained by applying an external excitation, perturbation, measured disturbance or dither signal especially when the dither is uncorrelated with the noise and unmeasured disturbances. Dither signals can be added to either or both the controlled variable’s (CV, output) and the manipulated variable’s (MV, input) setpoint or target where the MV setpoint is typically sent to a lower-level control strategy such as a PID flow, temperature or pressure loop. The presence of strong or weak feedback in all industrial processes should not be unexpected given that the process, production and plant are designed, planned, scheduled and operated to produce a certain quantity and quality of product subject to processing/production and market conditions. There is also slow moving manual feedback from the operators to position the process or plant to operate in a desired region for stability and/or safety reasons (Jiang, 1996). Faster moving automatic feedback is programmed into PLC’s and DCS’s such as multi-loop constraint control as well as multivariate model-based predictive and receding-horizon control. Therefore, it is important to recognize that when building or identifying linear/nonlinear and static/dynamic process models using passive and historical data, that some form of feedback most likely exists and must be properly understood in order to identify and fit unbiased model structures and parameters (Box and MacGregor, 1974). Passive data may not possess the necessary level of information to uniquely and accurately estimate the model though there are some examples where happenstance data can be used when loose feedback is present such as in single-input, single-output (SISO) level-flow smoothing PI control (Kelly, 1998). However, if we actively stimulate, perturb or excite the process/production or plant using well-designed dither signals then our probability of building better and more useful models increases substantially and hopefully without disrupting the system in any appreciable way. Typically with closed-loop data there is usually weaker variation (low excitation) in the controlled outputs and stronger variation (high excitation) in the manipulated inputs which is precisely what feedback control is intended to do. Unfortunately, this may result in higher than expected input collinearity or correlation possibly increasing the bias in the parameter estimates for example but for ill-conditioned systems collinear inputs may be a requirement to properly fit the low gain dimensions as we will see later. In this work we consider determining the dither signals using a priori steady-state, zero-frequency or asymptotic gains of the process typically known beforehand given that our purpose is to improve the calibration, training or estimation of existing industrial models. This type of approach can be found in Koung and MacGregor (1993) where the SVD of the multi-input, multi-output (MIMO) gain matrix is used in the design and is especially suited for ill-conditioned
  2. 2. processes when there are high and low gains in the process (output directionality). Evaluations of this technique can be found in Conner and Seborg (2004), Haggblom and Boling (2008), Sababadi and Poshtan (2009) and Kuramoto and Vaillant (2012) which all underscore its effectiveness particularly when robust stable control is necessary. A related use of their technique was applied in Kelly and Forbes (1998) to “re-design” if you will, the steady-state gain matrix in the blending of crude-oils at petroleum refineries by allocating or segregating the crude-oils into selected storage vessels to maximize the minimum singular value of the static gain matrix which will inherently provide a more robust and resilient process subject to disturbances even in the worst or lowest gain directions. The most common approach for the dither signal is to simply implement independent pseudo-random binary sequences (PRBS) or generalized binary noise sequences (GBNS) (Tulleken, 1990) for each variable with a somewhat arbitrary and small perturbation size or tolerance (and heuristically applied switching intervals). Unfortunately albeit uncorrelated with the system noise, this does not consider the structure or behaviour of the process in terms of its multivariate and interactive nature of the controlled (dependent) and manipulated (independent) variables working together. Instead, our novel and simple dither signal design technique allows us to solve an LP to determine the dither signal’s amplitude or size using the steady-state gain matrix and input-output lower and upper acceptable deviations or differences. The dither signal design problem (DSDP) is a mathematical programming problem shown in equations (1a) and (1b) below: DSDP1I … Physical/Unrotated/Untransformed Input Space maximize: sum over (j,t) {mx(j,t) / (DXU(j) - DXL(j))} subject to: dy(i,t) = G(i,1:NX) * dx(1:NX,t)} for all i = 1..NY, t = 1..NT (1a) dx(j,t) = SX(j,t) * mx(j,t) for all j = 1..NX, t = 1..NT DXL(j) <= dx(j,t) <= DXU(j) for all j = 1..NX, t = 1..NT DYL(i) <= dy(i,t) <= DYU(i) for all i = 1..NY, t = 1..NT 0 <= mx(j,t) <= INF for all j = 1..NX, t = 1..NT DSDP1O … Physical/Unrotated/Untransformed Output Space maximize: sum over (i,t) {my(i,t) / (DYU(i) - DYL(i))} subject to: dy(i,t) = G(i,1:NX) * dx(1:NX,t)} for all i = 1..NY, t = 1..NT (1b) dy(j,t) = SY(i,t) * my(i,t) for all j = 1..NY, t = 1..NT DXL(j) <= dx(j,t) <= DXU(j) for all j = 1..NX, t = 1..NT DYL(i) <= dy(i,t) <= DYU(i) for all i = 1..NY, t = 1..NT 0 <= my(i,t) <= INF for all i = 1..NY, t = 1..NT where dy(i,t) is the i-th output for the t-th dither signal, sequence, series or trial, dx(j,t) is for the j-th input and G(i,j) is the (i,j) zero-frequency gain matrix element. The parameters DXL, DXU, DYL and DYU are the lower and upper delta bounds for dy and dx which can be asymmetrical. SX(j,t) and SY(i,t) are the signs of the j-th input and i-th output dither signal trial (i.e., -1 or +1) and mx(j,t) and my(i,t) are their corresponding magnitudes or sizes which are non-negative
  3. 3. optimization variables and are maximized in the weighted objective function. Most PRBS/GBNS dither signals have a single fixed amplitude for the switching i.e., each trial has the same magnitude, where here we allow for each trial to have its own variable size. If this is not required then mx(j,t) and my(i,t) can be replaced by mx(j) and my(i) instead. To exogenously populate SX and SY (user-supplied), these are usually selected or specified to be uncorrelated or orthogonal i.e., they will have zero (0) off-diagonal elements in the covariance matrices SX’ * SX and SY’ * SY. In a factorial design of an experiment, the number of trials will be 2^NX (DSDP1I) or 2^NY (DSDPO) where for example SX(1,1:NT) will switch from -1 to +1 every 2^(NX-1) times, SX(2,1:NT) will switch from -1 to +1 every 2^(NX-2) times and SX(NX,1:NT) will switch from -1 to +1 every 2^(NX-NX) = 2^0 = 1 times. The ordering of the trials within an experiment is arbitrary given that the overall goal of the design is to perturb or excite the MIMO process using input and/or output directions that provide information-rich data to then perform the identification and estimation of the static or dynamic industrial model. The PRBS/GBNS switching time-periods or time-intervals between each trial is usually configured to be some factor or multiplier of the effective time-constant of the system (Tullekin, 1990 and Conner and Seborg, 2004) where there is unfortunately less theory available for their selection. Following the work of Koung and MacGregor (1993) for ill-conditioned processes or processes with strong output directionality, the DSDP is modified to allow for the use of rotated, transformed or projected inputs and outputs where instead of the G matrix being provided its SVD is now required i.e., G(1:NY,1:NX) = U(1:NY,1:NY) * S(1:NY,1:NX) * V(1:NX,1:NX)’. DSDP2I … Projected/Rotated/Transformed Input Space maximize: sum over (j,t) {mw(j,t) / abs(V(j,1:NX)) * (DXU(1:NX) - DXL(1:NX))} subject to: dy(i,t) = U(i,1:NY) * dz(1:NY,t) for all i = 1..NY, t = 1..NT (2a) dz(i,t) = S(i,1:NX) * dw(1:NX,t) for all I = 1..NY, t = 1..NT dx(j,t) = V(j,1:NX) * dw(1:NX,t) for all j = 1..NX, t = 1..NT dw(j,t) = SW(j,t) * mw(j,t) for all j = 1..NX, t = 1..NT DXL(j) <= dx(j,t) <= DXU(j) for all j = 1..NX, t = 1..NT DYL(i) <= dy(i,t) <= DYU(i) for all i = 1..NY, t = 1..NT -INF <= dw(j,t) <= INF for all j = 1..NX, t = 1..NT 0 <= mw(j,t) <= INF for all j = 1..NX, t = 1..NT DSDP2O … Projected/Rotated/Transformed Output Space maximize: sum over (i,t) {mz(i,t) / abs(U(i,1:NY)) * (DYU(1:NY) - DYL(1:NY))} subject to: dy(i,t) = U(i,1:NY) * dz(1:NY,t) for all i = 1..NY, t = 1..NT (2b) dz(i,t) = SZ(i,t) * mz(i,t) for all i = 1..NY, t = 1..NT dz(i,t) = S(i,1:NX) * dw(1:NX,t) for all i = 1..NY, t = 1..NT dx(j,t) = V(j,1:NX) * dw(1:NX,t) for all j = 1..NX, t = 1..NT DXL(j) <= dx(j,t) <= DXU(j) for all j = 1..NX, t = 1..NT DYL(i) <= dy(i,t) <= DYU(i) for all i = 1..NY, t = 1..NT
  4. 4. -INF <= dz(i,t) <= INF for all i = 1..NY, t = 1..NT 0 <= mz(i,t) <= INF for all i = 1..NY, t = 1..NT where dz(i,t) is the i-th projected output for the t-th dither signal trial and dw(j,t) is for the j-th projected input. The other parameters and variables SW, SZ, mw and mz are similar to DSDP1 except that these are for the projections, transformations or rotations onto the singular directions decomposed from the estimate of the asymptotic gain matrix. The fundamental idea of our novel DSDP, for better open/closed-loop estimation of industrial models, is to maximize the magnitudes, amplitudes or sizes of the physical/projected input/output dither signals in order to increase the signal-to-noise ratio (SNR) of the experiment and to stimulate the MIMO process in all of its low and high gain directions as much as possible without significantly disrupting or distracting the system. To our knowledge, the DSDP is the first time an optimization approach has been used to effectively design the experimental PRBS/GNBS trials with a priori information of the systems static gain structure and allowed sensitivities to process perturbations. Ad hoc approaches found in Koung and MacGregor (1993) for BIBO/DIDO systems and extended to MIMO systems by Conner and Seborg (2004) to set the dither signal sizes using an arbitrary “alpha” parameter to manually limit the amount of variation in the physical inputs and outputs when the low gain directions are amplified. However in this technique, we use the power of easily accessible linear programming (LP) to maximize the magnitude of each dither signal for each experimental trial which automatically determines “alpha” for the user based on the allowed or acceptable input/output delta bounds and given a preliminary estimate of the steady-state gain matrix. Another method to automate the dither signal amplitudes can be found in Adetola and Guay (2006) but this requires a complicated infeasible interior-point QP solver and a tailored solving strategy given that a matrix determinant forms the majority of the constraint set. In addition, no insight for projected input/output spaces is afforded and there are no bounds included to limit the physical input-output space of the system cf. our DXL, DXU, DYL and DYU. The following example implemented in IMPL and taken from Koung and MacGregor (1993) will highlight our new method. Two by Two (2 x 2) Ill-Conditioned Distillation Process Example Figure 1 shows the DSDP flowsheet for the small problem presented in Koung and MacGregor (1993) and Haggblom and Boling (2008) where the gain and SVD matrices respectively are below and the UPS and IML files can be found in Appendices A and B respectively. G |0.505 -0.495| |0.495 -0.505 | = U S VT |0.707 -0.707| |1.0 0.0 | |0.707 -0.707| |0.707 0.707 | |0.0 0.01| |-0.707 -0.707|
  5. 5. Figure 1. 2 x 2 DSDP Flowsheet. When we solve in IMPL for the DSDP2I case with [DXL, DXU] = [-11.0, 11.0] and [DYL, DYU] = [-1.1, 1.1], SW1 = [-1,-1,1,1] and SW2 = [-1,1,-1,1] using GLPK, LPSOLVE, COINMP and IPOPT, we get the following different solutions for the variables dw and dx: GLPK … dw1 = |-1.41 -1.41 1.41 0.0 | dw2 = | -14.14 14.14 -14.14 15.55 | dx1 = | 9.0 -11.0 11.0 -11.0 | dx2 = | 11.0 -9.0 9.0 -11.0 | LPSOLVE … dw1 = |-1.41 -1.41 1.41 1.41 | dw2 = | -14.14 14.14 -14.14 14.14 | dx1 = | 9.0 -11.0 11.0 -9.0 | dx2 = | 11.0 -9.0 9.0 -11.0 | COINMP … dw1 = | 0.0 0.0 0.0 0.0 | dw2 = | -15.55 15.55 -15.55 15.55 | dx1 = | 11.0 -11.0 11.0 -11.0 | dx2 = | 11.0 -11.0 11.0 -11.0 | IPOPT … dw1 = | -0.84 -0.98 0.87 0.99 | dw2 = | -14.71 14.57 -14.68 14.56 | dx1 = | 9.82 -11.0 11.0 -9.60 | dx2 = | 11.0 -9.62 9.77 -11.0 | The objective function value for all runs is 2.0 given our scaling (equations 2a and 2b). It should be clear that the DSDP is degenerate given that for the same model and data each solver finds a different solution but with the same objective function value. The LPSOLVE solution closely
  6. 6. matches the solution provided in Koung and MacGregor (1993) but this is by coincidence only. The most important aspect of these results is that DSDP itself (automatically) determined that “alpha” or the arbitrary amount to amplify the low gain direction where interestingly the COINMP solution only dithers or perturbs the low gain direction and the physical inputs (dx) are completely correlated i.e., DX’ * DX = 484 * [1,1;1,1] with all diagonal and off-diagonal elements equal. In summary, the ubiquitous existence of feedback in most industrial data should not pose any significant limitation to the unbiased estimation of industrial models in a continuous improvement framework especially when the solution from the DSDP is applied *before* the industrial data collection using a preliminary gain matrix of the process. This approach is not only appropriate for on-line industrial model estimation but should also be used for the off-line process and production models found in planning and scheduling decision-making in order to reduce the offset between the actual and its planned or scheduled target (Kelly and Zyngier, 2008). References Box, G.E.P., MacGregor, J.F., “Analysis of closed-loop dynamic-stochastic systems”, Technometrics, 16, 391-398, (1974). Ljung, L., Gustavsson, I., Soderstrom, T., “Identification of linear multivariable systems operating under linear feedback control”, IEEE Transactions on Automatic Control, 19, 836-840, (1974). Box, G.E.P., MacGregor, J.F., “Parameter estimation with closed-loop operating data”, Technometrics, 18, 371-384, (1976). Tulleken, H.J.A.F., “Generalized binary noise test-signal concept for improved identification-experiment design, Automatica, 26, 37-49, (1990). Koung, C.-W., MacGregor, J.F., “Design of identification experiments for robust control. A geometric approach for bivariate processes”, Industrial Engineering Chemistry Research, 32, (1993). MacGregor, J.F., and Fogal, D.T., “Closed-loop identification: the role of the noise model and prefilters”, Journal of Process Control, 5, 163, 171, (1995). Jiang, X., “Closed-loop system identification with operator intervention”, PhD Thesis, University of Toronto, (1996). Kelly, J.D., “Tuning digital PI controllers for minimal variance in the manipulated input moves applied to imbalanced systems with delay”, Canadian Journal of Chemical Engineering, 76, 967- 974, (1998). Kelly, J.D., Forbes, J.F., “Structured approach to storage allocation for improved process controllability”, American Institute of Chemical Engineering Journal, 44, 1832-1840, (1998). Shreesha, C., Gudi, R.D., “Analysis of pre-filter based closed-loop control-relevant identification methodologies”, Canadian Journal of Chemical Engineering, 82, (2004).
  7. 7. Conner, J.S., Seborg, D.E., “An evaluation of MIMO input designs for process identification”, Industrial and Engineering Chemistry Research, 43, 3847-3854, (2004). Adetola, V., Guay, M., “Parameter convergence in adaptive extreme seeking control”, ADCHEM 2006, IFAC International Symposium on Advanced Control of Chemical Processes, Brazil, 567- 572, (2006). Vanli, O.A.,Del Castillo, E., “Closed-loop system identification for small samples with constraints”, Technometrics, 49, 382, (2007). Haggblom, K.E., Boling, J.M., “Experimental evaluation of input designs for MIMO system identification”, ABO AKADEMI, Process Control Laboratory, Report 08-1, (2008). Kelly, J.D., Zyngier, D., "Continuously improve planning and scheduling models with parameter feedback", FOCAPO 2008, July, (2008). Sababadi, M.S., Poshtan, J., “Identification of an ill-conditioned distillation column process using rotated signals as input”, 7th IFAC International Symposium on Advanced Control of Chemical Processes, Turkey, 834-839, (2009). Kuramoto, A.S.R., Vaillant, O.R., Garcia, C., “Effectiveness of signal excitation design methods for ill-conditioned processes identification”, 8th IFAC International Symposium on Advanced Control of Chemical Processes, Singapore, 337-342, (2012). Appendix A – DSDP-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,130 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Unit-Operation-Port-State-Superstructure (UOPSS) *.UPS File. ! (This file is automatically generated from the Python program !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! &sUnit,&sOperation,@sType,@sSubtype,@sUse MW1,,processc,%blackbox, MW2,,processc,%blackbox, MX1,,processc,, MX2,,processc,, MY1,,processc,, MY2,,processc,, MZ1,,processc,%blackbox, MZ2,,processc,%blackbox, S1,,processc,, S2,,processc,, U1,,processc,, U2,,processc,, VT1,,processc,, VT2,,processc,, &sUnit,&sOperation,@sType,@sSubtype,@sUse ! Number of UO shapes = 14 &sAlias,&sUnit,&sOperation ALLPARTS,MW1, ALLPARTS,MW2, ALLPARTS,MX1, ALLPARTS,MX2, ALLPARTS,MY1, ALLPARTS,MY2, ALLPARTS,MZ1, ALLPARTS,MZ2, ALLPARTS,S1, ALLPARTS,S2, ALLPARTS,U1, ALLPARTS,U2, ALLPARTS,VT1, ALLPARTS,VT2, &sAlias,&sUnit,&sOperation &sUnit,&sOperation,&sPort,&sState,@sType,@sSubtype
  8. 8. MW1,,dw,,out, MW1,,i,,in, MW2,,dw,,out, MW2,,i,,in, MX1,,dx,,out, MX2,,dx,,out, MY1,,dy,,in, MY2,,dy,,in, MZ1,,dz,,in, MZ1,,o,,out, MZ2,,dz,,in, MZ2,,o,,out, S1,,i,,in, S1,,o,,out, S2,,i,,in, S2,,o,,out, U1,,i,,in, U1,,o1,,out, U1,,o2,,out, U2,,i,,in, U2,,o1,,out, U2,,o2,,out, VT1,,i,,in, VT1,,o1,,out, VT1,,o2,,out, VT2,,i,,in, VT2,,o1,,out, VT2,,o2,,out, &sUnit,&sOperation,&sPort,&sState,@sType,@sSubtype ! Number of UOPS shapes = 28 &sAlias,&sUnit,&sOperation,&sPort,&sState ALLINPORTS,MW1,,i, ALLINPORTS,MW2,,i, ALLINPORTS,MY1,,dy, ALLINPORTS,MY2,,dy, ALLINPORTS,MZ1,,dz, ALLINPORTS,MZ2,,dz, ALLINPORTS,S1,,i, ALLINPORTS,S2,,i, ALLINPORTS,U1,,i, ALLINPORTS,U2,,i, ALLINPORTS,VT1,,i, ALLINPORTS,VT2,,i, ALLOUTPORTS,MW1,,dw, ALLOUTPORTS,MW2,,dw, ALLOUTPORTS,MX1,,dx, ALLOUTPORTS,MX2,,dx, ALLOUTPORTS,MZ1,,o, ALLOUTPORTS,MZ2,,o, ALLOUTPORTS,S1,,o, ALLOUTPORTS,S2,,o, ALLOUTPORTS,U1,,o1, ALLOUTPORTS,U1,,o2, ALLOUTPORTS,U2,,o1, ALLOUTPORTS,U2,,o2, ALLOUTPORTS,VT1,,o1, ALLOUTPORTS,VT1,,o2, ALLOUTPORTS,VT2,,o1, ALLOUTPORTS,VT2,,o2, &sAlias,&sUnit,&sOperation,&sPort,&sState &sUnit,&sOperation,&sPort,&sState,&sUnit,&sOperation,&sPort,&sState MW1,,dw,,S1,,i, MW2,,dw,,S2,,i, MX1,,dx,,VT1,,i, MX2,,dx,,VT2,,i, MZ1,,o,,U1,,i, MZ2,,o,,U2,,i, S1,,o,,MZ1,,dz, S2,,o,,MZ2,,dz, U1,,o1,,MY1,,dy, U1,,o2,,MY2,,dy, U2,,o1,,MY1,,dy, U2,,o2,,MY2,,dy, VT1,,o1,,MW1,,i, VT1,,o2,,MW2,,i, VT2,,o1,,MW1,,i, VT2,,o2,,MW2,,i, &sUnit,&sOperation,&sPort,&sState,&sUnit,&sOperation,&sPort,&sState ! Number of UOPSPSUO shapes = 16 &sAlias,&sUnit,&sOperation,&sPort,&sState,&sUnit,&sOperation,&sPort,&sState ALLPATHS,VT1,,o1,,MW1,,i, ALLPATHS,VT2,,o1,,MW1,,i, ALLPATHS,VT1,,o2,,MW2,,i, ALLPATHS,VT2,,o2,,MW2,,i, ALLPATHS,U1,,o1,,MY1,,dy, ALLPATHS,U2,,o1,,MY1,,dy, ALLPATHS,U1,,o2,,MY2,,dy, ALLPATHS,U2,,o2,,MY2,,dy, ALLPATHS,S1,,o,,MZ1,,dz, ALLPATHS,S2,,o,,MZ2,,dz,
  9. 9. ALLPATHS,MW1,,dw,,S1,,i, ALLPATHS,MW2,,dw,,S2,,i, ALLPATHS,MZ1,,o,,U1,,i, ALLPATHS,MZ2,,o,,U2,,i, ALLPATHS,MX1,,dx,,VT1,,i, ALLPATHS,MX2,,dx,,VT2,,i, &sAlias,&sUnit,&sOperation,&sPort,&sState,&sUnit,&sOperation,&sPort,&sState Appendix B – DSDP-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,@sValue START,-1.0 BEGIN,0.0 END,4.0 PERIOD,1.0 LARGE,1000.0 DXL1,-11.0 DXU1,11.0 DXL2,-11.0 DXU2,11.0 DYL1,-1.1 DYU1,1.1 DYL2,-1.1 DYU2,1.1 &sCalc,@sValue !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Constant Data (Parameters) !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! &sData,@sValue VT1,VT2 0.707,-0.707 -0.707,-0.707 &sData,@sValue &sData,@sValue S1,S2 1.0,0.0 0.0,0.01 &sData,@sValue &sData,@sValue U1,U2 0.707,-0.707 0.707,0.707 &sData,@sValue &sData,@sValue SX1,SX2 0,0 &sData,@sValue &sData,@sValue SW1,SW2 -1,-1 -1,1 1,-1 1,1 &sData,@sValue &sData,@sValue SZ1,SZ2 0,0 &sData,@sValue &sData,@sValue SY1,SY2 0,0 &sData,@sValue !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Chronological Data (Periods) !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @rPastTHD,@rFutureTHD,@rTPD START,END,PERIOD @rPastTHD,@rFutureTHD,@rTPD !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Construction Data (Pointers) !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  10. 10. Include-@sFile_Name Include-@sFile_Name !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Capacity Data (Prototypes) !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! &sUnit,&sOperation,@rRate_Lower,@rRate_Upper MX1,,0.0,LARGE MX2,,0.0,LARGE VT1,,-LARGE,LARGE VT2,,-LARGE,LARGE MW1,,0.0,LARGE MW2,,0.0,LARGE S1,,-LARGE,LARGE S2,,-LARGE,LARGE MZ1,,0.0,LARGE MZ2,,0.0,LARGE U1,,-LARGE,LARGE U2,,-LARGE,LARGE MY1,,0.0,LARGE MY2,,0.0,LARGE &sUnit,&sOperation,@rRate_Lower,@rRate_Upper &sUnit,&sOperation,&sPort,&sState,@rTeeRate_Lower,@rTeeRate_Upper ALLINPORTS,-LARGE,LARGE ALLOUTPORTS,-LARGE,LARGE MX1,,dx,,DXL1,DXU1 MX2,,dx,,DXL2,DXU2 &sUnit,&sOperation,&sPort,&sState,@rTeeRate_Lower,@rTeeRate_Upper &sUnit,&sOperation,&sPort,&sState,@rTotalRate_Lower,@rTotalRate_Upper ALLINPORTS,-LARGE,LARGE ALLOUTPORTS,-LARGE,LARGE MY1,,dy,,DYL1,DYU1 MY2,,dy,,DYL2,DYU2 &sUnit,&sOperation,&sPort,&sState,@rTotalRate_Lower,@rTotalRate_Upper &sUnit,&sOperation,&sPort,&sState,@rYield_Lower,@rYield_Upper,@rYield_Fixed MX1,,dx,,-1.0,1.0 MX2,,dx,,-1.0,1.0 VT1,,i,,1.0,1.0 VT1,,o1,,VT1[1],VT1[1] VT1,,o2,,VT1[2],VT1[2] VT2,,i,,1.0,1.0 VT2,,o1,,VT2[1],VT2[1] VT2,,o2,,VT2[2],VT2[2] MW1,,i,,-1.0,1.0 MW1,,dw,,-LARGE,LARGE MW2,,i,,-1.0,1.0 MW2,,dw,,-LARGE,LARGE S1,,i,,1.0,1.0 S1,,o,,S1[1],S1[1] S2,,i,,1.0,1.0 S2,,o,,S2[2],S2[2] MZ1,,dz,,-1.0,1.0 MZ1,,o,,-1.0,1.0 MZ2,,dz,,-1.0,1.0 MZ2,,o,,-1.0,1.0 U1,,i,,1.0,1.0 U1,,o1,,U1[1],U1[1] U1,,o2,,U1[2],U1[2] U2,,i,,1.0,1.0 U2,,o1,,U2[1],U2[1] U2,,o2,,U2[2],U2[2] MY1,,dy,,-1.0,1.0 MY2,,dy,,-1.0,1.0 &sUnit,&sOperation,&sPort,&sState,@rYield_Lower,@rYield_Upper,@rYield_Fixed !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Cost Data (Pricing) !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! &sUnit,&sOperation,@rFlowPro_Weight,@rFlowPer1_Weight,@rFlowPer2_Weight,@rFlowPen_Weight MW1,,1.0/(ABS(VT1[1])*(DXU1-DXL1)+ABS(VT2[1])*(DXU2-DXL2)),,, MW2,,1.0/(ABS(VT1[2])*(DXU1-DXL1)+ABS(VT2[2])*(DXU2-DXL2)),,, &sUnit,&sOperation,@rFlowPro_Weight,@rFlowPer1_Weight,@rFlowPer2_Weight,@rFlowPen_Weight !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Command Data (Future Provisos) !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! &sUnit,&sOperation,@rSetup_Lower,@rSetup_Upper,@rBegin_Time,@rEnd_Time ALLPARTS,1,1,BEGIN,END &sUnit,&sOperation,@rSetup_Lower,@rSetup_Upper,@rBegin_Time,@rEnd_Time
  11. 11. &sUnit,&sOperation,&sPort,&sState,&sUnit,&sOperation,&sPort,&sState,@rSetup_Lower,@rSetup_Upper,@rBegin_Time,@rEnd_Time ALLPATHS,1,1,BEGIN,END &sUnit,&sOperation,&sPort,&sState,&sUnit,&sOperation,&sPort,&sState,@rSetup_Lower,@rSetup_Upper,@rBegin_Time,@rEnd_Time &sUnit,&sOperation,&sPort,&sState,@rYield_Lower,@rYield_Upper,@rYield_Target,@rBegin_Time,@rEnd_Time MW1,,dw,,SW1[1],SW1[1],,0.0,1.0 MW1,,dw,,SW1[2],SW1[2],,1.0,2.0 MW1,,dw,,SW1[3],SW1[3],,2.0,3.0 MW1,,dw,,SW1[4],SW1[4],,3.0,4.0 MW2,,dw,,SW2[1],SW2[1],,0.0,1.0 MW2,,dw,,SW2[2],SW2[2],,1.0,2.0 MW2,,dw,,SW2[3],SW2[3],,2.0,3.0 MW2,,dw,,SW2[4],SW2[4],,3.0,4.0 &sUnit,&sOperation,&sPort,&sState,@rYield_Lower,@rYield_Upper,@rYield_Target,@rBegin_Time,@rEnd_Time