Stránka 1 z 1

Domácí úloha 2011

Napsal: 1. 3. 2011 09:39
od Domácí úloha 2011
Nechcete někdo napsat správné řešení? :D ..

Re: Domácí úloha 2011

Napsal: 1. 3. 2011 10:07
od PetrK
Pochybuju, ze by sem nekdo dal uplne reseni, spis se zeptej, jestli potrebujes hint na nejakou konkretni ulohu.

Treba ja sem se zatim neprenes pres podminku u ulohy 2 "Simulovani doby prichodu a obsluhy provedte pouze jedenkrat", napadlo me jenom reseni hrubou silou, kde to nasimuluju vse a vyberu to nejlepsi.

Re: Domácí úloha 2011

Napsal: 1. 3. 2011 12:37
od 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)

Re: Domácí úloha 2011

Napsal: 1. 3. 2011 14:14
od PetrK
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.

Re: Domácí úloha 2011

Napsal: 3. 3. 2011 18:19
od mifeet
mwa píše:Nemáte někdo k dispozici řešení z minulých let? (bláhová otázka, že)
Něco se dá najít na KolejNETu, stačí vyhledat soubory "*.r"

Re: Domácí úloha 2011

Napsal: 4. 3. 2011 19:29
od banka
ta banka je celej ten zdrojak?

Re: Domácí úloha 2011

Napsal: 6. 3. 2011 23:23
od TiredOfStatistics
PetrK píš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.
zo zadania: "bla bla bla ... na zaklade nove vygenerovanych dat (pro jeden den) urcete minimalni pocet otevrenych prepazek, tak aby s pravdepodobnosti alespon 90% cekal prichozi ridic mene nez 10 minut ... simulovani bla bla bla"

Takze ide o to, aby tvoj odhad bol spravny specificky pre dat, ktore si ty vygeneroval, nie pre vsetky mozne mnoziny dat.

Ergo podla mna sa simulacia urobi tak, ze si vygenerujes casy prichodov vodicov a casy ich obsluhy a simulaciu zacnes s jednou otvorenou priehradkou. postupne ako budes obsluhovat dalsich vodicov zistujes ci existuje priehradka, ku ktorej by sa dany vodic dostal v case mensom ako 10 minut ak ano posles ho k tej priehradke ak nie otvoris dalsiu. Pre kazdu priehradku si pamatas kolko ludi obsluzila a na konci dna zlejes priehradky, ktore dokopy obsluzili menej ako 10% vodicov do jednej a spocitas kolko si pouzil priehradok

Dufam, ze to riesenie je spravne :)


TDz

Re: Domácí úloha 2011

Napsal: 7. 3. 2011 15:56
od ondr4
Nevíte někdo, jak jít na teoretickou část úlohy 1f) ? Docela by mi to pomohlo.

Re: Domácí úloha 2011

Napsal: 9. 3. 2011 19:12
od __
mě by docela pomohlo 1d, e, f :D