<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://www.waterwaysinwhittlesea.org/index.php?action=history&amp;feed=atom&amp;title=Mesa</id>
	<title>Mesa - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://www.waterwaysinwhittlesea.org/index.php?action=history&amp;feed=atom&amp;title=Mesa"/>
	<link rel="alternate" type="text/html" href="http://www.waterwaysinwhittlesea.org/index.php?title=Mesa&amp;action=history"/>
	<updated>2026-11-15T16:21:27Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.4</generator>
	<entry>
		<id>http://www.waterwaysinwhittlesea.org/index.php?title=Mesa&amp;diff=10550&amp;oldid=prev</id>
		<title>EdmondLascaris: Created page with &quot;=Introduction=  =Code 1=  &lt;syntaxhighlight lang=&quot;python&quot;&gt; from mesa import Agent, Model from mesa.time import RandomActivation from mesa.datacollection import DataCollector import matplotlib.pyplot as plt  class VillageResident(Agent):     &quot;&quot;&quot;An agent representing a resident choosing between personal cars and public transport.&quot;&quot;&quot;          def __init__(self, unique_id, model):         super().__init__(unique_id, model)         self.transport_mode = &quot;car&quot; if self.random.ra...&quot;</title>
		<link rel="alternate" type="text/html" href="http://www.waterwaysinwhittlesea.org/index.php?title=Mesa&amp;diff=10550&amp;oldid=prev"/>
		<updated>2025-02-28T00:36:21Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;=Introduction=  =Code 1=  &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt; from mesa import Agent, Model from mesa.time import RandomActivation from mesa.datacollection import DataCollector import matplotlib.pyplot as plt  class VillageResident(Agent):     &amp;quot;&amp;quot;&amp;quot;An agent representing a resident choosing between personal cars and public transport.&amp;quot;&amp;quot;&amp;quot;          def __init__(self, unique_id, model):         super().__init__(unique_id, model)         self.transport_mode = &amp;quot;car&amp;quot; if self.random.ra...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=Introduction=&lt;br /&gt;
&lt;br /&gt;
=Code 1=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from mesa import Agent, Model&lt;br /&gt;
from mesa.time import RandomActivation&lt;br /&gt;
from mesa.datacollection import DataCollector&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
class VillageResident(Agent):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;An agent representing a resident choosing between personal cars and public transport.&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    def __init__(self, unique_id, model):&lt;br /&gt;
        super().__init__(unique_id, model)&lt;br /&gt;
        self.transport_mode = &amp;quot;car&amp;quot; if self.random.random() &amp;lt; model.car_preference else &amp;quot;public&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    def step(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;At each step, agents may switch transport mode based on congestion.&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        if self.model.traffic_congestion &amp;gt; 0.7:  # If congestion is high, some switch to public transport&lt;br /&gt;
            if self.random.random() &amp;lt; 0.3:  # 30% chance to switch to public transport&lt;br /&gt;
                self.transport_mode = &amp;quot;public&amp;quot;&lt;br /&gt;
        elif self.model.traffic_congestion &amp;lt; 0.3:  # If congestion is low, some switch to cars&lt;br /&gt;
            if self.random.random() &amp;lt; 0.2:  # 20% chance to switch to cars&lt;br /&gt;
                self.transport_mode = &amp;quot;car&amp;quot;&lt;br /&gt;
&lt;br /&gt;
class VillageModel(Model):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;A model representing transport in a village.&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    def __init__(self, num_agents, car_preference):&lt;br /&gt;
        self.num_agents = num_agents&lt;br /&gt;
        self.car_preference = car_preference  # % of people preferring cars initially&lt;br /&gt;
        self.schedule = RandomActivation(self)&lt;br /&gt;
&lt;br /&gt;
        # Create agents&lt;br /&gt;
        for i in range(self.num_agents):&lt;br /&gt;
            agent = VillageResident(i, self)&lt;br /&gt;
            self.schedule.add(agent)&lt;br /&gt;
        &lt;br /&gt;
        # Data collector to track transport usage&lt;br /&gt;
        self.datacollector = DataCollector(&lt;br /&gt;
            model_reporters={&amp;quot;Car Users&amp;quot;: lambda m: sum(1 for a in m.schedule.agents if a.transport_mode == &amp;quot;car&amp;quot;),&lt;br /&gt;
                             &amp;quot;Public Transport Users&amp;quot;: lambda m: sum(1 for a in m.schedule.agents if a.transport_mode == &amp;quot;public&amp;quot;)}&lt;br /&gt;
        )&lt;br /&gt;
&lt;br /&gt;
    def step(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Advance the model by one step.&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        car_users = sum(1 for agent in self.schedule.agents if agent.transport_mode == &amp;quot;car&amp;quot;)&lt;br /&gt;
        self.traffic_congestion = car_users / self.num_agents  # Simple congestion measure (0 to 1)&lt;br /&gt;
&lt;br /&gt;
        self.schedule.step()&lt;br /&gt;
        self.datacollector.collect(self)&lt;br /&gt;
&lt;br /&gt;
# Run the model&lt;br /&gt;
village = VillageModel(num_agents=100, car_preference=0.7)  # 70% start with cars&lt;br /&gt;
&lt;br /&gt;
for i in range(50):  # Simulate 50 steps&lt;br /&gt;
    village.step()&lt;br /&gt;
&lt;br /&gt;
# Get data&lt;br /&gt;
data = village.datacollector.get_model_vars_dataframe()&lt;br /&gt;
&lt;br /&gt;
# Plot results&lt;br /&gt;
plt.plot(data[&amp;quot;Car Users&amp;quot;], label=&amp;quot;Car Users&amp;quot;)&lt;br /&gt;
plt.plot(data[&amp;quot;Public Transport Users&amp;quot;], label=&amp;quot;Public Transport Users&amp;quot;)&lt;br /&gt;
plt.xlabel(&amp;quot;Time Step&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Number of Users&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.title(&amp;quot;Transport Mode Choice Over Time in a Village&amp;quot;)&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>EdmondLascaris</name></author>
	</entry>
</feed>