* The MC3i program was written by Gene Preston 08/19/2015 as a variation off MC3 by inverting and reversing F(x). * Now the F(x) is the LOLP for load level F(sum of generation minus load level x). F(x) is monotone decreasing. * In this formualation most of the variables can be single precision without losing calculation accuracy. * The Monte Carlo solution is removed because only the direct solution has been modified. * * BEGIN THE DIRECT SOLUTION CHARACTER*50 A/' '/ REAL F(-1:10703)/1.,0.,10703*0./,LOLE,ALLR*8,EUE*8,ENGY,LOLH INTEGER PMAX(10)/5,10,13,22,43,57,101,198,248,276/,PMXS/0/ REAL FOR(10)/.15,.10,.09,.07,.06,.05,.04,.04,.04,.04/ REAL HLOAD(24,365),DAILY(24) &/.56,.60,.64,.68,.72,.76,.80,.84,.88,.92,.96,1.0, & 1.0,.96,.92,.88,.84,.80,.76,.72,.68,.64,.60,.56/ OPEN(3,FILE='OP') * CALCULATE F(X) COPT CAPACITY OUTAGE PROBABILITY TABLE (OR CURVE) F(X) USING THE DIRECT METHOD T1=0. ! T1 is the end of the first run time, also used to detect the first pass CALL CPU_TIME(T0) ! this is Compaq Fortran at t=0, T1-T0 is the run time in seconds DO 1 K=1,11 ! repeat 11 times DO 1 I=1,10 ! ten original generators PMXS=PMXS+PMAX(I) ! TOTAL INSTALLED GENERATION CAPACITY PMXS = PMAX SUM DO 1 IX=K*973,0,-1 ! total capacity of all 110 generators, do it in batches of 10 J=IX-PMAX(I) IF(J.LT.0) J=-1 ! SINCE J=0 CAN HAVE AN F(X)<1 WE MUST PUT THE REFERENCE PR=1 AT X=-1 F(IX)=(1.D0-FOR(I))*F(IX)+FOR(I)*F(J) ! SHIFT THE DOWN STATE TO THE RIGHT INSTEAD OF THE UP STATE - corrected 1. to 1.D0 on 11/26/2015 IF(F(IX).LT.1.E-37) F(IX)=0. ! THIS PREVENTS AN UNDERFLOW ERROR MESSAGE 1 CONTINUE * INITIALIZE CONSTANTS AND VARIABLES, D1-D4 SELECTED TO MAKE LOLE = 0.1 d/y D1=2000. ! 341 MIN LD DAYS PEAK DEMANDS D2=8000. ! 10 WINTER DAYS PEAK DEMANDS D3=7000. ! 14 SUMMER DAYS PEAK DEMANDS D4=1424. ! CONSTANT MW ADDER EVERY HOUR 9 LOLE=0. ! LOSS OF LOAD EXPECTATION LOLH=0. ! LOSS OF LOAD HOURS ALLR=1. ! ANNUAL LOAD LOSS RISK EUE=0.D0 ! EXPECTED UNSERVED ENERGY ENGY=0. ! TOTAL LOAD ENERGY PEAKD=0. ! REMEMBER THE PEAK DEMAND * SWEEP THROUGH THE YEAR CALCULATING LOADS AND INDICES DO 3 J=1,365 DO 3 I=1,24 HLOAD(I,J)=IFIX(D1*DAILY(I)+.01) ! LIGHT LOAD PERIOD IF(J.LE.10) HLOAD(I,J)=IFIX(D2*DAILY(I)+.01) ! 10 WINTER PEAK DEMANDS IF(J.GE.201.AND.J.LE.214) HLOAD(I,J)=IFIX(D3*DAILY(I)+.01) ! 14 SUMMER PEAK DEMANDS HLOAD(I,J)=HLOAD(I,J)+D4 ! ADD THE CONSTANT LOAD IF(HLOAD(I,J).GT.PEAKD) PEAKD=HLOAD(I,J) ! REMEMBER THE PEAK DEMAND IF(I.EQ.12) THEN ! THIS IS THE PEAK HOUR LOLE=LOLE+F(PMXS-HLOAD(I,J)) ! LOLE = RUNNING SUM OF THE DAILY LOLP ALLR=ALLR*(1.D0-F(PMXS-HLOAD(I,J))) ! PROBABILITY OF DAILY GEN UP STATES ENDIF DO 2 K=PMXS-HLOAD(I,J),PMXS ! WE KNOW PMXS = 10703 MW BUT I LEFT IT AS A VARIABLE FOR OTHER SYSTEMS TO STUDY 2 EUE=EUE+F(K) ! EXPECTED UNSERVED ENERGY LOLH=LOLH+F(PMXS-HLOAD(I,J)) ! LOLH = RUNNING SUM OF THE HOURLY LOLP 3 ENGY=ENGY+HLOAD(I,J) ALLR=1.D0-ALLR * DISPLAY RESULTS WRITE(3,*) ' DIRECT SOLUTION' WRITE(3,*) ' ' WRITE(3,*) ' LOLH LOLE ALLR' WRITE(3,'(3F11.6)') LOLH,LOLE,ALLR WRITE(3,*) ' ' WRITE(3,*) ' MWHEUE MWHTOTAL puEUEppm' WRITE(3,'(F11.5,F12.0,F10.5)') EUE,ENGY,EUE/ENGY*1.D6 WRITE(3,'(/19H RESERVE MARGIN =,F8.2,1H%)') & (10703.-PEAKD)/PEAKD*100. * SHOW THE DIRECT SOLUTION LOLP FOR WINTER, SUMMER, AND OFF PEAK HOURS WRITE(3,*) ' ' WRITE(3,*)' WINTER SUMMER OFF PEAK' WRITE(3,*)'HR MW LOLP MW LOLP MW LOLP' DO 4 I=1,24 4 WRITE(3,'(I3,3(F7.0,F12.8))') I, & HLOAD(I, 1),F(PMXS-HLOAD(I, 1)), & HLOAD(I,201),F(PMXS-HLOAD(I,201)), & HLOAD(I, 11),F(PMXS-HLOAD(I, 11)) WRITE(3,'(/''D1 MIN, D2 WIN, D3 SUM, D4 ADD ='',4I7)') & IFIX(D1),IFIX(D2),IFIX(D3),IFIX(D4) WRITE(*,*) ' LOLH LOLE puEUEppm' WRITE(*,'(2F11.6,F11.3)') LOLH,LOLE,EUE/ENGY*1.D6 WRITE(*,'(''D1 MIN, D2 WIN, D3 SUM, D4 ADD ='',4I10)') & IFIX(D1),IFIX(D2),IFIX(D3),IFIX(D4) IF(T1.LE.0.) THEN CALL CPU_TIME(T1) WRITE(3,'(''TIME ='',F10.3,'' SEC'')') T1-T0 WRITE(*,'(''TIME ='',F10.3,'' SEC'')') T1-T0 ENDIF WRITE(*,*) 'ENTER NEW D1,D2,D3,D4 OR RETURN TO CONTINUE' READ(*,'(A50)') A IF(A.NE.' ') THEN READ(A,*) D1,D2,D3,D4 GOTO 9 ENDIF WRITE(*,*) 'FILE OP CONTAINS THE OUTPUT REPORT' END DIRECT SOLUTION LOLH LOLE ALLR 0.225305 0.099956 0.095577 <- the LOLH LOLE and EUE were verified by the RTS program. See the end of this file. MWHEUE MWHTOTAL puEUEppm 33.39506 28573440. 1.16874 RESERVE MARGIN = 13.57% WINTER SUMMER OFF PEAK HR MW LOLP MW LOLP MW LOLP 1 5904. 0.00000000 5344. 0.00000000 2544. 0.00000000 2 6224. 0.00000000 5624. 0.00000000 2624. 0.00000000 3 6544. 0.00000000 5904. 0.00000000 2704. 0.00000000 4 6864. 0.00000000 6184. 0.00000000 2784. 0.00000000 5 7184. 0.00000000 6464. 0.00000000 2864. 0.00000000 6 7504. 0.00000000 6744. 0.00000000 2944. 0.00000000 7 7824. 0.00000001 7024. 0.00000000 3024. 0.00000000 8 8144. 0.00000035 7304. 0.00000000 3104. 0.00000000 9 8464. 0.00000663 7584. 0.00000000 3184. 0.00000000 10 8784. 0.00009990 7864. 0.00000002 3264. 0.00000000 11 9104. 0.00116223 8144. 0.00000035 3344. 0.00000000 12 9424. 0.00998912 8424. 0.00000465 3424. 0.00000000 13 9424. 0.00998912 8424. 0.00000465 3424. 0.00000000 14 9104. 0.00116223 8144. 0.00000035 3344. 0.00000000 15 8784. 0.00009990 7864. 0.00000002 3264. 0.00000000 16 8464. 0.00000663 7584. 0.00000000 3184. 0.00000000 17 8144. 0.00000035 7304. 0.00000000 3104. 0.00000000 18 7824. 0.00000001 7024. 0.00000000 3024. 0.00000000 19 7504. 0.00000000 6744. 0.00000000 2944. 0.00000000 20 7184. 0.00000000 6464. 0.00000000 2864. 0.00000000 21 6864. 0.00000000 6184. 0.00000000 2784. 0.00000000 22 6544. 0.00000000 5904. 0.00000000 2704. 0.00000000 23 6224. 0.00000000 5624. 0.00000000 2624. 0.00000000 24 5904. 0.00000000 5344. 0.00000000 2544. 0.00000000 D1 MIN, D2 WIN, D3 SUM, D4 ADD = 2000 8000 7000 1424 TIME = 0.047 SEC Here is the execution of the RTS 'exact' indices program as you can see the answers are the same which means the MC3i program posted on line is correct. YEAR 1 RESULTS: PERIOD = 8760 HOURS PEAK DEMD = 9424.000 MW LOAD ENGY = 28573. GWh LOAD FACT = 34.612 % PEAK NETD = 9424.000 MW (DEMD-VR) VR E USED = 0. GWh VR E LOST = 0. GWh LOLE(AM) = 0.000000 d/y LOLE(PM) = 0.099956 d/y LOLE = 0.099956 d/y LOLEV = 0.099956 events/y LOLEMW = 148. MW LOLH = 0.225305 h/y LOLH/event= 2.254039 h/event EUE MWh = 33. MWh EUE ppm = 1.17 pu ppm EUE % = 0.000117 %