LUNDS UNIVERSITET MATEMATIKCENTRUM MATEMATISK STATISTIK LABORATION 4: VÄRMEKRAFTVERK MATEMATISK STATISTIK AK, MAS 101:A, VT-01 1 Förberedelser I denna laboration modelleras värmeförlusten i ett kraftverk med en Markovprocess i kontinuerlig tid. Det vi framför allt ska undersöka är fördelningen hos värmeförlusten, svarande mot den totala tid Markovprocessen tillbringar i ett visst tillstånd. Läs igenom Avsnitt 5.1 5.5 i Tilläggskompendiet (TK). 2 Teoretisk härledning av värmeförlust Ett värmekraftverk karakteriseras av tre parametrar effekten e (enhet MW) haveriintensiteten (enhet: dygn 1 ) medelreparationstiden 1/ (enhet: dygn) När kraftverket fungerar, antas det alltså leverera en konstant effekt e. När det går sönder antas det gå sönder helt så att levererad effekt omedelbart sjunker till 0. Den tid kraftverket fungerar innan det går sönder antas vara exponentialfördelad med väntevärdet 1/ och reparationstiden antas vara exponentialfördelad med väntevärdet 1/. (Dessa förutsättningar om exponentialfördelning är allmänt accepterade bland kraftverksingenjörer.) Teoriuppgift 1 Om vi sätter { 0 om kraftverket är helt vid tiden t X (t) = 1 annars vad blir då {X (t), t 0} för någon sorts process? (Obs! Det är inte en livslängdsprocess.) Teoriuppgift 2 Om kraftverket är helt vid tiden 0, hur stor är sannolikheten att det är sönder (a) vid tiden t? (b) både vid tiden s och vid tiden t (> s)? (Ledning: Utnyttja att processen startar om vid tiden s, samt att P(X (s) = 1, X (t) = 1) = P(X (s) = 1) P(X (t) = 1 X (s) = 1).) Det problem vi skall ägna oss åt är följande: Om kraftverket är helt vid en viss tidpunkt och om Z(t) betecknar den energi (enhet MWh) som på grund av haverier förloras under de närmaste t tidsenheterna, vad kan sägas om fördelningen för Z(t), speciellt väntevärdet, variansen och - kvantilen z (t) (som alltså är sådan att P(Z(t) > z (t)) = ), då är liten. Teoriuppgift 3 Uttryck Z(t) med hjälp av den process {X (t), t 0} som infördes i Teoriuppgift 1.
Teoriuppgift 4 Beräkna E(Z(t)), med hjälp av Teoriuppgift 2a) och 3, genom att byta ordning mellan E och. Teoriuppgift 5 Beräkna V(Z(t)) = E(Z(t) 2 ) E(Z(t)) 2. (Ledning: Z(t) 2 blir en dubbelintegral, med integrationsområde {(u, v); 0 u, v t}. Byt ordning mellan E och när du beräknar E(Z(t) 2 ), samt utnyttja Teoriuppgift 2b). Dubbelintegralen E(... ) du dv får delas upp i två termer, beroende på om u < v eller u > v.) Teoriuppgift 6 Ange de numeriska värdena på E(Z(t)) och D(Z(t)) = V(Z(t)) för ett värmekraftverk med e = 70, = 0.02, 1/ = 4.0 tiden 0 = 1 september, tiden t = 1 maj året därpå. Teoriuppgift 7 Vilket värde på z 0.01 (t) fås i föregående uppgift om man antar att Z(t) är approximativt normalfördelad? 3 Att starta Matlab, användning av befintliga m-filer Gå in i MATLAB på det sätt som beskrivs i introduktionslaborationen. Väl inne i MATLAB anger du sedan >> mh_init( MAS101A ) Då skapas automatiskt en sökväg till underbiblioteket...\mas101a\, som innehåller alla m-filer som behövs för datorlaborationerna till kursen (se även appendix för de m-filer du behöver till just denna laboration). Filerna i...\mas101a\ listas med kommandot 1 >> what MAS101A Hjälptexten till en godtycklig fil från listan får du fram genom >> help... där... är namnet på den fil du vill ha hjälptexten för. Om du dessutom vill läsa in hela filen till Matlabs editor anger du >> edit... där återigen... står för filnamnet. Om du gör ändringar i den inlästa filen (ej nödvändigt för att genomföra laborationen) kan du sedan spara filen med ev. ändringar på ditt eget konto med Save As, såsom anges i introduktionslaborationen. 1 Det syns inte i den lista du får upp på skärmen att samtliga filer är av typen.m. 2
4 Simulering av energiförlust Med hjälp av funktionen markovkont_sim 2 kan vi simulera det värmekraftverk som beskrevs i föregående avsnitt. Uppgift 1 Börja med att plotta upp en realisering av processen X (t) för värmekraftverket i Teoriuppgift 6. >> A =... (Utnyttja de numeriska värdena i Teoriuppg 6.) >> X0 =... (Obs! Tillstånden numreras 1 och 2 i Matlab!) >> T =... >> [tau,x,t_hopp] = markovkont_sim(a,t,x0) >> stairs(t_hopp,x) >> axis([0 T 0.5 2.5]); där det sista kommandot ändrade gränserna i grafikfönstret. Bestäm därefter den totala energiförlusten (som lätt kan erhållas från en av utparametrarna till markovkont_sim): >> z =... Upprepa gärna rad 4 och 5 några gånger, så att du ser hur realiseringen av {X (t)} varierar från gång till gång. Anta nu att vi vill undersöka hur pass god normalapproximationen är i Teoriuppgift 7. Genom att simulera värmekraftverket n gånger får vi i ett antal tänkta värmeförluster Z 1,..., Z n. 3 I ett histogram över {Z i } n i=1 får man en bild av Z:s fördelning. Om man speciellt vill avgöra om normalfördelning föreligger, kan en normalplot användas. I denna rangordnas värdena {Z i } n i=1 och ritas ut mot normalfördelningskvantiler på ett sådant sätt att punkterna ligger nära en rät linje då värdena är (approximativt) normalfördelade, och längs en krökt kurva för andra fördelningar (normplot i MATLAB). Funktionen skatta_vfoerlust ritar upp såväl histogram som normalplot över de simulerade värdena. Läs igenom programlistningen i appendix, så att du förstår vad funktionen gör. Uppgift 2 Utför 500 simuleringar 4 av värmekraftverket i Teoriuppgift 6 med hjälp av funktionen skatta_vfoerlust och studera resultatet. Ser data normalfördelade ut? Tror du att den riktiga 0.01-kvantilen skiljer sig mycket ifrån normalfördelningsapproximationen i Teoriuppgift 7? Om inte, åt vilket håll tror du den riktiga kvantilen avviker och varför? Som synes är normalapproximationen i allmänhet sämst i svansarna, och därför blir det approximativa värdet på z 0.01 i Teoriuppgift 7 extra dåligt. Det exakta värdet på z är svårt att bestämma analytiskt, men vi kan använda de simulerade värdena till att skatta 5 z 0.01. Först sorterar vi {Z i } n i=1 i storleksordning, och skriver de sorterade värdena som Z (1)... Z (n). Sedan bildar vi z 0.01 = Z ([0.99n]), 2 Se appendix, eller en utförligare beskrivning i handledningen till laborationen Simulering av Markovprocesser med tillförlitlighetstillämpning. 3 Fortsättningsvis utelämnar vi t och skriver Z i (t) = Z i. På samma sätt förenklar vi och sätter z (t) = z. 4 Beroende på hur snabb din maskin är kan detta antal givetvis anpassas. 5 Teorin för skattningar gås igenom i MAS101:B. 3
som en skattning av z 0.01, där [0.99n] anger heltalsdelen av 0.99n. Om n = 500 ska vi alltså välja z0.01 = Z (495), det sjätte största talet. Observera skillnaden mellan z 0.01, som är ett tal, och z0.01, som är en stokastisk variabel. Med n nya simuleringar får vi ett annat värde på skattningen z0.01. På samma sätt kan vi skatta m = E(Z) och = D(Z). De vanligast förekommande skattningarna är m = 1 n Z i n = i=1 1 n 1 n (Z i m ) 2. i=1 Uppgift 3 Beräkna, för värmekraftverket i Teoriuppgift 6, skattningar av m,, z 0.01 och normalfördelningsapproximationen z 0.01 till z 6 0.01, genom att använda skatta_vfoerlust. (a) Variera antalet iterationer, och undersök om skattningarna av m, värden du fick fram i Teoriuppgift 6 7. och z 0.01 svänger in mot de (b) Jämför skattningarna av z 0.01 och z 0.01 och kommentera skillnaden. (Obs! Jämför med Uppgift 2.) Uppgift 4 (Om du har tid.) Simulera fram värmeförluster Z 1 (t),..., Z n (t) för olika värden på t. Hur stort måste t väljas för att värdena ska se normalfördelade ut, dels vad gäller normalplottar, dels vad gäller skillnaden mellan exakt och approximativ kvantilbestämning? Vilken sats stödjer sig detta resonemang på? 5 Analytisk (approximativ) bestämning av värmeförlustens fördelning I detta avsnitt presenteras en metod att med godtyckligt hög noggrannhet bestämma engergiförlusten Z(t):s fördelning. Börja med att dela in [0, t] i N lika stora intervall av längd h = t/n. Bilda sedan partialsummeprocessen S n = c n X (jh), n = 1, 2,..., N, j=1 där c är en konstant. Om N är stor bör Z(t) och S N ha ungefär samma fördelning, förutsatt att konstanten c väljs lämpligt. Teoriuppgift 8 Hur ska konstanten c väljas? Tyvärr är {S n, n = 1, 2,...} inte en Markovkedja 7, annars hade vi kunna beräkna sannolikhetsfördelningen för S 1, S 2,... rekursivt på vanligt sätt med hjälp av övergångsmatrisen. Om vi emellertid 6 z 0.01 är alltså det tal som räknades fram i Teoriuppgift 7. 7 Fördelningen för S n+1 beror av tidigare värden dels genom S n men också genom X (nh) = S n S n 1. En process i diskret tid som på detta sätt beror på sina tidigare värden vid de två senaste tidpunkterna kallas ibland en Markovkedja av ordning 2. 4
betraktar två typer av sannolikheter: p (n) p (n) 0i = P(S n = i X (0) = 0), 1i = P(S n = i X (0) = 1), n = 1,..., N, i = 0,..., n, så kan dessa tillsammans beräknas rekursivt då n genomlöper {1, 2,..., N }. Eftersom vi antar att kraftverket fungerar vid tiden t = 0 kommer den absoluta sannolikhetsvektorn p (N ) 0 = (p (N ) 00, p (N ) 01,..., p (N ) ) att approximera fördelningen för Z(t)/c för tillräckligt stort N. 0N Teoriuppgift 9 (Frivillig uppgift.) Uttryck storheterna = p (1) 01 och = p (1) 10 med hjälp av, och h. (Ledning: Utnyttja Teoriuppgift 2.) Teoriuppgift 10 (Frivillig uppgift.) Ange en rekursiv formel för p (n) 0i och p (n) 1i med avseende n, med hjälp av storheterna och ovan. Ange även begynnelsevillkor då n = 1 samt randvillkor då i = 0 eller i = n. Ange sedan (lämpligen i en figur) i vilken ordning storheterna beräknas. (Ledning: Betinga på vilket värde X (h) har då du räknar fram rekursionsformeln.) Programmet vfoerlust_foerd beräknar en approximativ fördelning för Z(t) med den rekursiva metod som frågas efter i föregående Teoriuppgift. Resultatet plottas i form av ett stapeldiagram. Uppgift 5 (Plottning av värmeförlustens fördelning.) Utgå från Teoriuppgift 6 och plotta fördelningen för värmeförlusten Z(t). Då N väljs tillräckligt stor (åtminstone 1000) ser man att Z(t):s fördelning i själva verket är en blandning av en diskret och en kontinuerlig fördelning. Vilken är den diskreta fördelningen? Kan du förklara detta? Teoriuppgift 11 (Inga värmeförluster.) Bestäm P(Z(t) = 0) och jämför med det numeriska värde du fick i föregående uppgift. Teoriuppgift 12 (Om du har tid.) Plotta fördelningen för värmeförlusten Z(t) för större värden på t än det du valde i Uppgift 5. Kommentera hur fördelningens form beror av t och jämför med Uppgift 4. 5
6 Appendix Funktionen [z] = vfoerlust(mu,lambda,e,t) simulerar ett värmekraftverk under tiden T och beräknar den totala värmeförlusten z under samma tid, där e = effekten som levereras då kraftverket fungerar lambda = intensiteten kraftverket går sönder med mu = reparationsintensitet function [m_ast,sig_ast,kvantil_ast,nfkv_ast] = skatta_vfoerlust(iter,mu, lambda,e,t,alfa) Funktionen [m_ast,sig_ast,kv_ast,nfkv_ast] = skatta_vfoerlust(iter,mu,lambda,e,t,alfa) beräknar skattningar av värmeförlusten i ett värmekraftverk genom simulering, där m_ast är en skattning av vänteväde sig_ast är en skattning av standardavvikelse kv_ast är en skattning av alfa-kvantil nfkv_ast är en skattning av alfa-kvantilens normalapproximation Övriga inparametrar: e = effekten som levereras då kraftverket fungerar lambda = intensiteten kraftverket går sönder med mu = reparationsintensitet iter = antal iterationer (simulerade värmeförluster) T = tidsintervallet som värmeförlusten beräknas på z = []; for i = 1:iter z = [z vfoerlust(mu,lambda,e,t)]; end; Plottning subplot(1,2,1); hist(z,30); subplot(1,2,2); normplot(z); Beräkna skattningar m_ast = mean(z); sig_ast = std(z); Den i:te simulerade värmeförlusten som läggs till vektorn z 6
y = sort(z); kvantil_ast = y(floor((1-alfa)*length(y))); nfkv_ast = m_ast + norminv(1-alfa)*sig_ast; function [E,D,p] = vfoerlust_foerd(t,lambda,mu,n,e) Funktionen [E,D,p] = vfoerlust_foerd(t,lambda,mu,n,e) beräknar rekursivt sannolikheter i diskret approximation av total energiförlust. Inparametrar: t - tidsintervallet man studerar värmeförlusten under lambda - intensitet med vilken kraftverktet går sönder mu - reparationsintensitet N - antal intervall [0,t] delas upp i e - effekt Utparametrar: E - E(energiförlust) (baserad på diskret approximation) D - D(energiförlust) (baserad på diskret approximation) p - sannolikhetsfördelning för enerigförlust (baserad på diskret approximation) 7