Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Læringsmål:

  • Tilfeldige tall
  • FOR-løkker
  • Struct
  • Simulering

I denne oppgaven ønsker vi å finne den optimale fiskeplassen ved hjelp av simulering i Matlab.

 

 

For å spe spå stipendet har du kjøpt deg en fiskestang og ønsker å tjene penger på fiske. Du er ikke sikker på hvor det er best å fiske, så du prøver ut to steder: Nidelva og Haukvatnet (på Byåsen). Under er en liste over den respektive fangsten hver time for de to fiskeplassene.  

Code Block
languagehtml/xml
titleEksempel på kjøring:
nidelva = 
  struct with fields:
    salmon: [0 1 1 1 0 0 0 0]
     trout: [0 3 0 1 1 3 2 2]
 
haukvatnet = 
  struct with fields:
    salmon: [2 3 1 1 0 0 1 3]
     trout: [0 1 1 0 0 0 0 1]
 

Her er nidelva og haukvatnet structer med felter 'salmon' og 'trout', som betegner hvor mange fisk av den sorten som ble fanget i hver time. 



a)

Lag en funksjon, plotFish(fishingSpot, name), som plotter den kumulative mengden laks og ørret du har fått på ett sted. fishingSpot på  er på samme format som vist over.

For dataene over vil plotFish(nidelva, 'Nidelva') ogplotFish(haukvatnet, 'Haukvatnet') gi følgende grafer:

 

 

b)

Etter å ha analysert dataen, kommer du frem til følgende regel for hvor mange av hver fisk du kan forvente å få på hvert sted, per time:

...

Du er ganske sikker på at antallet du får av én type fisk per time er uniformt fordelt, dvs. det er like sannsynlig å få én laks eller ingen alle utfall (fra 0 til og med maks antall fisk) har like stor sannsynlighet.Det er altså like stor sannsynlighet  (25 % i hvert mulig utfall) å få ingen, én, to eller tre laks på én time i Nidelvaved Haukvatnet ut i fra tabellen over.

Lag en funksjon, fish = simulateFishing simulateFishing(salmonMax, troutMax), som simulerer en 8-timers fisketur. Returvariabelen fish er en struct med felter salmon og trout.

Code Block
languagehtml/xml
titleEksempel på kjøring:
>> simulateFishing(4, 2)
ans = 
  struct with fields:
    salmon: [1 4 0 3 3 2 3 3]
     trout: [1 0 0 2 1 0 0 0]

 

c)

Simulering av fisking (á la Runescape)

Du oppretter en struct slik:

Code Block
titleTips
nidelva.salmon = [1 4 0 3 3 2 3 3]
nidelva.trout = [1 0 0 2 1 0 0 0]
>> disp(nidelva)
    salmon: [1 4 0 3 3 2 3 3]
    trout: [1 0 0 2 1 0 0 0]



c)

Prisen på både laks og ørret varierer fra dag til dag. Siden du ønsker å tjene mest mulig penger, vil du hver dag velge det fiskestedet (Nidelva eller Haukvatnet) som gir best forventet avkastning. Skriv en funksjon, recommendFishingSpot(salmonPrice, troutPrice), som simulerer 1000 fisketurer på hver av fiskeplassene og kommer med en anbefaling om hvor det i dag er mest lønnsomt å fiske.  

 

Code Block
languagehtml/xml
titleEksempel på kjøring:
>> priseSizerecommendFishingSpot(065, 3)
ans =
        040)
Forventet gevinst for Nidelva: 896 kr
Forventet gevinst for Haukvatnet: 937 kr
Fisk i Haukvatnet!

>> recommendFishingSpot(65, 50)
Forventet gevinst for Nidelva: 1061 kr
Forventet gevinst for Haukvatnet: 987 kr
Fisk i Nidelva!