首页 > > 详细

讲解 MGTS7523 Modelling assignment (semester 2, 2025)讲解 Python编程

MGTS7523 Modelling assignment (semester 2, 2025)

Part 1 - Macquarie Island

In week 1 of the semester (2025, S2) the Macquarie Island ‘story’ was introduced in the video (module 1, UQ Extend) as an example of how a decision to ‘fix a problem’ resulted in an unintended consequence.

In the box below explain what the problem was that the Australian Government aimed to fix [1 mark]

In the box below explain and justify whether the problem was fixed or not? [2 marks]

In the box below and in your own words, describe what happened to the birds on Macquarie Island as a consequence of this intervention by the Australian Government (refer to the previous two questions regarding the context for this intervention)? [4 marks]

In the box below list the key variables for the Macquarie Island story. For each key variable, provide a hand-drawn reference mode (you can photo these and paste in) that highlights the period of time leading up to the Australian Govt decision, and the period after this decision was implemented. You should assume the following:

· The rats and mice predate only on bird eggs (i.e. not the birds or anything else)

· Combine the rats and mice into ‘rodents’

· The rabbits only eat the habitat

· Ignore any potential delays

[8 marks]

Using Stella Architect, create a causal loop diagram (CLD) and paste in the box below that shows the Macquarie Island system immediately before the cats were removed by the Australian Government. Include polarities for all connectors. Also colour-code all connectors using red for positive, and black for negative polarities respectfully. Show all feedback loop labels. Also in the box below, describe in your own words how your CLD represents the Macquarie Island system. Do not include birth rates or death rates – simply look at the causal connections between the key variables.

[5 marks]

Using your CLD from the previous question, explain in the box below why the cats provide some protection to the seabirds even though they predate on them.

[3 marks]

Part 2 – SFM building

In this part of the assignment, you will build a version of the Lobster Game case (https://uqcases.web.app/lobster/) that was introduced in class in week 2.

The Lobster Game was developed based on the Australian live lobster industry, which is worth approximately $1 billion (AUS) per year. This valuable fishery is important for Australia’s export trade, requiring careful management of the supply chain. It is inherently multi-disciplinary because it incorporates aspects of macroeconomics (supply-demand-price dynamics), supply chain dynamics, social dynamics (livelihoods) and ecology (the lobsters).

To build this model, you will develop four modules that will interact with one another. The following instructions will lead you through this process – by carefully reading through these instructions you should be able to successfully build these interconnecting modules. Note that as you progress through the model development process, this task will progressively get more difficult, requiring that you apply the skills and knowledge of system dynamics that you have been taught during this course.

Module 1 - Ecological module

The stock and flow model (SFM) you need to build for this ecological module is an ‘aging chain’ model that simulates a population of lobsters through two life stages (juveniles and adults). The rationale for separating the lobster population into juveniles and adults is that there is a fishing restriction that only allows the catching of adults and prohibits the catching of juveniles - therefore it is important in the model to be able to distinguish between these two age groups. Note that this same aging structure can be used for populations of any living thing where you want to distinguish between young and older life stages.

Open a new SFM file in Stella Architect and assign the following model settings:

Figure 1: Initial model settings

Next, construct the following lobster population model (Figure 2), using the same names as shown. Also ensure that the stocks can allow negative flows, and all flows are bi-flow. Note that this structure also includes ‘Lobster catch’, which is where we will link in from a ‘livelihoods’ module that will be built later.

Figure 2: Starting structure for the lobster population model

Introduce the following converters into your ecological module.

- Normal juvenile population = 1,750,000 [individuals]

- Normal adult population = 900,000 [individuals]

Set the initial conditions of the two stocks using the following equations within the respective stocks:

- Initial JUVENILES = Normal juvenile population

- Initial ADULTS = 0.5 * Normal adult population

Now we need to enable the ecological module to be able to run. Assign the following new converters to your model:

- Juvenile maturation time = 180 [days]

- Net juvenile birth rate = 0.015 [1/day]

- Normal death rate Juve = 0.00223 [1/day]

- Normal death rate Adult = 0.0105 [1/day]

Set the ‘Lobster catch’ flow = 0 [individuals/day] {this is necessary for the model to run}

The ‘Births’ flow is where juvenile lobsters are added to the population. The flow of births is dependent on the current population of ADULTS multiplied by the Net juvenile birth rate.

The ‘Deaths Juve’ and ‘Deaths Adult’ flows are how lobsters are lost from the population through mortality at the two different life stages. The actual death rate of juveniles and adults are different and therefore need to be modelled separately. To calculate the number of juvenile lobsters that die, multiply the current population of JUVENILES by the Normal death rate Juve (i.e. link these two into the ‘Deaths Juve’ flow and multiply them together. Apply the same logic to the ‘Deaths Adult’ flow.

The final calculation needed is for the ‘Juve to Adult’ flow, which moves lobsters from being juveniles into being adults as they mature (get older). Note to calculate this flow, you will need to connect the population of JUVENILES and Juvenile maturation time to the ‘Juve to Adult’ flow. However, note that the units for Juvenile maturation time are different from the rate constants (e.g. Net juvenile birth rate) and therefore this will affect how you combine the two inputs (hint: use Stella’s unit checker to help).

The final step is to use the text box function in Stella () to add text to your model (place this just below your model). Include your name and Stella registration number in this text box.

Copy and paste your model, including your name and Stella registration text, into the box below [4 marks]

Expand the time horizon for your model (in modelling settings) so that the stop time = 7,300 days instead of 730 days. Run your model and plot the JUVENILES and ADULTS on the same chart. Copy and paste your chart below [3 marks]

What type of behaviour does the trend lines for both JUVENILES and ADULTS exhibit? Explain why this occurs? Answer these two questions in the box below [3 marks]

We will now include the influence of carrying capacity in this module. Reset your stop time for your model back to 730 days.

The lobster population model needs to be modified to account for the effects of carrying capacity (i.e. the maximum population of lobsters that the sea can support). The way that we will address this is through the ADULTS (we will ignore the effect of carrying capacity on JUVENILE lobster population for simplicity). Using the following diagram (Figure 3) as a reference, update your model so that the part that simulates the ADULTS looks like this.

Figure 3: Modified structure for the ADULT lobsters to accommodate carrying capacity

These additions to the model allow the current population of adult lobsters to be compared with the carrying capacity of the sea (Habitat CC). This comparison is then used to adjust the death rate so that as the adult lobster population increases towards the carrying capacity, the death rate of the adult lobsters will increase i.e. reflecting that there is less food per lobster available, causing them to die at a faster rate.

The Lobster pop:CC is a ratio and therefore you are dividing one variable (ADULTS) by another (Habitat CC). Both of these inputs (ADULTS, Habitat CC) have the same units, which cancel out leaving a dimensionless variable.

- Habitat CC = 1,200,000 [individuals]

Note that ‘Habitat effect Adult’ is a graphical function. Set up your graphical function so it looks that shown in Figure 4 (i.e. a straight line that has a positive gradient).

Figure 4: Graphical function to use for ‘Habitat effect Adult’

The equation for Adjusted death rate requires the multiplication of the two input variables feeding into this variable. In the box below place the equation for Adjusted death rate (showing units for each variable) [1 mark]

Now update the equation for the ‘Deaths Adult’ flow to complete the modification to the model to account for the effects of carrying capacity.

Create a new graph and plot both ADULTS and Habitat CC (on the same graph). Copy and paste your chart into the box below [2 marks]

In the box below describe the behaviour observed for ADULTS that you have just plotted and include a short explanation why this differs from the plot of ADULTS that you saw prior to including the carrying capacity effect? [4 marks]

Livelihood module

Now that we have established the lobster population model (ecological module), we will now bring in fishing (a livelihood), which aims to exploit this natural resource through the ‘live export’ market.

To the right of the existing ecological module in Stella Architect, add the following converters that will make up the livelihood module (Figure 5). Note that ADULTS and Normal Adult Population are ghosted variables that already exist in the ecological module.

Figure 5: Base structure for the livelihood module

This structure is responsible for calculating the amount of fishing effort (i.e. how hard a fisher tries to catch a lobster) that the fishing boats undertake. An important perception of the fishers is that if the lobsters become more difficult to catch (i.e. the lobster population is low) then the fishers will reduce their fishing effort because they believe that the operational costs associated with increased fishing (fuel, wages) outweigh the potential revenue that they might achieve from catching and selling lobsters.

So how do we determine how easy (or hard) it is to catch lobsters? The key is the catch-per-unit-effort (CPUE) variable. CPUE is a measure of how many lobsters you will expect to catch if you go fishing for one hour. Unsurprisingly, the CPUE is tightly correlated to the lobster population i.e. if the lobster population is high, the CPUE will be high (easier to catch lobsters) and if the lobster population is low, the CPUE will be low (harder to catch lobsters). Therefore, the actual CPUE (represented in this module as Adjusted CPUE) is calculated from the ratio of the adult lobster population-to-a reference population (Normal Adult Population) using a graphical function. Once the Adjusted CPUE is calculated, then this is used to determine how hard the fishers will try to catch the lobsters.

- Normal CPUE = 8 [individuals/hour]

- Number of boats = [25 boats]

- Normal fishing effort = 10 [hours/day/boat]

For this module, any converter that is a ratio (adult:normal pop and adjusted CPUE:CPUE) requires a division equation e.g. adult:normal pop = ADULTS/Normal Adult Population. For all other variables where there are two input variables, you need to use multiplication.

There are two graphical functions that need parameterising – these are shown below. For each, select the preset shape from Stella Architect’s built-in options that best matches. Make sure that you set the limits of the x and y axes as shown in Figure 6.

Figure 6: Graphical functions to use (both are from Stella Architect’s built-in library)

Finally, we need to connect the output from the fishing module back into the ecological module (because if we are catching lobsters then we need to remove them from the lobster population).

This is done by connecting both the total fishing effort and the Adjusted CPUE into the ‘Lobster Catch’ flow in the ecological module. Update the equation for ‘Lobster Catch’ so that it combines the two inputs as a multiplication.

Copy and paste your existing model (ecological and livelihood modules) below ensuring that it is clear how they are connected [3 marks]

Run your model and plot the ADULTS and Habitat CC on one chart. Then copy and paste this chart in the box below. In the same box describe how this chart compares with the chart for these same variables that were previously plotted? [5 marks]

Supply chain module

The live lobster industry is characterised by an international supply chain that can be summarised into three components:

· Landed – these are live lobsters that have been caught at sea and offloaded at the fishing docks

· Stored – these are live lobsters that have been transported from the docks to the exit port and stored prior to being exported by ship. The storage facilities at the port are specifically designed to keep the lobsters alive and in good condition

· Quarantine – this is the entry point to the destination country where the lobsters are being exported to. Lobsters stay within quarantine for a period before being supplied to the local market

Below the ecological module, create the following chain of stocks that will represent the supply chain of live lobsters (Figure 7). Once the lobsters have been caught, they pass through the three stages of the supply chain. Lobsters can die at any stage along the supply chain and therefore each of the stocks has a ‘Deaths’ outflow – typically the longer the lobsters stay in the supply chain the more likely that they will die (and therefore is lost revenue because they have no value and do not go to market).

Figure 7: Base model structure for the supply chain module

The initial conditions for each of these three stocks is 0 (zero) individuals. That is, at the start of the simulation we will assume that there are no lobsters in the supply chain.

Now add the following three converters that will be used to control the flow between the supply chain stocks (e.g. Transport time connects into the ‘transport to storage’ flow). Note that these are delays and act in the opposite way to a rate constant.

· Transport time = 3 [days]

· Export time = 10 [days]

· Quarantine time = 7 [days]

In the box below place the equations you used for the ‘Exported’ and ‘to market’ flows (showing units for each variable) [2 marks]

Add the following three converters and use these to control the flow through the three ‘deaths’ flows (e.g. Landed lifespan connects to the ‘Deaths Landed’ flow). Note that these are delays and act in the opposite way to a death rate constant.

· Landed lifespan = 7 [days]

· Storage lifespan = 100 [days]

· Quarantine lifespan = 14 [days]

Connect the ‘Lobster catch’ outflow from the ecological module directly to the ‘Landed catch’ inflow of this supply chain module.

Copy and paste your supply chain module below [5 marks]

Create a plot and use this to show the three stocks from this supply chain module i.e. all on the same chart. Copy and paste this chart in the box below. In the same box below state what behaviour you see in the behaviour-over-time graphs for the three stocks and explain why this occurs? [5 marks]

Economics module

The final step to setting up the full model is to incorporate an economics module. This will be important for providing price signals back to the supply and demand sides of this system.

We will use the space next to the supply chain module (in Stella Architect) to create this economics module.

Central to the economics module is the market price of the lobsters (per individual). Add a new stock named PRICE. Then add a new converter named Normal price. Set the value of the Normal price at $88 per individual. Use this converter to provide the initial condition for PRICE.

In system dynamics, price dynamics is typically incorporated using a goal-seek structure around the PRICE stock. This is what we will do here:

· The current condition of the goal-seek is the PRICE stock.

· The goal will be what the price is expected to be given the current supply and demand for lobsters. This will be represented by the supply to demand ratio (supply:demand).

Add a new converter named ‘supply:demand’. Connect the ‘to market’ outflow (supply chain module) into supply:demand (this gives us the supply side of the ratio).

For the demand, we need to add more variables to the economics module. Create a new converter named ‘Normal demand’ and assign this a value of 500 individuals/day. Connect this to the supply:demand converter so we now have both supply and demand as inputs.

In the box below specify the equation for supply:demand (showing units for each variable) [1 mark]

Create a new converter named ‘Effect of supply:demand on price’ that will take the output from supply:demand and use this to help calculate an expected price (given the supply and demand). Set this as a graphical function using the following data shown in Table 1.

Table 1: Data for the graphical function

supply:demand

Effect

0.000

1.987

0.200

1.617

0.400

1.394

0.600

1.213

0.800

1.043

1.000

1.000

1.200

0.979

1.400

0.957

1.600

0.851

1.800

0.426

2.000

0.013

Copy and paste below what your graphical function for ‘Effect of supply:demand on price’ looks like (ensure that you include the x and y axes) [2 marks]

Create a new converter named ‘expected price’ – this is where you will calculate what the price should be given the current supply and demand (i.e. if supply is greater than demand, then the expected price should be lower than the current price, and if supply is less than demand, the expected price should be higher than the current price). Use the following structure to connect these converters.

In the box below specify the equation for expected price (showing units for each variable) [1 mark]

Now that we have our goal (expected price) and our current condition (PRICE) we can calculate the gap between these two. Add a new converter named ‘price gap’ and connect the goal and current condition to it.

In the box below specify the equation for price gap (showing units for each variable) [1 mark]

We now need to be able to modify PRICE in response to the price gap (i.e. the corrective action). Add a bi-flow into the PRICE stock and name this ‘price change’. Connect the price gap converter to this flow. There is one more piece of the puzzle. At the moment, the price gap will have an immediate impact on PRICE. However, we would like to be able to control the speed that PRICE responds to market signals of supply and demand. To do this, add a new converter ‘price change delay’ and connect this to the ‘price change’ flow. Set the value for price change delay to 5 days.

In the box below specify the equation for ‘price change’ (showing units for each variable) [1 mark]

Copy and paste your economics module into the box below: [3 marks]

Run your entire model and plot the following on separate charts:

1. PRICE

2. supply:demand

3. Normal demand

Paste these 3 charts into the box below [6 marks]

In the box below, describe in your own words (1) the behaviour observed for each of these three variables and (2) and explanation of why we see this behaviour based on your knowledge of the structure of the model. [6 marks]

Let us update the model so that demand responds to price signals. Disconnect Normal demand from supply:demand. Then create a new converter ‘Expected demand’ and connect this to supply:demand. Update the equation for the supply:demand to account for replacing Normal demand with Expected demand. Connect Normal demand into Expected demand.

We will link the effect of price to demand using a graphical function. Create a new converter ‘price:normal price’. Set this new converter up so that it receives input from the PRICE stock and the Normal price converter.

In the box below specify the equation for price:normal price (showing units for each variable) [1 mark]

Create a new converter that is a graphical function and name it ‘Effect of price on demand’. Connect price:normal price into this new converter. Then add a connection from Effect of price on demand to Expected demand.

In the box below specify the equation for Expected demand (showing units for each variable) [1 mark]

We need to specify the nature of the graphical function that links price to demand (Effect of price on demand). Use the following information to set up this graphical function:

The demand for lobsters should decrease if the lobster price increases (and increase if lobster price decreases). When the lobster price is the same as the normal price, the expected demand will be the same as the normal demand. When the lobster price is zero, the expected demand will be twice the normal demand. When the lobster price is twice the normal price, the demand should be zero. The demand is most sensitive at low and high prices and less sensitive when the price is close to the normal price (extreme end effect).

Copy and paste your graphical function (Effect of price on demand) in the box below [3 marks]

Now you have linked the price dynamics back to the demand for live lobsters. Run the model and plot PRICE and Expected demand. Copy and paste these two plots into the box below and then explain (in the same box) how Expected demand behaves in relation to PRICE [5 marks]

The final task is to fix an important dynamic that is currently missing from the model. We have included the influence of price on demand, but there is no feedback of this price signal to the suppliers (the fishers). Your task is to draw upon the techniques already used so that the model includes the influence of price on supply. Constrain your graphical function (i.e. the limits on the x and y axes) to those used for Effect of price on demand.

In the box below, show your entire model and include an explanation of how you connected price to supply. Include in your explanation your graphical function and the rationale behind its form. [10 marks]


联系我们
  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-21:00
  • 微信:codinghelp
热点标签

联系我们 - QQ: 99515681 微信:codinghelp
程序辅导网!