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