Opinion Dynamics Model
Dynamics of decision making is commonly known to be much more than just the choice between right or
wrong or black and white, but can be seen much more to be based onto a continuous scale. For example
the political attitude of a person is usually somewhere in the middle between a left-wing and a right-wing
extremist. Reasons for that are quite obvious but yet the underlying dynamics are very interesting and
are going to be investigated with this model.
2 Model Definition
We consider a large number of N individuals (agents) and we let 1 denote a radical right-wing attitude
and −1 the opposing left-wing attitude. At the beginning of the model every individual is assumed to
have its own independent opinion respectively a random number between 0 and 1. We will furthermore
observe the behavior of the individual opinions after the human start to interact with respect to their
We assume that, whenever two people with attitude x1 and x2 meet, they either neglect each other as
their attitude is too different, or start discussing about politics adjusting their attitude towards their
discussion partner. Hence:
(x1, x2) → (x1 + µ(x2 − ( xx 11 ), x , x2 2)+ , µ( |x x1 1 − −x x2 2|)) > τ , |x1 − x2| ≤ τ (1)
We hereby speak of a so called threshold τ > 0 and an adjustment parameter 0 < µ ≤ 0.5. The bigger τ,
the more likely two individuals adjust their opinions. In case µ = 0.5 two discussing people always find
a perfect consensus and always get out of a discussion with the same attitude.
The model is performed dynamically with equidistant time steps:
1. Pick two agents at random
2. Compare their opinions
3. If the difference is larger than the threshold skip and start with the next time-step
4. Otherwise adjust their opinions according to (1) and start the next time-step.
Of course the model dynamics is ends up with clustering-efects as more and more people adjust their
opinions towards each other. Dependent on the size of the adjustment parameter and the threshold either
one or even more clusters appear in the end. Those could be translated with political parties.
Implement the basic model in MATLAB and perform some test-runs for about N = 1000
and 20000 timesteps.
Perform a parameter-sweep to find out which parameterset (τ,µ) causes how many clusters and where
they are located.
Place the agents on a rectangular lattice and replace the first point in the time steps by:
"Pick two neighboured agents at random". Try out and compare the results of different types of neighbourhoods (Moore, Von Neumann, Moore 2nd order,...). Investigate the clustering efects not only in
terms of a timed graph but also in terms of a heat-map of the grid.
Apply a so called movement phase - i.e. agents can switch their positions at the end of each time-step in
order to get new neighbours.
Instead of investigating spatial relationships via a grid, place all N agents into an abstract environment
and implement a network structure between the agents. I.e. create a number of links (edges) between
the agents, so that any two agents (vertices of the network) connected with a network edge means, that
they are having social interaction with each other (may talk to each other). As it is not trivial, how to
draw the edges in order to receive a realistic social network, leave it unmentioned.
Run the model with the developed static network, so that a picked agent may talk to a randomly picked
Think about updating the network in time, as social interactions are in general not static.
MATLAB (Cellular automata result)