The applet requires Java 5 or higher. Java must be enabled in your browser settings. Mac users must have Mac OS X 10.4 or higher. Windows and Linux users may obtain the latest Java from Oracle's Java site.
powered by NetLogo
view/download model file: import_duties_and_consumption.nlogo
The simulation is based on the study of the effect of duties on internal coffee consumption. The goal of the model is to provide how consumers react when we introduce duties, given their wealth, level of education, economic and political freedom. The introduction of variables regarding economic and political freedom for each country can modify strongly the consumer behavior, having effects on consumption and trade.
We create X individuals for each country (where X reflects the cardinality of the population in every country).
The three Nations (Brazil, Argentina, Venezuela) produce coffee in different proportions and quantities. Agents consume one of the two types of coffee produced and the amount depends mainly on their income.
At the beginnings of every cycle (i.e. every 4 ticks) every Country has a given probability of introducing a new import duty; at the same time the duty can be removed with a given probability.
Then, if the duty is effectively introduced in a Country, individuals react and reduce their consumption with a certain lag. This lag in their reaction depends positively on their wealth and negatively on their education and economic and political freedom of the country.
Click the SET UP button to set up the operators (agents).
Click the GO button to run the simulation.
Click the Set Display button to change the interface (change the coordinates of the axes within the same simulation).
The agents are divided in three breeds: Brazilians (green), Argentinians (white) and Venezuelans (red).
Click on CHOOSERY to change variable (income or education) on the y-axis.
Click on CHOOSERX to change variable (quantity of brazilian coffee or quantity of venezuelan coffee or the sum of the two) on the x-axis.
The SLIDERS show the probability that a duty is introduced (one slider for each country), the magnitude of the duty (one slider for each country) and the probability that the duty is eliminated.
The NATIONAL CONSUMPTION PLOT shows how the coffee consumption in each country and the total coffee consumption change over time.
The COFFEE TYPE CONSUMPTION PLOT shows how the total consumption of brazilian coffee, the total consumption of venezuelan coffee and the sum of the two change over time.
The INPUT BUTTONS show if the duty has effectively been introduced at each cycle in the countries.
The other INPUT BUTTON show the lag corresponding to the tick in every cycle.
With CHOOSERY and CHOOSERX it is possible to change variable on y-axis and x-axis respectively.
With the SLIDERS it is possible to change the probability that a duty is introduced (one slider for each country) or to change the magnitude of the duty (one slider for each country) or to change the probability that the duty is eliminated.
An interesting extention could be to introduce more commodities in order to see different reactions in complement or substitute goods when a duty is introduced on a certain one.
An even more important extention could be to increase the interaction among countris. The idea is that the probability of introducing a new duty increases if another country has introduced a new one in the previous period (sort of duty war).
The possibility of eliminating duties does not depend on a given probability but is decided jointly by the three nations when consumptions decrease over a certain level.
Interesting functions in the Code tab are :
- ask N-OF 184 brazilians : ask 184 randomly chosen brazilians to do something.
- random-float 1 < Venezuela-DutyProbability : useful to make the given value for the probability of introducing a duty, a probability.
breed [brazilians brazilian]
breed [argentinians argentinian]
breed [venezuelans venezuelan]
turtles-own [
economic-freedom ; composed by level of propety right protection, governement spending, labor and monetary freedom, trade freedom
governement ; if democracy 0, if dictatorship 1
press-liberty ; from a survey about direct attacks on journalists and indirect sources of pressure against the free press
income ; obtained from cdf of income across population
education ; obtained from average individual expenditure on education as a share of income
coffee-brazil ; individual consumption of coffee produced in Brazil
coffee-venezuela ; individual consumption of coffee produced in Venezuela
class-brazil ; class of the income distribution in Brazil
class-argentina ; class of the income distribution in Argentina
class-venezuela ; class of the income distribution in Venezuela
SAVE-coffee-brazil ; individual consumption of brazilian coffee when there in no duty
SAVE-coffee-venezuela ; individual consumption of venezuelan coffee when there in no duty
VarLag ; variable
Lag ; time needed for the adjustment of the coffee quantity after the duty (a lag correspond to a quarter)
time
duty
]
to setup
clear-all
create-brazilians 194 [
set shape "person"
set color green
set economic-freedom 58
set governement 0
set press-liberty 35
]
ask brazilians [
let s random-normal 0 5
let c random-float 1.0
if c <= 0.2 [
set class-brazil 1
set income (7.3 + s)
set size 0.5
]
if c > 0.2 and c <= 0.4 [
set class-brazil 2
set income (18.4 + s)
set size 0.5
]
if c > 0.4 and c <= 0.6 [
set class-brazil 3
set income (32 + s)
set size 1
]
if c > 0.6 and c <= 0.8 [
set class-brazil 4
set income (49.1 + s)
set size 1
]
if c > 0.8 and c <= 1 [
set class-brazil 5
set income (151 + s)
set size 2.5
]
if income < 0 [
set income 0
]
let j (random-normal 1 0.025) * (0.05 * income)
set education (0.05 * income + j)
]
ask n-of 184 brazilians [
if class-brazil = 1 [set coffee-brazil 1.2 + (222.44 / 184 + random-normal 0 0.1)]
if class-brazil = 2 [set coffee-brazil 2.417 + (222.44 / 184 + random-normal 0 0.1)]
if class-brazil = 3 [set coffee-brazil 6.044 + (222.44 / 184 + random-normal 0 0.1)]
if class-brazil = 4 [set coffee-brazil 6.044 + (222.44 / 184 + random-normal 0 0.1)]
if class-brazil = 5 [set coffee-brazil 8.462 + (222.44 / 184 + random-normal 0 0.1)]
]
ask brazilians with [coffee-brazil = 0] [
if class-brazil = 1 [set coffee-venezuela 0.26 + (2.6 / 10 + random-normal 0 0.1)]
if class-brazil = 2 [set coffee-venezuela 0.52 + (2.6 / 10 + random-normal 0 0.1)]
if class-brazil = 3 [set coffee-venezuela 1.3 + (2.6 / 10 + random-normal 0 0.1)]
if class-brazil = 4 [set coffee-venezuela 1.3 + (2.6 / 10 + random-normal 0 0.1)]
if class-brazil = 5 [set coffee-venezuela 1.82 + (2.6 / 10 + random-normal 0 0.1)]
]
create-argentinians 41 [
set shape "person"
set color white
set economic-freedom 48
set governement 0
set press-liberty 14
]
ask argentinians [
let g random-normal 0 15
let f random-float 1.0
if f <= 0.2 [
set class-argentina 1
set income (53 + g)
set size 1
]
if f > 0.2 and f <= 0.4 [
set class-argentina 2
set income (113 + g)
set size 2
]
if f > 0.4 and f <= 0.6 [
set class-argentina 3
set income (180 + g)
set size 2.5
]
if f > 0.6 and f <= 0.8 [
set class-argentina 4
set income (270 + g)
set size 3
]
if f > 0.8 and f <= 1 [
set class-argentina 5
set income (602 + g)
set size 4
]
if income < 0 [
set income 0
]
let k (random-normal 1 0.019) * (0.038 * income)
set education (0.038 * income + k)
]
ask n-of 25 argentinians [
if class-argentina = 1 [set coffee-brazil 0.72 + (6 / 25 + random-normal 0 0.1)]
if class-argentina = 2 [set coffee-brazil 0.72 + (6 / 25 + random-normal 0 0.1)]
if class-argentina = 3 [set coffee-brazil 0.96 + (6 / 25 + random-normal 0 0.1)]
if class-argentina = 4 [set coffee-brazil 0.96 + (6 / 25 + random-normal 0 0.1)]
if class-argentina = 5 [set coffee-brazil 1.44 + (6 / 25 + random-normal 0 0.1)]
]
ask argentinians with [coffee-brazil = 0] [
if class-argentina = 1 [set coffee-venezuela 0.412 + (2.2 / 16 + random-normal 0 0.1)]
if class-argentina = 2 [set coffee-venezuela 0.412 + (2.2 / 16 + random-normal 0 0.1)]
if class-argentina = 3 [set coffee-venezuela 0.55 + (2.2 / 16 + random-normal 0 0.1)]
if class-argentina = 4 [set coffee-venezuela 0.55 + (2.2 / 16 + random-normal 0 0.1)]
if class-argentina = 5 [set coffee-venezuela 0.825 + (2.2 / 16 + random-normal 0 0.1)]
]
create-venezuelans 29 [
set shape "person"
set color red
set economic-freedom 38
set governement 1
set press-liberty 55
]
ask venezuelans [
let t random-normal 0 50
let i random-float 1.0
if i <= 0.2 [
set class-venezuela 1
set income (73.8 + t)
set size 1.5
]
if i > 0.2 and i <= 0.4 [
set class-venezuela 2
set income (164.1 + t)
set size 2.5
]
if i > 0.4 and i <= 0.6 [
set class-venezuela 3
set income (251.7 + t)
set size 3
]
if i > 0.6 and i <= 0.8 [
set class-venezuela 4
set income (382.4 + t)
set size 3.5
]
if i > 0.8 and i <= 1 [
set class-venezuela 5
set income (852 + t)
set size 4.5
]
if income < 0 [
set income 0
]
let l (random-normal 1 0.026) * (0.052 * income)
set education (0.052 * income + l)
]
ask n-of 20 venezuelans [
if class-venezuela = 1 [set coffee-venezuela 0.6 + (6 / 20 + random-normal 0 0.1)]
if class-venezuela = 2 [set coffee-venezuela 0.9 + (6 / 20 + random-normal 0 0.1)]
if class-venezuela = 3 [set coffee-venezuela 1.2 + (6 / 20 + random-normal 0 0.1)]
if class-venezuela = 4 [set coffee-venezuela 1.5 + (6 / 20 + random-normal 0 0.1)]
if class-venezuela = 5 [set coffee-venezuela 1.8 + (6 / 20 + random-normal 0 0.1)]
]
ask venezuelans with [coffee-venezuela = 0] [
if class-venezuela = 1 [set coffee-brazil 0.728 + (3.28 / 9 + random-normal 0 0.1)]
if class-venezuela = 2 [set coffee-brazil 1.093 + (3.28 / 9 + random-normal 0 0.1)]
if class-venezuela = 3 [set coffee-brazil 1.457 + (3.28 / 9 + random-normal 0 0.1)]
if class-venezuela = 4 [set coffee-brazil 1.822 + (3.28 / 9 + random-normal 0 0.1)]
if class-venezuela = 5 [set coffee-brazil 2.186 + (3.28 / 9 + random-normal 0 0.1)]
]
ask turtles [
if chooserX = "coffee-brazil" [set xcor coffee-brazil * 10]
if chooserX = "coffee-venezuela" [set xcor coffee-venezuela * 10]
if chooserX = "coffee-brazil&coffee-venezuela" [set xcor (coffee-brazil + coffee-venezuela) * 10]
if chooserY = "income" [set ycor income / 10]
if chooserY = "education" [set ycor education ]
set Period "0"
set DutyBrazilOnVenezuelanCoffee " "
set DutyArgentinaOnBrazilianCoffee " "
set DutyArgentinaOnVenezuelanCoffee " "
set DutyVenezuelaOnBrazilianCoffee " "
]
ask turtles [
set SAVE-coffee-brazil coffee-brazil
set SAVE-coffee-venezuela coffee-venezuela
]
ask turtles [
Set VarLag (income - education - press-liberty + (governement * 10))
if VarLag <= 100 [set lag 1]
if VarLag > 100 and VarLAg <= 300 [set lag 2]
if VarLag > 300 and VarLAg <= 600 [set lag 3]
if VarLag > 600 [set lag 4]
]
let TotalCoffeeBrazil sum [coffee-brazil] of turtles
show TotalCoffeeBrazil
let TotalCoffeeVenezuela sum [coffee-venezuela] of turtles
show TotalCoffeeVenezuela
let Sum1CoffeeBrazil sum [coffee-brazil] of brazilians
show Sum1CoffeeBrazil
let Sum1CoffeeVenezuela sum [coffee-venezuela] of brazilians
show Sum1CoffeeVenezuela
let Sum2CoffeeBrazil sum [coffee-brazil] of argentinians
show Sum2CoffeeBrazil
let Sum2CoffeeVenezuela sum [coffee-venezuela] of argentinians
show Sum2CoffeeVenezuela
let Sum3CoffeeBrazil sum [coffee-brazil] of venezuelans
show Sum3CoffeeBrazil
let Sum3CoffeeVenezuela sum [coffee-venezuela] of venezuelans
show Sum3CoffeeVenezuela
reset-ticks
end
to SetDisplay
ask turtles [
if chooserX = "coffee-brazil" [set xcor coffee-brazil * 10]
if chooserX = "coffee-venezuela" [set xcor coffee-venezuela * 10]
if chooserX = "coffee-brazil&coffee-venezuela" [set xcor (coffee-brazil + coffee-venezuela) * 10]
if chooserY = "income" [set ycor income / 10]
if chooserY = "education" [set ycor education]
]
end
to go
ask turtles [
if time < 5 [set time (time + 1)]
if time = 5 [set time 1]
]
ask brazilians [
if coffee-brazil = 0 [
if time = 1 [
if random-float 1 < Brazil-DutyProbability [ set duty 1 ]
]
if time = lag and duty = 1 [ set coffee-venezuela (coffee-venezuela + (dutyBrazil * (-0.6) + random-normal 0 0.05)) ]
if coffee-venezuela < 0 [ set coffee-venezuela 0 ]
if time = 1 [
if random-float 1 < NoDuty-Probability [ set coffee-venezuela SAVE-coffee-venezuela ]
]
]
]
ask argentinians [
if coffee-venezuela = 0 [
if time = 1 [
if random-float 1 < Argentina-DutyProbability [ set duty 2 ]
]
if time = lag and duty = 2 [ set coffee-brazil (coffee-brazil + (dutyArgentina * (-0.5) + random-normal 0 0.05)) ]
if coffee-brazil < 0 [ set coffee-brazil 0 ]
if time = 1 [
if random-float 1 < NoDuty-Probability [ set coffee-brazil SAVE-coffee-brazil ]
]
]
if coffee-brazil = 0 [
if time = 1 [
if random-float 1 < Argentina-DutyProbability [ set duty 3 ]
]
if time = lag and duty = 3 [ set coffee-venezuela (coffee-venezuela + (dutyArgentina * (-0.5) + random-normal 0 0.05)) ]
if coffee-venezuela < 0 [ set coffee-venezuela 0 ]
if time = 1 [
if random-float 1 < NoDuty-Probability [ set coffee-venezuela SAVE-coffee-venezuela ]
]
]
]
ask venezuelans [
if coffee-venezuela = 0 [
if time = 1 [
if random-float 1 < Venezuela-DutyProbability [ set duty 4 ]
]
if time = lag and duty = 4 [ set coffee-brazil (coffee-brazil + (dutyVenezuela * (-0.7) + random-normal 0 0.05)) ]
if coffee-brazil < 0 [ set coffee-brazil 0 ]
if time = 1 [
if random-float 1 < NoDuty-Probability [ set coffee-brazil SAVE-coffee-brazil ]
]
]
]
ask turtles [
if chooserX = "coffee-brazil" [set xcor coffee-brazil * 10]
if chooserX = "coffee-venezuela" [set xcor coffee-venezuela * 10]
if chooserX = "coffee-brazil&coffee-venezuela" [set xcor (coffee-brazil + coffee-venezuela) * 10]
if chooserY = "income" [set ycor income / 10]
if chooserY = "education" [set ycor education]
]
ask turtles [
if time = 1 [set Period "1"]
if time = 2 [set Period "2"]
if time = 3 [set Period "3"]
if time = 4 [set Period "4"]
if time = 1 and random-float 1 < Brazil-DutyProbability [set DutyBrazilOnVenezuelanCoffee "YES"]
if time = 1 and random-float 1 < Argentina-DutyProbability [set DutyArgentinaOnBrazilianCoffee "YES"]
if time = 1 and random-float 1 < Argentina-DutyProbability [set DutyArgentinaOnVenezuelanCoffee "YES"]
if time = 1 and random-float 1 < Venezuela-DutyProbability [set DutyVenezuelaOnBrazilianCoffee "YES"]
if time = 1 and random-float 1 > Brazil-DutyProbability [set DutyBrazilOnVenezuelanCoffee "NO"]
if time = 1 and random-float 1 > Argentina-DutyProbability [set DutyArgentinaOnBrazilianCoffee "NO"]
if time = 1 and random-float 1 > Argentina-DutyProbability [set DutyArgentinaOnVenezuelanCoffee "NO"]
if time = 1 and random-float 1 > Venezuela-DutyProbability [set DutyVenezuelaOnBrazilianCoffee "NO"]
]
let TotalCoffeeBrazil sum [coffee-brazil] of turtles
show TotalCoffeeBrazil
let TotalCoffeeVenezuela sum [coffee-venezuela] of turtles
show TotalCoffeeVenezuela
tick
end