TOBB ETU - ELE 273 - Bahar 2014 Donemi - Proje

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