Understanding Simulation Types for Ecosystem Modeling

undefined
Week 13 - Monday
 
What did we talk about last time?
Work time for Assignment 8
Before that:
More class examples
Solar system
undefined
 
undefined
 
undefined
 
 
The example we did of the solar system was a simulation
Using (totally unrealistic) physics
Those kinds of simulations can be useful for scientists trying
to model behavior
Real simulations are much more complex
Important example: weather forecasting
These kinds of simulations are 
continuous simulations
because they show the system evolving continuously as time
goes on
 
Discrete event simulations are another kind of simulation
In these, events happen at particular times
Then, the system progresses onward after each time step,
based on what happened
The elements of the system that can act are sometimes called
agents
Discrete event simulations are good for modeling situations
like agents shopping, standing in line, visiting the BMV, etc.
Another possibility is modeling an ecosystem
 
Our ecosystem simulation will contain fish and bears
They will exist on a grid
Only one creature can exist at any location on the grid
Each turn, one creature is randomly selected to come alive
and do actions
Fish can breed, move, and die
Bears can breed, move, eat, and die
To model this simulation, we will create objects for the world,
for fish, and for bears
 
A 
World
 object knows:
Its maximum x and y dimensions
All the lifeforms present inside it
A grid with the locations of each lifeform
A 
World
 object should be able to:
Return its dimensions
Add a lifeform to a specific location
Delete a lifeform
Move a lifeform to a new location
See if a location is empty
Return a lifeform at a specific location
Allow a lifeform to live for one time unit
Draw itself
 
A 
Bear
 object knows:
The 
World
 it's inside of
Its location in the world (
x
 and 
y
)
How long since it has eaten
How long since it has bred
A 
Bear
 object should be able to:
Return its location (
x
 and 
y
)
Set the 
World
 it belongs to
Show up if it's been born
Hide if it's died
Change locations
Live for a time unit
 
A 
Fish
 object knows:
The 
World
 it's inside of
Its location in the world (
x
 and 
y
)
How long since it has bred
A 
Fish
 object should be able to:
Return its location (
x
 and 
y
)
Set the 
World
 it belongs to
Show up if it's been born
Hide if it's died
Change locations
Live for a time unit
 
The 
Unified Modeling Language
 (UML) is an
international standard for making diagrams of
software systems
One of the most commonly used diagrams is
called a 
class diagram
One standard for class diagrams has three
sections:
Name
Instance variables
Methods
To the right is an example of what that looks like
Here is a UML class diagram for the
World
 class
Here is a UML class diagram for the
Bear
 class
Here is a UML class diagram for the
Fish
 class
undefined
 
 
Create a constructor for 
World
 with the following header:
 
 
 
 
It should:
Initialize the 
maxX
 and 
maxY
 instance variables
Make 
thingList
 an empty list
Make 
grid
 a 2D list (a list of lists) containing 
maxY
 rows and 
maxX
 columns, all of
which should contain 
None
Create a turtle
Create a screen
Set the screen's world coordinates to match the 
maxX
 and 
maxY
Hide the turtle
Write the following accessors for 
World
 
Write a method with the following header:
 
 
 
It should:
Set the x and y of 
thing
 to the appropriate values
Put 
thing
 into the 
grid
 at the appropriate location
Set the world of 
thing
 to the appropriate value
Add the 
thing
 to the 
thingList
Tell 
thing
 to appear
 
Write a method with the following header:
 
 
 
It should:
Hide the 
thing
Set the location of 
thing
 in the 
grid
 to 
None
Remove 
thing
 from 
thingList
 
Write a method with the following header:
 
 
 
It should:
Set the new location in 
grid
 to whatever is in the old location
Set the old location in 
grid
 to 
None
 
Write a method with the following header:
 
 
 
It should:
Check to see if there's anything in 
thingList
If there is, pick a random one
Tell that thing to live
To save time, here's code to draw the grid:
undefined
 
 
Create a constructor for 
Fish
 with the following header:
 
 
 
 
It should:
Create a turtle
Put the turtle's tail up
Hide the turtle
Set the turtle's shape to a triangle (since we don't have cool bear and fish pictures like
the book does)
Set the 
x
 and 
y
 to 0
Set the 
world
 to 
None
Set the 
breedTick
 to 0
Write the following accessors for 
Fish
Write the following mutators for 
Fish
 
Write a method with the following header:
 
 
 
It should:
Tell world to move a thing from the current x and y to the new ones
Set the 
x
 and 
y
 values to the new ones
Move the turtle the new location as well
undefined
 
 
Bear
 class
Adding behaviors to 
Fish
 and 
Bear
 objects
The 
isinstance()
 function
 
Work on Assignment 9
Due Friday
Keep reading Chapter 11
Slide Note
Embed
Share

Exploring different simulation types such as continuous and discrete event simulations for modeling complex systems like ecosystems. Detailed discussion on creating an ecosystem simulation with fish and bears on a grid, showcasing actions like breeding, moving, eating, and dying. Overview of a World object's functionality in managing lifeforms within the simulation.


Uploaded on Nov 20, 2024 | 0 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. Download presentation by click this link. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

E N D

Presentation Transcript


  1. Week 13 - Monday

  2. What did we talk about last time? Work time for Assignment 8 Before that: More class examples Solar system

  3. The example we did of the solar system was a simulation Using (totally unrealistic) physics Those kinds of simulations can be useful for scientists trying to model behavior Real simulations are much more complex Important example: weather forecasting These kinds of simulations are continuous simulations because they show the system evolving continuously as time goes on

  4. Discrete event simulations are another kind of simulation In these, events happen at particular times Then, the system progresses onward after each time step, based on what happened The elements of the system that can act are sometimes called agents Discrete event simulations are good for modeling situations like agents shopping, standing in line, visiting the BMV, etc. Another possibility is modeling an ecosystem

  5. Our ecosystem simulation will contain fish and bears They will exist on a grid Only one creature can exist at any location on the grid Each turn, one creature is randomly selected to come alive and do actions Fish can breed, move, and die Bears can breed, move, eat, and die To model this simulation, we will create objects for the world, for fish, and for bears

  6. A World object knows: Its maximum x and y dimensions All the lifeforms present inside it A grid with the locations of each lifeform A World object should be able to: Return its dimensions Add a lifeform to a specific location Delete a lifeform Move a lifeform to a new location See if a location is empty Return a lifeform at a specific location Allow a lifeform to live for one time unit Draw itself

  7. A Bear object knows: The Worldit's inside of Its location in the world (xand y) How long since it has eaten How long since it has bred A Bear object should be able to: Return its location (xand y) Set the Worldit belongs to Show up if it's been born Hide if it's died Change locations Live for a time unit

  8. A Fishobject knows: The World it's inside of Its location in the world (xand y) How long since it has bred A Fishobject should be able to: Return its location (xand y) Set the World it belongs to Show up if it's been born Hide if it's died Change locations Live for a time unit

  9. The Unified Modeling Language (UML) is an international standard for making diagrams of software systems One of the most commonly used diagrams is called a class diagram One standard for class diagrams has three sections: Name Instance variables Methods To the right is an example of what that looks like Class Name Instance variables Methods

  10. World Here is a UML class diagram for the World class maxX maxY thingList grid turtle screen draw getMaxX getMaxY addThing deleteThing moveThing live emptyLocation lookAtLocation

  11. Bear x y world breedTick starveTick turtle getX getY setX setY setWorld appear hide move live tryToBreed tryToMove tryToEat Here is a UML class diagram for the Bear class

  12. Fish Here is a UML class diagram for the Fish class x y world breedTick turtle getX getY setX setY setWorld appear hide move live tryToMove

  13. Create a constructor for World with the following header: def __init__(self, maxX, maxY): It should: Initialize the maxX and maxY instance variables Make thingList an empty list Make grid a 2D list (a list of lists) containing maxY rows and maxX columns, all of which should contain None Create a turtle Create a screen Set the screen's world coordinates to match the maxX and maxY Hide the turtle

  14. Write the following accessors for World def getMaxX(self): def getMaxY(self): def emptyLocation(self, x, y): # True if grid at y, x is empty def lookAtLocation(self, x, y): # Returns contents of grid at y, x

  15. Write a method with the following header: def addThing(self, thing, x, y): It should: Set the x and y of thing to the appropriate values Put thing into the grid at the appropriate location Set the world of thing to the appropriate value Add the thing to the thingList Tell thing to appear

  16. Write a method with the following header: def deleteThing(self, thing): It should: Hide the thing Set the location of thing in the grid to None Remove thing from thingList

  17. Write a method with the following header: def moveThing(self, oldX, oldY, newX, newY): It should: Set the new location in grid to whatever is in the old location Set the old location in grid to None

  18. Write a method with the following header: def life(self): It should: Check to see if there's anything in thingList If there is, pick a random one Tell that thing to live

  19. To save time, here's code to draw the grid: def draw(self): self.screen.tracer(0) # draw bounding box self.turtle.forward(self.maxX - 1) self.turtle.left(90) self.turtle.forward(self.maxY - 1) self.turtle.left(90) self.turtle.forward(self.maxX - 1) self.turtle.left(90) self.turtle.forward(self.maxY - 1) self.turtle.left(90) # draw horizontal lines for y in range(self.maxY - 1): self.turtle.forward(self.maxX - 1) self.turtle.backward(self.maxX - 1) self.turtle.left(90) self.turtle.forward(1) self.turtle.right(90) self.turtle.forward(1) self.turtle.right(90) # draw vertical lines for x in range(self.maxX - 2): self.turtle.forward(self.maxY - 1) self.turtle.backward(self.maxY - 1) self.turtle.left(90) self.turtle.forward(1) self.turtle.right(90) self.screen.tracer(1)

  20. Create a constructor for Fish with the following header: def __init__(self): It should: Create a turtle Put the turtle's tail up Hide the turtle Set the turtle's shape to a triangle (since we don't have cool bear and fish pictures like the book does) Set the x and y to 0 Set the world to None Set the breedTick to 0

  21. Write the following accessors for Fish def getX(self): def getY(self):

  22. Write the following mutators for Fish def setX(self, x): def setY(self, y): def setWorld(self, world): def appear(self): # move turtle to x and y and show def hide(self): # hide turtle

  23. Write a method with the following header: def move(self, newX, newY): It should: Tell world to move a thing from the current x and y to the new ones Set the x and y values to the new ones Move the turtle the new location as well

  24. Bear class Adding behaviors to Fish and Bear objects The isinstance() function

  25. Work on Assignment 9 Due Friday Keep reading Chapter 11

More Related Content

giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#