Пример #1
0
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)
Пример #2
0
    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])
Пример #3
0
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)
Пример #4
0
    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])
Пример #5
0
    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])
Пример #6
0
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)
Пример #7
0
    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)
Пример #10
0
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)
Пример #11
0
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')