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