Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 07. 01. 2014 22:27 — Editoval philber (03. 02. 2014 00:39)

philber
Zelenáč
Místo: Praha
Příspěvky: 19
Pozice: student
Reputace:   
 

Simulace - 2 dodavatelé brambor

Ahoj chtěl bych Vás požádat jestli byste nebyl někdo ochotný poradit s příkladem. Mám zadanou úlohu

# Kvalita brambor se liší v závislosti na radě náhodných vlivů, například na kvalitě úrody nebo
# kvalitě uskladnění, takže průměrné množství použitelných brambor. které zbude po oloupání a
# vykrájení 1 kg brambor je v každé dodávce brambor jiné. Menza má dlouholetého dodavatele
# brambor o kterém ví, že kvalita jeho brambor je taková, že se tento průměr pohybuje kolem hodnoty
# 0,75 kg se směrodatnou odchylkou 0,05 kg. Nyní objevila nového dodavatele, o kterém nemá
# žádnou předchozí informaci. Původní dodavatel prodává l kg brambor za 5 Kč, nový dodavatel za 3
# Kč. 1 kg oloupaných brambor v menze prodají strávníkům za 50 Kč a oloupání 1 kg brambor stojí 5
# Kč. Menza má v úmyslu koupit 1 q brambor. Nejprve osloví jednoho dodavatele a chce odhadnout,
# jaký je průměrný obsah zdravých brambor právě v této dodávce. Vyzkouší libovolný počet kg
# brambor, které ovšem potom už nemůže předložit strávníkům, podle toho se rozhodne zda a kolik
# brambor od něj koupí. Zbytek brambor už musí koupit od druhého dodavatele.
# Navrhněte pomocí simulaci, jak má menza postupovat, aby maximalizovala svůj zisk, když
# předpokládáme, že hmotnost zdravých brambor, které zbudou z 1 kg brambor, má normální
# rozdělení se směrodatnou odchylkou 0,01 kg

Máme vytvořit simulaci v R (jazyk), což není problém, ale nejsem si jistý jak ten příklad uchopit. Děkuji za pomoc.

edit:  Máme řešit pomoci Bayesovskych metod

Offline

  • (téma jako vyřešené označil(a) philber)

#2 03. 02. 2014 04:01

philber
Zelenáč
Místo: Praha
Příspěvky: 19
Pozice: student
Reputace:   
 

Re: Simulace - 2 dodavatelé brambor

Code:

# 
# ZADANI
# 


#!/usr/bin/Rscript

# inicializace
zisk = list()
# neni veliky rozdil mezi 100 a 1000
# pro rychlost je pouzito 50
opakovani = 10000
testovany_pocet = 1

d1 <- function(pocet) {
  d = list ( 
    # parametry rozdeleni    
    mean = 0.75,
    sd = 0.05,
    sigma0 = 0.01,
    
    # globalni parametry
    nakup = 5,
    loupani = 5,
    prodej = 50
  )
  
  # vypocty  
  # dodavateli prirazujeme hodnutu urcujici kvalitu 
  # podle normalniho rozdeleni se zadanymi parametry
  prumerna_kvalita = mean(rnorm(pocet,d$mean,d$sd))
  kvalita = ( prumerna_kvalita * d$sd^2 + d$mean*(d$sigma0^2/pocet) ) / (d$sd^2 + (d$sigma0^2/pocet))    
  
  # vysledek 
  d$pocet = pocet 
  d$kvalita = kvalita
  return( d )
}

d2 <- function(min = 0, max = 1) {
  d = list(
    # globalni parametry
    nakup = 3,
    loupani = 5,
    prodej = 50 
  )
  
  # vypocty 
  # protoze o dodavateli nic nevime 
  # zvolime hodnotu z rovnomerneho rozdeleni
  kvalita = runif(1, min, max)
  
  #vysledek 
  d$kvalita = kvalita
  
  return ( d )
}



# vse od prvniho dodavatele 
zisk$t1 = 0

# vse od druheho dodavatele 
zisk$t2 = 0

# x kg od druheho a pak se rozhodnout (0,1)
zisk$t3 = 0

# x kg od druheho a pak se rozhodnout (0.25,0.95)
zisk$t4 = 0

for(i in 1:opakovani) {
  # TEST 1
  d = d1(100)
  zisk$t1 = zisk$t1 + (
    -100*d$loupani
    -100*d$nakup
    +100*d$kvalita*d$prodej
  )
  
  # TEST 2
  d = d2()
  zisk$t2 = zisk$t2 + (
    -100*d$loupani
    -100*d$nakup
    +100*d$kvalita*d$prodej
  )
  
  # TEST 3
  d = list()
  d$d1 = d1(100-testovany_pocet)
  d$d2 = d2()
  d$zisk_d1 = 0 + (
    -100*d$d1$loupani
    -testovany_pocet*d$d2$nakup
    -(100-testovany_pocet)*d$d1$nakup
    +(100-testovany_pocet)*d$d1$kvalita*d$d1$prodej
  )
  d$zisk_d2 = 0 + (
    -100*d$d2$loupani
    -100*d$d2$nakup
    +(100-testovany_pocet)*d$d2$kvalita*d$d2$prodej
  )
  
  if (d$zisk_d1 > d$zisk_d2) {
    zisk$t3 = zisk$t3 + d$zisk_d1
  } else {
    zisk$t3 = zisk$t3 + d$zisk_d2
  }
  
  # TEST 4
  d = list()
  d$d1 = d1(100-testovany_pocet)
  d$d2 = d2(0.25, 0.95)
  d$zisk_d1 = 0 + (
    -100*d$d1$loupani
    -testovany_pocet*d$d2$nakup
    -(100-testovany_pocet)*d$d1$nakup
    +(100-testovany_pocet)*d$d1$kvalita*d$d1$prodej
  )
  d$zisk_d2 = 0 + (
    -100*d$d2$loupani
    -100*d$d2$nakup
    +(100-testovany_pocet)*d$d2$kvalita*d$d2$prodej
  )
  
  if (d$zisk_d1 > d$zisk_d2) {
    zisk$t4 = zisk$t4 + d$zisk_d1
  } else {
    zisk$t4 = zisk$t4 + d$zisk_d2
  }
  
}

print (zisk$t1/opakovani)
print (zisk$t2/opakovani)
print (zisk$t3/opakovani)
print (zisk$t4/opakovani)

Zalezi na tom jake si stanovite parametry rozdeleni pro druheho dodavatele, protoze pri predpokladu ze v rovnomernem rozdeleni u druheho dodavatele bude rozptyl mezi 0.25 a 0.95 potom je statisticky lepsi rovnou nakupovat od druheho dodavatele,. No teoreticky by to takto mohlo byt spravne. kdyztak me opravte, budu za to rad

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson