od PetrK » 1. 3. 2011 14:14
mwa píše:Podle mne se to asi tak má dělat, ale nevím, proč pro vybraný počet přepážek smíme udělat simulaci jen jednoho dne. Vždyť z toho je jen strašně málo údajů na výpočet té pravděpodobnosti, ne?
Nemáte někdo k dispozici řešení z minulých let? (bláhová otázka, že)
Ja sem myslel, ze po nas chteji udelat jednu simulaci pro 20 prepazek a z toho nejak spocitat, kolik min musi byt otevrenych, ale asi necham reseni, ze tech simulaci udelam 20 pro ruzny pocet prepazek.
Kompletni reseni z minulych let sem nevidel, ale da se dost dobre poskladat z hintu tady na foru, nebo na strankach cvicicich. Na jednech strankach z prednekolika let sem nasel kod pro generovani, nepamatuju si kde, takze autor zustane neznamy (velmi podobny priklad jako letosni):
Kód: Vybrat vše
### Volani: banka.jedenden() pokud jsou otevreny vsechny prepazky
### banka.jedenden(FALSE) pokud nejsou otevreny vsechny prepazky
banka.jedenden <- function(vsechnyprepazky=TRUE) {
### Inicializace
pocetintervalu <- 3
indexi <- 1:pocetintervalu
mu <- c(32/60,26/60,50/60)
zmena <- c(90,390,480)
pocetprepazek <- 5
lambda <- 10/60
obsluha <- rep(0,pocetprepazek)
index <- 1:pocetprepazek
if (vsechnyprepazky) { maxindex <- c(5,5,5) }
else { maxindex <- c(4,3,5) }
### Generovani prichodu
prichod <- NULL
cas <- rexp(1,mu[1])
for (i in 1:pocetintervalu) {
while (cas<=zmena[i]) {
prichod <- c(prichod,cas)
cas <- cas + rexp(1,mu[i])
}
}
pocetklientu <- length(prichod)
### Zaznamenani obsluhy klientu
prubeh <- matrix(0,pocetklientu,4)
prubeh[,1] <- prichod
for (i in 1:pocetklientu) {
k <- indexi[ (c(0,zmena[-pocetintervalu])<prichod[i]) & (zmena>=prichod[i]) ]
jmin <- min(index[obsluha[1:maxindex[k]]==min(obsluha[1:maxindex[k]])])
tmin <- obsluha[jmin]
casobsluhy <- rexp(1,lambda)
if (prichod[i]<tmin) {
prubeh[i,2] <- tmin
prubeh[i,3] <- tmin + casobsluhy
}
else {
prubeh[i,2] <- prichod[i]
prubeh[i,3] <- prichod[i] + casobsluhy
}
obsluha[jmin] <- prubeh[i,3]
prubeh[i,4] <- jmin
}
### Vypis (aka Return)
list(prubeh=prubeh,pocetklientu=pocetklientu)
} #end function
btw. ta uloha neni tezka, jak to chci delat sem mel vymysleno za chvili, ale vytvorit to v R bylo peklo.
[quote="mwa"]Podle mne se to asi tak má dělat, ale nevím, proč pro vybraný počet přepážek smíme udělat simulaci jen jednoho dne. Vždyť z toho je jen strašně málo údajů na výpočet té pravděpodobnosti, ne?
Nemáte někdo k dispozici řešení z minulých let? (bláhová otázka, že)[/quote]
Ja sem myslel, ze po nas chteji udelat jednu simulaci pro 20 prepazek a z toho nejak spocitat, kolik min musi byt otevrenych, ale asi necham reseni, ze tech simulaci udelam 20 pro ruzny pocet prepazek.
Kompletni reseni z minulych let sem nevidel, ale da se dost dobre poskladat z hintu tady na foru, nebo na strankach cvicicich. Na jednech strankach z prednekolika let sem nasel kod pro generovani, nepamatuju si kde, takze autor zustane neznamy (velmi podobny priklad jako letosni):
[code]### Volani: banka.jedenden() pokud jsou otevreny vsechny prepazky
### banka.jedenden(FALSE) pokud nejsou otevreny vsechny prepazky
banka.jedenden <- function(vsechnyprepazky=TRUE) {
### Inicializace
pocetintervalu <- 3
indexi <- 1:pocetintervalu
mu <- c(32/60,26/60,50/60)
zmena <- c(90,390,480)
pocetprepazek <- 5
lambda <- 10/60
obsluha <- rep(0,pocetprepazek)
index <- 1:pocetprepazek
if (vsechnyprepazky) { maxindex <- c(5,5,5) }
else { maxindex <- c(4,3,5) }
### Generovani prichodu
prichod <- NULL
cas <- rexp(1,mu[1])
for (i in 1:pocetintervalu) {
while (cas<=zmena[i]) {
prichod <- c(prichod,cas)
cas <- cas + rexp(1,mu[i])
}
}
pocetklientu <- length(prichod)
### Zaznamenani obsluhy klientu
prubeh <- matrix(0,pocetklientu,4)
prubeh[,1] <- prichod
for (i in 1:pocetklientu) {
k <- indexi[ (c(0,zmena[-pocetintervalu])<prichod[i]) & (zmena>=prichod[i]) ]
jmin <- min(index[obsluha[1:maxindex[k]]==min(obsluha[1:maxindex[k]])])
tmin <- obsluha[jmin]
casobsluhy <- rexp(1,lambda)
if (prichod[i]<tmin) {
prubeh[i,2] <- tmin
prubeh[i,3] <- tmin + casobsluhy
}
else {
prubeh[i,2] <- prichod[i]
prubeh[i,3] <- prichod[i] + casobsluhy
}
obsluha[jmin] <- prubeh[i,3]
prubeh[i,4] <- jmin
}
### Vypis (aka Return)
list(prubeh=prubeh,pocetklientu=pocetklientu)
} #end function
[/code]
btw. ta uloha neni tezka, jak to chci delat sem mel vymysleno za chvili, ale vytvorit to v R bylo peklo.