adding ai_economist for modding
This commit is contained in:
@@ -0,0 +1,119 @@
|
||||
# Copyright (c) 2021, salesforce.com, inc.
|
||||
# All rights reserved.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# For full license text, see the LICENSE file in the repo root
|
||||
# or https://opensource.org/licenses/BSD-3-Clause
|
||||
|
||||
import argparse
|
||||
import os
|
||||
|
||||
from experiment_utils import (
|
||||
create_job_dir,
|
||||
run_experiment_batch_parallel,
|
||||
sweep_cfg_generator,
|
||||
)
|
||||
from rbc.constants import all_agents_short_export_experiment_template
|
||||
|
||||
train_param_sweeps = {
|
||||
"lr": [0.001],
|
||||
"entropy": [0.5],
|
||||
"batch_size": [128],
|
||||
"clip_grad_norm": [2.0],
|
||||
"base_seed": [2345],
|
||||
"should_boost_firm_reward": [False],
|
||||
"use_ppo": [True],
|
||||
"ppo_num_updates": [2, 4],
|
||||
"ppo_clip_param": [0.1],
|
||||
}
|
||||
|
||||
|
||||
agent_param_sweeps = {
|
||||
"consumer_lr_multiple": [1.0],
|
||||
"consumer_reward_scale": [5.0],
|
||||
"government_reward_scale": [5.0 * 100.0 * 2.0],
|
||||
"firm_reward_scale": [30000],
|
||||
"government_counts_firm_reward": [1],
|
||||
"government_lr_multiple": [0.05],
|
||||
}
|
||||
|
||||
|
||||
world_param_sweeps = {
|
||||
"initial_wages": [0.0],
|
||||
"interest_rate": [0.0],
|
||||
"importer_price": [500.0],
|
||||
"importer_quantity": [100.0],
|
||||
"use_importer": [1],
|
||||
}
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("--dry-run", action="store_true")
|
||||
parser.add_argument("--experiment-dir", type=str, default="experiment/experiment")
|
||||
parser.add_argument("--group-name", type=str, default="default_group")
|
||||
parser.add_argument("--job-name-base", type=str, default="rollout")
|
||||
parser.add_argument("--num-consumers", type=int, default=100)
|
||||
parser.add_argument("--num-firms", type=int, default=10)
|
||||
parser.add_argument("--num-governments", type=int, default=1)
|
||||
parser.add_argument("--run-only", action="store_true")
|
||||
parser.add_argument("--seed-from-timestamp", action="store_true")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
(
|
||||
default_cfg_dict,
|
||||
consumption_choices,
|
||||
work_choices,
|
||||
price_and_wage,
|
||||
tax_choices,
|
||||
default_firm_action,
|
||||
default_government_action,
|
||||
) = all_agents_short_export_experiment_template(
|
||||
args.num_firms, args.num_consumers, args.num_governments
|
||||
)
|
||||
|
||||
if args.run_only:
|
||||
print("Not sweeping over hyperparameter combos...")
|
||||
else:
|
||||
for new_cfg in sweep_cfg_generator(
|
||||
default_cfg_dict,
|
||||
tr_param_sweeps=train_param_sweeps,
|
||||
ag_param_sweeps=agent_param_sweeps,
|
||||
wld_param_sweeps=world_param_sweeps,
|
||||
seed_from_timestamp=args.seed_from_timestamp,
|
||||
group_name=args.group_name,
|
||||
):
|
||||
create_job_dir(
|
||||
args.experiment_dir,
|
||||
args.job_name_base,
|
||||
cfg=new_cfg,
|
||||
action_arrays={
|
||||
"consumption_choices": consumption_choices,
|
||||
"work_choices": work_choices,
|
||||
"price_and_wage": price_and_wage,
|
||||
"tax_choices": tax_choices,
|
||||
},
|
||||
)
|
||||
|
||||
if args.dry_run:
|
||||
print("Dry-run -> not actually training...")
|
||||
else:
|
||||
print("Training multiple experiments locally...")
|
||||
|
||||
# for dirs in experiment dir, run job
|
||||
experiment_dirs = [
|
||||
f.path for f in os.scandir(args.experiment_dir) if f.is_dir()
|
||||
]
|
||||
for experiment in experiment_dirs:
|
||||
run_experiment_batch_parallel(
|
||||
experiment,
|
||||
consumption_choices,
|
||||
work_choices,
|
||||
price_and_wage,
|
||||
tax_choices,
|
||||
group_name=args.group_name,
|
||||
consumers_only=False,
|
||||
no_firms=False,
|
||||
default_firm_action=default_firm_action,
|
||||
default_government_action=default_government_action,
|
||||
)
|
||||
Reference in New Issue
Block a user