Random letters documentation
Variables and Scales
Agent’s variables Each agent represents a scholar. They are heterogeneous and defined by a matrix of static and dynamic characteristics. Among other traits, agents hold a geographical position and a vector of topics.
Position [x, y]: Every agent has a time-varying position represented as a pair of x-y coordinates in a 2-D plane or map.
Letters-sent [ai]: A vector where each element ai expresses the total number of letters sent from the scholar to agent i.
Letters-received [aj ]: A vector where each element aj shows the total count of letters received from agent j
Topics [ak]: A vector containing the interest of the agent among k topics.
Global variables We position the agents in geographical space and give them topics. So, beyond the agent’s variables, we keep track of the global environment.
Social Network [aij ]: A weighted directed graph measuring the number of letters sent from agent i to agent j
Letters: A time-stamped ledger table that keeps track of every letter sent
Each entry includes information on senders and receivers, their locations, the topic of the letter, and the time.
Scheduling
Create N agents. Give them an initial position and a random topic of vectors.
Start the simulation at time t = 0.
At each step, the agents receive a list of neighbours within a threshold radius. We consider both social and spatial distance to make the list of neighbours.
Each agent selects and writes a letter to one of their neighbours. To pick the neighbour, we use a variation of the Polya Urn. We create a distribution of neighbours’ ids based on their total letters received and past communication - both letters sent and received - with the focal agent. And we randomly pick one id from the distribution.
After we match senders with potential receivers, we compare their topic interests. We find the distance between their vector of topics. And if it falls within a predetermined threshold, we continue with the simulation.
Every letter has at least one topic. And we repeat the urn process to select it. Thus we create a distribution of topics based on the intersection of interest between receiver and sender, and we randomly pick one.
After selecting a receiver and topics, the agent can send their letters. And we need to update their global and agent variables.
First, in the Letters table, we write the complete ”transaction” information. That is, we add a new line containing the ids of the sender and receiver, their respective locations, the topic, and the time.
Then, we update the agents’ vectors.
Agents are updated sequentially and at random.
A time-step is defined as the length of time it takes to update all agents