def main(): degradation_matrix = [ [0.9, 0.1, 0., 0., 0. ], [0., 0.9, 0.1, 0., 0. ], [0., 0., 0.9, 0.1, 0. ], [0., 0., 0., 0.9, 0.1], [0., 0., 0., 0., 1. ] ] source = Source() M1 = Machine( name='M1', cycle_time=1, degradation_matrix=degradation_matrix, cm_distribution={'geometric': 0.1} ) sink = Sink() source.define_routing(downstream=[M1]) M1.define_routing(upstream=[source], downstream=[sink]) sink.define_routing(upstream=[M1]) system = System([source, M1, sink]) random.seed(1) system.simulate(simulation_time=utils.WEEK)
def build_system(self): source = Source() M1 = Machine('M1', cycle_time=1) sink = Sink() source.define_routing(downstream=[M1]) M1.define_routing(upstream=[source], downstream=[sink]) sink.define_routing(upstream=[M1]) return System(objects=[source, M1, sink])
def main(): source = Source() M1 = Machine(name='M1', cycle_time=2) sink = Sink() source.define_routing(downstream=[M1]) M1.define_routing(upstream=[source], downstream=[sink]) sink.define_routing(upstream=[M1]) system = System(objects=[source, M1, sink]) system.simulate(simulation_time=500)
def build_system(self): source = Source() M1 = Machine('M1', cycle_time=1, degradation_matrix=degradation_matrix, cm_distribution={'constant': 10}) sink = Sink() source.define_routing(downstream=[M1]) M1.define_routing(upstream=[source], downstream=[sink]) sink.define_routing(upstream=[M1]) return System(objects=[source, M1, sink])
def build_system(self): source = Source() M1 = Machine('M1', cycle_time=1) B1 = Buffer('B1', capacity=5) M2 = Machine('M2', cycle_time=1) sink = Sink() source.define_routing(downstream=[M1]) M1.define_routing(upstream=[source], downstream=[B1]) B1.define_routing(upstream=[M1], downstream=[M2]) M2.define_routing(upstream=[B1], downstream=[sink]) sink.define_routing(upstream=[M2]) return System(objects=[source, M1, B1, M2, sink])
def main(): source = Source() M1 = Machine(name='M1', cycle_time=1) B1 = Buffer(capacity=5) M2 = Machine(name='M2', cycle_time=1) sink = Sink() source.define_routing(downstream=[M1]) M1.define_routing(upstream=[source], downstream=[B1]) B1.define_routing(upstream=[M1], downstream=[M2]) M2.define_routing(upstream=[B1], downstream=[sink]) sink.define_routing(upstream=[M2]) system = System([source, M1, B1, M2, sink]) system.simulate(simulation_time=utils.WEEK)
def build_system(self): cm = {'constant': 10} source = Source() M1 = Machine('M1', cycle_time=1, degradation_matrix=degradation_matrix, cm_distribution=cm) B1 = Buffer('B1', capacity=5) M2 = Machine('M2', cycle_time=1, degradation_matrix=degradation_matrix, cm_distribution=cm) sink = Sink() source.define_routing(downstream=[M1]) M1.define_routing(upstream=[source], downstream=[B1]) B1.define_routing(upstream=[M1], downstream=[M2]) M2.define_routing(upstream=[B1], downstream=[sink]) sink.define_routing(upstream=[M2]) return System(objects=[source, M1, B1, M2, sink])
def main(): degradation_matrix = [[0.9, 0.1, 0., 0., 0.], [0., 0.9, 0.1, 0., 0.], [0., 0., 0.9, 0.1, 0.], [0., 0., 0., 0.9, 0.1], [0., 0., 0., 0., 1.]] cbm_threshold = 3 pm_distribution = {'geometric': 0.25} cm_distribution = {'geometric': 0.10} source = Source() M1 = Machine(name='M1', cycle_time=1, degradation_matrix=degradation_matrix, cbm_threshold=cbm_threshold, pm_distribution=pm_distribution, cm_distribution=cm_distribution) B1 = Buffer(capacity=10) M2 = Machine(name='M2', cycle_time=2, degradation_matrix=degradation_matrix, cbm_threshold=cbm_threshold, pm_distribution=pm_distribution, cm_distribution=cm_distribution) sink = Sink() objects = [source, M1, B1, M2, sink] source.define_routing(downstream=[M1]) M1.define_routing(upstream=[source], downstream=[B1]) B1.define_routing(upstream=[M1], downstream=[M2]) M2.define_routing(upstream=[B1], downstream=[sink]) sink.define_routing(upstream=[M2]) maintainer = Maintainer(capacity=1) system = System(objects=objects, maintainer=maintainer) random.seed(1) system.simulate(simulation_time=utils.WEEK)
def main(): degradation_matrix = [ [0.9, 0.1, 0., 0., 0. ], [0., 0.9, 0.1, 0., 0. ], [0., 0., 0.9, 0.1, 0. ], [0., 0., 0., 0.9, 0.1], [0., 0., 0., 0., 1. ] ] source = Source() M1 = Machine( name='M1', cycle_time=1, degradation_matrix=degradation_matrix, cm_distribution={'geometric': 0.1} ) B1 = Buffer(capacity=5) M2 = Machine( name='M2', cycle_time=1, degradation_matrix=degradation_matrix, cm_distribution={'geometric': 0.1} ) sink = Sink() source.define_routing(downstream=[M1]) M1.define_routing(upstream=[source], downstream=[B1]) B1.define_routing(upstream=[M1], downstream=[M2]) M2.define_routing(upstream=[B1], downstream=[sink]) sink.define_routing(upstream=[M2]) maintainer = Maintainer(capacity=1) system = System([source, M1, B1, M2, sink], maintainer=maintainer) random.seed(1) system.simulate(simulation_time=utils.WEEK)
def main(): source = Source() M1 = Machine(name='M1', cycle_time=2) B1 = Buffer(capacity=4) M2 = Machine(name='M2', cycle_time=1) B2 = Buffer(capacity=8) M3 = Machine(name='M3', cycle_time=1) B3 = Buffer(capacity=16) M4 = Machine(name='M4', cycle_time=1) sink = Sink() source.define_routing(downstream=[M1]) M1.define_routing(upstream=[source], downstream=[B1]) B1.define_routing(upstream=[M1], downstream=[M2]) M2.define_routing(upstream=[B1], downstream=[B2]) B2.define_routing(upstream=[M2], downstream=[M3]) M3.define_routing(upstream=[B2], downstream=[B3]) B3.define_routing(upstream=[M3], downstream=[M4]) M4.define_routing(upstream=[B3], downstream=[sink]) sink.define_routing(upstream=[M2]) system = System(objects=[source, M1, B1, M2, B2, M3, B3, M4, sink]) system.simulate(simulation_time=500)
def main(): # Parameters for both systems degradation_matrix = [ [0.9, 0.1, 0., 0., 0. ], [0., 0.9, 0.1, 0., 0. ], [0., 0., 0.9, 0.1, 0. ], [0., 0., 0., 0.9, 0.1], [0., 0., 0., 0., 1. ] ] pm_distribution = {'geometric': 0.25} # Average PM duration: 4 minutes cm_distribution = {'geometric': 0.10} # Average CM duration: 10 minutes # Define the corrective maintenance system source = Source() M1 = Machine( name='M1', cycle_time=1, degradation_matrix=degradation_matrix, cm_distribution=cm_distribution ) B1 = Buffer(capacity=10) M2 = Machine( name='M2', cycle_time=1, degradation_matrix=degradation_matrix, cm_distribution=cm_distribution ) sink = Sink() objects = [source, M1, B1, M2, sink] source.define_routing(downstream=[M1]) M1.define_routing(upstream=[source], downstream=[B1]) B1.define_routing(upstream=[M1], downstream=[M2]) M2.define_routing(upstream=[B1], downstream=[sink]) sink.define_routing(upstream=[M2]) maintainer = Maintainer(capacity=1) corrective_maintenance_system = System(objects=objects, maintainer=maintainer) # Define the condition-based maintenance system cbm_threshold = 3 source = Source() M1 = Machine( name='M1', cycle_time=1, degradation_matrix=degradation_matrix, cbm_threshold=cbm_threshold, pm_distribution=pm_distribution, cm_distribution=cm_distribution ) B1 = Buffer(capacity=10) M2 = Machine( name='M2', cycle_time=1, degradation_matrix=degradation_matrix, cbm_threshold=cbm_threshold, pm_distribution=pm_distribution, cm_distribution=cm_distribution ) sink = Sink() objects = [source, M1, B1, M2, sink] source.define_routing(downstream=[M1]) M1.define_routing(upstream=[source], downstream=[B1]) B1.define_routing(upstream=[M1], downstream=[M2]) M2.define_routing(upstream=[B1], downstream=[sink]) sink.define_routing(upstream=[M2]) maintainer = Maintainer(capacity=1) condition_based_maintenance_system = System(objects=objects, maintainer=maintainer) # Simulate both systems replications = 50 random.seed(1) cm_results = corrective_maintenance_system.iterate_simulation( replications=replications, warm_up_time=utils.DAY, simulation_time=utils.WEEK, jobs=10, # Simulate in parallel using 10 cores verbose=False ) cm_production = [r[0] for r in cm_results] cm_average = sum(cm_production) / replications cbm_results = condition_based_maintenance_system.iterate_simulation( replications=replications, warm_up_time=utils.DAY, simulation_time=utils.WEEK, jobs=10, verbose=False ) cbm_production = [r[0] for r in cbm_results] cbm_average = sum(cbm_production) / replications print(f'Average corrective maintenance production: {cm_average:.2f} units') print(f'Average condition-based maintenance production: {cbm_average:.2f} units')