money
index
/home/gcallah/TandonDevOps/IndraABM/capital/money.py

A model for implementing Carl Menger's Money Theory.
Places a groups of agents in the enviornment randomly
and moves them around randomly to trade with each other.

 
Modules
       
lib.actions
lib.display_methods
lib.model
os
capital.trade_utils

 
Classes
       
builtins.object
Good
lib.model.Model(builtins.object)
Money

 
class Good(builtins.object)
    Good(name, amt, age=0)
 

 
  Methods defined here:
__init__(self, name, amt, age=0)
Initialize self.  See help(type(self)) for accurate signature.
decay(self)
get_decr_amt(self)

Data descriptors defined here:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

 
class Money(lib.model.Model)
    Money(model_nm='money', props=None, grp_struct={'traders': {'mbr_creator': <function create_trader at 0x7bbcb039d5e0>, 'mbr_action': <function trader_action at 0x7bbcb039d820>, 'num_mbrs': 4, 'num_mbrs_prop': 'num_traders'}}, env_action=None, serial_obj=None, exec_key=None)
 
The model class for the Menger money model.
 
 
Method resolution order:
Money
lib.model.Model
builtins.object

Methods defined here:
__init__(self, model_nm='money', props=None, grp_struct={'traders': {'mbr_creator': <function create_trader at 0x7bbcb039d5e0>, 'mbr_action': <function trader_action at 0x7bbcb039d820>, 'num_mbrs': 4, 'num_mbrs_prop': 'num_traders'}}, env_action=None, serial_obj=None, exec_key=None)
Initialize self.  See help(type(self)) for accurate signature.
collect_stats(self)
collect_stats function for class Money to collect
statistics for goods traded. Function may override
the collect_stats function in model class. Function
collects statistics in variable self.stats and passes
it to the function rpt_stats() as comma separated string.
create_groups(self)
Override this method in your model to create all of your groups.
In general, you shouldn't need to: fill in the grp_struct instead.
create_pop_hist(self)
Set up our pop hist object to record amount traded per period.
Directly accessing self.env.pop_hist breaks encapsulation.
But that's OK since we plan to move pop_hist into model.
handle_props(self, props, model_dir=None)
A generic parameter handling method.
We get height and width here, since so many models use them.
rpt_census(self, acts, moves)
This is where we override the default census report.
update_pop_hist(self)
This is our hook into the env to record the number of trades each
period.
Directly accessing self.env.pop_hist breaks encapsulation.
But that's OK since we plan to move pop_hist into model.

Methods inherited from lib.model.Model:
__repr__(self)
This returns a JSON representation of the model.
__str__(self)
Return str(self).
add_child(self, group)
Put a child agent in the womb.
group: which group will add new agent
The womb should move up into model eventually.
add_switch(self, agent_nm, from_grp_nm, to_grp_nm)
Switch agent from 1 group to another.
The agent and groups should be passed by name.
bar_graph(self)
create_anew(self, model_nm, props, grp_struct, exec_key, env_action, random_placing, create_for_test=False)
Create the model for the first time.
create_env(self, env_action=None, random_placing=True)
Override this method to create a unique env...
but this one will already set the model name and add
the groups.
create_from_serial_obj(self, serial_obj)
Restore the model from its serialized version.
create_user(self)
This will create a user of the correct type.
from_json(self, jrep)
This method restores a model from its JSON rep.
get_locations(self)
get_periods(self)
get_pop_hist(self)
get_prop(self, prop_nm, default=None)
Have a way to get a prop through the model to hide props structure.
get_user_msgs(self)
handle_args(self)
handle_switches(self)
This will actually process the pending switches.
handle_womb(self)
This method adds new agents from the womb.
The womb should move up into model eventually.
is_api_user(self)
is_test_user(self)
line_graph(self)
pending_switches(self)
How many switches are there to execute?
rpt_stats(self)
This is a "wrap up" report on the results of a model run.
Each model can do what it wants here.
perhaps will take an iterator object?
a file?
Function takes in a CSV formatted string from function
collect_stats() and writes it to a csv file.
 
Note: added logic so func will not write to stdout
rpt_switches(self)
Generate a string to report our switches.
run(self, periods=None)
This method runs the model. If `periods` is not None,
it will run it for that many periods. Otherwise, on
a terminal, it will display the menu.
Return: 0 if run was fine.
runN(self, periods=10)
Run our model for N periods.
Return the total number of actions taken.
run_batch(self, runs, steps)
Run our model for N periods X steps.
Writes the period specific model statistics to a CSV file.
Files are saved as input filename-[integer-counter].csv
Returns the total number of actions taken.
scatter_plot(self)
to_json(self)
This method generates the JSON representation for this model.

Data descriptors inherited from lib.model.Model:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

 
Functions
       
amt_adjust(nature)
A func to adjust good amount with divisibility
check_props(is_div, is_dura, is_trans)
A func to delete properties of goods in nature_goods
dictionary if the user wants to disable them.
create_model(serial_obj=None, props=None)
This is for the sake of the API server:
create_trader(name, i, action=None, **kwargs)
A func to create a trader.
incr_ages(traders)
main()
nature_to_traders(traders, nature)
A func to do the initial endowment from nature to all traders
trader_action(agent, **kwargs)
A simple default agent action.

 
Data
        ACCEPT = 1
AGE = 'age'
AMT_AVAIL = 'amt_available'
DEF_NUM_TRADERS = 4
DEF_TRADE_RANGE = 400
DIVISIBILITY = 'divisibility'
DUR = 'durability'
EQUILIBRIUM_DECLARED = 10
GEN_UTIL_FUNC = 'gen_util_func'
GOODS = 'goods'
HEIGHT = 100
INCR = 'incr'
INIT_COUNT = 0
IS_ALLOC = 'is_allocated'
MODEL_NAME = 'money'
MONEY_MAX_UTIL = 100
START_GOOD_AMT = 20
TRADER1 = 0
TRADER2 = 1
TRADER_GRP = 0
TRADE_COUNT = 'trade_count'
UTIL_FUNC = 'util_func'
WIDTH = 100
eq_count = 0
money_grps = {'traders': {'mbr_action': <function trader_action>, 'mbr_creator': <function create_trader>, 'num_mbrs': 4, 'num_mbrs_prop': 'num_traders'}}
natures_goods = {'avocado': {'age': 1, 'amt_available': 20, 'color': 'green', 'divisibility': 0.5, 'durability': 0.3, 'incr': 0, 'is_allocated': False, 'trade_count': 0, 'transportability': 8, 'util_func': 'gen_util_func'}, 'banana': {'age': 1, 'amt_available': 20, 'color': 'limegreen', 'divisibility': 0.2, 'durability': 0.2, 'incr': 0, 'is_allocated': False, 'trade_count': 0, 'transportability': 10, 'util_func': 'gen_util_func'}, 'cheese': {'age': 1, 'amt_available': 20, 'color': 'yellow', 'divisibility': 0.4, 'durability': 0.5, 'incr': 0, 'is_allocated': False, 'trade_count': 0, 'transportability': 25, 'util_func': 'gen_util_func'}, 'cow': {'age': 1, 'amt_available': 20, 'color': 'tan', 'divisibility': 1.0, 'durability': 0.8, 'incr': 0, 'is_allocated': False, 'trade_count': 0, 'transportability': 10, 'util_func': 'gen_util_func'}, 'diamond': {'age': 1, 'amt_available': 20, 'color': 'purple', 'divisibility': 0.8, 'durability': 1.0, 'incr': 0, 'is_allocated': False, 'trade_count': 0, 'transportability': 100, 'util_func': 'gen_util_func'}, 'gold': {'age': 1, 'amt_available': 20, 'color': 'orange', 'divisibility': 0.05, 'durability': 1.0, 'incr': 0, 'is_allocated': False, 'trade_count': 0, 'transportability': 100, 'util_func': 'gen_util_func'}, 'milk': {'age': 1, 'amt_available': 20, 'color': 'white', 'divisibility': 0.15, 'durability': 0.2, 'incr': 0, 'is_allocated': False, 'trade_count': 0, 'transportability': 10, 'util_func': 'gen_util_func'}, 'stone': {'age': 1, 'amt_available': 20, 'color': 'gray', 'divisibility': 1.0, 'durability': 1.0, 'incr': 0, 'is_allocated': False, 'trade_count': 0, 'transportability': 5, 'util_func': 'gen_util_func'}}
prev_trade = {'avocado': 0, 'banana': 0, 'cheese': 0, 'cow': 0, 'diamond': 0, 'gold': 0, 'milk': 0, 'stone': 0}