Cvičení 8 – Řízené HMŘ Příklad 1.: Je sledována výrobní linka, která se může nacházet buď v provozu (stav 0) nebo v opravě (stav 1). Ve stavu 0 je možný provoz „bez kontroly agregátů“ (strategie 1) nebo „s kontrolou agregátů“ (strategie 2). Ve stavu 1 je možno rozlišit opravu „bez výměny agregátů“ (strategie 1) nebo „s výměnou agregátů“ (strategie 2). Matice přechodu a matice výnosů jsou následující:       −              −        22 13=, 0,60,4 0,60,4=, 51 02=, 0,80,2 0,50,5= 2211 RPRP . Pro první tři kroky najděte maximální střední hodnotu celkového výnosu a optimální strategii. Výsledek: V 1., 2. a 3. kroku je vektor optimálních strategií       2 2 . Vektory v1, v2, v3 jsou:                   − 56,0 76,2 , 08,0 28,2 , 4,0 8,1 Návod na řešení v MATLABu: Zadáme matice 1 P, 1 R, 2 P, 2 R: P1=[0.5 0.5;0.2 0.8]; R1=[2 0;1 -5]; P2=[0.4 0.6;0.4 0.6]; R2=[3 1;2 -2]; Vypočteme vektory q1=diag(P1*R1’); q2=diag(P2*R2’); Vypočteme vektor v1=max(q1,q2) (Protože první složka vektoru v1 odpovídá první složce vektoru q2, znamená to, že když je linka v provozu, je optimální strategie v 1. kroku strategie 2. Protože druhá složka vektoru v1 odpovídá druhé složce vektoru q2, znamená to, že když je linka v opravě, je optimální strategie v 1. kroku strategie 2.) Spočítáme střední hodnotu celkového výnosu ve 2. kroku pro strategii 1, je-li linka v provozu: v2_provoz_s1= q1(1)+P1(1,1)*v1(1)+P1(1,2)*v1(2) a totéž pro strategii 2: v2_provoz_s2= q2(1)+P2(1,1)*v1(1)+P2(1,2)*v1(2) Dále spočítáme střední hodnotu celkového výnosu ve 2. kroku pro strategii 1, je-li linka v opravě: v2_oprava_s1= q1(2)+P1(2,1)*v1(1)+P1(2,2)*v1(2) a totéž pro strategii 2: v2_oprava_s2= q2(2)+P2(2,1)*v1(1)+P2(2,2)*v1(2) Vypočítáme vektor v2: v2=[max(v2_provoz_s1, v2_provoz_s2); max(v2_oprava_s1, v2_oprava_s2)] (Vidíme, že první složka vektoru v2 odpovídá strategii 2 a druhá složka rovněž.) Spočítáme střední hodnotu celkového výnosu ve 3. kroku pro strategii 1, je-li linka v provozu: v3_provoz_s1= q1(1)+P1(1,1)*v2(1)+P1(1,2)*v2(2) a totéž pro strategii 2: v3_provoz_s2= q2(1)+P2(1,1)*v2(1)+P2(1,2)*v2(2) Dále spočítáme střední hodnotu celkového výnosu ve 3. kroku pro strategii 1, je-li linka v opravě: v3_oprava_s1= q1(2)+P1(2,1)*v2(1)+P1(2,2)*v2(2) a totéž pro strategii 2: v3_oprava_s2= q2(2)+P2(2,1)*v2(1)+P2(2,2)*v2(2) Vypočítáme vektor v3: v3=[max(v3_provoz_s1, v3_provoz_s2); max(v3_oprava_s1, v3_oprava_s2)] (Vidíme, že první složka vektoru v3 odpovídá strategii 2 a druhá složka rovněž.) Návod na řešení v MATLABu pomocí funkce rekurse.m: Použijeme funkci rekurse.m (v r. 20212 ji vytvořila Veronika Hajnová), která pomocí rekurentní metody hledá pro h různých strategií optimální strategii pro n prvních kroků a počítá vektory maximálních středních hodnot pro první až n-tý krok. Zadáme matice 1 P, 1 R, 2 P, 2 R a počet kroků n: P1=[0.5 0.5;0.2 0.8]; R1=[2 0;1 -5]; P2=[0.4 0.6;0.4 0.6]; R2=[3 1;2 -2];n=3; Sestavíme matice P a R: P=[P1;P2];R=[R1;R2]; Zavoláme funkci rekurse.m: [v,m] = rekurse(P,R,n) Příklad 2.: Závod produkuje nějaký spotřební výrobek, u něhož lze rozeznat dva stavy: stav 0 – výrobek je úspěšný s dobrým odbytem a cenou, stav 1 – výrobek je neúspěšný, odbyt vázne a cena je nízká. Při 1. strategii vedení závodu neinvestuje ani do technického rozvoje ani do reklamy. Při této strategii je matice přechodu       = 6,04,0 5,05,01 P a matice výnosů       − = 73 391 R . Při 2. strategii vedení závodu zajistí technický rozvoj a investuje do reklamy. Matice přechodu:       = 3,07,0 2,08,02 P , matice výnosů:       − = 191 442 R . Pomocí iterační metody je třeba zjistit, jakou strategii doporučit vedení závodu, aby střední hodnota celkového výnosu byla maximální. Výsledek: Vektor optimálních strategií je       2 2 , tedy větší zisk přinese ta strategie, která zahrnuje náklady na technický rozvoj a reklamu výrobku. Návod na řešení v MATLABu pomocí funkce howardn.m: Použijeme funkci howardn.m (v r. 2012 ji vytvořil Jakub Buček). Zadáme matice: P1=[0.5 0.5;0.4 0.6];P2=[0.8 0.2;0.7 0.3];R1=[9 3;3 -7];R2=[4 4;1 -19]; Zavoláme funkci howardn.m: D=howardn([P1 P2],[R1 R2]) Dostaneme výstupní matici D, která obsahuje vektory optimálních strategií pro jednotlivé kroky. D = 1 1 2 2 2 2 Příklad 3.: U souboru dopravních letadel určitého typu byly získány informace, na jejichž základě bylo možno specifikovat z celé řady různých situací, v nichž se letadla nacházejí, následující 4 stavy: stav 1 – let, stav 2 – oprava, stav 3 – revize, stav 4 – čekání. Potřebné údaje pro odhad matice přechodu byly získány z dispečerských záznamů, které se vedou pro jednotlivá letadla. Dále bylo možné u stavů oprava, revize a čekání rozlišit různé alternativy. Ve stavu oprava byly uvažovány alternativy „oprava bez dílčích agregátů“ a „oprava s výměnou agregátů“. Rozhodujícím kritériem pro rozlišení alternativ ve stavu revize byla délka trvání revizí. Byly užity alternativy „krátkodobá revize“ a „dlouhodobá revize“. V případě stavu čekání byly zvoleny alternativy „čekání bez zvláštní péče“ a „čekání v pohotovosti“. Pravděpodobnosti přechodu u jednotlivých stavů i alternativ a údaje o ocenění přechodů, které byly získání z expertních odhadů, jsou uvedeny v tabulce: Stav alternativa Pravděpodobnosti přechodu Ocenění 1 1 0,4 0 0,1 0,5 10 0 1 2 2 1 0,1 0,8 0 0,1 7 -3 0 -2 2 0,15 0,7 0 0,15 8 -4 0 -3 3 1 0,15 0 0,8 0,05 6 0 -3 -2 2 0,05 0 0,9 0,05 9 0 -2 -2 4 1 0,15 0 0,05 0,8 5 0 -2 -1 2 0,3 0 0 0,7 4 0 0 -2 Pomocí funkce howardn.m najděte vektor optimálních strategií. Zadáme matice: P1=[0.4 0 0.1 0.5;0.1 0.8 0 0.1;0.15 0 0.8 0.05;0.15 0 0.05 0.8]; P2=[0.4 0 0.1 0.5;0.15 0.7 0 0.15;0.05 0 0.9 0.05;0.3 0 0 0.7]; R1=[10 0 1 2;7 -3 0 -2;6 0 -3 -2;5 0 -2 -1]; R2=[0 0 0 0;8 -4 0 -3;9 0 -2 -2;4 0 0 -2]; Zavoláme funkci howardn.m: D=howardn([P1 P2],[R1 R2]) Dostaneme výstupní matici D, která obsahuje vektory optimálních strategií pro jednotlivé kroky. D = 1 1 2 1 1 2 1 2 1 2 1 2 Výsledek: vektor optimálních strategií je (1 2 1 2)T .