Skip to content
This repository has been archived by the owner on Jan 23, 2024. It is now read-only.

Commit

Permalink
Rename free to not_reserved
Browse files Browse the repository at this point in the history
  • Loading branch information
DavoudTaghawiNejad committed Sep 11, 2017
1 parent 6d82371 commit 641bae4
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 17 deletions.
6 changes: 3 additions & 3 deletions abce/agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ def possession(self, good):
self.bancrupcy = True
"""
print("depreciated use self[good]")
print("depreciated use self[good] or self.not_reserved[good]")
return self._inventory[good]

def possessions(self):
Expand Down Expand Up @@ -294,8 +294,8 @@ def _declare_expiring(self, good, duration):
"""
self._inventory._declare_expiring(good, duration)

def free(self, good):
return self._inventory.free(good)
def not_reserved(self, good):
return self._inventory.not_reserved(good)

def destroy(self, good, quantity=None):
""" destroys quantity of the good. If quantity is omitted destroys all
Expand Down
43 changes: 31 additions & 12 deletions abce/inventory.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
class Inventory(object):
def __init__(self, name):
self.haves = defaultdict(int)
self.committed = defaultdict(int)
self.reserved = defaultdict(int)
self.name = name
self._expiring_goods = []
self._perishable = []
Expand Down Expand Up @@ -83,16 +83,16 @@ def destroy(self, good, quantity=None):
self.haves[good] -= quantity

def reserve(self, good, quantity):
self.committed[good] += quantity
if self.committed[good] > self.haves[good]:
self.committed[good] += quantity
raise NotEnoughGoods(self.name, good, quantity - (self.haves[good] - self.committed[good]))
self.reserved[good] += quantity
if self.reserved[good] > self.haves[good]:
self.reserved[good] += quantity
raise NotEnoughGoods(self.name, good, quantity - (self.haves[good] - self.reserved[good]))

def rewind(self, good, quantity):
self.committed[good] -= quantity
self.reserved[good] -= quantity

def commit(self, good, committed_quantity, final_quantity):
self.committed[good] -= committed_quantity
self.reserved[good] -= committed_quantity
self.haves[good] -= final_quantity

def transform(self, ingredient, unit, product, quantity=None):
Expand All @@ -102,10 +102,9 @@ def transform(self, ingredient, unit, product, quantity=None):
self.create(product, float(unit) * quantity)

def possession(self, good):
print('possession depreciated')
return self.free(good)
return self.not_reserved(good)

def free(self, good):
def not_reserved(self, good):
""" returns how much of good an agent possesses.
Returns:
Expand All @@ -123,11 +122,31 @@ def free(self, good):
self.bankruptcy = True
"""
return float(self.haves[good] - self.committed[good])
return float(self.haves[good] - self.reserved[good])

def reserved(self, good):
""" returns how much of a good an agent has currently reseed to sell or buy.
Returns:
A number.
possession does not return a dictionary for self.log(...), you can use self.possessions([...])
(plural) with self.log.
Example::
if self['money'] < 1:
self.financial_crisis = True
if not(is_positive(self['money']):
self.bankruptcy = True
"""
return self.reserved[good]

def possessions(self):
""" returns all possessions """
return {good: float(self.haves[good] - self.committed[good]) for good in self.haves}
return {good: float(self.haves[good] - self.reserved[good]) for good in self.haves}

def calculate_netvalue(self, prices):
return sum(quantity * prices[name]
Expand Down
2 changes: 1 addition & 1 deletion unittest/buy.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ def one(self):
quantity = random.uniform(0, self.money / self.price)
self.offer = self.buy(('buy', self.id + 1),
'cookies', quantity, self.price)
assert self.free('money') == self.money - \
assert self.not_reserved('money') == self.money - \
quantity * self.price

def two(self):
Expand Down
2 changes: 1 addition & 1 deletion unittest/sell.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ def one(self):
quantity = random.uniform(0, self.cookies)
self.offer = self.sell(receiver=('sell', self.id + 1),
good='cookies', quantity=quantity, price=self.price)
assert self.free('cookies') == self.cookies - quantity
assert self.not_reserved('cookies') == self.cookies - quantity

def two(self):
if self.id % 2 == 1:
Expand Down

0 comments on commit 641bae4

Please sign in to comment.