|
246 | 246 | " super().__init__(seed=seed)\n",
|
247 | 247 | " self.num_agents = n\n",
|
248 | 248 | " # Create agents\n",
|
249 |
| - " for _ in range(self.num_agents):\n", |
250 |
| - " a = MoneyAgent(self)" |
| 249 | + " MoneyAgent.create_agents(model=self, n=n)" |
251 | 250 | ]
|
252 | 251 | },
|
253 | 252 | {
|
|
295 | 294 | " super().__init__(seed=seed)\n",
|
296 | 295 | " self.num_agents = n\n",
|
297 | 296 | "\n",
|
298 |
| - " # Create agents\n", |
299 |
| - " for _ in range(self.num_agents):\n", |
300 |
| - " a = MoneyAgent(\n", |
301 |
| - " self\n", |
302 |
| - " ) # This calls the agent class parameter n number of times\n", |
| 297 | + " # Create n agents\n", |
| 298 | + " MoneyAgent.create_agents(model=self, n=n)\n", |
303 | 299 | "\n",
|
304 | 300 | " def step(self):\n",
|
305 | 301 | " \"\"\"Advance the model by one step.\"\"\"\n",
|
|
478 | 474 | " self.num_agents = n\n",
|
479 | 475 | "\n",
|
480 | 476 | " # Create agents\n",
|
481 |
| - " for _ in range(self.num_agents):\n", |
482 |
| - " a = MoneyAgent(\n", |
483 |
| - " self\n", |
484 |
| - " ) # This calls the agent class parameter n number of times\n", |
| 477 | + " MoneyAgent.create_agents(model=self, n=n)\n", |
485 | 478 | "\n",
|
486 | 479 | " def step(self):\n",
|
487 | 480 | " \"\"\"Advance the model by one step.\"\"\"\n",
|
|
620 | 613 | " self.grid = mesa.space.MultiGrid(width, height, True)\n",
|
621 | 614 | "\n",
|
622 | 615 | " # Create agents\n",
|
623 |
| - " for _ in range(self.num_agents):\n", |
624 |
| - " a = MoneyAgent(self)\n", |
625 |
| - "\n", |
| 616 | + " agents = MoneyAgent.create_agents(model=self, n=n)\n", |
| 617 | + " # Create x and y positions for agents\n", |
| 618 | + " x = self.rng.randint(0, self.grid.width, size=(n,))\n", |
| 619 | + " y = self.rng.randint(0, self.grid.height, size=(n,))\n", |
| 620 | + " for a, i, j in zip(agents, x, y):\n", |
626 | 621 | " # Add the agent to a random grid cell\n",
|
627 |
| - " x = self.random.randrange(self.grid.width)\n", |
628 |
| - " y = self.random.randrange(self.grid.height)\n", |
629 |
| - " self.grid.place_agent(a, (x, y))" |
| 622 | + " self.grid.place_agent(a, (i, j))" |
630 | 623 | ]
|
631 | 624 | },
|
632 | 625 | {
|
|
724 | 717 | " self.grid = mesa.space.MultiGrid(width, height, True)\n",
|
725 | 718 | "\n",
|
726 | 719 | " # Create agents\n",
|
727 |
| - " for _ in range(self.num_agents):\n", |
728 |
| - " a = MoneyAgent(self)\n", |
| 720 | + " agents = MoneyAgent.create_agents(model=self, n=n)\n", |
| 721 | + " # Create x and y coordinates for agents\n", |
| 722 | + " x = self.rng.integers(0, self.grid.width, size=(n,))\n", |
| 723 | + " y = self.rng.integers(0, self.grid.height, size=(n,))\n", |
| 724 | + " for a, i, j in zip(agents, x, y):\n", |
729 | 725 | " # Add the agent to a random grid cell\n",
|
730 |
| - " x = self.random.randrange(self.grid.width)\n", |
731 |
| - " y = self.random.randrange(self.grid.height)\n", |
732 |
| - " self.grid.place_agent(a, (x, y))\n", |
| 726 | + " self.grid.place_agent(a, (i, j))\n", |
733 | 727 | "\n",
|
734 | 728 | " def step(self):\n",
|
735 | 729 | " self.agents.shuffle_do(\"move\")\n",
|
|
852 | 846 | " other = self.random.choice(cellmates)\n",
|
853 | 847 | " other.wealth += 1\n",
|
854 | 848 | " self.wealth -= 1\n",
|
855 |
| - " \n", |
| 849 | + "\n", |
856 | 850 | "\n",
|
857 | 851 | "class MoneyModel(mesa.Model):\n",
|
858 | 852 | " \"\"\"A model with some number of agents.\"\"\"\n",
|
|
868 | 862 | " )\n",
|
869 | 863 | "\n",
|
870 | 864 | " # Create agents\n",
|
871 |
| - " for _ in range(self.num_agents):\n", |
872 |
| - " a = MoneyAgent(self)\n", |
| 865 | + " agents = MoneyAgent.create_agents(model=self, n=n)\n", |
| 866 | + " # Create x and y positions for agents\n", |
| 867 | + " x = self.rng.integers(0, self.grid.width, size=(n,))\n", |
| 868 | + " y = self.rng.integers(0, self.grid.height, size=(n,))\n", |
| 869 | + " for a, i, j in zip(agents, x, y):\n", |
873 | 870 | " # Add the agent to a random grid cell\n",
|
874 |
| - " x = self.random.randrange(self.grid.width)\n", |
875 |
| - " y = self.random.randrange(self.grid.height)\n", |
876 |
| - " self.grid.place_agent(a, (x, y))\n", |
| 871 | + " self.grid.place_agent(a, (i, j))\n", |
877 | 872 | "\n",
|
878 | 873 | " def step(self):\n",
|
879 | 874 | " self.datacollector.collect(self)\n",
|
|
1137 | 1132 | " self.grid = mesa.space.MultiGrid(width, height, True)\n",
|
1138 | 1133 | "\n",
|
1139 | 1134 | " # Create agents\n",
|
1140 |
| - " for _ in range(self.num_agents):\n", |
1141 |
| - " a = MoneyAgent(self)\n", |
| 1135 | + " agents = MoneyAgent.create_agents(model=self, n=n)\n", |
| 1136 | + " # Create x and y positions for agents\n", |
| 1137 | + " x = self.rng.integers(0, self.grid.width, size=(n,))\n", |
| 1138 | + " y = self.rng.integers(0, self.grid.height, size=(n,))\n", |
| 1139 | + " for a, i, j in zip(agents, x, y):\n", |
1142 | 1140 | " # Add the agent to a random grid cell\n",
|
1143 |
| - " x = self.random.randrange(self.grid.width)\n", |
1144 |
| - " y = self.random.randrange(self.grid.height)\n", |
1145 |
| - " self.grid.place_agent(a, (x, y))\n", |
| 1141 | + " self.grid.place_agent(a, (i, j))\n", |
1146 | 1142 | "\n",
|
1147 | 1143 | " self.datacollector = mesa.DataCollector(\n",
|
1148 | 1144 | " model_reporters={\"Gini\": compute_gini}, agent_reporters={\"Wealth\": \"wealth\"}\n",
|
|
1234 | 1230 | " self.num_agents = n\n",
|
1235 | 1231 | "\n",
|
1236 | 1232 | " # Create agents\n",
|
1237 |
| - " for _ in range(self.num_agents):\n", |
1238 |
| - " a = MoneyAgent(self)\n", |
| 1233 | + " MoneyAgent.create_agents(model=self, n=n)\n", |
1239 | 1234 | "\n",
|
1240 | 1235 | " self.datacollector = mesa.DataCollector(\n",
|
1241 | 1236 | " model_reporters={\"Gini\": compute_gini}, agent_reporters={\"Wealth\": \"wealth\"}\n",
|
|
1320 | 1315 | " ethnicities = [\"Green\", \"Blue\", \"Mixed\"]\n",
|
1321 | 1316 | "\n",
|
1322 | 1317 | " # Create agents\n",
|
1323 |
| - " for _ in range(self.num_agents):\n", |
1324 |
| - " a = MoneyAgent(self, self.random.choice(ethnicities))\n", |
| 1318 | + " MoneyAgent.create_agents(model=self, n=n, ethnicity=self.random.choice(ethnicities))\n", |
1325 | 1319 | "\n",
|
1326 | 1320 | " self.datacollector = mesa.DataCollector(\n",
|
1327 | 1321 | " model_reporters={\"Gini\": compute_gini},\n",
|
|
1406 | 1400 | " self.running = True\n",
|
1407 | 1401 | "\n",
|
1408 | 1402 | " # Create agents\n",
|
1409 |
| - " for _ in range(self.num_agents):\n", |
1410 |
| - " a = MoneyAgent(self)\n", |
| 1403 | + " agents = MoneyAgent.create_agents(model=self, n=n)\n", |
| 1404 | + " # Create x and y positions for agents\n", |
| 1405 | + " x = self.rng.integers(0, self.grid.width, size=(n,))\n", |
| 1406 | + " y = self.rng.integers(0, self.grid.height, size=(n,))\n", |
| 1407 | + " for a, i, j in zip(agents, x, y):\n", |
1411 | 1408 | " # Add the agent to a random grid cell\n",
|
1412 |
| - " x = self.random.randrange(self.grid.width)\n", |
1413 |
| - " y = self.random.randrange(self.grid.height)\n", |
1414 |
| - " self.grid.place_agent(a, (x, y))\n", |
| 1409 | + " self.grid.place_agent(a, (i, j))\n", |
1415 | 1410 | "\n",
|
1416 | 1411 | " self.datacollector = mesa.DataCollector(\n",
|
1417 | 1412 | " model_reporters={\"Gini\": compute_gini},\n",
|
|
1902 | 1897 | "name": "python",
|
1903 | 1898 | "nbconvert_exporter": "python",
|
1904 | 1899 | "pygments_lexer": "ipython3",
|
1905 |
| - "version": "3.12.5" |
| 1900 | + "version": "3.12.3" |
1906 | 1901 | },
|
1907 | 1902 | "widgets": {
|
1908 | 1903 | "state": {},
|
|
0 commit comments