Household and consumption

The Household class extends the agent by giving him utility functions and the ability to consume goods.

class abcEconomics.agents.Household[source]

Bases: object

consume(utility_function, input_goods)[source]

consumes input_goods returns utility according to the agent’s utility function.

A utility_function, has to be set before see py:meth:~abcEconomics.Household.create_cobb_douglas_utility_function or manually; see example.

Args:

utility_function:
A function that takes goods as parameters and returns a utility or returns (utility, left_over_dict). Where left_over_dict is a dictionary of all goods that are not completely consumed
input goods dictionary or list:
dictionary containing the amount of input good used consumed or a list of all goods that get completely consumed.
Raises:
NotEnoughGoods: This is raised when the goods are insufficient.
Returns:
The utility as a number. To log it see example.

Example:

def utility_function(car, cookies, bike):
    utility = car ** 0.5 * cookies ** 0.2 * bike ** 0.3
    cookies = 0  # cookies are consumed, while the other goods are not consumed
    return utility, locals()


def utility_function(cake, cookies, bonbons):  # all goods get completely consumed
    utility = cake ** 0.5 * cookies ** 0.2 * bonbons ** 0.3
    return utility

self.consumption_set = {'car': 1, 'cookies': 2000, 'bike':  2}
self.consume_everything = ['car', 'cookies', 'bike']
try:
    utility = self.consume(utility_function, self.consumption_set)
except NotEnoughGoods:
    utility = self.consume(utility_function, self.consume_everything)
self.log('utility': {'u': utility})
create_cobb_douglas_utility_function(exponents)[source]

creates a Cobb-Douglas utility function

Utility_functions are than used as an argument in consume_with_utility, predict_utility and predict_utility_and_consumption.

Args:
{‘input1’: exponent1, ‘input2’: exponent2 …}: dictionary containing good names ‘input’ and correstponding exponents
Returns:
A utility_function that can be used in consume_with_utility etc.

Example: self._utility_function = self.create_cobb_douglas({‘bread’ : 10, ‘milk’ : 1}) self.produce(self.plastic_utility_function, {‘bread’ : 20, ‘milk’ : 1})