Simulation d'événements discrets en Python
Diogo Costa (PhD, MSc)
Adjunct Professor, University of Saskatchewan, Canada & CEO of ImpactBLUE-Scientific
Optimisation du système
Processus humains
Repérer les processus ayant le plus d'impact sur la sortie du système
Échantillonnage de Monte-Carlo
Fonctions objectif
Expression mathématique décrivant la cible de sortie
Noter les scénarios de simulation
Exemple
Total : 100 %
Rechercher et arrêter : Exécuter différentes configurations du modèle et arrêter quand la condition souhaitée est atteinte
while total_duration < 24:
model_to_run()
Noter et classer : Noter les résultats selon des critères pondérés
for i in range(num_runs):
out_1, out_2 = model_to_run(i)
scores[i] = 0.3 * out_1 + 0.7 * out_2
Exemple
scenario_num = 0
while scenario_num == 0 or total_duration[s] > 40:
scenario_num += 1
env = simpy.Environment()
env.process(manufacturing_proc(env))
env.run()
plot_results()

Exemple : industrie manufacturière
Avec diverses tâches (ou processus) séquentielles, comme une chaîne de production automobile.
def objective_function_calc():
score_objfunc = np.ones(num_scenarios)
for s in range(num_scenarios):
for p in range(len(processes)):
score_objfunc[s] += (
processes[p]["duration_hours"]
* processes[p]["score_weight"])
Score
« ROUGE » : Faible pointage ; « BLEU » : Pointage élevé

Classement
Classer les exécutions de simulation par score
Rechercher et arrêter

La ligne « bleue » a satisfait le critère d'« arrêt »
Détails de la « meilleure » simulation :
sum = 20 min)sum = 20 min)sum = 28 min)sum = 30 min)« Processus 1 » est critique pour atteindre cet objectif
Score
Objectif : plus bas score = plus courte durée

Classement
« Processus 1 » est critique pour atteindre cet objectif

Simulation d'événements discrets en Python