Skip to the simulation
Simulation two of five

The recommender

A thousand agents holding an opinion, and a system deciding what each of them gets to see. The same population is run twice from the same starting point with the same random draws, once with the system choosing and once with a neutral feed, so that the difference between the two runs is the system and nothing else. That difference is a number, and it is on the screen while it happens.

This is the simulation the whole programme is for. The claim SIMEA makes is that an agent embedded in a system is not the same object as an agent choosing alone, and that the difference can be measured rather than merely asserted. A claim like that is empty until you can watch it happen and read it off a dial.

So here is the smallest world in which the claim can be tested. Each agent holds a position on a single axis, from one end to the other. Each round it is shown a handful of positions held by other agents. It moves a little towards anything close enough to its own to be worth taking seriously, and ignores anything too far away. The only thing the system does is choose which handful.

That is a very small power. It cannot make an agent believe anything. It cannot punish, pay, persuade or lie. It selects. Run it and watch how far selection alone can carry a population.

01Two worlds, one seed

The picture below is two rasters. Time runs left to right. The axis of opinion runs from one end of the vertical to the other. The darker a band, the more agents are standing there at that moment.

The upper raster is the world with the recommender in it. The lower one is the counterfactual: the same agents, the same starting positions, the same random numbers drawn in the same order, and a feed that selects uniformly at random. Set the recommender to favour agreement not at all and the two rasters are identical, pixel for pixel, because at that setting the two worlds are the same process. Every difference you see below is the system.

Figure one set the feed, then run

Where the population stands, round by round

not run yet

02The three constructs, on the screen

SIMEA proposes three measurable quantities: the influence gradient a system exerts on a choice, the autonomy threshold that remains the agent's own, and the entropy of the choice environment itself. Below is what each of them means here, how it is computed here, and what it currently reads.

I want to be exact about the status of these three definitions. Each one is an operationalisation: one way of turning a construct into arithmetic that a machine can do, chosen because it is simple, bounded and legible. None of them is the construct. A different operationalisation, on a different model, would give different numbers, and several reasonable ones exist for each. What the three are good for is comparison within one model, where the only thing that changed is the thing the reader changed.

Influence gradient 0.00

How far along the axis the system's choosing carried the population, compared with where the same population went without it. Both runs are binned into twenty four bins and the two distributions are compared by asking how far the mass of one would have to be moved to lie exactly on the other, as a share of the whole width of the axis. Zero means the steered population sits exactly where the unsteered one does. One means it was carried from one end of the axis to the other.

F(b) = the share of the population at or below bin b G = ( sum over bins b of | F_steered(b) − F_neutral(b) | ) / 23

This is a distance along the axis, and choosing it cost me a wrong answer first. I began with the total variation distance, which asks only how much of the two distributions fails to overlap. It reads zero correctly, but once a population has gathered into one or two tight positions it jumps to one the moment those positions stop sharing a bin, so a consensus nudged along by a hair and a population torn in half both scored one. The distance along the axis distinguishes them, because it counts how far the mass moved rather than whether it moved. It is still one operationalisation among several: the same construct could be measured agent by agent against each agent's own counterfactual self, or as a shift in the mean, and those would not agree with this one.

Autonomy threshold 1.00

Each round an agent's new position is a weighted average of where it already stood and what it was shown. The autonomy threshold is the weight still carried by where it already stood, averaged over the population. One means nothing it saw moved it. Lower means more of it came from the feed.

for agent i: x_i(next) = (1 − μ·m_i)·x_i + μ · sum over accepted items j of x_j A = average over agents of ( 1 − μ·m_i )

μ is the fixed step an agent takes towards one accepted item, 0.15 here, and m_i is how many of the five items it accepted this round. With five slots and that step the arithmetic floor of this measure is 0.25, so it cannot report a total loss of autonomy: it reports how much of the population's movement is the feed's rather than its own, within a model that never lets the feed have all of it. That floor is a property of my parameters, not of the construct.

Entropy of the choice environment 1.00

Not what the population believes, but what it is being offered. For each agent the feed has an exact distribution over the axis: the chance that a slot lands in each of the twenty four bins, given the candidates drawn for it, the weight put on agreement and the random share. The Shannon entropy of that distribution is taken, divided by the entropy of a flat one so it runs from zero to one, and averaged over the population. One means an agent is being offered the whole axis evenly. Falling means its feed has narrowed.

for agent i: q_i(b) = the chance that a slot in i's feed lands in bin b H = average over agents of ( − sum over bins b of q_i(b) · log q_i(b) ) / log 24

Two remarks, and both of them cost me an assumption I had not noticed I was making. First, this is one agent's environment averaged over agents, and not the population's. Measured across everyone at once the number stays high even when every individual feed is narrow, because narrow feeds pointed in different directions still cover the axis between them. That figure is printed in the reading line under the picture so the two can be compared, and the difference between them is most of what the word bubble is trying to say. Second, the number falls both because the recommender is selecting narrowly and because the population has collapsed and there is little left to serve, and it does not distinguish the two. Read it beside the raster rather than instead of it.

Figure two the three constructs, round by round

03Three things worth doing to it

First, set the recommender to favour agreement not at all and run it. The influence gradient holds at zero for the whole run and the two rasters stay identical. This is the control, and it is worth watching once, because a measure that does not read zero when nothing is happening is not worth reading at all.

Second, put the willingness to move at something moderate, turn the favouring of agreement up hard, and run it again. The population splits, the two halves walk away from each other, and the gradient climbs while it happens. The neutral world underneath, with the same agents and the same draws, comes together instead.

Third, leave the recommender exactly where it is and raise the share of the feed drawn at random. The entropy of each agent's environment goes back up, the halves stop separating, and above a certain share the population comes together again. The system did not become less powerful. Its selections were simply diluted, and dilution turns out to be enough.

04What the rule actually is

An agent updates towards what it is shown only when what it is shown is close enough to be worth taking seriously. That is a bounded confidence rule, which is standard in the opinion dynamics literature and cited below. Everything the model does follows from it and from the selection.

candidates: thirty two other agents drawn at random for each agent, each round selection: item j is picked with weight proportional to exp( − α · | x_j − x_i | ) with a share ρ of the slots drawn uniformly at random instead update: accept item j when | x_j − x_i | ≤ c, then move x_i towards x_j by μ = 0.15 α is the favouring of agreement, ρ the random share, c the willingness to move towards disagreement. At α equal to zero the weights are all equal and the selection is uniform, which is exactly the neutral feed, which is why the two worlds coincide there.

Notice what the recommender is not doing. It has no objective it is maximising, no model of the agent beyond its current position, no memory, and no interest in the outcome. It is one exponential weight on a distance. Almost every real system is more capable than this, and the more capable ones would not be gentler.

05Where the model stops

This is the simulation I am most careful about, because it is the one most likely to be quoted as though it said something about a real platform. It does not. Here is what it cannot tell you.

Assumptions and limits

  • One axisAn opinion is a single number on a single line. Real positions are many dimensional and often not ordered at all, and a great deal of what makes a disagreement a disagreement disappears when it is flattened to a line.
  • The rule is inventedThe bounded confidence update is a modelling convention with a literature behind it, not a measured law of how people change their minds. Agents here have no memory, no identity, no group, no cost of changing position and no reason to hold one position rather than another.
  • The system is a toyOne exponential weight on one distance. No engagement objective, no advertising, no ranking model, no cold start, no moderation, no notion of what a real recommender is trained on. Reading the number here as an estimate of any real system's influence would be a category error.
  • The three constructs are one operationalisationSaid again because it matters. Total variation distance, a weight in an update rule and a normalised Shannon entropy are three defensible choices, and three other defensible choices would give three other sets of numbers. The constructs are the ideas. These are one way of counting them.
  • The counterfactual is only available hereThe influence gradient is computed by running the world twice. In a real system there is exactly one run and no neutral twin, which is precisely the measurement problem the programme exists to work on. What this page shows is what the quantity would mean if you could get it, not a method for getting it.
  • The entropy is ambiguousIt falls when the feed narrows and it falls when the population collapses, and it cannot tell you which. Read it beside the raster, not instead of it.
  • No numbers here are estimatesEvery figure on this page comes from the parameters above it. None of them describes any platform, any population or any measured effect.

06Sources

The framework is my own and the note behind it is linked below. The two pieces of standing work the model borrows from are these.

  • The update rule is a bounded confidence model: an agent takes account only of the opinions within a confidence interval of its own, and the paper investigates how the width of that interval decides whether a population reaches consensus, splits or fragments. Rainer Hegselmann and Ulrich Krause, Opinion Dynamics and Bounded Confidence: Models, Analysis and Simulation, Journal of Artificial Societies and Social Simulation 5(3), article 2, 2002. jasss.org/5/3/2.html Checked 2026 08 22.
  • The entropy of the choice environment is Shannon's entropy of the distribution of what is served, normalised by the entropy of the flat distribution over the same bins. Claude E. Shannon, A Mathematical Theory of Communication, The Bell System Technical Journal 27, 1948, pages 379 to 423 and 623 to 656. doi.org 10.1002/j.1538-7305.1948.tb01338.x Full text read at people.math.harvard.edu. Checked 2026 08 22.
  • The three constructs and the reasons for wanting them. Kerem Özdemir, The agent was never alone: SIMEA, a working note. keremozdemir.de/note-simea.html