class Violence::Agent

Attributes

allconsumed[RW]
bank[RW]
clepto[RW]
greed[RW]
productivity[RW]

Public Class Methods

new() click to toggle source
# File lib/violence/agent.rb, line 14
def initialize
  self.bank = 2*(powerlaw(5) + 1) # be realistic, i.e. unfair starts

  self.productivity = 1

  # Funky stuff: We want to restrict greed to [0,1], but kinda normal-distributed
  # self.greed = (2.5 + randn)/5
  self.greed = rand.round(2)

  self.allconsumed = 0

  # if self.greed < 0 || self.greed > 1
  if !(0..1).member?(self.greed) # happens ~0.27% of the time
    self.greed = 0.5 # aesthetically hideous -- don't judge me
  end
end

Public Instance Methods

invest(cost) click to toggle source

def consume

consumed = self.greed * self.produced
self.bank -= consumed
self.allconsumed += consumed

end

# File lib/violence/agent.rb, line 37
def invest(cost)
  self.bank -= cost
  consumption = (rand + 1/2) * self.productivity
  self.bank -= consumption # also consume about last produced amount times greed
  self.productivity += 1

  self.allconsumed += cost + consumption
end
produce() click to toggle source
# File lib/violence/agent.rb, line 46
def produce
  produced = (rand + 1/2) * self.productivity
  self.bank += produced

  consumed = self.greed * produced
  self.bank -= consumed #consume

  self.allconsumed += consumed
end