-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrun.py
More file actions
38 lines (29 loc) · 1.25 KB
/
run.py
File metadata and controls
38 lines (29 loc) · 1.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import numpy as np
import pandas as pd
from utils import arg_parser
from src.market import Market
def main(args):
entrance_rates = []
agent_decisions = []
agent_resources = []
# Run multiples times to account for stochasticity
n_runs = 30
for _ in range(n_runs):
market = Market(args.N, args.c, args.lr, args.M)
market.run(args.T)
individual_run = market.results()
entrance_rates.append(individual_run["entrance_rates"])
agent_decisions.append(individual_run["decisions"])
agent_resources.append(individual_run["resources"])
# To data frames for easier file processing
entrance_rates = pd.DataFrame(np.asarray(entrance_rates).T)
agent_decisions = pd.DataFrame(np.concatenate(agent_decisions))
agent_resources = pd.DataFrame(np.concatenate(agent_resources))
filename = f"{args.c}-{args.lr}-{args.N}"
output_folder = args.output_folder
entrance_rates.to_csv(output_folder + "attendance-" + filename + ".csv")
agent_decisions.to_csv(output_folder + "decisions-" + filename + ".csv.gz", compression='gzip')
agent_resources.to_csv(output_folder + "resources-" + filename + ".csv.gz", compression='gzip')
if __name__ == '__main__':
args = arg_parser()
main(args)