Replicator Dynamics Model · Lesson 3 6 Replicator Dynamics Model The equation for average quality...

29
Lesson 3 1 Replicator Dynamics Model In this lesson we will start to implement a model with an economic interpretation. Though the model is extremely simple, it still can generate less than obvious results. We will exploit Lsd to implement the model, observe the results, and find a convincing representation of the results. In the process we will discuss an apparent limitation of simulation models: the constraint posed by working in real, unidirectional time. Marco Valente Universit` a dell’Aquila

Transcript of Replicator Dynamics Model · Lesson 3 6 Replicator Dynamics Model The equation for average quality...

Page 1: Replicator Dynamics Model · Lesson 3 6 Replicator Dynamics Model The equation for average quality is the computational equivalent for AvQualityt = P N i=1 Salesi t×Quality i P N

Lesson 3 1'

&

$

%

Replicator Dynamics Model

In this lesson we will start to implement a model with an economic

interpretation.

Though the model is extremely simple, it still can generate less than

obvious results. We will exploit Lsd to implement the model, observe

the results, and find a convincing representation of the results.

In the process we will discuss an apparent limitation of simulation

models: the constraint posed by working in real, unidirectional time.

Marco Valente Universita dell’Aquila

Page 2: Replicator Dynamics Model · Lesson 3 6 Replicator Dynamics Model The equation for average quality is the computational equivalent for AvQualityt = P N i=1 Salesi t×Quality i P N

Lesson 3 2'

&

$

%

Replicator Dynamics Model

Let’s consider a model made of a market and several firms. Firms are

assigned a constant level of quality. Firms’ sales are computed

according to the equation:

Salest = Salest−1

[

1 + a

(

Quality − AvQualityt

AvQualityt

)]

That is, sales change of a∗Salest−1

100for each percentage of difference

between the firms’ own quality and the market average quality.

Marco Valente Universita dell’Aquila

Page 3: Replicator Dynamics Model · Lesson 3 6 Replicator Dynamics Model The equation for average quality is the computational equivalent for AvQualityt = P N i=1 Salesi t×Quality i P N

Lesson 3 3'

&

$

%

Replicator Dynamics Model

The average quality must be a weighted average of firms’ qualities, with

the sales weighting the different firms.

A weighted average is like the average but the units computed are not of

the same importance. For example, consider that in Italy there are only

Ferrari and Fiat 500. Suppose that the quality of Ferrari is 1000 and the

quality of Fiat is 10. The average quality of a car in Italy is not1000+10

2= 505, that is, 50 times that of a Fiat car. We need to consider

that there are far more Fiat’s than Ferrari’s. Suppose that there are

20,000,000 Fiat in Italy, and 2,000 Ferrari. Then the weighted average of

quality for the cars in Italy is:

AvQualityItaly =20, 000, 000 ∗ 10 + 2, 000 ∗ 1000

20, 000, 000 + 2, 000= 10.099

Very close to that of the most frequently used Fiat car.

Marco Valente Universita dell’Aquila

Page 4: Replicator Dynamics Model · Lesson 3 6 Replicator Dynamics Model The equation for average quality is the computational equivalent for AvQualityt = P N i=1 Salesi t×Quality i P N

Lesson 3 4'

&

$

%

Replicator Dynamics Model

In general, if we have N firms on which we have to compute the

average of the quality weighted with the sales, the equation will be:

AvQualityt =

∑N

i=1 Salesit × Qualityi

∑N

i=1 Salesit

The only problem is that this equation, together with the former

equation for sales, cannot work. To see why, let’s use Lsd to find out

the problem.

Marco Valente Universita dell’Aquila

Page 5: Replicator Dynamics Model · Lesson 3 6 Replicator Dynamics Model The equation for average quality is the computational equivalent for AvQualityt = P N i=1 Salesi t×Quality i P N

Lesson 3 5'

&

$

%

Replicator Dynamics Model

Let’s create a new model in LMM. Call it RD. Insert the first equation as:

EQUATION("Sales")

/*

Level of sales, computed as the past sales plus a share of the

difference of quality in respect of the average quality

*/

v[0]=V("Quality");

v[1]=V("a");

v[2]=VL("Sales",1);

v[3]=V("AvQuality");

v[4]=v[2]*(1+v[1]*(v[0]-v[3])/v[3]);

RESULT(v[4] )

Marco Valente Universita dell’Aquila

Page 6: Replicator Dynamics Model · Lesson 3 6 Replicator Dynamics Model The equation for average quality is the computational equivalent for AvQualityt = P N i=1 Salesi t×Quality i P N

Lesson 3 6'

&

$

%

Replicator Dynamics Model

The equation for average quality is the computational equivalent for

AvQualityt =

N

i=1Salesi

t×Qualityi

N

i=1Salesi

t

. In computational terms it must

contain the following steps:

1. Set to 0 two variables where to store the dividend and the divisor;

2. take the first object Firm;

3. compute in this object the values of Quality and and Sales;

4. increase the dividend with the product of the two values;

5. increase the divisor with the value for Sales;

6. change the currently used Firm with the next copy and goto 3.

Marco Valente Universita dell’Aquila

Page 7: Replicator Dynamics Model · Lesson 3 6 Replicator Dynamics Model The equation for average quality is the computational equivalent for AvQualityt = P N i=1 Salesi t×Quality i P N

Lesson 3 7'

&

$

%

Replicator Dynamics Model

The Lsd code equivalent is the following:

EQUATION("AvQuality")

/*

Average quality, weighted with the value of sales

*/

v[0]=0;

v[1]=0;

CYCLE(cur, "Firm")

{

v[2]=VS(cur,"Quality");

v[3]=VS(cur,"Sales");

v[0]=v[0]+v[2]*v[3];

v[1]=v[1]+v[3];

}

RESULT(v[0]/v[1] )

Marco Valente Universita dell’Aquila

Page 8: Replicator Dynamics Model · Lesson 3 6 Replicator Dynamics Model The equation for average quality is the computational equivalent for AvQualityt = P N i=1 Salesi t×Quality i P N

Lesson 3 8'

&

$

%

Replicator Dynamics Model

Let’s see in detail the code for the equation.

...

v[0]=0;

v[1]=0;

...

These two lines set to 0 two local variables. These variables will be

used as containers for the cumulated values of sales and sales times

quality. In other terms, they will act as boxes.

They are created empty (e.g. equal to 0). Then they are filled with

the values computed for each firm. Since we access one firm per time

(see below), the sum must be subject to this limitation.

Marco Valente Universita dell’Aquila

Page 9: Replicator Dynamics Model · Lesson 3 6 Replicator Dynamics Model The equation for average quality is the computational equivalent for AvQualityt = P N i=1 Salesi t×Quality i P N

Lesson 3 9'

&

$

%

Replicator Dynamics Model

We can’t compute X =∑n

i=1 xi because writing this expression

literally into the code would require to fix the value for n, while we

want to express code that can work for different n’s.

The solution is to repeat n times the equivalent of the following

operation:

X = X + xi

Ensuring that initially we have X = 0 and that we repeat the

operation for all the xi the result is identical to X =∑n

i=1 xi

Marco Valente Universita dell’Aquila

Page 10: Replicator Dynamics Model · Lesson 3 6 Replicator Dynamics Model The equation for average quality is the computational equivalent for AvQualityt = P N i=1 Salesi t×Quality i P N

Lesson 3 10'

&

$

%

Replicator Dynamics Model

CYCLE(cur, "Firm")

{

v[2]=VS(cur,"Quality");

v[3]=VS(cur,"Sales");

...

}

This code implements a cycle. That is, the lines within the cycle are repeated

again and again for as many times as many copies of object Firm are present in

the model. At each repetition, the local variable cur refers to a different copy of

a Firm. So, for example, each time v[2] contains the quality of a different Firm.

The local variable cur is the equivalent of one of the v[..], but, instead of

accepting numerical values, can be assigned a copy of an object.

The Lsd command VS(cur, "VarLabel") is like V(’’VarLabel’’) but instead of

searching in the model an object containing VarLabel it searches in the object

contained in cur.

Marco Valente Universita dell’Aquila

Page 11: Replicator Dynamics Model · Lesson 3 6 Replicator Dynamics Model The equation for average quality is the computational equivalent for AvQualityt = P N i=1 Salesi t×Quality i P N

Lesson 3 11'

&

$

%

Replicator Dynamics Model

The Lsd command CYCLE(cur, ’’ObjLabel’’) must be used

carefully since it works only if the equation containing it refers to a

variable located in the correct object.

The command works as follows. Firstly, it search the group of objects

ObjLabel among the objects contained within the object whose

variable is updated. In our example AvQuality (the variable whose

equation contains the CYCLE(...) command) is contained in

Market.

Therefore, having the code CYCLE(cur, ’’Firm’’) in this equation

requires that Market contains object Firm. If not (e.g. FiRm), an

error will occur.

Marco Valente Universita dell’Aquila

Page 12: Replicator Dynamics Model · Lesson 3 6 Replicator Dynamics Model The equation for average quality is the computational equivalent for AvQualityt = P N i=1 Salesi t×Quality i P N

Lesson 3 12'

&

$

%

Replicator Dynamics Model

When the appropriate descending object is found, the first copy of

the group is assigned to the local variable (for objects) cur, and the

body of the cycle is then executed.

When the body is completed the execution flows controls whether

there is another copy of object next to the one just used, i.e. another

Firm. If there is another copy, this is assigned to cur and the body

is repeated again, but with the new copy contained in cur.

The use of cur plays the role of index i, in that it allows to

differentiate between different copies of the same object. Let’s see in

detail why it is different to use V(...) from VS(cur, ...).

Marco Valente Universita dell’Aquila

Page 13: Replicator Dynamics Model · Lesson 3 6 Replicator Dynamics Model The equation for average quality is the computational equivalent for AvQualityt = P N i=1 Salesi t×Quality i P N

Lesson 3 13'

&

$

%

Replicator Dynamics Model

The model is composed by Market containing several Firm. The equation for

AvQuality is located in Market. When its code requests one value for Quality

the system has many copies to be used, and not indication on which one to get.

By default it gets the first.

Market

AvQuality

Firm

SalesQuality

Firm Firm Firm

SalesQuality

SalesQuality

SalesQuality

Marco Valente Universita dell’Aquila

Page 14: Replicator Dynamics Model · Lesson 3 6 Replicator Dynamics Model The equation for average quality is the computational equivalent for AvQualityt = P N i=1 Salesi t×Quality i P N

Lesson 3 14'

&

$

%

Replicator Dynamics Model

The solution is to use the pointer cur. This is a sort of variable where the

modeller can store objects instead of numbers. When the command line

CYCLE(cur,’’Firm’’) is used, the system repeats the following lines as

many times as many objects Firm are found in Market. During each

repetition cur will contain a different copy of Firm.

Market

AvQuality

Firm

SalesQuality

Firm Firm Firmcur= cur= cur= cur=

CYCLE(cur, "Firm") { ... }

SalesQuality

SalesQuality

SalesQuality

Marco Valente Universita dell’Aquila

Page 15: Replicator Dynamics Model · Lesson 3 6 Replicator Dynamics Model The equation for average quality is the computational equivalent for AvQualityt = P N i=1 Salesi t×Quality i P N

Lesson 3 15'

&

$

%

Replicator Dynamics Model

CYCLE(cur, "Firm")

{

v[2]=VS(cur,"Quality");

v[3]=VS(cur,"Sales");

v[0]=v[0]+v[2]*v[3];

v[1]=v[1]+v[3];

}

RESULT(v[0]/v[1] )

The lines for v[0] and v[1] in the cycles fill in these two local variables.

For example, v[1] is assigned its own value (the amount cumulated so

far) plus the level of sales for the Firm currently used in the cycle.

In the end of the cycles v[1] will contain the sum of all the sales for

each Firm in the model.

Marco Valente Universita dell’Aquila

Page 16: Replicator Dynamics Model · Lesson 3 6 Replicator Dynamics Model The equation for average quality is the computational equivalent for AvQualityt = P N i=1 Salesi t×Quality i P N

Lesson 3 16'

&

$

%

Replicator Dynamics Model

We can now compile the model: menu Model/Run will create the

Lsd model program for this model, or give messages on the grammar

errors preventing the compilation. In case, check the line numbers on

the messages of error to fix the equations.

Create a model using the commands in menu Model to create

variables, parameters and objects. Beware to have the Lsd Browser

showing the correct object before including new items.

Marco Valente Universita dell’Aquila

Page 17: Replicator Dynamics Model · Lesson 3 6 Replicator Dynamics Model The equation for average quality is the computational equivalent for AvQualityt = P N i=1 Salesi t×Quality i P N

Lesson 3 17'

&

$

%

Replicator Dynamics Model

The model must be composed by:

• Object Market containing variable AvQuality (0 lags),

parameter a and object Firm.

• Object Firm containing variable Sales (0 lags) and parameter

Quality.

Finally, generate 10 copies of object Firm; assign to each Quality

an increasing value from 10 to 19; assign value 0.2 to parameter a.

We can now run the model, but for the fact that the model will issue

a fatal error...

Marco Valente Universita dell’Aquila

Page 18: Replicator Dynamics Model · Lesson 3 6 Replicator Dynamics Model The equation for average quality is the computational equivalent for AvQualityt = P N i=1 Salesi t×Quality i P N

Lesson 3 18'

&

$

%

Dead lock errors

If no other errors appeared, the model has shown a small windowcommunicating the existence of a fatal error, preventing thecontinuation of the simulation. See Log window, and you will likelysee the following text:

Dead lock! Variable:

AvQuality

requested by Object:

Firm

Fatal error detected at time 1.

Offending code contained in the equation for Variable: Sales

... (deleted text) ...

Level Variable Label

2 Sales

1 AvQuality

0 Lsd Simulation Manager

Marco Valente Universita dell’Aquila

Page 19: Replicator Dynamics Model · Lesson 3 6 Replicator Dynamics Model The equation for average quality is the computational equivalent for AvQualityt = P N i=1 Salesi t×Quality i P N

Lesson 3 19'

&

$

%

Dead-lock errors

The dead-lock error is an example of a logical error. The two

equations we have implemented have nothing wrong on their own,

but they cannot work in the same model. To see why let’s consider

again the equations.

AvQualityt =

∑N

i=1 Salesit × Qualityi

∑N

i=1 Salesit

(1)

Salest = Salest−1

[

1 + a

(

Quality − AvQualityt

AvQualityt

)]

(2)

Marco Valente Universita dell’Aquila

Page 20: Replicator Dynamics Model · Lesson 3 6 Replicator Dynamics Model The equation for average quality is the computational equivalent for AvQualityt = P N i=1 Salesi t×Quality i P N

Lesson 3 20'

&

$

%

Dead-lock errors

Suppose that at the beginning of the simulation 1 the model starts to

compute equation (1). In order to execute the code for the equation it

needs the values of Sales and Quality for each firm. Concerning Quality

there is no problem, since it is a parameter. But Sales is not computed

yet. In this case the equation for AvQuality is interrupted and the

system begins the execution of the equation (2) to update the first Sales.

This procedure is normal, since the modeller in Lsd does not tell the

system explicitly the order of execution of the equations.

The problem is that in order to compute equation (2) the system needs,

among other values, also the value of AvQuality at time t = 1. But this

is not available, because its execution has been interrupted.

Even if we start from equation (2) we have the same problem. None of the

two equations can be computed before the other.

Marco Valente Universita dell’Aquila

Page 21: Replicator Dynamics Model · Lesson 3 6 Replicator Dynamics Model The equation for average quality is the computational equivalent for AvQualityt = P N i=1 Salesi t×Quality i P N

Lesson 3 21'

&

$

%

Dead-lock errors

Dead-locks can appear only in computational models, not in mathematical

ones. In mathematics it is perfectly normal to have a system of equations

like:

Xt = 2 + 3Yt (1)

Yt = 4 − 2Xt (2)

The mathematical sense of the system is: find the values of Xt and Yt such

that the conditions (1) and (2) are satisfied. Any high-school students is

taught smart tricks to solve different types of these systems.

In computational terms, however, the system above is illegal. The

computer reads the equations as: to compute X first you need to compute

Y. To compute Y first you need to compute X. Locked.

Marco Valente Universita dell’Aquila

Page 22: Replicator Dynamics Model · Lesson 3 6 Replicator Dynamics Model The equation for average quality is the computational equivalent for AvQualityt = P N i=1 Salesi t×Quality i P N

Lesson 3 22'

&

$

%

Mathematics vs. Computers

Mathematical models and computational models are very different,

as we have seen above. The main difference is that math expressions

are time-less statements, while computational models are programs

executing one step at a time. Which modelling style is better in

Economics? Depends on the phenomenon you want to represent.

• Mathematical models represent universal laws. For example, a

demand curve P = 1Q

• Computational models represent dynamical phenomena. For

example, the development of a market.

Marco Valente Universita dell’Aquila

Page 23: Replicator Dynamics Model · Lesson 3 6 Replicator Dynamics Model The equation for average quality is the computational equivalent for AvQualityt = P N i=1 Salesi t×Quality i P N

Lesson 3 23'

&

$

%

Learning by coding

Implementing a model teaches the modeller what is relevant in the

reality. Our two equations were well adapted to represent the

meaning of their variables, but the model does not work because we

did not consider the problem of time precedence. For real economic

phenomena time is relevant, and the computational models teach us

to consider it properly.

The need to implement a model in computational terms forces

modellers to think correctly to the reality under investigation.

Marco Valente Universita dell’Aquila

Page 24: Replicator Dynamics Model · Lesson 3 6 Replicator Dynamics Model The equation for average quality is the computational equivalent for AvQualityt = P N i=1 Salesi t×Quality i P N

Lesson 3 24'

&

$

%

Solving dead-lock errors

How do we solve a dead-lock error? We need to force the system to

complete first one equation and then the other. We have two options:

first equation (1) and then equation (2), or the other way around.

Let’s have the model to compute first AvQuality. That is, our

model becomes:

AvQualityt =

∑N

i=1 Salesi

t-1 × Qualityi

∑N

i=1 Salesi

t-1

(1)

Salest = Salest−1

[

1 + a

(

Quality − AvQualityt

AvQualityt

)]

(2)

Now equation (1) can be computed because it does not need to

compute Salest to be completed. When (1) produced AvQualityt

then we can use the newly computed value to excute (2).

Marco Valente Universita dell’Aquila

Page 25: Replicator Dynamics Model · Lesson 3 6 Replicator Dynamics Model The equation for average quality is the computational equivalent for AvQualityt = P N i=1 Salesi t×Quality i P N

Lesson 3 25'

&

$

%

Solving dead-lock errors

A powerful and rare feature of Lsd in respect of other languages is

that users need not to declare specifically the precedence of equations

within a model.

Lsd finds automatically one of the possible solutions to order

equations respecting the implicit ordering as expressed by lags. If

there is no solution an error is issued.

Modellers can still impose specific orderings, if willing to do so, e.g.

to optimize execution speed or for exceptional conditions (very first

time step).

Marco Valente Universita dell’Aquila

Page 26: Replicator Dynamics Model · Lesson 3 6 Replicator Dynamics Model The equation for average quality is the computational equivalent for AvQualityt = P N i=1 Salesi t×Quality i P N

Lesson 3 26'

&

$

%

Fixing the dead-lock error

The equation for average quality becomes:

EQUATION("AvQuality")

/*

Average quality, weighted with the value of sales

*/

v[0]=0;

v[1]=0;

CYCLE(cur, "Firm")

{

v[2]=VS(cur,"Quality");

v[3]=VLS(cur,"Sales",1); //use lagged values

v[0]=v[0]+v[2]*v[3];

v[1]=v[1]+v[3];

}

RESULT(v[0]/v[1] )

Marco Valente Universita dell’Aquila

Page 27: Replicator Dynamics Model · Lesson 3 6 Replicator Dynamics Model The equation for average quality is the computational equivalent for AvQualityt = P N i=1 Salesi t×Quality i P N

Lesson 3 27'

&

$

%

Running the model

Now the model works. We have that the sales of 10 firms with qualities

ranging from 10 to 19 and initial sales at 100 produce the following result.

0 100 200 300 400

0

246.707

493.414

740.121

986.828

Sales_1_1 Sales_1_2 Sales_1_3 Sales_1_4 Sales_1_5 Sales_1_6 Sales_1_7 Sales_1_8 Sales_1_9 Sales_1_10

Marco Valente Universita dell’Aquila

Page 28: Replicator Dynamics Model · Lesson 3 6 Replicator Dynamics Model The equation for average quality is the computational equivalent for AvQualityt = P N i=1 Salesi t×Quality i P N

Lesson 3 28'

&

$

%

Interpretation and Question

The model can be interpreted as expressing the fact that high-quality

firms eventually gain shares at the expenses of low quality ones.

It needs to be noted that this model is not a model of competition,

at least in the long term. It is a model representing the path leading

to a monopoly, since it is impossible to prevent the highest quality

firm to dominate the market.

But we may also consider a potential puzzle. If the sales’ dynamics is

driven by quality, a constant parameter, why some firms (e.g. the

9th), initially see their sales increasing and then falling?

Marco Valente Universita dell’Aquila

Page 29: Replicator Dynamics Model · Lesson 3 6 Replicator Dynamics Model The equation for average quality is the computational equivalent for AvQualityt = P N i=1 Salesi t×Quality i P N

Lesson 3 29'

&

$

%

Interpretation and Question

Simulation models only produce the consequences of their content.

Therefore, the question above may be easily answered, especially by

gifted mathematicians.

However, simulation models frequently surprise, and supporting the

motivation of unexpected results is crucial to exploit the model. As

an exercise, besides answering the question, find a convincing way to

present the answer such as to be easily understood.

Marco Valente Universita dell’Aquila