TOBB ETU - ELE 273 - Bahar 2014 Donemi - Proje 1 Teslim: 10 Subat 2014 Monty Hall Problemi Monty Hall problemi, Amerikan TV yarı¸sma programı Let’s Make a Deal’a dayanan bir olasılık bulmacasıdır. Problem adını, yarı¸smanın sunucusu Monty Hall’dan alır. Problem kısaca s¸u s¸ekilde tanımlanabilir: "Bir yarı¸sma programında oldu˘gunuzu ve üç kapıdan birini seçme hakkınız oldu˘gunu varsayalım. Kapılardan birinin ardında bir araba, di˘gerlerinin ardında ise keçiler var. Kapılardan birini, diyelim ki 1’inciyi seçiyorsunuz ve kapıların ardında ne oldu˘gunu bilen sunucu, di˘ger kapılardan birini, diyelim ki ardında keçi olan 3’üncüyü açıyor. Daha sonra size soruyor: "2. kapıyı seçmek ister misiniz?" Seçiminizi de˘gi¸stirmek sizin yararınıza mıdır?"1 Bu projede, bu problemi MATLAB yardımı ile simüle ederek çözeceksiniz. Ula¸smanız gereken sonuç, seçiminizi de˘gi¸stirmeniz ve de˘gi¸stirmemeniz durumlarında, ödülü bulma ihtimalleridir. Bunu bulurken, olasılı˘gın frekans yorumunu kullanarak, çok sayıda yarı¸smayı simüle ederek, kaç tanesinde ödülü bulup bulmayaca˘gınızı sayacaksınız. A¸sa˘gıdaki basamaklar yardımcı olması açısından eklenmi¸stir: Yarı¸sma sayısı: N olsun. 1) i. yarı¸sma için arkasında ödül olan kapı bi ∈ {1, 2, 3} olsun. Ödül e¸sit ihtimalle herhangi bir kapının arkasında bulunabilir. N yarı¸sma için, b = [b1 , b2 , . . . , bN ]T olan ve her bir girdisi 1/3 ihtimalle 1,2 ya da 3 olan N × 1 bir rastgele vektör üretin. MATLAB’ta randint() komutunu kullanabilirisiniz. 2) Ödül bi nolu kutuda iken, di˘ger kutular bo¸s olacaktır. Bo¸s kutu numaralarını s¸u s¸ekilde elde edebilirsiniz: bi + 1 e˘ger bi < 3 ei,1 = bi − 2 e˘ger bi = 3 ve bi + 2 e˘ger bi = 1 ei,2 = bi − 1 e˘ger bi > 1 Bo¸s kutu no’larını elde etmek için farklı teknikler kullanabilirsiniz. Yukarıdaki sadece bir örnek. Elde edece˘giniz bo¸s kutu no’ları N ×2 bir tamsayı matrisi olacaktır ve b vektörüne göre, girdileri, {1, 2, 3} elemanlarından olacaktır. 3) Kutu seçimler için N × 1 boyutunda, {1, 2, 3} sayılarından olu¸ssan rastgele ˆ = [ˆb1 , ˆb2 , . . . , ˆbN ]T b vektör üretilebilir. 4) Bo¸s kutu açılınca yeni seçilen kutu, fikir de˘gi¸stirme durumunda ei,1 veya ei,2 ˆbi,yeni = bi e˘ger ˆbi = bi e˘ger ˆbi = 6 bi olacaktır. Yani, fikir de˘gi¸stirme durumunda, ilk seçilmi¸s kutuda ödül yok ise, ödüllü kutu seçilmi¸s olacak; ancak, ödüllü kutu seçilmi¸s ise, açılmamı¸s di˘ger bo¸s kutu seçilmi¸s olacaktır. Sonuç olarak, ödülü bulma ihtimali, fikir de˘gi¸stirmeme durumunda, N 1 X I(bi , ˆbi ) N i=1 fikir de˘gi¸stirme durumunda ise, N 1 X I(bi , ˆbi,yeni ) N i=1 ki burada I(x, y) = 1 Vikipedi’den 1 e˘ger x = y . 0 e˘ger x = 6 y alınmı¸stır. 1 Fikir degistirme durumu 0.74 0.72 Kazanma ihtimali 0.7 0.68 0.66 0.64 0.62 0.6 0.58 100 1000 10000 N 100000 1000000 Fig. 1. Örnek s¸ekil. Bu s¸ekli elde etmek için, her bir N de˘geri için, fonksiyon 10 kere çalı¸stırıldı ve 5 farklı N de˘geri için 5 × 10 matrisi olarak sonuç kaydedildi. plot(matris,‘o-’) komutu ile çizdirildi. Sekilde ¸ görüldü˘gü üzere, N de˘geri büyüdükçe, deney varyasyonu azalmakta ve simülasyon, daha az de˘gi¸sken sonuç üretmekte. Teslim edilecek dokümanlar: 1) MATLAB kodu (m-file ve fonksiyon formatında) Örnek: function sonuc = simulate_Monty_Hall(N,fikir_durumu) ...matlab kodu ... sonuc = ...; end Bu fonksiyon, deney sayısı N ve fikir_durumu de˘gerlerini girdi olarak alıp, Monty-Hall deneyini N kere fikir_durumu için tekrarlayıp, toplam kazanma sayısını, toplam yarı¸sma sayısı N ’e bölerek, fikir_durumu için kazanma ihtimalini hesaplamalıdır ve sonuç olarak ihtimal de˘gerini vermelidir. MATLAB komutu için örnek: » N=100; » fikir_durumu = ‘De˘gi¸stirme’ » simulate_Monty_Hall(N,fikir_durumu) ans = » 0.3345; » fikir_durumu = ‘De˘gi¸stir’ » simulate_Monty_Hall(N,fikir_durumu) ans = » 0.6673 2) Elde etti˘giniz fonksiyonu, fikir_durumu = ‘De˘gi¸stir’ durumunda N = 100, 1000, 10000, 100000, 1000000 için ayrı ayrı 10’ar kere ko¸sturarak, 5×10 ebadında kazanma olasılık matrisini elde edip s¸ekildeki gibi çizdiren MATLAB kodu ve bu kodu kullanarak elde etti˘giniz s¸ekilden, yukarıda gösterildi˘gi gibi bir örnek. MATLAB’ta iç içe geçmi¸s iki for döngüsü ile bunu yapabilirsiniz. Önemli Not: Teslim etti˘giniz dokuman en fazla 2 sayfa (tek taraflı print için) olmalıdır. Font büyüklü˘gü en az 10pt, MATLAB kodu anla¸sılabilir s¸ekilde satırlar halinde yazılmalıdır. Ekledi˘giniz s¸ekil, anla¸sılabilir büyüklükte olmalıdır. 2
© Copyright 2024 Paperzz