[vc_row][vc_column][vc_column_text]ابزارهای مدلسازی و شبیهسازی متعددی برای مدلسازی عامل بنیان یا ABMها وجود دارد که هر کدام تمرکز و سبک خاص خود را دارند (یک نمای کلی را در اینجا بیابید). سه ویژگی اصلی متمایز کننده Agentpy عبارتند از:
- Agentpy وظایف متعدد مدلسازی مبتنی بر عامل – طراحی مدل، شبیهسازی تعاملی، آزمایشهای عددی و تجزیه و تحلیل دادهها – را در یک محیط واحد ادغام میکند و برای محاسبات تعاملی با IPython و Jupyter بهینه شده است.
- Agentpy برای استفاده علمی با آزمایش های چندگانه طراحی شده است. ابزارهایی برای نمونهگیری پارامتر (شبیه به فضای رفتاری NetLogo)، آزمایشهای مونت کارلو، فرآیندهای تصادفی، محاسبات موازی و تحلیل حساسیت ارائه میکند.
- Agentpy به زبان Python نوشته شده است، یکی از محبوب ترین زبان های برنامه نویسی جهان که تعداد زیادی ابزار و کتابخانه را برای استفاده علمی ارائه می دهد. همچنین برای سازگاری با بستههای موجود مانند numpy، scipy، networkx، pandas، ema_workbench، seaborn و SALib طراحی شده است.
جایگزین اصلی agentpy در پایتون Mesa است. برای مقایسه نحو، در اینجا دو مثال برای یک مدل ساده از انتقال ثروت آورده شده است که هر دو دقیقاً عملیات مشابهی را انجام می دهند. اطلاعات بیشتر در مورد دو مدل را می توان در مستندات هر چارچوب (Agentpy & Mesa) یافت.[/vc_column_text][/vc_column][/vc_row][vc_row][vc_column width=”1/2″][vc_column_text]
Agentpy
import agentpy as ap class MoneyAgent(ap.Agent): def setup(self): self.wealth = 1 def wealth_transfer(self): if self.wealth == 0: return a = self.model.agents.random() a.wealth += 1 self.wealth -= 1 class MoneyModel(ap.Model): def setup(self): self.agents = ap.AgentList( self, self.p.n, MoneyAgent) def step(self): self.agents.record('wealth') self.agents.wealth_transfer() # Perform single run parameters = {'n': 10, 'steps': 10} model = MoneyModel(parameters) results = model.run() # Perform multiple runs variable_params = { 'n': ap.IntRange(10, 500), 'steps': 10 } sample = ap.Sample(variable_params, n=49) exp = ap.Experiment( MoneyModel, sample, iterations=5, record=True ) results = exp.run()
[/vc_column_text][/vc_column][vc_column width=”1/2″][vc_column_text]
Mesa
from mesa import Agent, Model from mesa.time import RandomActivation from mesa.batchrunner import BatchRunner from mesa.datacollection \ import DataCollector class MoneyAgent(Agent): def __init__(self, unique_id, model): super().__init__(unique_id, model) self.wealth = 1 def step(self): if self.wealth == 0: return other_agent = self.random.choice( self.model.schedule.agents) other_agent.wealth += 1 self.wealth -= 1 class MoneyModel(Model): def __init__(self, N): self.running = True self.num_agents = N self.schedule = \ RandomActivation(self) for i in range(self.num_agents): a = MoneyAgent(i, self) self.schedule.add(a) self.collector = DataCollector( agent_reporters={ "Wealth": "wealth"}) def step(self): self.collector.collect(self) self.schedule.step() # Perform single run model = MoneyModel(10) for i in range(10): model.step() # Perform multiple runs variable_params = { "N": range(10, 500, 10)} batch_run = BatchRunner( MoneyModel, variable_params, iterations=5, max_steps=10, agent_reporters={"Wealth": "wealth"} ) batch_run.run_all()
[/vc_column_text][/vc_column][/vc_row][vc_row][vc_column][vc_column_text]جدول زیر مقایسه ای از ویژگی های اصلی هر فریم ورک را ارائه می دهد.[/vc_column_text][ultimate_info_table design_style=”design04″ color_scheme=”blue”]
Feature | Agentpy | Mesa |
Containers
|
Sequence classes like AgentList and AgentDList
|
Scheduler classes for different activation orders
|
Topologies
|
Spatial grid, continuous space,
network
|
Spatial grid, continuous space,
network
|
Data recording
|
Recording methods for variables
of agents, environments, and
model; as well as reporters
|
DataCollector class that can
collect variables of agents
and model
|
Parameter sampling
|
Classes for sample generation
and different types of
parameter ranges
|
|
Multi-run experiments
|
Experiment class that supports
multiple iterations, parameter
samples, randomization,
and parallel processing
|
BatchRunner class that supports
multiple iterations and parameter
ranges
|
Output data
|
DataDict class to store, save,
load, and re-arrange output data
|
Methods to generate dataframes
|
Visualization
|
Gridplots, animations,
and interactive visualization
within Jupyter Notebooks
|
Plots and interactive visualization
in a separate web-server
|
Analysis
|
Tools for data arrangement and
sensitivity analysis
|
[/ultimate_info_table][vc_column_text]منبع: https://agentpy.readthedocs.io/en/latest/comparison.html[/vc_column_text][/vc_column][/vc_row]