""" IMPORT MODULES AND CREATE CLASSES""" import random #import pylab """N is the number of employees in each firm""" N = 1000 YEARS = int(raw_input("Enter number of years to simulate: ")) FATE = float(raw_input("Enter importance of fate between 0 and 1: ")) """Create firm class""" class FirmClass(object): def __init__(self,firm_type): self.firm_type = firm_type self.employee=[] for i in range(N): emp=EmployeeClass() self.employee.append(emp) def step(self): self.calculate_performance() self.rank_employees() self.hr_action() self.increment_tenure() self.retire_partners() self.calculate_firm_quality() def calculate_performance(self): for i in range(N): self.employee[i].performance = (1-FATE)*self.employee[i].talent + \ FATE*self.employee[i].luck def rank_employees(self): self.employee.sort(key=lambda x: x.performance, reverse=True) def hr_action(self): if self.firm_type == "partner_type": for i in range(N): if self.employee[i].tenure == 7: if i <= (100): self.employee[i].partner = True else: pass if self.firm_type == "fire_type": for i in range(N): if i >= (900): replace_employee(i) def increment_tenure(self): for i in range(N): self.employee[i].tenure += 1 def retire_partners(self): for i in range(N): if self.employee[i].partner == True \ and self.employee[i].tenure == 20: self.replace_employee(i) def replace_employee(self, i): self.employee[i].performance = 0.0 self.employee[i].tenure = 0 self.employee[i].talent = random.random() self.employee[i].luck = random.random() self.employee[i].partner = False def calculate_firm_quality(self): self.firm_quality = 0.0 for i in range(N): self.firm_quality += self.employee[i].talent """Create employee class""" class EmployeeClass(object): def __init__(self): self.performance = 0.0 self.tenure = 0 self.talent = random.random() self.luck = random.random() self.partner = False """Create simulation class""" class SimulationClass(object): def __init__(self, YEARS): self.YEARS = YEARS firm_1 = FirmClass("partner_type") firm_2 = FirmClass("fire_type") def run(self, YEARS): for i in range(YEARS): self.firm_1.step() for i in range(YEARS): self.firm_2.step() """Main function""" sim=SimulationClass(YEARS) sim.run(YEARS)
Run
Reset
Share
Import
Link
Embed
Language▼
English
中文
Python Fiddle
Python Cloud IDE
Follow @python_fiddle
Browser Version Not Supported
Due to Python Fiddle's reliance on advanced JavaScript techniques, older browsers might have problems running it correctly. Please download the latest version of your favourite browser.
Chrome 10+
Firefox 4+
Safari 5+
IE 10+
Let me try anyway!
url:
Go
Python Snippet
Stackoverflow Question