diff --git a/.gitignore b/.gitignore index bac8628..2257576 100644 --- a/.gitignore +++ b/.gitignore @@ -77,6 +77,7 @@ target/ # Jupyter Notebook .ipynb_checkpoints +/queueless-MC/queueing-MC/*.gif /queueless-MC/simulations/*.pkl /queueless-MC/simulations/dicts/ /queueless-MC/fastWorkflow/*xlsx @@ -92,7 +93,7 @@ target/ /queueless-MC/figures/*.png /queueless-MC/research/datasets/*.xlsx /queueless-MC/defect_remediation_estimation_service/*.xlsx -/queueless-MC/*.csv +# /queueless-MC/*.csv # /queueless-MC/*.py /queueing-MC/fWF_estimation/defects.py /queueing-MC/research/datasets diff --git a/README.md b/README.md index 49d6f96..f8b5e58 100644 --- a/README.md +++ b/README.md @@ -1,55 +1,43 @@ ## Modeling remediation of defects as an AI-enhanced queueing optimization problem -In industrial contexts, defect remediation is the process by which defects, or undesirable conditions or events that require specific treatement to be resolved, are corrected. This work introduces a new line of research focusing on -the characterization of the defect remediation process as an AI-enhanced black box generalized Monte Carlo optimization problem. - -This work represents a research project in three parts: -#### `queueing-MC` Timeline estimations with a black box generalized Monte Carlo method for modeling defect remediation as a queueing optimization problem -In this problem, we are concerned with building an optimized plan for remediation of defects. We consider that defects are both *incoming* (being generated) and *outgoing* (being remediated) in parallel, although the events occur at non-consistent intervals throughout the simulation. Individual circumstances such as any existing backlogged defects, the priority ranking of defects, and resource and time constraints, are also considered. - -![Figure 1: Application flow diagram.](defectRemediation_flowChart_v5.png) - -**Problem set-up** - -The problem is divided into two stages, an initialization stage (orange-shaded regions in Figs. 1 and 2) and a simulation stage. In the former, we are concerned with setting up the backlog and processing queues based on the initial conditions prior to the start of the simulation. The simulation stage is governed by the `times` vector, with defect *generation* (red-shaded regions in Figs. 1 and 2) and defect *remediation* events (blue-shaded regions in Figs. 1 and 2) occuring at any point in time *t*. - -![Figure 2: System diagram of class `defectRemediationSimulator`. The methods of this class related to each step of the simulation are indicated.](defectRemediation_systemDiagram_v4.png) +### News 📰 +- [ ] *18 June 2025* Part 1 of our 3-part series on AI-enhanced defect remediation optimization is available on Medium, read it [here](https://medium.com/@mdebeurr/modeling-remediation-of-defects-in-industry-as-an-ai-enhanced-queueing-optimization-problem-a389f51d784d) +- [ ] *Stay tuned!* Part 2 coming soon +- [ ] *Stay tuned!* Part 3 coming soon +- [ ] *Stay tuned!* Full scientific article on arXiv -**Simulation input parameters** - -System-specific input parameters are used to instantiate the simulation (see Fig. 2). They include: - -- `--defect_labels`: the defect types to simulate -- `--defect_priority`: the priority level associated with each defect type (lower = higher priority) -- `--maxValue_generation` and `--skewness_generation`: the maximum value (positive integer or 0) and skewness coefficient (float) parameters governing the stochastic distributions for incoming defects (1 pair per defect type) -- `--maxValue_remediation` and `--skewness_remediation`: the maximum value (positive float or 0) and skewness coefficient (float) parameters governing the stochastic distributions for remediation time per defect (1 pair per defect type) -- `--initial_backlogs`: the number of existing defects per defect type prior to the start of the simulation -- `t_end`: the duration of the simulation (or continuation, if `--check_initial_state` is `True`, see below). It should be noted that the time denomination can be anything (seconds, minutes, hours, days, etc). In our version, we consider time *t* to represent hours -- `--resources`: the number of available remediation agents, represented in the simulation as threaded processing queues -- `--resources_qmax`: the maximum number of defects that can be assigned to each processing queue - -Simulation-specific input parameters refer to the simulation currently being realized. They include `--trials`, defining the number of times the same simulation is run to account for stochastic differences between simulations, and parameters for loading and/or storing simulation states: +## Introduction and background +

+ Figure 1: Schematic of the fastWorkflow-enabled agentic defect_remediation_app. The AI agent should be capable of answering questions on current and forecasted data and trends, as well as iterating over defect remediation forecasts based on user feedback, ultimately returning an optimized remediation plan. +

-- `--check_initial_state` and `--path_initial_state`: if `--check_initial_state` is `True`, the state of an existing simulation stored as a pickled JSON file at `--path_initial_state` is loaded as the starting point for the current simulation -- `--export_final_state` and `--path_final_state`: if `--export_final_state` is `True`, the final state of the current simulation is exported as a pickled JSON file to `--path_final_state` +In industrial contexts, defect remediation is the process by which defects, or undesirable conditions or events that require specific treatement to be resolved, are corrected. This work introduces a new line of research focusing on +the characterization of the defect remediation process as an AI-enhanced black box generalized Monte Carlo optimization problem. +This work represents a research project in three parts: +- Part 1 | `queueing-MC`: forecasting defect remediation with a black box generalized Monte Carlo queueing model +- Part 2 | `queueless-MC`: instantiating the generalized Monte Carlo simulations with historical empirical log data +- Part 3 | `defect_remediation_app`: AI-enhanced defect remediation planification with [`fastWorkflow`](https://github.com/radiantlogicinc/fastworkflow) -**Interpreting the results** +The ultimate goal of this research is to develop an agentic AI system for optimization of the defect remediation process as shown in Fig. 1. -The main results are collected into the dictionary `comparison_dict`, which contains the results of each of the `trials` simulations. +Based purely on natural language interactions with the user, the AI agent would be capable of: +- answering questions on current and historical remediation trends, +- setting up and executing remediation forecasts, iterating if necessary to optimize the defect remediation process, and +- answering questions on trends forecasted in the remediation predictions, -The primary results can be accessed via the master `defect_log`, which will have recorded the lifetime of all defects from generation to remediation by updating the status of each defect at defining moments as shown in Fig. 1. +with the output of the interaction being an optimized remediation plan relevant to the user and customized to their needs and goals. -- [ ] Read our abridged article on Medium [here](https://medium.com/@mdebeurr/modeling-remediation-of-defects-in-industry-as-an-ai-enhanced-queueing-optimization-problem-a389f51d784d) -- [ ] *Stay tuned!* Full scientific article on arXiv +

+ + Figure 2: A preview of the fastWorkflow-enabled defect_remediation_app mapping natural language to data computed by the queueless-MC model. +

-#### `queueless-MC` Timeline and state change estimations with a queueless black box generalized Monte Carlo method based on empirical data -#### *Stay tuned!* Optimizing defect remediation planification with generative AI +## Acknowledgments -### Acknowledgments This project is sponsored by [Radiant Logic](https://www.radiantlogic.com/), an industry leader in the field of identity and access management (IAM), a sub-field of cybersecurity. The field of IAM is concerned with the governance and management of user accounts and accesses to applications, platforms and other technology resources with the goal of limiting superfluous or unused accesses that serve as openings for cybersecurity attacks in our increasingly connected -world. In this context, the *defects* of this work are representative of undesirable, risky or anomalous events that must be reviewed and treated by dedicated remediation actors. \ No newline at end of file +world. In this context, the defects of the model are representative of situations of heightened vulnerability that violate standard cybersecurity good practices. \ No newline at end of file diff --git a/img/ai_agent_model.png b/img/ai_agent_model.png new file mode 100644 index 0000000..57d31e8 Binary files /dev/null and b/img/ai_agent_model.png differ diff --git a/img/defect_remediation_app_fastworkflow.gif b/img/defect_remediation_app_fastworkflow.gif new file mode 100644 index 0000000..51adb02 Binary files /dev/null and b/img/defect_remediation_app_fastworkflow.gif differ diff --git a/queueing-MC/README.md b/queueing-MC/README.md new file mode 100644 index 0000000..216223d --- /dev/null +++ b/queueing-MC/README.md @@ -0,0 +1,73 @@ +## Part 1 | Modeling remediation of defects as an AI-enhanced queueing optimization problem +This work introduces **Part 1** of a new line of research focusing on +the characterization of the defect remediation process as an AI-enhanced black box generalized Monte Carlo optimization problem. + +Read Part 1 of our series on AI-enhanced defect remediation optimization on Medium [here](https://medium.com/@mdebeurr/modeling-remediation-of-defects-in-industry-as-an-ai-enhanced-queueing-optimization-problem-a389f51d784d). + +This work represents a research project in three parts: +- Part 1 | `queueing-MC`: forecasting defect remediation with a black box generalized Monte Carlo queueing model +- Part 2 | `queueless-MC`: instantiating the generalized Monte Carlo simulations with historical empirical log data +- Part 3 | `defect_remediation_app`: AI-enhanced defect remediation planification with [`fastWorkflow`](https://github.com/radiantlogicinc/fastworkflow) + + +## Introduction and background + +

+ Figure 1: System diagram for the class defectRemediationSimulator. + +

+ +In industrial contexts, defect remediation is the process by which defects, or undesirable conditions or events that require specific treatement to be resolved, are corrected. In this problem, we are concerned with building an optimized plan for remediation of defects. We consider that defects are both *incoming* (being generated) and *outgoing* (being remediated) in parallel, although the events occur at non-consistent intervals throughout the simulation. Individual circumstances such as any existing backlogged defects, the priority ranking of defects, and resource and time constraints, are also considered. + + +## Problem description + +In this work, we model the process of defect remediation as a queueing problem as follows: a central backlog queue is populated with existing backlogged defects at the start of the simulation, and defects are continually added to the backlog as they are generated in time. A number of remediation agents (e.g. teams, employees), represented as processing or remediation queues, begin to treat the defects pulled from the backlog according to a specified priority ranking and based on the resource constraints of the organization. As time moves forward and the defects are remediated, they are finalized and removed from the processing queues, clearing up space for new defects to be pulled from the backlog to begin remediation. + +In the simulation, incoming defects are generated every hour based on **sampling from the incoming defect histograms** (governed by `--maxValue_generation` and `--skewness_generation`) and are assigned a remediation time **sampled from the remediation time histograms** (governed by `--maxValue_remediation` and `--skewness_remediation`). + + +The problem is divided into two stages, an initialization stage (orange-shaded regions in Figs. 1 and 2) and a simulation stage. In the former, we are concerned with setting up the backlog and processing queues based on the initial conditions prior to the start of the simulation. The simulation stage is governed by the `times` vector, with defect *generation* (red-shaded regions in Figs. 1 and 2) and defect *remediation* events (blue-shaded regions in Figs. 1 and 2) occuring at any point in time *t*. + + +

+ +

+

Figure 2: Application flow diagram.

+ + +### Simulation input parameters + +System-specific input parameters are used to instantiate the simulation (see Fig. 1). They include: + +- `--defect_labels`: the defect types to simulate +- `--defect_priority`: the priority level associated with each defect type (lower = higher priority) +- `--maxValue_generation` and `--skewness_generation`: the maximum value (positive integer or 0) and skewness coefficient (float) parameters governing the stochastic distributions for incoming defects (1 pair per defect type) +- `--maxValue_remediation` and `--skewness_remediation`: the maximum value (positive float or 0) and skewness coefficient (float) parameters governing the stochastic distributions for remediation time per defect (1 pair per defect type) +- `--initial_backlogs`: the number of existing defects per defect type prior to the start of the simulation +- `--t_end`: the duration of the simulation (or continuation, if `--check_initial_state` is `True`, see below). It should be noted that the time denomination can be anything (seconds, minutes, hours, days, etc). In our version, we consider time *t* to represent hours +- `--resources`: the number of available remediation agents, represented in the simulation as threaded processing queues +- `--resources_qmax`: the maximum number of defects that can be assigned to each processing queue + +Simulation-specific input parameters refer to the simulation currently being realized. They include `--trials`, defining the number of times the same simulation is run to account for stochastic differences between simulations, and parameters for loading and/or storing simulation states: + +- `--check_initial_state` and `--path_initial_state`: if `--check_initial_state` is `True`, the state of an existing simulation stored as a pickled JSON file at `--path_initial_state` is loaded as the starting point for the current simulation +- `--export_final_state` and `--path_final_state`: if `--export_final_state` is `True`, the final state of the current simulation is exported as a pickled JSON file to `--path_final_state` + + +### Interpreting the results + +The main results are collected into the dictionary `comparison_dict`, which contains the results of each of the `trials` simulations. + +The primary results can be accessed via the master `defect_log`, which will have recorded the lifetime of all defects from generation to remediation by updating the status of each defect at defining moments as shown in Fig. 2. + +[Part 2](https://github.com/radiantlogicinc/estimating_gen_mc_simulation/tree/main/queueless-MC) of this project continues the work with a focus on using historical empirical data to build the generation and remediation distributions used in Monte Carlo sampling. + + +## Acknowledgments + +This project is sponsored by [Radiant Logic](https://www.radiantlogic.com/), an industry leader in the field of identity and access management (IAM), a sub-field of cybersecurity. + +The field of IAM is concerned with the governance and +management of user accounts and accesses to applications, platforms and other technology resources with the goal of limiting superfluous or unused accesses that serve as openings for cybersecurity attacks in our increasingly connected +world. In this context, the defects of the model are representative of situations of heightened vulnerability that violate standard cybersecurity good practices. \ No newline at end of file diff --git a/defectRemediation_flowChart_v5.png b/queueing-MC/img/defectRemediation_flowChart_v5.png similarity index 100% rename from defectRemediation_flowChart_v5.png rename to queueing-MC/img/defectRemediation_flowChart_v5.png diff --git a/defectRemediation_systemDiagram_v4.png b/queueing-MC/img/defectRemediation_systemDiagram_v4.png similarity index 100% rename from defectRemediation_systemDiagram_v4.png rename to queueing-MC/img/defectRemediation_systemDiagram_v4.png diff --git a/queueing-MC/research/defectRemediation_main_debug.ipynb b/queueing-MC/research/defectRemediation_main_debug.ipynb index 6c3d913..d86ebbb 100644 --- a/queueing-MC/research/defectRemediation_main_debug.ipynb +++ b/queueing-MC/research/defectRemediation_main_debug.ipynb @@ -255,11 +255,11 @@ "name": "stdout", "output_type": "stream", "text": [ - "Elapsed time (trial 1): 0.0 seconds\n", - "Elapsed time (trial 2): 0.0013508796691894531 seconds\n", + "Elapsed time (trial 1): 0.0007450580596923828 seconds\n", + "Elapsed time (trial 2): 0.0 seconds\n", "Elapsed time (trial 3): 0.0 seconds\n", "Elapsed time (trial 4): 0.0 seconds\n", - "Elapsed time (trial 5): 0.0 seconds\n" + "Elapsed time (trial 5): 0.0010066032409667969 seconds\n" ] } ], @@ -2061,7 +2061,7 @@ }, { "cell_type": "code", - "execution_count": 69, + "execution_count": 5, "id": "62e9578d-b671-4c89-ad26-ddd26cb1ba57", "metadata": {}, "outputs": [], @@ -2080,7 +2080,7 @@ }, { "cell_type": "code", - "execution_count": 70, + "execution_count": 6, "id": "64358337-0ef0-4342-871a-132108ac2e03", "metadata": { "scrolled": true @@ -2090,8 +2090,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "[554.89869212] 250\n", - "[2.21959477] [133.17568611]\n" + "[870.32180247] 1348\n", + "[0.64563932] [38.73835916]\n" ] } ], @@ -2113,7 +2113,7 @@ }, { "cell_type": "code", - "execution_count": 71, + "execution_count": 7, "id": "8d15f5e6-0635-4ad5-bfd6-ca5ff3fa66a9", "metadata": {}, "outputs": [ @@ -2122,15 +2122,15 @@ "output_type": "stream", "text": [ "processing_queue1\n", - "6\n", + "45\n", "processing_queue1\n", - "6\n", + "45\n", "processing_queue1\n", - "6\n", + "45\n", "processing_queue1\n", - "6\n", + "45\n", "processing_queue1\n", - "6\n" + "45\n" ] } ], @@ -2485,7 +2485,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 9, "id": "9a291f71-fdb3-4e7d-96b0-c8677ea695cc", "metadata": {}, "outputs": [ @@ -2850,7 +2850,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 8, "id": "9ff206dd-da3c-49b6-ab32-e40705196204", "metadata": {}, "outputs": [], @@ -2876,7 +2876,7 @@ "# # return ln1\n", "\n", "# ani = animation.FuncAnimation(fig, animate, frames=t_end*5, interval=20)\n", - "# ani.save('test2.gif', writer='pillow',fps=50,dpi=100)" + "# ani.save('test3.gif', writer='pillow',fps=50,dpi=100)" ] }, { @@ -3322,7 +3322,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 21, "id": "b19dddb0-2759-47b6-8198-1115393ac956", "metadata": { "scrolled": true @@ -3330,9 +3330,9 @@ "outputs": [ { "data": { - "image/png": "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2GP4xCc+gQ9/+MMAxDZXVRXhcHjLz3Kbd64333wTk5OT0DQNfr8fL730Eu68806cO3eO27rLvPDCC3jjjTfw+uuvf+A2/m13n0OHDuGHP/whbr/9diwuLuIb3/gGPvWpT+Gtt95q6vZum0BKRN1pamoKb7311pYxR9R9br/9dpw7dw7pdBr/+Z//iYceeginT5+2uyxqstnZWXzlK1/BK6+8ArfbbXc5tAvuu+++jf8/cOAADh06hL179+JHP/oRPB5P0x6nbQ7Z9/X1wel0fmBmVjwex9DQkE1V0W6obl9u++7zyCOP4Kc//Sl++ctfYnR0dOP6oaEh6LqOVCq15ee5zTuXqqq49dZbcfDgQZw4cQJ33XUXvvvd73Jbd5mzZ88ikUjgIx/5CGRZhizLOH36NJ5++mnIsozBwUFu7y4XDodx22234eLFi039+26bQKqqKg4ePIhTp05tXGeaJk6dOoXJyUkbK6NWm5iYwNDQ0JZtn8lk8Nprr3HbdyjLsvDII4/gpZdewi9+8QtMTExsuf3gwYNQFGXLNj9//jxmZma4zbuEaZoolUrc1l3m3nvvxZtvvolz585tXD760Y/iwQcf3Ph/bu/ulsvl8N5772F4eLipf99tdcj+2LFjeOihh/DRj34UH//4x/Gd73wH+Xwef/EXf2F3adSgXC6Hixcvbvx7enoa586dQzQaxfj4OB577DF885vfxL59+zAxMYGvfe1rGBkZwf33329f0VS3qakpnDx5Ej/5yU8QCAQ2xhKFQiF4PB6EQiE8/PDDOHbsGKLRKILBIB599FFMTk7i7rvvtrl6qtXx48dx3333YXx8HNlsFidPnsSvfvUr/PznP+e27jKBQGBjLHiVz+dDLBbbuJ7bu7t89atfxec+9zns3bsXCwsLeOKJJ+B0OvGlL32puX/fDawE0BL/+I//aI2Pj1uqqlof//jHrVdffdXukqgJfvnLX1oAPnB56KGHLMsSSz997WtfswYHBy2Xy2Xde++91vnz5+0tmup2tW0NwHr++ec3fqZYLFp/8zd/Y0UiEcvr9Vp/8id/Yi0uLtpXNNXty1/+srV3715LVVWrv7/fuvfee63//u//3rid27q7bV72ybK4vbvNF7/4RWt4eNhSVdXas2eP9cUvftG6ePHixu3N2t4Oy7KsJgZpIiIiIqKatM0YUiIiIiLqTQykRERERGQrBlIiIiIishUDKRERERHZioGUiIiIiGzFQEpEREREtmIgJSIiIiJbMZASERERka0YSImIiIjIVgykRERERGQrBlIiIiIistX/DztTGuA7G2OGAAAAAElFTkSuQmCC", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA/0AAAF4CAYAAAAG3ZkiAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAB2UUlEQVR4nO3dd3hc5Zk28HtOm17V5Q42YGNsWjAKLNVgCLAQnCywEAybxsZUQwJmAwZCYgJZIGRNyW5CwrchEBIIaRiISZzAUm0I3d2WZHVpNL2eM98fR5IlW7JnpBmdKffvunTZOpLOPJKOZs7zvs/7vKZMJpMBEREREREREZUdwegAiIiIiIiIiKgwmPQTERERERERlSkm/URERERERERlikk/ERERERERUZli0k9ERERERERUppj0ExEREREREZUpJv1EREREREREZYpJPxEREREREVGZYtJPREREREREVKaY9BMRERERERGVqZJP+nfv3o3LLrsMVVVVsFqtOOKII/DOO+8MfTyTyeD2229HQ0MDrFYrFi9ejC1bthgYMREREREREdHkKOmk3+/344QTToAsy3jhhRfw8ccf4z//8z/h9XqHPufee+/FQw89hEcffRRvvvkm7HY7lixZgng8bmDkRERERERERIVnymQyGaODGK9bbrkFr732Gv7+97+P+vFMJoPGxkbceOONuOmmmwAAgUAAdXV1+NnPfoaLL754MsMlIiIiIiIimlQlnfTPmzcPS5YsQWtrK9avX48pU6bgG9/4Br761a8CALZv346DDz4Y7777Lo488sihrzv55JNx5JFH4oc//OE+50wkEkgkEkPva5qGvr4+VFVVwWQyFfx7IiIiIiIiosqWyWQQCoXQ2NgIQZhYgb6Up5gMsX37djzyyCNYsWIFbr31Vrz99tu49tproSgKli1bho6ODgBAXV3diK+rq6sb+tjeVq9ejTvvvLPgsRMRERERERHtT0tLC6ZOnTqhc5R00q9pGo499lh873vfAwAcddRR+PDDD/Hoo49i2bJl4zrnypUrsWLFiqH3A4EApk+fjk9e+hucdkde4iYqdy3Wg40OgYiIiIioZEXCQSw+aRqcTueEz1XSSX9DQwPmzZs34tjcuXPxm9/8BgBQX18PAOjs7ERDQ8PQ53R2do4o9x/ObDbDbDbvc9xpd8DlYNJPlA2HzWV0CEREREREJS8fS8xLunv/CSecgE2bNo04tnnzZsyYMQMAMGvWLNTX12PdunVDHw8Gg3jzzTfR1NQ0qbESERERERERTbaSnum/4YYb8NnPfhbf+9738C//8i9466238OMf/xg//vGPAeijItdffz3uvvtuzJkzB7NmzcJtt92GxsZGXHDBBcYGT0RERERERFRgJZ30f+Yzn8Fzzz2HlStX4q677sKsWbPw4IMP4tJLLx36nG9961uIRCL42te+hv7+fpx44olYu3YtLBaLgZETERERERERFV5Jb9k3GYLBINxuN1pf28g1/URZ2mWbY3QIREREREQlKxwKouloNwKBAFyuifXLKuk1/UREREREREQ0Nib9RERERERERGWKST8RERERERFRmWLST0RERERERFSmmPQTERERERERlSkm/URERERERERlikk/ERERERERUZli0k9ERERERERUpiSjAyDjaIkUEl190MIxWGY1QLSYjQ6JiIiIiIiI8ohJfwXS0irSfUEkdnchHYnBpAImSYTl4KkQBJPR4REREREREVGeMOmvIJqWgeYPIt7eg7Q/DJNVgVztBVQVyY4+SC47lDqf0WESERERERFRnjDprxDpYATJth4ke/sBUYRU44YgDLR0ECQIdgviu9ohWM2QXHZDYyUiIiIiIqL8YNJf5tRwDMmuPqS6/MhoGiSPE4K8769dcliR7O1HvLkDtkOnQ5BlA6IlIiIiIiKifGLSX6YGm/SlO3qhJlMQXQ5I5v0n8pLXhVRXPxK7u2Ge3sD1/URERERERCWOSX+Z0VIppPtCSLR1Qw3HITosUNyOrL5WEARIXicSbT0QbVYotd4CR0tERERERESFxKS/TGhaBmpfAIm2HqSCEYhWBVKNJ+fZetEsQ0vISOzuhGizQHRYCxQxERERERERFRqT/jKQ7g8j2dGDpD8IkyBArh7WpG8cZJcdyS4/Eq1dsMyeCkES8xgtERERERERTRYm/SVMDcWQ6OxFqrsfGWiQ3C4I0viT/eEknxuJnn6Y7BZYp9Xl5ZxEREREREQ0uZj0l6hYSydS7T3QkmmIHgdEJb/d9gVJgOSwIrW7G7LDCsnryuv5iYiIiIiIqPDyMy1MkyrV049ESydMsgSl1pv3hH+QaLNAAxDf1Qk1nijIYxAREREREVHhMOkvMWo0jnhLJ0ySCNFe+CZ7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YkaHYyi9wZ8LmsmE2LbdTPyJiIiIiKikMOmnUYkOK6T6KqQjsYpt6jec7LIDogmJ3V3QEmzuR0REREREpYFJP42JTf1GEl0OqOE4Eh09RodCRERERESUFSb9NCZBlmGZUoOMWtlN/QYJggmiy45URy8b+xERERERUUlg0k/7JXhdUGq8SPdxth8ARKuCjKYh2dYNLa0aHQ4REREREdF+Memn/Rpq6mdhU79BotuFZG8A6b6g0aEQERERERHtF5N+OiDRYYUytRbpUBSaphkdjuEESYDJrCCxuwtqPGF0OERERERERGMqq6T/nnvugclkwvXXXz90LB6PY/ny5aiqqoLD4cDSpUvR2dlpXJAlSq52Q/a5kO4PGx1KURAdNqjhOJKdfUaHQkRERERENKaySfrffvttPPbYY1iwYMGI4zfccAN+//vf45lnnsH69evR1taGCy+80KAoS5cgy7A0VAOaBjXJLeuGmvq193IghIiIiIiIilZZJP3hcBiXXnop/vu//xter3foeCAQwE9+8hPcf//9OO2003DMMcfg8ccfx//93//hjTfeGPVciUQCwWBwxBvpBK8LSq0PaoBJLqA39dMyGuJtXWzqR0RERERERakskv7ly5fjnHPOweLFi0cc37BhA1Kp1Ijjhx12GKZPn47XX3991HOtXr0abrd76G3atGkFjb2UCIIJ5voqiBYF6TCb+gGA5HYh3RtiUz8iIiIiIipKJZ/0P/XUU9i4cSNWr169z8c6OjqgKAo8Hs+I43V1dejo6Bj1fCtXrkQgEBh6a2lpKUTYJUt0WKE01kCNxtnUDwNN/awKErs72dSPiIiIiIiKjmR0ABPR0tKC6667Di+//DIsFktezmk2m2E2m/NyrnIlV7sh9waQ7g9D8bmMDsdwosOGdKcfyY5eWGc2Gh0OERERERHRkJKe6d+wYQO6urpw9NFHQ5IkSJKE9evX46GHHoIkSairq0MymUR/f/+Ir+vs7ER9fb0xQZcBQZZhmVIDUwZs6oeBpn4+J1IdfWzqR0RERERERaWkk/7TTz8dH3zwAd57772ht2OPPRaXXnrp0P9lWca6deuGvmbTpk1obm5GU1OTgZGXPsnrglLnhepnkgsAolmGlgGb+hERERERUVHJubz/rrvuGvW4yWSCoiiYOnUqzj77bPh8vjHPkUwm8eqrr+L1119HR0cHBEFAY2MjFi1ahJNOOgmCkN1YhNPpxPz580ccs9vtqKqqGjr+5S9/GStWrIDP54PL5cI111yDpqYmHH/88Vl+xzQWpb4KaX8Q6XAMksNqdDiGk7wOpHsDSPcGoNSNff0TERERERFNlpyT/vXr12P9+vVQFAWHHnooAGDLli2IxWKYNm0a+vr6YLFY8Je//AWHH374iK/t7+/Hgw8+iDVr1sDv92PWrFmoqamBqqro6urCrbfeCq/Xi+XLl+OGG27YpwHfeDzwwAMQBAFLly5FIpHAkiVL8PDDD0/4vASINgvMU+sQ2dICwWbOerCmXAmCAMGiINHWBdFpg2jLT58JIiIiIiKi8co5SzvuuONw4oknYufOnXj33Xfx7rvvYteuXTjjjDNwxRVXoLe3F+eccw5uvvnmEV/3/PPP44gjjsBHH32ERx99FKFQCFu2bMH//d//4c0338SOHTvQ3d2Nxx57DBs3bsTcuXPx3HPP5fwN/fWvf8WDDz449L7FYsGaNWvQ19eHSCSCZ599luv580iqckP2OpFmmT8AQHLaoYYTSHb0Gh0KERERERERTJlMJpPLF9TW1uKll17CkUceOeL4P/7xD5xxxhno6urCxx9/jBNOOAF+v3/o40uXLsW9996Lgw8+OKvH+fTTT3HLLbfgt7/9bS7h5V0wGITb7UbraxvhcjgMjaVYpf1BRD5thuCwQjTLRodjODWRghaOwX7YdEjeytzdYJdtjtEhEBERERGVrHAoiKaj3QgEAnC5JpZT5DzTn0qlkErt27E9Ho8jFosB0Le923sP99/85jdDCf+2bdsO+DiHHXaY4Qk/ZWeoqR871wPQm/plAMTbe9jUj4iIiIiIDJVz0r9kyRJ84xvfwNatW4eObd68Gddeey3OPPNMqKqKRx55BAsWLBjzHCeddBLeeuut8UVMRUmpr4LoMCMdihgdSlGQvA6k+kJI9waMDoWIiIiIiCpYzkn/f/3Xf0EQBBx66KGorq6Gz+fD3LlzIYoi1qxZg7Vr1+LRRx/F3XffPeY5ZFmGLLMMvJyINgvMjbVQYwloWk4rRsqSIAgQrQoSrZ1Qo3GjwyEiIiIiogqVc/f+6upqvPHGG/jrX/+Kd999F5IkYeHChTj55JMBAMcffzx2794Nt9s95jmuuOIKnHXWWbj88ssxe/ZsWK0jt3u7/PLLcw2LioDkcUKyW6BF4xC4hR8kpx3JTj+SHb2wHjTF6HCIiIiIiKgC5dzIb9Cnn36KDz74ALIsY+7cuUPb92Vjf1u7mUwmqGrxrINmI7/cxFo6kdjeDqWB+9QDgJpMQQtVXlM/NvIjIiIiIhq/fDbyy3mmPx6P41//9V/x/PPPY3C8wGQy4bzzzsPTTz8Ns9l8wHPs3eSPyodS5UaqvQdqLAnRqhgdjuFERYZqiiG+uxs2px2CJBodEhERERERVZCc1/T/x3/8B9566y0899xz8Pv96O3txbPPPouNGzfijjvuKECIVEpEmwVytQcqG/oNkTwOpPrDSHX7D/zJREREREREeZTzTP8vf/lL/PjHP8a55547dOz888+HKIr4xje+gdWrVx/wHLNmzYLJZBrz49u3b881LCoicrUHqS4/1GQKosKGjYIgQLRZkGzrhuR2QLRZjA6JiIiIiIgqRM5JfygUwmGHHbbP8UMPPRTd3d1ZnWPZsmUjkv50Oo3Nmzdj7dq1uOuuu3INiYqM5LJD8rmQ7O2HWOUxOpyiIDmsSHb7kWjrgeWgKRCEsQe9iIiIiIiI8iXnpH/+/Pl45plnsHLlyhHHf/WrX2XdzG+sZQCPPfYY/vznP+O6667LNSwqMkqNB8luP7S0BkHKeRVJWRLdDiS7+qB4nRCqxt7dgoiIiIiIKF9yTvq//e1v4/zzz8d7772HE044AQDw6quv4tlnn8Uvf/nLCQVz1lln4cYbb5zQOag4CG4nJI8TaigMoYK61u+PqMhQBQHx9h7YXDYIMpc+EBERERFRYeWc9J9zzjl45pln8P3vfx9/+MMfkMlksGDBAvzqV7/ChRdeOKFgfv3rX094OwIqDoJgglLjRbQvBE3T9rtNYyWRPA6kuvxI9QRgbqg2OhwiIiIiIipzOSf9APD5z38en//858f9oKM18guFQujr68Odd9457vNScZG8DkhOG9RwDILLbnQ4RUEQBEhOGxItnRAtCiRWQRARERERUQFllfQ/8cQTWZ/w8ssvP+Dn7N3IDwAURUFTUxNOOeWUrB+Lipsgy1AaqhDZ0gzNYWPzugGi3YpkXxCxnW2wiiIkDogQEREREVGBmDKZTOZAn5RtabbJZIKqqhMOqpgEg0G43W60vrYRLofD6HBKjhpPIPrRdkAQINqtRodTVJK9/ZCsVlhnT4XoKK+fzS7bHKNDICIiIiIqWeFQEE1HuxEIBCa8BD6rbF7TtKzeckn4N2zYgIsvvhiHH344jjzySFx66aV4++23x/2NUHESLWZI1V6o4bjRoRQdyetGOhxFbGcb1HjC6HCIiIiIiKgM5dxd7Z133hn1eCAQwLJly7I6x/r16/HZz34WW7ZswZlnnomTTz4Zn376KU488US89tpruYZERU6pckMwS1BjSaNDKSqCYIJU7UHaH0ZiZzu0VMrokIiIiIiIqMxkVd4/XFVVFdatW4cjjzxy6Njvf/97fP3rX0c6nUZXV9cBz3HiiSfiiCOOwCOPPDLi+PLly/Hxxx/jL3/5Sy4hFRTL+/Mjtn03Em09UGq9RodSdDRNQ7o7AKXeB8usRgiSaHRIE8byfiIiIiKi8Zv08v7hvvSlL2Hx4sV4//334ff7cdlll+H888/Haaedho8//jirc2zcuBHXXXfdPsevueaaMSsJqLTJ1R6YRBFaKm10KEVHEARIVW4k2nuQaO6ApuU0DkdERERERDSmnLfse/DBB6EoCk4//XRIkgSLxYIXXngBS5Ysyfoc1dXV6Onp2ed4V1cXzGZzriFRCRAcNsheJ5L+EJQqblO3N0ESIPlcSOzuAUQR5ml13O2AiIiIiIgmLOeZfgC49957cdVVV6G7uxtPPfVUTgk/AJx33nm4+uqr8cknnwwd+/jjj3HttdfivPPOG09IVOQEwQSlxgNAg5bWjA6nKImKDNFlR6KtC6nOXqPDISIiIiKiMpDVTP9pp5026nFZlnHuuefiiCOOGDr2yiuvHPB8d999N8444wzMnz8fbrcbgN4IcOHChfjBD36QTUhUggS3A5LTDjUUhuDlbP9oRKsCZDTEd3bAJIrsgUBERERERBOSVdI/Y8aMnI4fiNfrxVtvvYUXX3wRH374ITKZDBYsWIAzzzwTgjCu4gMqAYIkQqn1IbqlGZqWYfn6GESbBRlVRXzHbgiivt6fiIiIiIhoPHLu3j8omUxCURQAQFtbGxobG/MaWLFg9/780lIpRD7cjoymQXLajQ6nqKX6QxBEAdaDp0HylNa1x+79RERERETjZ2j3/u7ubpx22mm48847h44dddRROPPMM+H3+7M6x9atW3HKKafA4XBAFMV93qh8CbIMpb4KaiRhdChFT/Y4oaZUxHbshhqKGR0OERERERGVoJy791933XWIRCK45JJLho698MIL+Pd//3fcdNNN+MlPfnLAc3zta19DZ2cn7r77bni9XLNcaSSvE5LdDDUSg2i3Gh1OUVN8LqR6+hHbsRvW2VMh2ixGh0RERERERCUk56T/pZdewrp16zB//vyhY0cffTQefvhhfO5zn8vqHG+88Qb+/ve/45hjjsn14akMiBYzpGovEs2dTPqzIPrcSHf3I7azDbaDp0Ewy0aHREREREREJSLn8v50Oo3R2gAoioJoNJrVOaqqqmCxcMaykilVbgiKCDWRMjqUoicIJkg1bqR7Q4jvaIOW4s+MiIiIiIiyk3PSf/LJJ+PWW29FMBgcOhYKhXDbbbfhpJNOyuoc11xzDf7jP/4DkUgk14enMiE6rJCqPNBCvAayIQh6F/9Elx/xXZ3Q0qrRIRERERERUQnIubz//vvvx0knnYSpU6fikEMOAQBs3rwZPp8PL7744phfN2vWLJhMe7Zo27lzJ6qqqlBXV7dP877t27fnGhaVIKXag1R3P7RUGoKc86VYcQRJgFzlQqKjFyZZhHlaPbc9JCIiIiKi/co50zr44IPx8ccf46mnnsKHH34IWZZx1VVX4dJLL4XVOvb67CuuuGIicVIZElx2yF4Hkv4wlKqJbUNRKQRZguR2INHaBQgCzFNqmfgTEREREdGYxjW96na78fWvfz2nr5k3bx7OPPNMuN3u8TwklSFBMEGp8SLZG4CmaRCEnFebVCTRLAMOOxLNHRAVGUqdz+iQiIiIiIioSOWc9Mfjcfz4xz/GBx98AFXV1xVnMhkkEgm888472Lx586hf95Of/ARf/vKXceSRR+Jzn/sczj77bCxcuHBi0VPJE9wOSE471GAEgsdpdDglQ7QqgKYivqMNMJmg1HLrSyIiIiIi2lfOSf+1116LJ554AkcddRTefvttfPazn8XWrVvR2dmJG264YcyvW7t2LWKxGNatW4c//elPuOCCC5BKpXDWWWfhc5/7HM444ww4nUz6Ko0giVDqqxDZ3AxNy7BUPQei3Yq0piG2bTfURJKl/kREREREtI+c66mff/55PP7443j99dcxc+ZM/Pd//zd27dqF888/H8lkcr9fa7Vace655+Lhhx/Gjh078NJLL2Hu3LlYs2YNGhoacOqpp+Lee+8d9zdDpUnyOiDZLdAi2W35SHtITjsEmwWJnR2Ib9/N7fyIiIiIiGiEnJN+v9+PE044AQBw+OGHY+PGjZBlGbfeeiv+8Ic/5HSuefPm4cYbb8S6devQ0dGBa665Blu3bs01JCpxgixDqa+CFt3/oBGNTrQqkHxOJNt7Ed3SAjUaNzokIiIiIiIqEjkn/bW1tejq6gIAzJkzBx988AEAoLq6Gh0dHVmfJxaL4YknnsDKlSvR19eHDRs24OSTT8aPf/zjXEOiMiB5nRAtMhPWcRJkCVKNG+m+EKKbm5HuDxsdEhERERERFYGck/6zzz4b3/jGN/DRRx/hn/7pn/Dkk0/inXfewZo1azBt2rSsztHZ2YnDDz8c//7v/4777rsP/f39+MEPfoD58+dj06ZNOX8TVPpEixlSrRdqJGZ0KCVLEARI1R6o8SSim3ch2eU3OiQiIiIiIjJYzkn/fffdh8bGRqxfvx7//M//jHnz5uG4447DQw89hDvvvDOrc9x4442YP38+uru7YbVaAQBPPPEE5s+fj5tuuinXkKhMKD4PBEmEmuC69PESBBMUnwsQBUS3tiC2qwNaWjU6LCIiIiIiMkjOSb/H48Fvf/tbfOMb34DJZMIf//hHbNiwATt37sTFF1+c1TleeeUV3HnnnbDZbEPHvF4vfvCDH+C1117LOpZHHnkECxYsgMvlgsvlQlNTE1544YWhj8fjcSxfvhxVVVVwOBxYunQpOjs7s/9maVKJTisknxtaKGJ0KCVPctoh2m2It3QivqMNGgdSiIiIiIgqUs5b9gF6Mv3kk0/iww8/hNlsxhFHHIEjjjgi668PhUJwOBz7HDeZTEin01mfZ+rUqbjnnnswZ84cZDIZ/PznP8f555+Pd999F4cffjhuuOEG/PGPf8QzzzwDt9uNq6++GhdeeGFOAws0uZQaL5LdfmipNAR5XJcnDRCtCkySgGRHH7RkCtYZDRAdVqPDIiIiIiKiSWTKZDKZXL7g/fffx1lnnYVQKIRDDjkEqqpi8+bNmDFjBl544QXMnDnzgOc455xzcOihh+L++++H0+nE+++/j6lTp+LSSy9FKBQaMVufK5/Ph/vuuw9f+MIXUFNTgyeffBJf+MIXAACffvop5s6di9dffx3HH398VucLBoNwu91ofW0jXKMMVFB+aVoG0U93IB2M6mXqNGGapiHdE4Bot8A6swGSt/A/1122OQV/DCIiIiKichUOBdF0tBuBQAAu18Tu33Mu77/uuutw7LHHorW1FRs2bMB7772HXbt2obGxEddcc01W5/jBD36A//f//h+OPvpoJBIJ/Pu//ztmz56Nl156Cffcc0/O3wQAqKqKp556CpFIBE1NTdiwYQNSqRQWL1489DmHHXYYpk+fjtdff33M8yQSCQSDwRFvNHkEwQRzrQ9QVWiaZnQ4ZUEQBCi1XmjJFKKbm5Hs7IOm5TTWR0REREREJSrnpP+NN97APffcA7fbPXSspqYG//mf/4lXXnklq3PMnTsX//jHP3DOOefgzDPPhCAIuOiii/Dee+9h4cKFOcXzwQcfwOFwwGw246qrrsJzzz2HefPmoaOjA4qiwOPxjPj8urq6/W4tuHr1arjd7qG3bHckoPwRPU5Ibge3ncsz2esCZBnR7a1ItLDBHxERERFRJch50fSUKVPQ1taGefPmjTju9/tRXV2d9XkaGxvxne98J9eH38ehhx6K9957D4FAAL/+9a+xbNkyrF+/ftznW7lyJVasWDH0fjAYZOI/yQRJhKWhGpHNLVCTKYiKbHRIZUNyWKHKEuItXcgkUrDMaIBg5s+XiIiIiKhcZZX0Nzc3D/3/uuuuw1e+8hWsWbMGJ5xwAkRRxIYNG/D1r38dd999d1YPeuqpp8JkMu1z3GQyQVEUTJ06FV/60pdw0kknHfBciqJg9uzZAIBjjjkGb7/9Nn74wx/ioosuQjKZRH9//4jZ/s7OTtTX1495PrPZDLPZnNX3QYUjVbmh1IWRaO+BWOM1OpyyIpplmHxuJDv9Aw3+GiE62eCPiIiIiKgcZVXeP3PmTMyaNQuzZs3C9ddfj+bmZpx33nmoqqqCx+PB6aefjq1bt+KKK67I6kGPPPJIrF+/HsFgEAsXLsTChQsRi8Xwl7/8BVarFc3NzVi8eDF+97vf5fwNaZqGRCKBY445BrIsY926dUMf27RpE5qbm9HU1JTzeWnyKfVVEC0K0uGY0aGUHUESINV4oAYjiG7dhXRvwOiQiIiIiIioALKa6f/LX/6S1wdtbW3F8uXL8dBDD404/s1vfhOtra149tln8cADD+C73/0u/vmf/3nM86xcuRJnn302pk+fjlAohCeffBJ//etf8eKLL8LtduPLX/4yVqxYAZ/PB5fLhWuuuQZNTU1Zd+4nY4k2C8xT6xDZ0gLBZoYg5NyCgvZDEEwQqj1I9YcQ3doCczIFua4KgrBvFQ4REREREZWmrJL+k08+Oa8PunbtWmzYsGGf41/72tdw1FFHAQAuuOAC3Hbbbfs9T1dXFy6//HK0t7fD7XZjwYIFePHFF3HGGWcAAB544AEIgoClS5cikUhgyZIlePjhh/P6vVBhSVVuyD39SPvDUKq4hV8hyB4n1EgMsZ3tEGQJQrXH6JCIiIiIiChPcm7klw8ulwuffvopDjnkkBHHP/74Y9jtdgB6Az2bzbbf8/zkJz/Z78ctFgvWrFmDNWvWTCxgMowgibA0ViMSbIaaSEFk07mCEO1WaMkUEq3dEJ12NvcjIiIiIioThiT9V155Jb761a+iq6sLxx9/PDRNwxtvvIHbb78dX/rSl9Db24tvfvObWTXyo/IneV1Q6rxI7O6BWMemfoUiup1IdfmR6OqDdVqd0eEQEREREVEeGJL033XXXUgkErjuuusQj8eRyWRgtVpx7bXX4jvf+Q7+8Ic/IBKJ4H/+53+MCI+KkFJfhXQghHQoAslpNzqcsiQIJkguG1LtPVA8Lnb0JyIiIiIqA6ZMJpPJ5Qv+9re/4bOf/SwkaeR4QTwexx//+EcsXbo063PFYjF88sknkCQJc+bMgdVafElGMBiE2+1G62sb4XI4jA6noiU7+xDd2gKpys2mfgWU6umHXO2BZfa0cTf122Wbk+eoiIiIiIgqRzgURNPRbgQCAbhcE+ttlnPmdOqpp8Lv9+9z/OOPP8Zll12W9XnS6TT6+vpQXV0Nj8eDrq4ubN68Gb/4xS9yDYkqhFTlhuR1Iu0PGx1KWRPdDiR7+5Hu6Tc6FCIiIiIimqCsyvsffPBB3HjjjQCATCaD+vr6UT/vuOOOy+pBX3rpJVx++eXo7u7e52NWqxWXXnppVuehyiJIIiwN1YiyqV9BCbIEkygi2dYDye1gUz8iIiIiohKWVdJ/9dVXw+fzQdM0/Nu//RseeOABuN3uoY+bTCY4HA6cdtppWT3orbfeiqOPPhrXXnstvvjFL+IXv/gFdu3ahdtvvx2PP/74+L4TqgiS1wW5lk39Ck10OfSmfh29sM4YfZCPiIiIiIiKX1ZJvyRJuPzyywHoCf7FF18MQRAgy/oMYFtbGxobG7N+0I8++gg//elPsWDBAhx55JGw2+245ppr4HA48IMf/AAXXHBB7t8JVQylsZpN/QpsqKlfZy9krxOSiz9nIiIiIqJSlPOa/s997nM4++yzcccddwwdO+qoo3DmmWeOutZ/NKIoDlUKzJ49Gx9++CEA4LTTTsPHH3+ca0hUYUSLGeYpddCiSWhpzehwypZosyCTVpFs64Gm5dTvk4iIiIiIikTOSf91112HSCSCSy65ZOjYCy+8gEAggJtuuimrc8yfPx+/+93vAABz587Fq6++CgBobW3NNRyqUJLPBanKiXQgaHQoZU30uNjUj4iIiIiohGVV3j/cSy+9hHXr1mH+/PlDx44++mg8/PDD+NznPpfVOW655RZ84QtfgKIouOSSS7Bq1Sqcc845eP/993H66afnGhJVIEESYWmsRTQYZVO/AhIkASZZQmJ3F5v6ERERERGVoJxn+tPpNDKZfUt9FUVBNBrN6hwXXHAB3nrrLRx//PGYNm0a1q5dC0mScP755+Oxxx7LNSSqUJLHAbneB7UvxPLzAhJdDqjhOBIdvUaHQkREREREOco56T/55JNx6623IhjcU1YdCoVw22234aSTTsrqHBdeeCGsVisWLlw4dM7nn38e//Vf/wWfz5drSFTBlPoqiC4r1HB2A06UO0EwQXTZkeroQToYMTocIiIiIiLKQc7l/ffffz9OOukkTJ06FYcccggAYPPmzfD5fHjxxRezOscrr7wCq9Wa60MT7UNv6leL6KZmaDYrBCnncSzKgmhVkIpGkWzrhuCwQRBMRodERERERERZyDlDOvjgg/Hxxx/jvvvuQ1NTE0466STcf//9+OSTT3DooYdmdY4rrrgCN998Mz766CMkEomcgyYaTvK5oNS42dSvwES3C8neAJv6ERERERGVEFNmtAX6WUokElAUBSZTbrN+c+bMwbZt28b8OlVVxxtS3gWDQbjdbrS+thEuh8PocGgM6WAE0U92wGSxQLQqRodTtlLBCARRgG3uTIgW85ift8s2ZxKjIiIiIiIqL+FQEE1HuxEIBOByuSZ0rpzL+wHg0Ucfxfe//320tLRg8+bNuO+++zBlyhR8+9vfzurrs/08omxJLjvk+iokmrtgMsssPy8Q0WFDursfyc4+WGc0GB0OEREREREdQM5J/5NPPolbbrkF119/Pe69914AwNy5c3HzzTfDarXixhtvPOA5li1blnukRAeg1PmQ7gtCDUchuOxGh1OW9jT164XsdkLysPqFiIiIiKiY5bym/wc/+AF+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HwDWrFmDm2++GdFoFNXV1WhtbcU//vEPzJ07F+eff/54QiLKieiwQqqvQjoSY1O/SSZIepLvdgL9IT35394CRKNGR0ZEREREVH6ymul/4oknsj7h5ZdffsDPaW1txVe+8hVYLBYsXLgQb7/9Ns4//3zcf//9WLFiBa6//vqsH49ovNjUz1iSpDf7SyaBHr8+AFDrBap9bPZHRERERJQvWSX9V1xxxYj3B0vyrVYrZFlGMBiEKIqoqanJKum32+1Da/lnz56Njz76COeffz7mzp2LnTt35vxNEI2HIMuwTKlBeNMuNvUzkKIAVQoQjwPNHUBPAGioAqrcbPZHRERERDRRWZX3a5o29PaLX/wCCxcuxLvvvotIJIL+/n5s2rQJxx57LFauXJnVg55wwgm45557EI1GcdRRR+F3v/sdNE3Dq6++CpeLM640eQSvC0qNF+m+kNGhVDyLBair1p+UduwGNu0Cev1ARjM6MiIiIiKi0pXzmv6bb74ZjzzyCBYuXDh0bM6cOfjRj36E733ve1mdY/Xq1Vi7di3WrFmDSy65BB0dHfD5fLj88sv3qSogKqTBpn6iRYYaiRkdDgGw24FqL5BIAdtagJYOJv5EREREROOVc9Lf398Pi8Wyz3FVVRGLjZ00vfvuu0P/nz9/PrZt24Yrr7wSDocDb775JlatWoVf/vKXIwYONmzYsN9YVq9ejc985jNwOp2ora3FBRdcgE2bNo34nHg8juXLl6OqqgoOhwNLly5FZ2dntt8uVQDRYYUytRbpUBSaxuyyGJgEvdGf0w60dQNtPUZHRERERERUmnJO+k899VRcffXVI9bef/LJJ1i+fDnOPffcMb/uqquuwr/927/h008/BQBYrVZUV1cDAOrq6nDDDTfgC1/4AgBg48aNuOyyy3DVVVftN5b169dj+fLleOONN/Dyyy8jlUrhzDPPRCQSGfqcG264Ab///e/xzDPPYP369Whra8OFF16Y67dNZU6udkP2uZDuDxsdCg2jKIDTBuzuALp7jY6GiIiIiKj0mDKZTE77le3evRtLlizBJ598Aq/XC03TEAgEcNxxx+FPf/oTvF7vqF+nqiruvfdefP/738e0adNwzjnn4IgjjkBtbS1UVUV3dzc2btyIV155Bbt27cKNN96IW265BbIsZx1bd3c3amtrsX79epx00kkIBAKoqanB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HnzwQUQiEVx55ZVGh0ZERERERERUMBWR9F900UXo7u7G7bffjo6ODhx55JFYu3btPs39RmM2m7Fq1apRS/6JygWvc6oEvM6pEvA6p0rA65wqQT6vc1MmH3sAEBEREREREVHRKfs1/URERERERESVikk/ERERERERUZli0k9ERERERERUppj0ExEREREREZUpJv0HsGbNGsycORMWiwWLFi3CW2+9ZXRIROP2t7/9Deeddx4aGxthMpnw29/+dsTHM5kMbr/9djQ0NMBqtWLx4sXYsmWLMcESjcPq1avxmc98Bk6nE7W1tbjggguwadOmEZ8Tj8exfPlyVFVVweFwYOnSpejs7DQoYqLcPfLII1iwYAFcLhdcLheamprwwgsvDH2c1ziVo3vuuQcmkwnXX3/90DFe61Tq7rjjDphMphFvhx122NDH83WNM+nfj6effhorVqzAqlWrsHHjRixcuBBLlixBV1eX0aERjUskEsHChQuxZs2aUT9+77334qGHHsKjjz6KN998E3a7HUuWLEE8Hp/kSInGZ/369Vi+fDneeOMNvPzyy0ilUjjzzDMRiUSGPueGG27A73//ezzzzDNYv3492tracOGFFxoYNVFupk6dinvuuQcbNmzAO++8g9NOOw3nn38+PvroIwC8xqn8vP3223jsscewYMGCEcd5rVM5OPzww9He3j709uqrrw59LG/XeIbGdNxxx2WWL18+9L6qqpnGxsbM6tWrDYyKKD8AZJ577rmh9zVNy9TX12fuu+++oWP9/f0Zs9mc+eUvf2lAhEQT19XVlQGQWb9+fSaT0a9pWZYzzzzzzNDnfPLJJxkAmddff92oMIkmzOv1Zv7nf/6H1ziVnVAolJkzZ07m5Zdfzpx88smZ6667LpPJ8PmcysOqVasyCxcuHPVj+bzGOdM/hmQyiQ0bNmDx4sVDxwRBwOLFi/H6668bGBlRYezYsQMdHR0jrnm3241FixbxmqeSFQgEAAA+nw8AsGHDBqRSqRHX+WGHHYbp06fzOqeSpKoqnnrqKUQiETQ1NfEap7KzfPlynHPOOSOuaYDP51Q+tmzZgsbGRhx00EG49NJL0dzcDCC/17iU14jLSE9PD1RVRV1d3YjjdXV1+PTTTw2KiqhwOjo6AGDUa37wY0SlRNM0XH/99TjhhBMwf/58APp1rigKPB7PiM/ldU6l5oMPPkBTUxPi8TgcDgeee+45zJs3D++99x6vcSobTz31FDZu3Ii33357n4/x+ZzKwaJFi/Czn/0Mhx56KNrb23HnnXfin/7pn/Dhhx/m9Rpn0k9ERGVp+fLl+PDDD0esjSMqF4ceeijee+89BAIB/PrXv8ayZcuwfv16o8MiypuWlhZcd911ePnll2GxWIwOh6ggzj777KH/L1iwAIsWLcKMGTPwq1/9ClarNW+Pw/L+MVRXV0MUxX26I3Z2dqK+vt6gqIgKZ/C65jVP5eDqq6/GH/7wB/zlL3/B1KlTh47X19cjmUyiv79/xOfzOqdSoygKZs+ejWOOOQarV6/GwoUL8cMf/pDXOJWNDRs2oKurC0cffTQkSYIkSVi/fj0eeughSJKEuro6XutUdjweDw455BBs3bo1r8/nTPrHoCgKjjnmGKxbt27omKZpWLduHZqamgyMjKgwZs2ahfr6+hHXfDAYxJtvvslrnkpGJpPB1Vdfjeeeew6vvPIKZs2aNeLjxxxzDGRZHnGdb9q0Cc3NzbzOqaRpmoZEIsFrnMrG6aefjg8++ADvvffe0Nuxxx6LSy+9dOj/vNap3ITDYWzbtg0NDQ15fT5nef9+rFixAsuWLcOxxx6L4447Dg8++CAikQiuvPJKo0MjGpdwOIytW7cOvb9jxw6899578Pl8mD59Oq6//nrcfffdmDNnDmbNmoXbbrsNjY2NuOCCC4wLmigHy5cvx5NPPonnn38eTqdzaM2b2+2G1WqF2+3Gl7/8ZaxYsQI+nw8ulwvXXHMNmpqacPzxxxscPVF2Vq5cibPPPhvTp09HKBTCk08+ib/+9a948cUXeY1T2XA6nUP9WAbZ7XZUVVUNHee1TqXupptuwnnnnYcZM2agra0Nq1atgiiKuOSSS/L6fM6kfz8uuugidHd34/bbb0dHRweOPPJIrF27dp9GZ0Sl4p133sGpp5469P6KFSsAAMuWLcPPfvYzfOtb30IkEsHXvvY19Pf348QTT8TatWu5lo5KxiOPPAIAOOWUU0Ycf/zxx3HFFVcAAB544AEIgoClS5cikUhgyZIlePjhhyc5UqLx6+rqwuWXX4729na43W4sWLAAL774Is444wwAvMapcvBap1LX2tqKSy65BL29vaipqcGJJ56IN954AzU1NQDyd42bMplMJt/BExEREREREZHxuKafiIiIiIiIqEwx6SciIiIiIiIqU0z6iYiIiIiIiMoUk34iIiIiIiKiMsWkn4iIiIiIiKhMMeknIiIiIiIiKlNM+omIiIiIiIjKFJN+IiIiIiIiojLFpJ+IiKjMNTc346mnnhp6f+bMmbjjjjsmPY5gMIi5c+eitbUVO3fuhMlkwl//+te8PsYNN9yABx54IK/nJCIiKmWS0QEQERFRYS1btgwzZszAxRdfDAB4++23YbVaJz2Ob37zm7joooswdepU7Ny5syCPsWrVKhx++OE477zzMHv27II8BhERUSlh0k9ERFTmMpnMiPdramomPYatW7fiiSeeQFtbW0Efx+Px4JJLLsFdd92FJ554oqCPRUREVApY3k9ERFTGTjnlFKxfvx4///nPMXPmTAAjy/vvuOMOLF68GHfddRfq6urgdDrx9a9/HS0tLTj33HNhs9kwe/Zs/PGPfxw6ZzKZxM0334wpU6bA4XDg+OOPx0svvbTfOB544AGcdtpp8Hq9I46/8cYbWLRoEcxmMw466CA8/vjjQx+74oor8MUvfhFnnnkmXC4X7r33XkSjUXzlK19BfX09LBYLjjrqKDz77LMjznnxxRfjqaeeKvgAAxERUSlg0k9ERFTGnn32WTQ1NeFf/uVf8Pbbb4/6OX/729/w6aef4u9//zseeugh/PjHP8ZnPvMZXHTRRdiwYQPmzp2LK664Yqhi4IorrsBLL72EX/ziF3j33XfxL//yLzj33HNHDAzs7fnnn8c555yzz/EHH3wQ3/72t/Hxxx/jrLPOwle+8hVs3bp16OO//vWvccYZZ+Cdd97BJZdcgttuuw3vv/8+/vSnP+GTTz7B2WefjYsuumjEcoFjjz0WVVVV+NOf/jTOnxoREVH5YNJPRERUxnw+HxRFgdVqHbOsX9M0PPbYYzjkkENw5ZVXorq6Gqeffjq+9KUvYe7cufjGN76Bnp4edHR0YOvWrfjlL3+Jxx9/HKeccgrmzJmDFStW4JJLLsF999036vlbWlqwe/duHHHEEft8bNWqVTjvvPNw8MEH47vf/S40TcPGjRuHPu71evHNb34ThxxyCKZNm4Zt27bB6XTioIMOwqxZs/Cd73wHf/jDH/apIDj88MPx+uuvT+AnR0REVB64pp+IiKjCDZb1D7Lb7Tj44IOH3h9s+pdIJPDuu+8CAE488cQR50ilUvB4PKOev6OjAwBQW1u7z8cOOeSQof8PJu6xWGzo2Jw5c0Z8/s0334zzzjsPNTU1WLRoEc4880z867/+K9xu94jPq6mpGXpcIiKiSsakn4iIqMLJsrzPMUEYvRhQ0zQAwN///vcRAwUAIIriqF8zeC5VVff52GhfM7zx4N67DDQ1NaGlpQUvv/wy/vznP+PnP/85vvOd72Dt2rU4/fTThz5PVdUxvwciIqJKwldDIiKiMmcymfJ2rvnz5wMA2tvbMXv27KG3xx9/fEQTvuEaGhoAAN3d3RN+/FWrVuHVV1/FP//zP+Ohhx7C5s2bcfDBB+M3v/nNiM/r6upCY2PjhB+PiIio1DHpJyIiKnMOhwM7d+5Ea2vrhM91+OGH49xzz8VVV12F3//+99i+fTvuvfderF69esSSgOEaGxsxbdq0EWv1x2v79u246qqr8Morr2DXrl34zW9+g127duGzn/3s0OdomoZ//OMfWLRo0YQfj4iIqNQx6SciIipzV111FT788EMsWLBg1BL7XD399NNYunQpvv71r2PevHn4+c9/jp/85CdYtmzZmF9z/vnn45VXXpnwY69Zswann346LrvsMhxyyCG47bbb8P3vfx+XXXbZ0Oe8++67CIVCOPfccyf8eERERKXOlBm+cI6IiIioADZt2oSFCxdi586dqK+vL+hjXX311ejv78f//u//FvRxiIiISgGTfiIiIpoUV155JRobG/Hd7363YI/R29uLefPm4e9///uInQGIiIgqFZN+IiIimhR+vx+LFi3CunXrMG3atII8xnXXXYdp06bhpptuKsj5iYiISg2TfiIiIiIiIqIyxUZ+RERERERERGWKST8RERERERFRmWLST0RERERERFSmmPQTERERERERlSkm/URERERERERlikk/ERERERERUZli0k9ERERERERUppj0ExEREREREZWp/w/Xc1Zm4NFS3gAAAABJRU5ErkJggg==", "text/plain": [ - "
" + "
" ] }, "metadata": {}, @@ -3340,7 +3340,7 @@ } ], "source": [ - "fig, ax = plt.subplots(figsize=(8,3))\n", + "fig, ax = plt.subplots(figsize=(12,4))\n", "\n", "y_max_curve = [trial_avg[0]]+max_curve\n", "y_min_curve = [trial_avg[0]]+min_curve\n", @@ -3361,22 +3361,30 @@ "line_blue_dots_1 = ax.plot(hours[11:], median_curve[10:], 'o', linewidth=1.5, color='black', markersize=6, alpha=1)[0]\n", "line_blue_dots_2 = ax.plot(hours[11:], median_curve[10:], 'o', linewidth=1.5, color='#2348FF', markersize=4, alpha=1)[0]\n", "\n", - "GetCleanbox1 = [Rectangle((0,-10), 11, 90)]\n", - "GetCleanbox2 = [Rectangle((11,-10), 39, 90)]\n", + "GetCleanbox = [Rectangle((0,0), 11, 60), Rectangle((11, 0), 39, 60)]\n", + "# GetCleanbox1 = [Rectangle((0,-10), 11, 90)]\n", + "# GetCleanbox2 = [Rectangle((11,-10), 39, 90)]\n", "# GetCleanbox = [Rectangle((0,-10), 10.5, 90), Rectangle((10.5,-10), 40, 90), Rectangle((50.5,-10), 12, 90), Rectangle((62.5,-10), max(times_forplot[trial]), 90)]\n", "# GetCleanbox = [Rectangle((0,-10), max(times_forplot[trial]), 300)]\n", "facecolor = ['#C21445', '#2348FF']\n", "# facecolor = ['#2348FF']\n", "\n", "# Create patch collection with specified colour/alpha\n", - "pc1 = PatchCollection(GetCleanbox1, facecolor=facecolor[0], alpha=0.1,\n", - " edgecolor=None)\n", - "pc2 = PatchCollection(GetCleanbox2, facecolor=facecolor[1], alpha=0.1,\n", - " edgecolor=None)\n", + "pc = PatchCollection(GetCleanbox, facecolor=facecolor, alpha=0.1, edgecolor=None)\n", + "# pc1 = PatchCollection(GetCleanbox1, facecolor=facecolor[0], alpha=0.1,\n", + "# edgecolor=None)\n", + "# pc2 = PatchCollection(GetCleanbox2, facecolor=facecolor[1], alpha=0.1,\n", + "# edgecolor=None)\n", "\n", "# Add collection to Axes\n", + "# ax.add_collection(pc)\n", + "ax.set(xlim=[0, hours[-1]], ylim=[0,60])\n", + "csfont = {'fontname':'Arial'}\n", "\n", - "ax.set(xlim=[0, hours[-1]])\n", + "ax.set_xticks(hours[::10], labels=hours[::10])\n", + "# ax.set_xlim(0, max(times_forplot[trial]))\n", + "ax.set_xlabel('time (hrs)', fontsize=11, **csfont)\n", + "ax.set_ylabel('defect backlog\\n(average/hour)', fontsize=11, **csfont)\n", "\n", "def update(frame):\n", " if frame <= 50:\n", @@ -3448,8 +3456,8 @@ " \n", " ax.fill_between(hours[0:12], [trial_avg[0]]+min_curve[0:11], [trial_avg[0]]+max_curve[0:11], color='#C21445', alpha=0.1)\n", " ax.fill_between(hours[11:], min_curve[10:], max_curve[10:], color='#2348FF', alpha=0.1)\n", - " ax.add_collection(pc1)\n", - " ax.add_collection(pc2)\n", + " ax.add_collection(pc)\n", + " ax.add_collection(pc)\n", " \n", " # line_max_curve.set_xdata(hours[:frame])\n", " # line_max_curve.set_ydata(y_max_curve[:frame])\n", @@ -3463,14 +3471,613 @@ " return (line_trial1, line_red_dots_1, line_red_dots_2, line_blue_dots_1, line_blue_dots_2, line_max_curve, line_min_curve, line_median_curve)\n", "\n", "ani = animation.FuncAnimation(fig=fig, func=update, frames=150, interval=500)\n", - "ani.save('test2.gif', writer='pillow',fps=7,dpi=100)\n", + "ani.save('test3.gif', writer='pillow',fps=7,dpi=100)\n", + "# plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "f17a09d2-7c47-49d0-9fcf-7a3355b3e2d1", + "metadata": {}, + "source": [ + "#### Boxplot animation" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c703b3d7-9a7f-4654-bc30-68e6d7792559", + "metadata": {}, + "outputs": [], + "source": [ + "# hourly_stats = {}\n", + "# median_curve = []\n", + "# min_curve = []\n", + "# max_curve = []\n", + "\n", + "# for hour in hours[:-1]:\n", + "# hourly_stats['hour{0}'.format(hour+1)] = []\n", + "# for trial in times_forplot.keys():\n", + "# starting = times_forplot[trial].index(hours[hour])\n", + "# stopping = times_forplot[trial].index(hours[hour+1])\n", + "# hourly_stats['hour{0}'.format(hour+1)] = hourly_stats['hour{0}'.format(hour+1)] + backlog[trial][starting:stopping]\n", + "# median_curve.append(np.percentile(hourly_stats['hour{0}'.format(hour+1)],[50])[0])\n", + "# min_curve.append(min(hourly_stats['hour{0}'.format(hour+1)]))\n", + "# max_curve.append(max(hourly_stats['hour{0}'.format(hour+1)]))\n", + "\n", + "# colors = ['#C21445' for value in median_curve]\n", + "\n", + "\n", + "\n", + "# medianprops = dict(linestyle='-.', linewidth=2)\n", + "\n", + "\n", + "# fig, ax = plt.subplots(1, 1, figsize=(16,5))\n", + "# for trial in times_forplot.keys():\n", + "# ax.plot(times_forplot[trial], backlog[trial], '-', linewidth=0.5, color='gray', alpha=0.4)\n", + "# # for key in hourly_stats.keys():\n", + "# bplot = ax.boxplot(list(hourly_stats.values()),\n", + "# whis=(0,100),\n", + "# medianprops=medianprops,\n", + "# labels=hours[1:],\n", + "# patch_artist=True,\n", + "# sym='x',\n", + "# notch=False)\n", + "# for patch, color in zip(bplot['boxes'], colors):\n", + "# patch.set_facecolor(color)\n", + "\n", + "\n", + "# ax.plot(hours, [trial_avg[0]]+max_curve, 'k:', linewidth=1.5, alpha=0.7)\n", + "# # ax.plot(hours[1:], max_curve, 'r', linewidth=0.75, alpha=0.3)\n", + "# ax.plot(hours[1:], median_curve, 'k', linewidth=1, alpha=0.5, label='average \"on the hour\"')\n", + "# ax.plot(hours, [trial_avg[0]]+min_curve, 'k:', linewidth=1.5, alpha=0.7)\n", + "# # ax.plot(hours[1:], min_curve, 'b', linewidth=0.75, alpha=0.3)\n", + "# # ax.fill_between(hours[1:], min_curve, max_curve, color='#2348FF', alpha=0.1)\n", + "# ax.fill_between(hours[1:], min_curve, max_curve, color='#C21445', alpha=0.1)\n", + "# # ax.fill_between(hours[0:12], [trial_avg[0]]+min_curve[0:11], [trial_avg[0]]+max_curve[0:11], color='#C21445', alpha=0.1)\n", + "# # ax.fill_between(hours[11:52], min_curve[10:51], max_curve[10:51], color='#2348FF', alpha=0.1)\n", + "# # ax.fill_between(hours[51:64], min_curve[50:63], max_curve[50:63], color='#C21445', alpha=0.1)\n", + "# # ax.fill_between(hours[63:], min_curve[62:], max_curve[62:], color='#2348FF', alpha=0.1)\n", + "\n", + "\n", + "# # GetCleanbox = [Rectangle((0,-10), 11.5, 90), Rectangle((11.5,-10), max(times_forplot[trial]), 90)]\n", + "# # GetCleanbox = [Rectangle((0,-10), 9.5, 90), Rectangle((9.5,-10), max(times_forplot[trial]), 90)]\n", + "# # GetCleanbox = [Rectangle((0,-10), 11.5, 90), Rectangle((11.5,-10), 39, 90), Rectangle((50.5,-10), 12, 90), Rectangle((62.5,-10), max(times_forplot[trial]), 90)]\n", + "# GetCleanbox = [Rectangle((0,-10), max(times_forplot[trial]), 300)]\n", + "# facecolor = ['#C21445', '#2348FF']\n", + "# # facecolor = ['#2348FF']\n", + "\n", + "# # Create patch collection with specified colour/alpha\n", + "# pc = PatchCollection(GetCleanbox, facecolor=facecolor, alpha=0.1,\n", + "# edgecolor=None)\n", + "\n", + "# # Add collection to Axes\n", + "# ax.add_collection(pc)\n", + "\n", + "# csfont = {'fontname':'Arial'}\n", + "\n", + "# ax.set_xticks(hours[::10], labels=hours[::10])\n", + "# ax.set_xlim(0, max(times_forplot[trial]))\n", + "# ax.set_xlabel('times (hrs)', fontsize=14, **csfont)\n", + "# ax.set_ylabel('defects backlog\\n(average/hour)', fontsize=14, **csfont)\n", + "# # ax.legend()\n", + "# # plt.savefig('Article/Figures/Medium/Figure_no_remediation.svg', bbox_inches='tight')\n", + "# plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "466ceec3-83de-4705-b034-a7d9250b733a", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'whiskers': [,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ],\n", + " 'caps': [,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ],\n", + " 'boxes': [,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ],\n", + " 'medians': [,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ],\n", + " 'fliers': [],\n", + " 'means': []}" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(figsize=(12,4))\n", + "ax.boxplot(list(hourly_stats.values()),\n", + " # labels=hours[1:8*frame],\n", + " patch_artist=True,\n", + " manage_ticks=False,\n", + " sym='',\n", + " notch=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "c30409f8-43a7-410a-9984-80b7d9ca06e8", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(figsize=(12,4))\n", + "\n", + "y_max_curve = [trial_avg[0]]+max_curve\n", + "y_min_curve = [trial_avg[0]]+min_curve\n", + "y_median_curve = [trial_avg[0]]+median_curve\n", + "\n", + "line_trial1 = ax.plot(times_forplot['trial1'], backlog['trial1'], ':', linewidth=0.5, color='black', alpha=0.5)[0]\n", + "line_trial2 = ax.plot(times_forplot['trial2'], backlog['trial2'], ':', linewidth=0.5, color='black', alpha=0.5)[0]\n", + "line_trial3 = ax.plot(times_forplot['trial3'], backlog['trial3'], ':', linewidth=0.5, color='black', alpha=0.5)[0]\n", + "line_trial4 = ax.plot(times_forplot['trial4'], backlog['trial4'], ':', linewidth=0.5, color='black', alpha=0.5)[0]\n", + "line_trial5 = ax.plot(times_forplot['trial5'], backlog['trial5'], ':', linewidth=0.5, color='black', alpha=0.5)[0]\n", + "\n", + "colors = ['#2348FF' if value < max(median_curve)*0.2 else '#C21445' for value in median_curve]\n", + "# bplot = ax.boxplot(list(hourly_stats.values()),\n", + "# labels=hours[1:],\n", + "# # patch_artist=True,\n", + "# sym='',\n", + "# notch=False) # each box plot at time_step corresponds to the averaged data from [time_step-1, time_step)\n", + "# for patch, color in zip(bplot['boxes'], colors):\n", + "# patch.set_facecolor(color)\n", + "\n", + "ax.set(xlim=[0, hours[-1]], ylim=[0,60])\n", + "csfont = {'fontname':'Arial'}\n", + "\n", + "ax.set_xticks(hours[::10], labels=hours[::10])\n", + "ax.set_xlabel('time (hrs)', fontsize=11, **csfont)\n", + "ax.set_ylabel('defect backlog\\n(average/hour)', fontsize=11, **csfont)\n", + "\n", + "def update(frame):\n", + " if frame <= 20:\n", + " # print(frame)\n", + " line_trial1.set_xdata(times_forplot['trial1'][:16*frame])\n", + " line_trial1.set_ydata(backlog['trial1'][:16*frame])\n", + "\n", + " # bplot.set(visible=False)\n", + " line_trial2.set(visible=False)\n", + " line_trial3.set(visible=False)\n", + " line_trial4.set(visible=False)\n", + " line_trial5.set(visible=False)\n", + " elif (frame > 20) and (frame <= 40):\n", + " line_trial2.set(visible=True)\n", + " line_trial2.set_xdata(times_forplot['trial2'][:16*(frame-20)])\n", + " line_trial2.set_ydata(backlog['trial2'][:16*(frame-20)])\n", + " elif (frame > 40) and (frame <= 60):\n", + " line_trial3.set(visible=True)\n", + " line_trial3.set_xdata(times_forplot['trial3'][:16*(frame-40)])\n", + " line_trial3.set_ydata(backlog['trial3'][:16*(frame-40)])\n", + " elif (frame > 60) and (frame <= 80):\n", + " line_trial4.set(visible=True)\n", + " line_trial4.set_xdata(times_forplot['trial4'][:16*(frame-60)])\n", + " line_trial4.set_ydata(backlog['trial4'][:16*(frame-60)])\n", + " elif (frame > 80) and (frame <= 100):\n", + " line_trial5.set(visible=True)\n", + " line_trial5.set_xdata(times_forplot['trial5'][:16*(frame-80)])\n", + " line_trial5.set_ydata(backlog['trial5'][:16*(frame-80)])\n", + " else:\n", + " ax.cla() # <-- clear the subplot otherwise boxplot shows previous frame\n", + " ax.set(xlim=[0, hours[-1]], ylim=[0,60])\n", + " ax.set_xlabel('time (hrs)', fontsize=11, **csfont)\n", + " ax.set_ylabel('defect backlog\\n(average/hour)', fontsize=11, **csfont)\n", + " ax.plot(times_forplot['trial1'], backlog['trial1'], ':', linewidth=0.5, color='black', alpha=0.5)[0]\n", + " ax.plot(times_forplot['trial2'], backlog['trial2'], ':', linewidth=0.5, color='black', alpha=0.5)[0]\n", + " ax.plot(times_forplot['trial3'], backlog['trial3'], ':', linewidth=0.5, color='black', alpha=0.5)[0]\n", + " ax.plot(times_forplot['trial4'], backlog['trial4'], ':', linewidth=0.5, color='black', alpha=0.5)[0]\n", + " ax.plot(times_forplot['trial5'], backlog['trial5'], ':', linewidth=0.5, color='black', alpha=0.5)[0]\n", + " bplot = ax.boxplot(list(hourly_stats.values())[:(frame-100)],\n", + " patch_artist=True,\n", + " manage_ticks=False,\n", + " sym='',\n", + " notch=False)\n", + " for index, patch in enumerate(bplot['boxes']):\n", + " patch.set_facecolor(colors[index])\n", + " # else:\n", + " # ax.cla() # <-- clear the subplot otherwise boxplot shows previous frame\n", + " # ax.set(xlim=[0, hours[-1]], ylim=[0,60])\n", + " # ax.plot(times_forplot['trial1'], backlog['trial1'], ':', linewidth=0.5, color='black', alpha=0.5)[0]\n", + " # ax.plot(times_forplot['trial2'], backlog['trial2'], ':', linewidth=0.5, color='black', alpha=0.5)[0]\n", + " # ax.plot(times_forplot['trial3'], backlog['trial3'], ':', linewidth=0.5, color='black', alpha=0.5)[0]\n", + " # ax.plot(times_forplot['trial4'], backlog['trial4'], ':', linewidth=0.5, color='black', alpha=0.5)[0]\n", + " # ax.plot(times_forplot['trial5'], backlog['trial5'], ':', linewidth=0.5, color='black', alpha=0.5)[0]\n", + " # for index, color in enumerate(colors):\n", + " # ax.boxplot(list(hourly_stats.values()),\n", + " # patch_artist=True,\n", + " # manage_ticks=False,\n", + " # sym='',\n", + " # notch=False)['boxes'][index].set_facecolor(color) \n", + " # for patch, color in zip(bplot['boxes'], colors):\n", + " # patch.set_facecolor(color)\n", + " # return (line_trial1, line_trial2, line_trial3, line_trial4, line_trial5)\n", + "\n", + "ani = animation.FuncAnimation(fig=fig, func=update, frames=160, interval=500)\n", + "ani.save('boxplot_final.gif', writer='pillow',fps=7,dpi=100)\n", + "# plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "4e9a53b4-6c57-47ad-8811-97d61a783e7b", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA9oAAAFlCAYAAAAUFJDOAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdeXBk2Vkm/OfmvikzpdS+S6W1tJXWKpWk6nZ1tz3YjW3cBsZuBpsxZoZpGLBhhmlihg8GgmbYPPYEGJswOAgwBoPttvHSxt3tKtWiKkkllVTaSvu+L6lUSrnf7w9FXnQrF2VK6lpUzy9CEcpzlzypJfO+95zzvoIoiiKIiIiIiIiI6EQoHnUHiIiIiIiIiE4TBtpEREREREREJ4iBNhEREREREdEJYqBNREREREREdIIYaBMRERERERGdIAbaRERERERERCeIgTYRERERERHRCWKgTURERERERHSCGGgTERERERERnSAG2kREREREREQnKO5Ae35+Hj/zMz8Dm80GvV6PqqoqdHV1SdtFUcRv/dZvISMjA3q9Hs8//zxGR0dPtNNEREREREREj6u4Au3NzU20tLRArVbje9/7HgYHB/Enf/InSExMlPb5wz/8Q3zuc5/DX/zFX+DWrVswGo14z3veA5fLdeKdJyIiIiIiInrcCKIoirHu/D/+x//A9evX0d7eHna7KIrIzMzEr/3ar+HXf/3XAQB2ux1paWn48pe/jH//7//9yfSaiIiIiIiI6DEVV6B99uxZvOc978Hc3ByuXLmCrKws/Jf/8l/wyU9+EgAwMTGBM2fOoKenB+fOnZOOe+aZZ3Du3Dl89rOfDTmn2+2G2+2WHgcCAWxsbMBms0EQhGO8NCIiIiIiIqLDiaIIh8OBzMxMKBTHT2WmimfniYkJfP7zn8enP/1p/OZv/iY6OzvxX//rf4VGo8HHPvYxLC0tAQDS0tJkx6WlpUnbHvTaa6/hd37nd47YfSIiIiIiIqKTMTs7i+zs7GOfJ65AOxAIoKGhAb//+78PAKitrcW9e/fwF3/xF/jYxz52pA68+uqr+PSnPy09ttvtyM3NxezsLMxm85HOSURERERERBSr7e1t5OTkICEh4UTOF1egnZGRgbNnz8raysvL8c///M8AgPT0dADA8vIyMjIypH2Wl5dlU8kP0mq10Gq1Ie1ms5mBNhERERERET00J7V8Oa7J5y0tLRgZGZG13b9/H3l5eQCAgoICpKen480335S2b29v49atW2hubj6B7hIRERERERE93uIa0f7Upz6Fixcv4vd///fxUz/1U7h9+za++MUv4otf/CKA/ej/V3/1V/F7v/d7KC4uRkFBAf7X//pfyMzMxAc/+MF3ov9EREREREREj5W4Au3GxkZ84xvfwKuvvor//b//NwoKCvB//+//xcsvvyzt89//+3+H0+nEL/zCL2Brawutra34/ve/D51Od+KdJyIiIiIiInrcxFXe62HY3t6GxWKB3W7nGm0iIiIiIiJ6x510HHr8AmFEREREREREJGGgTURERERERHSCGGgTERERERERnSAG2kREREREREQniIE2ERERERER0QlioE1ERERERER0ghhoExEREREREZ0gBtpEREREREREJ4iBdoy+853vPOouEBERERER0ROAgXaMMjIy8J3vfAdLS0uPuitERERERET0GGOgHYPh4WE4nU40NzcjKSkJt27detRdIiIiIiIioseU6lF34EmQn58Pm82GxMREXL9+HQ0NDZiZmYHBYEBycvKj7h4RERERERE9RjiifQi/349r165hY2MDgiCgtbUVw8PDSElJgdlsxr179x51F4mIiIiIiOgxwhHtQywvL6OtrQ2CIEhthYWF0Ov1APbXbi8vL8Nms0Gl4o+TiIiIiIjoaccR7UN4vV7MzMxgeXlZajMYDLhx4wYAwGazweVyIRAIPKouEhERERER0WOEQ7BRbG5uwuPxoLi4WNauUqnQ0NAgPVYqlXC5XNBoNA+7i0RERERERPSY4Yh2FBaLBTk5Obhz5w4cDodsW3d3t/R9QkICtFrtw+4eERERERERPYYYaEdx7do16HQ6lJaWIiEhQbatqKhI+t7hcGB1dfVhd4+IiIiIiIgeQ6c60O7t7cX9+/ePdKzH40FLSwuA/TraDzoYWKenpyM9Pf1onSQiIiIiIqJT5VQH2pubm9BoNPjd3/1dBAIBeDyemI9dXl7GysoKgP3M4g/KyMjA/Pw8gP012jdv3jyZThMREREREdET7dQG2q+99hrS09ORl5eHj370o5iamsLf/M3fYHV1FRsbG1GPFUURPp9PCrB3d3dD9tHr9bBYLAAAQRDQ1taGu3fvwuv1nvyLISIiIiIioifGqQy0v/Wtb+E//af/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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(figsize=(12,4))\n", + "# line, = ax.boxplot(np.arange(10)) <-- not needed it seems\n", + "# ax.set_ylim(0, 20)\n", + "\n", + "line_trial1 = ax.plot(times_forplot['trial1'], backlog['trial1'], ':', linewidth=0.5, color='black', alpha=0.5)[0]\n", + "line_trial2 = ax.plot(times_forplot['trial2'], backlog['trial2'], ':', linewidth=0.5, color='black', alpha=0.5)[0]\n", + "line_trial3 = ax.plot(times_forplot['trial3'], backlog['trial3'], ':', linewidth=0.5, color='black', alpha=0.5)[0]\n", + "line_trial4 = ax.plot(times_forplot['trial4'], backlog['trial4'], ':', linewidth=0.5, color='black', alpha=0.5)[0]\n", + "line_trial5 = ax.plot(times_forplot['trial5'], backlog['trial5'], ':', linewidth=0.5, color='black', alpha=0.5)[0]\n", + "\n", + "ax.set(xlim=[0, hours[-1]], ylim=[0,60])\n", + "csfont = {'fontname':'Arial'}\n", + "\n", + "ax.set_xticks(hours[::10], labels=hours[::10])\n", + "ax.set_xlabel('time (hrs)', fontsize=11, **csfont)\n", + "ax.set_ylabel('defect backlog\\n(average/hour)', fontsize=11, **csfont)\n", + "\n", + "\n", + "def update(frame):\n", + " ax.cla() # <-- clear the subplot otherwise boxplot shows previous frame\n", + " ax.set(xlim=[0, hours[-1]], ylim=[0,60])\n", + " ax.plot(times_forplot['trial1'], backlog['trial1'], ':', linewidth=0.5, color='black', alpha=0.5)[0]\n", + " ax.plot(times_forplot['trial2'], backlog['trial2'], ':', linewidth=0.5, color='black', alpha=0.5)[0]\n", + " ax.plot(times_forplot['trial3'], backlog['trial3'], ':', linewidth=0.5, color='black', alpha=0.5)[0]\n", + " ax.plot(times_forplot['trial4'], backlog['trial4'], ':', linewidth=0.5, color='black', alpha=0.5)[0]\n", + " ax.plot(times_forplot['trial5'], backlog['trial5'], ':', linewidth=0.5, color='black', alpha=0.5)[0]\n", + " ax.boxplot(list(hourly_stats.values())[:frame],\n", + " # labels=hours[1:8*frame],\n", + " # patch_artist=True,\n", + " manage_ticks=False,\n", + " sym='',\n", + " notch=False) \n", + "\n", + "ani = animation.FuncAnimation(fig=fig, func=update, frames=50, interval=500)\n", + "ani.save('boxplot2.gif', writer='pillow',fps=7,dpi=100)\n", "# plt.show()" ] }, { "cell_type": "code", "execution_count": null, - "id": "70cb1eb3-8cdb-4c95-b3b9-f44346ddffa7", + "id": "ebd99973-8eb2-40ba-a96f-86f848098abb", "metadata": {}, "outputs": [], "source": [] diff --git a/queueing-MC/utils/VisualizationFunctions.py b/queueing-MC/utils/VisualizationFunctions.py new file mode 100644 index 0000000..9d857a4 --- /dev/null +++ b/queueing-MC/utils/VisualizationFunctions.py @@ -0,0 +1,165 @@ +import matplotlib.pyplot as plt +import numpy as np + +# class VisualizationFunctions: +def __init__(self): + self.csfont = {'fontname':'Arial'} + +def visualize_boxplot(hours, times_forplot, backlog): + #### Constructing and visualizing the box plots per unit of time #### + hourly_stats = {} + median_curve = [] + min_curve = [] + max_curve = [] + + for hour in hours[:-1]: + hourly_stats['hour{0}'.format(hour+1)] = [] + for trial in times_forplot.keys(): + starting = times_forplot[trial].index(hours[hour]) + stopping = times_forplot[trial].index(hours[hour+1]) + # hourly_stats['hour{0}'.format(hour+1)] = hourly_stats['hour{0}'.format(hour+1)] + backlog[trial][starting:stopping] + hourly_stats['hour{0}'.format(hour+1)] += backlog[trial][starting:stopping] + median_curve.append(np.percentile(hourly_stats['hour{0}'.format(hour+1)],[50])[0]) + min_curve.append(min(hourly_stats['hour{0}'.format(hour+1)])) + max_curve.append(max(hourly_stats['hour{0}'.format(hour+1)])) + + #### "Clean" = backlog < 20% of initial + colors = ['#2348FF' if value < max(median_curve)*0.2 else '#C21445' for value in median_curve] + + fig, ax = plt.subplots(1, 1, figsize=(10,4)) + + bplot = ax.boxplot(list(hourly_stats.values()), + labels=hours[1:], + patch_artist=True, + sym='', + notch=False) # each box plot at time_step corresponds to the averaged data from [time_step-1, time_step) + for patch, color in zip(bplot['boxes'], colors): + patch.set_facecolor(color) + + for trial in times_forplot.keys(): + ax.plot(times_forplot[trial], backlog[trial], ':', linewidth=0.5, color='navy', alpha=0.5) # plotting raw signals + + csfont = {'fontname':'Arial'} + # ax.plot(hours[1:], max_curve, 'r', linewidth=0.75, alpha=0.3) + ax.plot(hours[1:], median_curve, 'k', linewidth=1, alpha=0.5, label='median "on the hour"') + # ax.plot(hours[1:], min_curve, 'b', linewidth=0.75, alpha=0.3) + # ax.fill_between(hours[1:], min_curve, max_curve, color='purple', alpha=0.1) + ax.set_xticks(hours[::10], labels=hours[::10]) + ax.set_xlim(0, max(times_forplot[trial])) + ax.set_xlabel('times (hrs)', fontsize=14, **csfont) + ax.set_ylabel('defects backlog\n(average/hour)', fontsize=14, **csfont) + # ax.legend() + plt.show() + +def visualize_generation_distributions(defect_type_dict, incoming_defects_dict, generation_distributions): + incoming_defects = {key: [] for key in defect_type_dict.keys()} + + for trial in incoming_defects_dict.keys(): + for key in incoming_defects_dict[trial].keys(): + # incoming_defects[key].append(incoming_defects_dict[trial][key]) + incoming_defects[key] = incoming_defects[key] + incoming_defects_dict[trial][key] + + csfont = {'fontname':'Arial'} + if len(defect_type_dict.keys()) > 1: + fig, axs = plt.subplots (1, len(defect_type_dict.keys()), figsize=(12,4)) + else: + fig, axs = plt.subplots (1, len(defect_type_dict.keys()), figsize=(8,4)) + + for index, value in enumerate(defect_type_dict.keys()): + data = np.array(generation_distributions[value]) + unique_values = np.unique(data) + # if np.all(unique_values) == 0: + # d = 1 + # else: + # d = np.diff(unique_values).min() + d = 1 if np.all(unique_values) == 0 else np.diff(unique_values).min() + left_of_first_bin = data.min() - float(d)/2 + right_of_last_bin = data.max() + float(d)/2 + if len(defect_type_dict.keys()) > 1: + axs[index].hist(incoming_defects[value], np.arange(left_of_first_bin, right_of_last_bin + d, d), label=f'{len(incoming_defects[value])} samples', color='#F6B9B9', edgecolor='#969696', linewidth=1.5, density=True) + axs[index].hist(data, np.arange(left_of_first_bin, right_of_last_bin + d, d), label=f"theory, α={defect_type_dict[value]['skewness_incoming']}", linewidth=2, color='#E95050', density=True, histtype='step') + # axs[0].set_title('Type 1', fontsize=10, **tnrfont) + axs[index].set_title(value, loc='left', fontsize=14, **csfont) + axs[index].legend(loc='upper right', bbox_to_anchor=(1.02, 1.13), fontsize='x-small') + axs[index].set_xticks(np.unique(data)) + else: + axs.hist(incoming_defects[value], np.arange(left_of_first_bin, right_of_last_bin + d, d), label=f'{len(incoming_defects[value])} samples', color='#F6B9B9', edgecolor='#969696', linewidth=1.5, density=True) + axs.hist(data, np.arange(left_of_first_bin, right_of_last_bin + d, d), label=f"theory, α={defect_type_dict[value]['skewness_incoming']}", linewidth=2, color='#E95050', density=True, histtype='step') + # axs[0].set_title('Type 1', fontsize=10, **tnrfont) + axs.set_title(value, loc='left', fontsize=14, **csfont) + axs.legend(loc='upper right', bbox_to_anchor=(1.02, 1.13), fontsize='x-small') + axs.set_xticks(np.unique(data)) + if len(defect_type_dict.keys()) > 1: + axs[0].set_ylabel('density', fontsize=14, **csfont) + else: + axs.set_ylabel('density', fontsize=14, **csfont) + fig.text(0.5, 0, '# incoming defects per hour', ha='center', fontsize=14, **csfont) + plt.show() + + +def visualize_remediation_distributions(length, defect_type_dict, comparison_dict, remediation_distributions): + incoming_remediations = {key: [] for key in defect_type_dict.keys()} + + for trial in comparison_dict.keys(): + for key in comparison_dict[trial]['defect_log'].keys(): + incoming_remediations[comparison_dict[trial]['defect_log'][key]['defect_type']].append(comparison_dict[trial]['defect_log'][key]['remediation_time'][0]) + + csfont = {'fontname':'Arial'} + + if length > 1: + fig, axs = plt.subplots (1, len(defect_type_dict.keys()), figsize=(12,4)) + for index, value in enumerate(defect_type_dict.keys()): + axs[index].hist(incoming_remediations[value], label=f'{len(incoming_remediations[value])} samples', color='#D3DAFF', edgecolor='#969696', linewidth=1.5, density=True) + axs[index].hist(remediation_distributions[value], label=f"theory, α={defect_type_dict[value]['skewness_outgoing']}", histtype='step', linewidth=2, color='#2348FF', density=True) + axs[index].set_title(value, loc='left', fontsize=14, **csfont) + axs[index].legend(loc='upper right', bbox_to_anchor=(1.02, 1.13), fontsize='x-small') + else: + fig, axs = plt.subplots (1, len(defect_type_dict.keys()), figsize=(8,4)) + for key in defect_type_dict.keys(): + axs.hist(incoming_remediations[key], label=f'{len(incoming_remediations[key])} samples', color='#D3DAFF', edgecolor='#969696', linewidth=1.5, density=True) + axs.hist(remediation_distributions[key], label=f"theory, α={defect_type_dict[key]['skewness_outgoing']}", histtype='step', linewidth=2, color='#2348FF', density=True) + axs.set_title(key, loc='left', fontsize=14, **csfont) + axs.legend(loc='upper right', bbox_to_anchor=(1.02, 1.13), fontsize='x-small') + + if len(defect_type_dict.keys()) > 1: + axs[0].set_ylabel('density', fontsize=14, **csfont) + else: + axs.set_ylabel('density', fontsize=14, **csfont) + fig.text(0.5, 0, 'remediation time (hrs)', ha='center', fontsize=14, **csfont) + plt.show() + +def visualize_histograms_theory(self, fig, axs, index, data, label=None, title=None, color='black', step=False): + data = np.array(data) + unique_values = np.unique(data) + d = 1 if np.all(unique_values) == 0 else np.diff(unique_values).min() + left_of_first_bin = data.min() - float(d)/2 + right_of_last_bin = data.max() + float(d)/2 + + if step: + axs[index].hist(data, + np.arange(left_of_first_bin, right_of_last_bin + d, d), + label=label, + linewidth=1.5, + density=True, + color=color, + histtype='step') + else: + axs[index].hist(data, + np.arange(left_of_first_bin, right_of_last_bin + d, d), + label=label, + linewidth=1.5, + density=True, + color=color, + alpha=0.5, + edgecolor='black') + if title: + axs[index].set_title(title, loc='left', fontsize=12, **self.csfont) + return fig, axs + +def visualize_timeline(self, fig, axs, index, xdata, ydata, ylabel=None, title=None): + axs[index].plot(xdata, ydata, 'k-o', markersize=6) + if ylabel: + axs[index].set_ylabel(ylabel, **self.csfont) + if title: + axs[index].set_title(title, loc='left', fontsize=10, **self.csfont) + return fig, axs \ No newline at end of file diff --git a/queueing-MC/visualize_simulation.py b/queueing-MC/visualize_simulation.py index 9080396..fe6b2a2 100644 --- a/queueing-MC/visualize_simulation.py +++ b/queueing-MC/visualize_simulation.py @@ -52,7 +52,73 @@ def visualize_simulation(comparison_dict): visualize_boxplot(hours, times_forplot, backlog) - + +def reconstruct_backlog(comparison_dict): + defects_created = {} + defects_remediated = {} + list_remediated = {} + list_remediated_forplot = {} + times = {} + times_forplot = {} + backlog = {} + + #### Reconstructing the backlog - defects generated and remediated #### + for trial in comparison_dict.keys(): + t_end = int(comparison_dict[trial]['t_end']) + hours = list(range(t_end+1)) + initial_backlog = sum([1 for key in comparison_dict[trial]['defect_log'].keys() if comparison_dict[trial]['defect_log'][key]['t_created'] == 0]) + defects_created[trial] = {} + defects_remediated[trial] = {} + for key in comparison_dict[trial]['defect_log'].keys(): + defects_created[trial][key] = comparison_dict[trial]['defect_log'][key]['t_created'] + try: + defects_remediated[trial][key] = comparison_dict[trial]['defect_log'][key]['processing_end_time'] + except KeyError: + pass + + list_remediated[trial] = [defects_remediated[trial][key] for key in defects_remediated[trial].keys()] + list_remediated_forplot[trial] = [defects_remediated[trial][key][0] for key in defects_remediated[trial].keys()] # remove the np.ndarray for the values to be plotted + times[trial] = sorted(list(range(t_end+1)) + list_remediated[trial]) # keep np.ndarray to distinguish between "on the hour" generated and remediated + times_forplot[trial] = sorted(list(range(t_end+1)) + list_remediated_forplot[trial]) + backlog[trial] = [] + + niter = count(0) + for t in times[trial]: + if t == 0: + backlog[trial].append(initial_backlog) + elif type(t) == np.ndarray: + value = backlog[trial][next(niter)] - 1 + backlog[trial].append(value) + elif t in list(defects_created[trial].values()): + res = sum(int(value) == t for value in defects_created[trial].values()) + value = backlog[trial][next(niter)] + res + backlog[trial].append(value) + else: + backlog[trial].append(backlog[trial][next(niter)]) + + backlog_max = max(i for v in backlog.values() for i in v) + backlog_min = min(i for v in backlog.values() for i in v) + +def reconstruct_incoming_defects(defect_type_dict, incoming_defects_dict, generation_distributions): + incoming_defects = {key: [] for key in defect_type_dict.keys()} + + for trial in incoming_defects_dict.keys(): + for key in incoming_defects_dict[trial].keys(): + # incoming_defects[key].append(incoming_defects_dict[trial][key]) + incoming_defects[key] = incoming_defects[key] + incoming_defects_dict[trial][key] + + csfont = {'fontname':'Arial'} + if len(defect_type_dict.keys()) > 1: + fig, axs = plt.subplots (1, len(defect_type_dict.keys()), figsize=(12,4)) + else: + fig, axs = plt.subplots (1, len(defect_type_dict.keys()), figsize=(8,4)) + + for index, value in enumerate(defect_type_dict.keys()): + data = np.array(generation_distributions[value]) + +def reconstruct_remediations(defect_type_dict, comparison_dict, remediation_distributions): + pass + def visualize_boxplot(hours, times_forplot, backlog): #### Constructing and visualizing the box plots per unit of time #### hourly_stats = {} @@ -76,6 +142,8 @@ def visualize_boxplot(hours, times_forplot, backlog): fig, ax = plt.subplots(1, 1, figsize=(10,4)) + + bplot = ax.boxplot(list(hourly_stats.values()), labels=hours[1:], patch_artist=True, @@ -110,7 +178,7 @@ def visualize_generation_distributions(defect_type_dict, incoming_defects_dict, csfont = {'fontname':'Arial'} if len(defect_type_dict.keys()) > 1: - fig, axs = plt.subplots (1, len(defect_type_dict.keys()), figsize=(16,4)) + fig, axs = plt.subplots (1, len(defect_type_dict.keys()), figsize=(12,4)) else: fig, axs = plt.subplots (1, len(defect_type_dict.keys()), figsize=(8,4)) @@ -125,17 +193,17 @@ def visualize_generation_distributions(defect_type_dict, incoming_defects_dict, left_of_first_bin = data.min() - float(d)/2 right_of_last_bin = data.max() + float(d)/2 if len(defect_type_dict.keys()) > 1: - axs[index].hist(incoming_defects[value], np.arange(left_of_first_bin, right_of_last_bin + d, d), label=f'{len(incoming_defects[value])} samples', color='#C21445', alpha=0.2, edgecolor='black', linewidth=1.5, density=True) - axs[index].hist(data, np.arange(left_of_first_bin, right_of_last_bin + d, d), label=f"theory, α={defect_type_dict[value]['skewness_incoming']}", linewidth=2, color='#C21445', density=True, histtype='step') + axs[index].hist(incoming_defects[value], np.arange(left_of_first_bin, right_of_last_bin + d, d), label=f'{len(incoming_defects[value])} samples', color='#F6B9B9', edgecolor='#969696', linewidth=1.5, density=True) + axs[index].hist(data, np.arange(left_of_first_bin, right_of_last_bin + d, d), label=f"theory, α={defect_type_dict[value]['skewness_incoming']}", linewidth=2, color='#E95050', density=True, histtype='step') # axs[0].set_title('Type 1', fontsize=10, **tnrfont) - axs[index].set_title(f'Type {value[-1]}', loc='left', fontsize=14, **csfont) + axs[index].set_title(value, loc='left', fontsize=14, **csfont) axs[index].legend(loc='upper right', bbox_to_anchor=(1.02, 1.13), fontsize='x-small') axs[index].set_xticks(np.unique(data)) else: - axs.hist(incoming_defects[value], np.arange(left_of_first_bin, right_of_last_bin + d, d), label=f'{len(incoming_defects[value])} samples', color='#C21445', alpha=0.2, edgecolor='black', linewidth=1.5, density=True) - axs.hist(data, np.arange(left_of_first_bin, right_of_last_bin + d, d), label=f"theory, α={defect_type_dict[value]['skewness_incoming']}", linewidth=2, color='#C21445', density=True, histtype='step') + axs.hist(incoming_defects[value], np.arange(left_of_first_bin, right_of_last_bin + d, d), label=f'{len(incoming_defects[value])} samples', color='#F6B9B9', edgecolor='#969696', linewidth=1.5, density=True) + axs.hist(data, np.arange(left_of_first_bin, right_of_last_bin + d, d), label=f"theory, α={defect_type_dict[value]['skewness_incoming']}", linewidth=2, color='#E95050', density=True, histtype='step') # axs[0].set_title('Type 1', fontsize=10, **tnrfont) - axs.set_title(f'Type {value[-1]}', loc='left', fontsize=14, **csfont) + axs.set_title(value, loc='left', fontsize=14, **csfont) axs.legend(loc='upper right', bbox_to_anchor=(1.02, 1.13), fontsize='x-small') axs.set_xticks(np.unique(data)) if len(defect_type_dict.keys()) > 1: @@ -156,18 +224,18 @@ def visualize_remediation_distributions(defect_type_dict, comparison_dict, remed csfont = {'fontname':'Arial'} if len(defect_type_dict.keys()) > 1: - fig, axs = plt.subplots (1, len(defect_type_dict.keys()), figsize=(16,4)) + fig, axs = plt.subplots (1, len(defect_type_dict.keys()), figsize=(12,4)) for index, value in enumerate(defect_type_dict.keys()): - axs[index].hist(incoming_remediations[value], label=f'{len(incoming_remediations[value])} samples', color='#2348FF', alpha=0.2, edgecolor='black', linewidth=1.5, density=True) + axs[index].hist(incoming_remediations[value], label=f'{len(incoming_remediations[value])} samples', color='#D3DAFF', edgecolor='#969696', linewidth=1.5, density=True) axs[index].hist(remediation_distributions[value], label=f"theory, α={defect_type_dict[value]['skewness_outgoing']}", histtype='step', linewidth=2, color='#2348FF', density=True) - axs[index].set_title(f'Type {value[-1]}', loc='left', fontsize=14, **csfont) + axs[index].set_title(value, loc='left', fontsize=14, **csfont) axs[index].legend(loc='upper right', bbox_to_anchor=(1.02, 1.13), fontsize='x-small') else: fig, axs = plt.subplots (1, len(defect_type_dict.keys()), figsize=(8,4)) for key in defect_type_dict.keys(): - axs.hist(incoming_remediations[key], label=f'{len(incoming_remediations[key])} samples', color='#2348FF', alpha=0.2, edgecolor='black', linewidth=1.5, density=True) + axs.hist(incoming_remediations[key], label=f'{len(incoming_remediations[key])} samples', color='#D3DAFF', edgecolor='#969696', linewidth=1.5, density=True) axs.hist(remediation_distributions[key], label=f"theory, α={defect_type_dict[key]['skewness_outgoing']}", histtype='step', linewidth=2, color='#2348FF', density=True) - axs.set_title(f'Type {key[-1]}', loc='left', fontsize=14, **csfont) + axs.set_title(key, loc='left', fontsize=14, **csfont) axs.legend(loc='upper right', bbox_to_anchor=(1.02, 1.13), fontsize='x-small') if len(defect_type_dict.keys()) > 1: diff --git a/queueless-MC/README.md b/queueless-MC/README.md index e69de29..8d767fe 100644 --- a/queueless-MC/README.md +++ b/queueless-MC/README.md @@ -0,0 +1,94 @@ +## Part 2 | Modeling remediation of defects in industry as an AI-enhanced queueing optimization problem: Building histories from log data +This work introduces **Part 2** of a new line of research focusing on +the characterization of the defect remediation process as an AI-enhanced black box generalized Monte Carlo optimization problem. + +*Coming soon!* Part 2 of our series on AI-enhanced defect remediation optimization on Medium. Read Part 1 [here](https://medium.com/@mdebeurr/modeling-remediation-of-defects-in-industry-as-an-ai-enhanced-queueing-optimization-problem-a389f51d784d). + + + +This work represents a research project in three parts: +- Part 1 | `queueing-MC`: forecasting defect remediation with a black box generalized Monte Carlo queueing model +- Part 2 | `queueless-MC`: instantiating the generalized Monte Carlo simulations with historical empirical log data +- Part 3 | `defect_remediation_app`: AI-enhanced defect remediation planification with [`fastWorkflow`](https://github.com/radiantlogicinc/fastworkflow) + +## Introduction and background + +

+ Figure 1: System diagram for the empirical model and the classes DefectType, LogEntry and Build Histories. The initialization, Delta table simulation, and configuration stages are shaded in green, blue and orange, respectively. +

+ +In industrial contexts, defect remediation is the process by which defects, or undesirable conditions or events that require specific treatement to be resolved, are corrected. In [Part 1](https://github.com/radiantlogicinc/estimating_gen_mc_simulation/tree/main/queueing-MC), we introduced a queueing model for forecasting and optimizing the defect remediation process. In this work, we show how the model can be enhanced and customized to an organization's own historical data, and set the stage for introducing agentic AI to accelerate defect remediation optimization. + + +## Problem description + +In this problem, we seek to build a statistical model for the defect lifecycle based on empirical log data in order to better inform predictions of the defect remediation process. In the queueing optimization problem of [Part 1](https://github.com/radiantlogicinc/estimating_gen_mc_simulation/tree/main/queueing-MC), the defect generation and remediation time histograms were defined as input parameters to the simulation as normalized skew-normal distributions. As a next step in the model, we seek to establish these distributions from empirical data, i.e. compute the incoming rate and remediation times of defects directly from historical log data tracking the status changes throughout the defects' lifetimes. + +The longer the historical log data is tracked, the more reflective the histograms become of any real-life trends hidden within it, and the more likely the forecasted simulations based on these histograms will match reality. + + +### Format of historical log data + +

+ Table 1: Example remediation log tracking the status changes of each defect throughout its lifecycle. Bolded rows indicate the full lifecycle of a single defect (Defect ID 132). +

+ +The heart of the empirical model lies in the availability of historical remediation log data. + +During remediation, we consider that all defects follow a lifecycle process that can be modeled as a series of state or status changes in the pattern `new` → `assigned` → `in-progress` → `closed`, where:  +- `new` indicates when a defect is first detected, +- `assigned` indicates that a defect has been assigned to a remediation agent, +- `in-progress` indicates that the assigned remediation agent has begun remediation work on the defect, and +- `closed` indicates that the defect has been remediated and closed out. + +We consider that as defect remediation is being carried out, the status changes of each defect are tracked in the form of historical remediation logs (Table 1), where each row in the log corresponds to a state change and the timestamp at which the change occurred, across all defects. + +### Empirical model + +The empirical model as shown in Fig. 1 is built around a three-stage progression: an initialization stage, a Delta table computation stage and a configuration stage, where the updated historical data is configured in `JSON` files for integration with the forecasting model of [Part 1](https://github.com/radiantlogicinc/estimating_gen_mc_simulation/tree/main/queueing-MC) and future agentic AI. + +In the initialization stage, the log data to process and any stored histories (from already-processed log data) are imported into the model. The imported log data is used to compute the time deltas between each state change of the defect lifecycle for each defect in the log data: Δ `new` → `assigned`, Δ `assigned` → `in-progress`, Δ `in-progress` → `closed`, Δ `new` → `closed` - these measured time deltas are collected into the so-called Delta table. The values contained in the Delta table are then appended to the stored histories, from which updated versions of the aforementioned `JSON` integration files are extracted. + +### Simulation input and output parameters +**Input parameters** + +To build the empirical model, only the path to the log data is needed as an input parameter: +- `--path_logs`: the path to the log data, stored as a `JSON` or `CSV` file + +**Output parameters: storing the historical data** + +The historical outputs of the empirical model are stored and updated as `JSON` files in the `simulations` folder whenever new log data is processed. + +### Interpreting the results + +Three important elements are updated each time the empirical model is run. + +#### Delta table and timeline figures #### +

+ Table 2: First rows of the Delta table computed from the remediation log located here. Note that the columns Δ new → closed and Date closed have been omitted to save space. +

+ +The Delta table (Table 2) is updated for each control type each time log data is processed. + +Using the information in the Delta table, the evolution of the time deltas per defect type can also be tracked, represented graphically as timeline figures. These timeline figures are useful in uncovering patterns (improvements, regressions and anomalies) in the defect remediation process, and furthermore provide a basis for measuring performance according to a sliding window. Averages across the past day, week, month, year, etc., are readily computed from the timeline histories, and anomalous or undesirable events can be highlighted or filtered out according to the sliding window across which the averages are calculated. + +#### Generation and remediation histograms with `queueing_build` + +The generation and remediation histograms used to build defect backlog forecasts are also updated. The generation histograms are built up for each defect type based on the rates of incoming defects in the log data. The remediation histograms governing total remediation time per defect are likewise built up from the Δ `new` → `closed` values stored in the Delta table. + +In the model, the generation and remediation histograms are updated through a function called `queueing_build` (orange-shaded region in Fig. 1). + +#### Setting up for agentic behavior with `fastworkflow_build` #### + +The final element produced by the empirical model is a setup for integration with generative AI and future agentic behavior with the technology [`fastWorkflow`](https://github.com/radiantlogicinc/fastworkflow). In a process similar to `queueing_build`, the function `fastworkflow_build` (orange-shaded region in Fig. 1) compiles data into a `JSON` file structured for future interaction with an AI agent. In particular, the sliding-window averages mentioned above are computed for the time deltas between state changes as well as for the generated and remediated defects. + +*Coming soon!* Part 3 of this project introduces the method for integrating the empirical model (Part 2) and remediation forecasts (Part 1) with a `fastWorkflow`-enabled AI agent for accelerating defect remediation planification and optimization. + + +## Acknowledgments + +This project is sponsored by [Radiant Logic](https://www.radiantlogic.com/), an industry leader in the field of identity and access management (IAM), a sub-field of cybersecurity. + +The field of IAM is concerned with the governance and +management of user accounts and accesses to applications, platforms and other technology resources with the goal of limiting superfluous or unused accesses that serve as openings for cybersecurity attacks in our increasingly connected +world. In this context, the defects of the model are representative of situations of heightened vulnerability that violate standard cybersecurity good practices. \ No newline at end of file diff --git a/queueless-MC/defectRemediation_log_simulation_vPrototype_v2.csv b/queueless-MC/defectRemediation_log_simulation_vPrototype_v2.csv new file mode 100644 index 0000000..05840c5 --- /dev/null +++ b/queueless-MC/defectRemediation_log_simulation_vPrototype_v2.csv @@ -0,0 +1,117 @@ +ID,Defect_ID,Control_Type,State,Timestamp +1,1,ACC03,new,2025-16-05 00:05:31 +2,2,ACC17,new,2025-16-05 00:12:42 +3,3,ACC28,new,2025-16-05 00:13:44 +4,1,ACC03,assign,2025-16-05 00:18:57 +5,1,ACC03,in-progress,2025-16-05 00:22:43 +6,1,ACC03,closed,2025-16-05 00:34:56 +7,2,ACC17,assign,2025-16-05 00:42:45 +8,4,AUTH18,new,2025-16-05 01:02:12 +9,2,ACC17,in-progress,2025-16-05 01:12:56 +10,3,ACC28,assign,2025-16-05 01:43:43 +11,2,ACC17,closed,2025-16-05 01:59:42 +12,4,AUTH18,assign,2025-16-05 02:04:34 +13,5,ACC03,new,2025-16-05 02:15:16 +14,4,AUTH18,in-progress,2025-16-05 02:18:17 +15,6,AUTH42,new,2025-16-05 02:22:34 +16,6,AUTH42,assign,2025-16-05 02:45:16 +17,6,AUTH42,in-progress,2025-16-05 02:47:00 +18,6,AUTH42,closed,2025-16-05 02:52:32 +19,5,ACC03,assign,2025-16-05 03:05:57 +20,7,ACC17,new,2025-16-05 03:13:49 +21,3,ACC28,in-progress,2025-16-05 03:19:20 +22,5,ACC03,in-progress,2025-16-05 03:33:54 +23,4,AUTH18,closed,2025-16-05 03:54:27 +24,5,ACC03,closed,2025-16-05 04:17:45 +25,3,ACC28,closed,2025-16-05 04:23:20 +26,7,ACC17,assign,2025-16-05 04:49:38 +27,7,ACC17,in-progress,2025-16-05 04:52:47 +28,7,ACC17,closed,2025-16-05 04:55:35 +29,8,ACC03,new,2025-17-05 07:42:49 +30,9,ACC03,new,2025-17-05 07:43:34 +31,9,ACC03,assign,2025-17-05 07:59:48 +32,8,ACC03,assign,2025-17-05 08:02:32 +33,8,ACC03,in-progress,2025-17-05 08:14:54 +34,10,ACC03,new,2025-17-05 10:12:13 +35,8,ACC03,closed,2025-17-05 11:13:54 +36,9,ACC03,in-progress,2025-17-05 11:22:45 +37,10,ACC03,assign,2025-17-05 11:42:34 +38,10,ACC03,in-progress,2025-17-05 13:45:12 +39,9,ACC03,closed,2025-17-05 15:43:35 +40,10,ACC03,closed,2025-17-05 15:56:23 +41,11,ACC03,new,2025-19-05 18:01:33 +42,12,ACC03,new,2025-19-05 18:01:56 +43,13,ACC03,new,2025-19-05 18:02:14 +44,14,ACC03,new,2025-19-05 18:02:36 +45,12,ACC03,assign,2025-20-05 09:54:06 +46,12,ACC03,in-progress,2025-20-05 09:55:46 +47,11,ACC03,assign,2025-20-05 10:12:35 +48,13,ACC03,assign,2025-20-05 11:16:13 +49,14,ACC03,assign,2025-20-05 12:47:27 +50,11,ACC03,in-progress,2025-20-05 13:14:58 +51,13,ACC03,in-progress,2025-20-05 13:15:23 +52,12,ACC03,closed,2025-20-05 13:42:36 +53,14,ACC03,in-progress,2025-20-05 14:07:28 +54,11,ACC03,closed,2025-20-05 17:49:32 +55,13,ACC03,closed,2025-20-05 17:50:45 +56,14,ACC03,closed,2025-20-05 17:52:10 +57,15,AUTH18,new,2025-22-05 07:11:15 +58,16,ACC28,new,2025-22-05 07:12:42 +59,17,ACC28,new,2025-22-05 07:12:59 +60,15,AUTH18,assign,2025-22-05 09:18:34 +61,16,ACC28,assign,2025-22-05 09:28:56 +62,18,ACC17,new,2025-22-05 11:15:16 +63,19,ACC03,new,2025-22-05 11:15:18 +64,17,ACC28,assign,2025-22-05 13:04:26 +65,16,ACC28,in-progress,2025-22-05 13:33:45 +66,18,ACC17,assign,2025-22-05 14:02:56 +67,15,AUTH18,in-progress,2025-22-05 14:56:23 +68,17,ACC28,in-progress,2025-22-05 17:47:23 +69,16,ACC28,closed,2025-23-05 11:49:22 +70,19,ACC03,assign,2025-23-05 11:52:37 +71,18,ACC17,in-progress,2025-23-05 12:34:16 +72,15,AUTH18,closed,2025-23-05 16:21:49 +73,20,AUTH42,new,2025-24-05 02:34:27 +74,21,AUTH42,new,2025-24-05 02:35:01 +75,22,AUTH42,new,2025-24-05 02:35:16 +76,23,AUTH42,new,2025-24-05 02:35:39 +77,17,ACC28,closed,2025-24-05 10:34:56 +78,18,ACC17,closed,2025-24-05 10:35:13 +79,20,AUTH42,assign,2025-24-05 10:39:28 +80,21,AUTH42,assign,2025-24-05 10:40:13 +81,19,ACC03,in-progress,2025-25-05 09:48:17 +82,22,AUTH42,assign,2025-25-05 11:35:18 +83,20,AUTH42,in-progress,2025-25-05 13:42:55 +84,21,AUTH42,in-progress,2025-25-05 13:45:36 +85,23,AUTH42,assign,2025-25-05 14:53:17 +86,24,AUTH18,new,2025-25-05 15:16:45 +87,25,AUTH18,new,2025-25-05 15:17:02 +88,19,ACC03,closed,2025-25-05 18:01:24 +89,22,AUTH42,in-progress,2025-25-05 18:02:25 +90,24,AUTH18,assign,2025-27-05 10:15:36 +91,25,AUTH18,assign,2025-27-05 10:16:10 +92,23,AUTH42,in-progress,2025-27-05 12:03:56 +93,21,AUTH42,closed,2025-27-05 16:49:32 +94,20,AUTH42,closed,2025-27-05 16:51:57 +95,25,AUTH18,in-progress,2025-27-05 17:34:05 +96,22,AUTH42,closed,2025-27-05 18:26:53 +97,24,AUTH18,in-progress,2025-28-05 09:42:34 +98,23,AUTH42,closed,2025-28-05 11:47:12 +99,26,ACC17,new,2025-28-05 12:34:57 +100,25,AUTH18,closed,2025-28-05 13:45:16 +101,26,ACC17,assign,2025-28-05 14:05:13 +102,26,ACC17,in-progress,2025-28-05 16:17:48 +103,24,AUTH18,closed,2025-28-05 17:44:09 +104,26,ACC17,closed,2025-28-05 17:45:18 +105,27,ACC17,new,2025-28-05 23:47:53 +106,28,ACC17,new,2025-28-05 23:47:56 +107,29,ACC17,new,2025-28-05 23:48:01 +108,27,ACC17,assign,2025-29-05 08:56:49 +109,28,ACC17,assign,2025-29-05 09:04:47 +110,29,ACC17,assign,2025-29-05 09:10:36 +111,28,ACC17,in-progress,2025-29-05 11:11:31 +112,29,ACC17,in-progress,2025-29-05 12:05:29 +113,27,ACC17,in-progress,2025-29-05 13:47:03 +114,29,ACC17,closed,2025-30-05 09:58:24 +115,28,ACC17,closed,2025-30-05 11:05:09 +116,27,ACC17,closed,2025-30-05 17:48:59 diff --git a/queueless-MC/fastWorkflow/defect_remediation_app/_commands/ControlType/generated_per_day.py b/queueless-MC/fastWorkflow/defect_remediation_app/_commands/ControlType/generated_per_day.py index 17b3388..35790d6 100644 --- a/queueless-MC/fastWorkflow/defect_remediation_app/_commands/ControlType/generated_per_day.py +++ b/queueless-MC/fastWorkflow/defect_remediation_app/_commands/ControlType/generated_per_day.py @@ -52,7 +52,7 @@ def __call__(self, workflow: f'Context: {workflow.current_command_context_displayname}\n' f'Command: {command}\n' f'Command parameters: {command_parameters}\n' - f'Response: The message was printed to the screen' + f'Response: The response was printed to the screen' ) return fastworkflow.CommandOutput( diff --git a/queueless-MC/fastWorkflow/defect_remediation_app/_commands/ControlType/remediated_per_day.py b/queueless-MC/fastWorkflow/defect_remediation_app/_commands/ControlType/remediated_per_day.py index c6bce95..d30660d 100644 --- a/queueless-MC/fastWorkflow/defect_remediation_app/_commands/ControlType/remediated_per_day.py +++ b/queueless-MC/fastWorkflow/defect_remediation_app/_commands/ControlType/remediated_per_day.py @@ -47,7 +47,7 @@ def __call__(self, workflow: f'Context: {workflow.current_command_context_displayname}\n' f'Command: {command}\n' f'Command parameters: {command_parameters}\n' - f'Response: The message was printed to the screen' + f'Response: The response was printed to the screen' ) return fastworkflow.CommandOutput( diff --git a/queueless-MC/fastWorkflow/defect_remediation_app/_commands/ControlType/set_control_type.py b/queueless-MC/fastWorkflow/defect_remediation_app/_commands/ControlType/set_control_type.py new file mode 100644 index 0000000..ba33758 --- /dev/null +++ b/queueless-MC/fastWorkflow/defect_remediation_app/_commands/ControlType/set_control_type.py @@ -0,0 +1,61 @@ +import fastworkflow +from fastworkflow.train.generate_synthetic import generate_diverse_utterances +from pydantic import BaseModel, Field + +from ...application.control_type import ControlType + +class Signature: + """Update the workflow with a new ControlType.""" + + class Input(BaseModel): + control_type: str = Field( + description="Name of a defect control type", + examples=['ACC03', 'ACC17', 'ACC28', 'AUTH18', 'AUTH42'], + default='ACC03' + ) + + plain_utterances = [ + "I'd like to begin a chat session about ACC03 defects", + "I want to ask questions about my AUTH42 data", + "I want to learn about AUTH18 defects", + "Tell me about ACC28 defects" + "I'm interested in ACC17" + ] + + @staticmethod + def generate_utterances(workflow: fastworkflow.Workflow, command_name: str) -> list[str]: + """Generate training utterances for LLM-based intent matching.""" + return [ + command_name.split('/')[-1].lower().replace('_', ' ') + ] + generate_diverse_utterances(Signature.plain_utterances, command_name) + +class ResponseGenerator: + def _process_command(self, workflow: fastworkflow.Workflow, input: Signature.Input) -> None: + """Helper function that actually executes the set_control_type function. + It is not required by fastworkflow. You can do everything in __call__(). + """ + # Call the application function + control_type: ControlType = workflow.command_context_for_response_generation + control_type.set_control_type(control_type=input.control_type) + + def __call__(self, workflow: + fastworkflow.Workflow, + command: str, + command_parameters: Signature.Input) -> fastworkflow.CommandOutput: + """The framework will call this function to process the command""" + self._process_command(workflow, command_parameters) + + response = ( + f'Context: {workflow.current_command_context_displayname}\n' + f'Command: {command}\n' + f'Command parameters: {command_parameters}\n' + f"Root context set to ControlType('{command_parameters.control_type}').\n" + f'Now you can call commands exposed in this context.\n' + ) + + return fastworkflow.CommandOutput( + workflow_id=workflow.id, + command_responses=[ + fastworkflow.CommandResponse(response=response) + ] + ) \ No newline at end of file diff --git a/queueless-MC/fastWorkflow/defect_remediation_app/_commands/ControlType/total_remediation_time.py b/queueless-MC/fastWorkflow/defect_remediation_app/_commands/ControlType/total_remediation_time.py index 4f57f78..0fd22bd 100644 --- a/queueless-MC/fastWorkflow/defect_remediation_app/_commands/ControlType/total_remediation_time.py +++ b/queueless-MC/fastWorkflow/defect_remediation_app/_commands/ControlType/total_remediation_time.py @@ -47,7 +47,7 @@ def __call__(self, workflow: f'Context: {workflow.current_command_context_displayname}\n' f'Command: {command}\n' f'Command parameters: {command_parameters}\n' - f'Response: The message was printed to the screen' + f'Response: The response was printed to the screen' ) return fastworkflow.CommandOutput( diff --git a/queueless-MC/fastWorkflow/defect_remediation_app/_commands/ControlType/waiting_in_backlog.py b/queueless-MC/fastWorkflow/defect_remediation_app/_commands/ControlType/waiting_in_backlog.py index a3a0f3f..e643c5f 100644 --- a/queueless-MC/fastWorkflow/defect_remediation_app/_commands/ControlType/waiting_in_backlog.py +++ b/queueless-MC/fastWorkflow/defect_remediation_app/_commands/ControlType/waiting_in_backlog.py @@ -47,7 +47,7 @@ def __call__(self, workflow: f'Context: {workflow.current_command_context_displayname}\n' f'Command: {command}\n' f'Command parameters: {command_parameters}\n' - f'Response: The message was printed to the screen' + f'Response: The response was printed to the screen' ) return fastworkflow.CommandOutput( diff --git a/queueless-MC/fastWorkflow/defect_remediation_app/application/control_type.py b/queueless-MC/fastWorkflow/defect_remediation_app/application/control_type.py index d17c992..5839f6e 100644 --- a/queueless-MC/fastWorkflow/defect_remediation_app/application/control_type.py +++ b/queueless-MC/fastWorkflow/defect_remediation_app/application/control_type.py @@ -6,19 +6,23 @@ class ControlType: def __init__(self, control_type: str): self.control_type = control_type - info_df = pl.read_json('defect_remediation_app_base/application/fastworkflow_df.json', schema={"item":pl.String, "control_type":pl.String, "time_span":pl.String, "mean":pl.String}) + self.info_df = pl.read_json('defect_remediation_app_base/application/fastworkflow_df.json', schema={"item":pl.String, "control_type":pl.String, "time_span":pl.String, "mean":pl.String}) # info_df = info_df.with_columns(pl.col('time_span').cast(pl.Int64).alias('time_span')) # info_df = info_df.with_columns(pl.col('mean').cast(pl.Float64).alias('mean')) - self.info_df = info_df.filter(pl.col("control_type") == self.control_type) + self.info_def_filtered = self.info_df.filter(pl.col("control_type") == self.control_type) pl.Config.set_tbl_hide_dataframe_shape(True) + def set_control_type(self, control_type: str): + self.control_type = control_type + self.info_def_filtered = self.info_df.filter(pl.col("control_type") == self.control_type) + def generated_per_day(self, time_span: str): """ Mean # of defects of certain control type being generated per day Args: time_span (str): time span over which to compute average: "day", "month", "all_time" """ - value = self.info_df.filter( + value = self.info_def_filtered.filter( pl.col('item') == f"generated_per_day_{self.control_type}_{time_span}", pl.col('time_span') == time_span )["mean"][0] @@ -43,7 +47,7 @@ def remediated_per_day(self, time_span: str): Mean # of defects of certain control type being remediated per day Args: time_span (str): time span over which to compute average: "day", "month", "all_time" """ - value = self.info_df.filter( + value = self.info_def_filtered.filter( pl.col('item') == f"remediated_per_day_{self.control_type}_{time_span}", pl.col('time_span') == time_span )["mean"][0] @@ -66,10 +70,10 @@ def remediated_per_day(self, time_span: str): def waiting_in_backlog(self, time_span: str): "Mean waiting time of defects of certain control type in backlog before beginning remediation" - value = str(float(self.info_df.filter( + value = str(float(self.info_def_filtered.filter( pl.col('item') == f"delta_new_assign_{self.control_type}_{time_span}", pl.col('time_span') == time_span - )["mean"][0]) + float(self.info_df.filter( + )["mean"][0]) + float(self.info_def_filtered.filter( pl.col('item') == f"delta_assign_inprogress_{self.control_type}_{time_span}", pl.col('time_span') == time_span )["mean"][0])) @@ -91,7 +95,7 @@ def waiting_in_backlog(self, time_span: str): def total_remediation_time(self, time_span: str): "Mean total remediation time of defects of certain control type" - value = self.info_df.filter( + value = self.info_def_filtered.filter( pl.col('item') == f"delta_new_closed_{self.control_type}_{time_span}", pl.col('time_span') == time_span )["mean"][0] diff --git a/queueless-MC/fastWorkflow/defect_remediation_app/application/fastWorkFlow_test_v2.json b/queueless-MC/fastWorkflow/defect_remediation_app/application/fastWorkFlow_test_v2.json deleted file mode 100644 index 77363db..0000000 --- a/queueless-MC/fastWorkflow/defect_remediation_app/application/fastWorkFlow_test_v2.json +++ /dev/null @@ -1,722 +0,0 @@ -[ - { - "item": "generated_per_day_ACC03_1", - "control_type": "ACC03", - "time_span": "1", - "mean": "2.5" - }, - { - "item": "generated_per_day_ACC03_2", - "control_type": "ACC03", - "time_span": "2", - "mean": "2" - }, - { - "item": "generated_per_day_ACC03_3", - "control_type": "ACC03", - "time_span": "3", - "mean": "3" - }, - { - "item": "generated_per_day_ACC17_1", - "control_type": "ACC17", - "time_span": "1", - "mean": "2.33" - }, - { - "item": "generated_per_day_ACC17_2", - "control_type": "ACC17", - "time_span": "2", - "mean": "2.7" - }, - { - "item": "generated_per_day_ACC17_3", - "control_type": "ACC17", - "time_span": "3", - "mean": "1.8" - }, - { - "item": "generated_per_day_ACC28_1", - "control_type": "ACC28", - "time_span": "1", - "mean": "1.5" - }, - { - "item": "generated_per_day_ACC28_2", - "control_type": "ACC28", - "time_span": "2", - "mean": "5.4" - }, - { - "item": "generated_per_day_ACC28_3", - "control_type": "ACC28", - "time_span": "3", - "mean": "1.9" - }, - { - "item": "generated_per_day_AUTH18_1", - "control_type": "AUTH18", - "time_span": "1", - "mean": "1.33" - }, - { - "item": "generated_per_day_AUTH18_2", - "control_type": "AUTH18", - "time_span": "2", - "mean": "1.2" - }, - { - "item": "generated_per_day_AUTH18_3", - "control_type": "AUTH18", - "time_span": "3", - "mean": "1.6" - }, - { - "item": "generated_per_day_AUTH42_1", - "control_type": "AUTH42", - "time_span": "1", - "mean": "2.5" - }, - { - "item": "generated_per_day_AUTH42_2", - "control_type": "AUTH42", - "time_span": "2", - "mean": "2.7" - }, - { - "item": "generated_per_day_AUTH42_3", - "control_type": "AUTH42", - "time_span": "3", - "mean": "2.4" - }, - { - "item": "generated_per_hour_ACC03_1", - "control_type": "ACC03", - "time_span": "1", - "mean": "0.2" - }, - { - "item": "generated_per_hour_ACC03_2", - "control_type": "ACC03", - "time_span": "2", - "mean": "0.33" - }, - { - "item": "generated_per_hour_ACC03_3", - "control_type": "ACC03", - "time_span": "3", - "mean": "0.15" - }, - { - "item": "generated_per_hour_ACC17_1", - "control_type": "ACC17", - "time_span": "1", - "mean": "0.6" - }, - { - "item": "generated_per_hour_ACC17_2", - "control_type": "ACC17", - "time_span": "2", - "mean": "0.14" - }, - { - "item": "generated_per_hour_ACC17_3", - "control_type": "ACC17", - "time_span": "3", - "mean": "0.4" - }, - { - "item": "generated_per_hour_ACC28_1", - "control_type": "ACC28", - "time_span": "1", - "mean": "0.22" - }, - { - "item": "generated_per_hour_ACC28_2", - "control_type": "ACC28", - "time_span": "2", - "mean": "0.3" - }, - { - "item": "generated_per_hour_ACC28_3", - "control_type": "ACC28", - "time_span": "3", - "mean": "0.17" - }, - { - "item": "generated_per_hour_AUTH18_1", - "control_type": "AUTH18", - "time_span": "1", - "mean": "0.11" - }, - { - "item": "generated_per_hour_AUTH18_2", - "control_type": "AUTH18", - "time_span": "2", - "mean": "0.33" - }, - { - "item": "generated_per_hour_AUTH18_3", - "control_type": "AUTH18", - "time_span": "3", - "mean": "0.2" - }, - { - "item": "generated_per_hour_AUTH42_1", - "control_type": "AUTH42", - "time_span": "1", - "mean": "0.45" - }, - { - "item": "generated_per_hour_AUTH42_2", - "control_type": "AUTH42", - "time_span": "2", - "mean": "0.34" - }, - { - "item": "generated_per_hour_AUTH42_3", - "control_type": "AUTH42", - "time_span": "3", - "mean": "0.3" - }, - { - "item": "remediated_per_day_ACC03_1", - "control_type": "ACC03", - "time_span": "1", - "mean": "2.5" - }, - { - "item": "remediated_per_day_ACC03_2", - "control_type": "ACC03", - "time_span": "2", - "mean": "2.6" - }, - { - "item": "remediated_per_day_ACC03_3", - "control_type": "ACC03", - "time_span": "3", - "mean": "1.4" - }, - { - "item": "remediated_per_day_ACC17_1", - "control_type": "ACC17", - "time_span": "1", - "mean": "1.75" - }, - { - "item": "remediated_per_day_ACC17_2", - "control_type": "ACC17", - "time_span": "2", - "mean": "2.34" - }, - { - "item": "remediated_per_day_ACC17_3", - "control_type": "ACC17", - "time_span": "3", - "mean": "2.33" - }, - { - "item": "remediated_per_day_ACC28_1", - "control_type": "ACC28", - "time_span": "1", - "mean": "1" - }, - { - "item": "remediated_per_day_ACC28_2", - "control_type": "ACC28", - "time_span": "2", - "mean": "4.8" - }, - { - "item": "remediated_per_day_ACC28_3", - "control_type": "ACC28", - "time_span": "3", - "mean": "7.66" - }, - { - "item": "remediated_per_day_AUTH18_1", - "control_type": "AUTH18", - "time_span": "1", - "mean": "1.33" - }, - { - "item": "remediated_per_day_AUTH18_2", - "control_type": "AUTH18", - "time_span": "2", - "mean": "1.4" - }, - { - "item": "remediated_per_day_AUTH18_3", - "control_type": "AUTH18", - "time_span": "3", - "mean": "2.1" - }, - { - "item": "remediated_per_day_AUTH42_1", - "control_type": "AUTH42", - "time_span": "1", - "mean": "1.67" - }, - { - "item": "remediated_per_day_AUTH42_2", - "control_type": "AUTH42", - "time_span": "2", - "mean": "1.55" - }, - { - "item": "remediated_per_day_AUTH42_3", - "control_type": "AUTH42", - "time_span": "3", - "mean": "1.43" - }, - { - "item": "remediated_per_hour_ACC03_1", - "control_type": "ACC03", - "time_span": "1", - "mean": "0.4" - }, - { - "item": "remediated_per_hour_ACC03_2", - "control_type": "ACC03", - "time_span": "2", - "mean": "0.23" - }, - { - "item": "remediated_per_hour_ACC03_3", - "control_type": "ACC03", - "time_span": "3", - "mean": "0.18" - }, - { - "item": "remediated_per_hour_ACC17_1", - "control_type": "ACC17", - "time_span": "1", - "mean": "0.56" - }, - { - "item": "remediated_per_hour_ACC17_2", - "control_type": "ACC17", - "time_span": "2", - "mean": "0.3" - }, - { - "item": "remediated_per_hour_ACC17_3", - "control_type": "ACC17", - "time_span": "3", - "mean": "0.22" - }, - { - "item": "remediated_per_hour_ACC28_1", - "control_type": "ACC28", - "time_span": "1", - "mean": "0.24" - }, - { - "item": "remediated_per_hour_ACC28_2", - "control_type": "ACC28", - "time_span": "2", - "mean": "0.25" - }, - { - "item": "remediated_per_hour_ACC28_3", - "control_type": "ACC28", - "time_span": "3", - "mean": "0.18" - }, - { - "item": "remediated_per_hour_AUTH18_1", - "control_type": "AUTH18", - "time_span": "1", - "mean": "0.65" - }, - { - "item": "remediated_per_hour_AUTH18_2", - "control_type": "AUTH18", - "time_span": "2", - "mean": "0.56" - }, - { - "item": "remediated_per_hour_AUTH18_3", - "control_type": "AUTH18", - "time_span": "3", - "mean": "0.44" - }, - { - "item": "remediated_per_hour_AUTH42_1", - "control_type": "AUTH42", - "time_span": "1", - "mean": "0.1" - }, - { - "item": "remediated_per_hour_AUTH42_2", - "control_type": "AUTH42", - "time_span": "2", - "mean": "0.13" - }, - { - "item": "remediated_per_hour_AUTH42_3", - "control_type": "AUTH42", - "time_span": "3", - "mean": "0.17" - }, - { - "item": "delta_new_assign_ACC03_1", - "control_type": "ACC03", - "time_span": "1", - "mean": "9.583" - }, - { - "item": "delta_new_assign_ACC03_2", - "control_type": "ACC03", - "time_span": "2", - "mean": "5.625" - }, - { - "item": "delta_new_assign_ACC03_3", - "control_type": "ACC03", - "time_span": "3", - "mean": "7.837" - }, - { - "item": "delta_new_assign_ACC17_1", - "control_type": "ACC17", - "time_span": "1", - "mean": "4.886" - }, - { - "item": "delta_new_assign_ACC17_2", - "control_type": "ACC17", - "time_span": "2", - "mean": "4.654" - }, - { - "item": "delta_new_assign_ACC17_3", - "control_type": "ACC17", - "time_span": "3", - "mean": "3.125" - }, - { - "item": "delta_new_assign_ACC28_1", - "control_type": "ACC28", - "time_span": "1", - "mean": "3.209" - }, - { - "item": "delta_new_assign_ACC28_2", - "control_type": "ACC28", - "time_span": "2", - "mean": "4.534" - }, - { - "item": "delta_new_assign_ACC28_3", - "control_type": "ACC28", - "time_span": "3", - "mean": "4.221" - }, - { - "item": "delta_new_assign_AUTH18_1", - "control_type": "AUTH18", - "time_span": "1", - "mean": "22.282" - }, - { - "item": "delta_new_assign_AUTH18_2", - "control_type": "AUTH18", - "time_span": "2", - "mean": "4.567" - }, - { - "item": "delta_new_assign_AUTH18_3", - "control_type": "AUTH18", - "time_span": "3", - "mean": "5.626" - }, - { - "item": "delta_new_assign_AUTH42_1", - "control_type": "AUTH42", - "time_span": "1", - "mean": "17.169" - }, - { - "item": "delta_new_assign_AUTH42_2", - "control_type": "AUTH42", - "time_span": "2", - "mean": "18.441" - }, - { - "item": "delta_new_assign_AUTH42_3", - "control_type": "AUTH42", - "time_span": "3", - "mean": "15.678" - }, - { - "item": "delta_assign_inprogress_ACC03_1", - "control_type": "ACC03", - "time_span": "1", - "mean": "5.848" - }, - { - "item": "delta_assign_inprogress_ACC03_2", - "control_type": "ACC03", - "time_span": "2", - "mean": "4.956" - }, - { - "item": "delta_assign_inprogress_ACC03_3", - "control_type": "ACC03", - "time_span": "3", - "mean": "6.389" - }, - { - "item": "delta_assign_inprogress_ACC17_1", - "control_type": "ACC17", - "time_span": "1", - "mean": "5.022" - }, - { - "item": "delta_assign_inprogress_ACC17_2", - "control_type": "ACC17", - "time_span": "2", - "mean": "4.995" - }, - { - "item": "delta_assign_inprogress_ACC17_3", - "control_type": "ACC17", - "time_span": "3", - "mean": "3.294" - }, - { - "item": "delta_assign_inprogress_ACC28_1", - "control_type": "ACC28", - "time_span": "1", - "mean": "3.463" - }, - { - "item": "delta_assign_inprogress_ACC28_2", - "control_type": "ACC28", - "time_span": "2", - "mean": "5.441" - }, - { - "item": "delta_assign_inprogress_ACC28_3", - "control_type": "ACC28", - "time_span": "3", - "mean": "2.391" - }, - { - "item": "delta_assign_inprogress_AUTH18_1", - "control_type": "AUTH18", - "time_span": "1", - "mean": "9.152" - }, - { - "item": "delta_assign_inprogress_AUTH18_2", - "control_type": "AUTH18", - "time_span": "2", - "mean": "8.776" - }, - { - "item": "delta_assign_inprogress_AUTH18_3", - "control_type": "AUTH18", - "time_span": "3", - "mean": "8.135" - }, - { - "item": "delta_assign_inprogress_AUTH42_1", - "control_type": "AUTH42", - "time_span": "1", - "mean": "21.161" - }, - { - "item": "delta_assign_inprogress_AUTH42_2", - "control_type": "AUTH42", - "time_span": "2", - "mean": "20.699" - }, - { - "item": "delta_assign_inprogress_AUTH42_3", - "control_type": "AUTH42", - "time_span": "3", - "mean": "21.365" - }, - { - "item": "delta_inprogress_closed_ACC03_1", - "control_type": "ACC03", - "time_span": "1", - "mean": "3.536" - }, - { - "item": "delta_inprogress_closed_ACC03_2", - "control_type": "ACC03", - "time_span": "2", - "mean": "4.561" - }, - { - "item": "delta_inprogress_closed_ACC03_3", - "control_type": "ACC03", - "time_span": "3", - "mean": "3.567" - }, - { - "item": "delta_inprogress_closed_ACC17_1", - "control_type": "ACC17", - "time_span": "1", - "mean": "14.015" - }, - { - "item": "delta_inprogress_closed_ACC17_2", - "control_type": "ACC17", - "time_span": "2", - "mean": "3.669" - }, - { - "item": "delta_inprogress_closed_ACC17_3", - "control_type": "ACC17", - "time_span": "3", - "mean": "6.745" - }, - { - "item": "delta_inprogress_closed_ACC28_1", - "control_type": "ACC28", - "time_span": "1", - "mean": "21.373" - }, - { - "item": "delta_inprogress_closed_ACC28_2", - "control_type": "ACC28", - "time_span": "2", - "mean": "13.429" - }, - { - "item": "delta_inprogress_closed_ACC28_3", - "control_type": "ACC28", - "time_span": "3", - "mean": "12.085" - }, - { - "item": "delta_inprogress_closed_AUTH18_1", - "control_type": "AUTH18", - "time_span": "1", - "mean": "13.81" - }, - { - "item": "delta_inprogress_closed_AUTH18_2", - "control_type": "AUTH18", - "time_span": "2", - "mean": "10.901" - }, - { - "item": "delta_inprogress_closed_AUTH18_3", - "control_type": "AUTH18", - "time_span": "3", - "mean": "12.618" - }, - { - "item": "delta_inprogress_closed_AUTH42_1", - "control_type": "AUTH42", - "time_span": "1", - "mean": "34.888" - }, - { - "item": "delta_inprogress_closed_AUTH42_2", - "control_type": "AUTH42", - "time_span": "2", - "mean": "28.917" - }, - { - "item": "delta_inprogress_closed_AUTH42_3", - "control_type": "AUTH42", - "time_span": "3", - "mean": "25.218" - }, - { - "item": "delta_new_closed_ACC03_1", - "control_type": "ACC03", - "time_span": "1", - "mean": "18.967" - }, - { - "item": "delta_new_closed_ACC03_2", - "control_type": "ACC03", - "time_span": "2", - "mean": "15.142" - }, - { - "item": "delta_new_closed_ACC03_3", - "control_type": "ACC03", - "time_span": "3", - "mean": "17.793" - }, - { - "item": "delta_new_closed_ACC17_1", - "control_type": "ACC17", - "time_span": "1", - "mean": "23.923" - }, - { - "item": "delta_new_closed_ACC17_2", - "control_type": "ACC17", - "time_span": "2", - "mean": "13.318" - }, - { - "item": "delta_new_closed_ACC17_3", - "control_type": "ACC17", - "time_span": "3", - "mean": "13.164" - }, - { - "item": "delta_new_closed_ACC28_1", - "control_type": "ACC28", - "time_span": "1", - "mean": "28.045" - }, - { - "item": "delta_new_closed_ACC28_2", - "control_type": "ACC28", - "time_span": "2", - "mean": "23.404" - }, - { - "item": "delta_new_closed_ACC28_3", - "control_type": "ACC28", - "time_span": "3", - "mean": "18.697" - }, - { - "item": "delta_new_closed_AUTH18_1", - "control_type": "AUTH18", - "time_span": "1", - "mean": "45.244" - }, - { - "item": "delta_new_closed_AUTH18_2", - "control_type": "AUTH18", - "time_span": "2", - "mean": "24.244" - }, - { - "item": "delta_new_closed_AUTH18_3", - "control_type": "AUTH18", - "time_span": "3", - "mean": "26.379" - }, - { - "item": "delta_new_closed_AUTH42_1", - "control_type": "AUTH42", - "time_span": "1", - "mean": "73.218" - }, - { - "item": "delta_new_closed_AUTH42_2", - "control_type": "AUTH42", - "time_span": "2", - "mean": "68.057" - }, - { - "item": "delta_new_closed_AUTH42_3", - "control_type": "AUTH42", - "time_span": "3", - "mean": "62.261" - } -] \ No newline at end of file diff --git a/queueless-MC/img/defectRemediation_queueless_systemDiagram2.png b/queueless-MC/img/defectRemediation_queueless_systemDiagram2.png new file mode 100644 index 0000000..6dac64a Binary files /dev/null and b/queueless-MC/img/defectRemediation_queueless_systemDiagram2.png differ diff --git a/queueless-MC/img/delta_table_example3.png b/queueless-MC/img/delta_table_example3.png new file mode 100644 index 0000000..8fff45f Binary files /dev/null and b/queueless-MC/img/delta_table_example3.png differ diff --git a/queueless-MC/img/logs_example.png b/queueless-MC/img/logs_example.png new file mode 100644 index 0000000..ac51525 Binary files /dev/null and b/queueless-MC/img/logs_example.png differ diff --git a/queueless-MC/queueless-MC/DefectSimulation.py b/queueless-MC/queueing-MC/DefectSimulation.py similarity index 99% rename from queueless-MC/queueless-MC/DefectSimulation.py rename to queueless-MC/queueing-MC/DefectSimulation.py index 731220c..fd7c263 100644 --- a/queueless-MC/queueless-MC/DefectSimulation.py +++ b/queueless-MC/queueing-MC/DefectSimulation.py @@ -132,9 +132,9 @@ def compute_time_step(self): minvals = [] for defect_type in self.defect_type_dict.keys(): temp_list = np.array(self.remediation_distributions[defect_type].copy()) - print(temp_list) + # print(temp_list) try: - print(np.nonzero(temp_list)) + # print(np.nonzero(temp_list)) min_sample = np.min(temp_list[np.nonzero(temp_list)]) if min_sample < 1: # min sample must be less than the defect generation time step = 1 hr minvals.append(min_sample) diff --git a/queueless-MC/queueless-MC/backlog_simulation.py b/queueless-MC/queueing-MC/backlog_simulation.py similarity index 100% rename from queueless-MC/queueless-MC/backlog_simulation.py rename to queueless-MC/queueing-MC/backlog_simulation.py diff --git a/queueless-MC/queueless-MC/initialize_simulation.py b/queueless-MC/queueing-MC/initialize_simulation.py similarity index 100% rename from queueless-MC/queueless-MC/initialize_simulation.py rename to queueless-MC/queueing-MC/initialize_simulation.py diff --git a/queueless-MC/queueless-MC/queueing_main.py b/queueless-MC/queueing-MC/queueing_main.py similarity index 100% rename from queueless-MC/queueless-MC/queueing_main.py rename to queueless-MC/queueing-MC/queueing_main.py diff --git a/queueless-MC/queueless-MC/visualize_simulation.py b/queueless-MC/queueing-MC/visualize_simulation.py similarity index 68% rename from queueless-MC/queueless-MC/visualize_simulation.py rename to queueless-MC/queueing-MC/visualize_simulation.py index d422a6a..77363d9 100644 --- a/queueless-MC/queueless-MC/visualize_simulation.py +++ b/queueless-MC/queueing-MC/visualize_simulation.py @@ -2,7 +2,7 @@ from itertools import count import numpy as np import contextlib - +from matplotlib import animation def visualize_simulation(comparison_dict): #### VISUALIZATION #### @@ -100,11 +100,76 @@ def visualize_boxplot(hours, times_forplot, backlog): # ax.fill_between(hours[1:], min_curve, max_curve, color='purple', alpha=0.1) ax.set_xticks(hours[::10], labels=hours[::10]) ax.set_xlim(0, max(times_forplot[trial])) - ax.set_xlabel('times (hrs)', fontsize=14, **csfont) - ax.set_ylabel('defects backlog\n(average/hour)', fontsize=14, **csfont) + ax.set_xlabel('times (hrs)', fontsize=16, **csfont) + ax.set_ylabel('defects backlog\n(average/hour)', fontsize=16, **csfont) # ax.legend() + fig.tight_layout() plt.show() + #### ANIMATION #### + # fig, ax = plt.subplots(figsize=(12,4)) + + # line_trial1 = ax.plot(times_forplot['trial1'], backlog['trial1'], ':', linewidth=1, color='black', alpha=0.7)[0] + # line_trial2 = ax.plot(times_forplot['trial2'], backlog['trial2'], ':', linewidth=1, color='black', alpha=0.7)[0] + # line_trial3 = ax.plot(times_forplot['trial3'], backlog['trial3'], ':', linewidth=1, color='black', alpha=0.7)[0] + # line_trial4 = ax.plot(times_forplot['trial4'], backlog['trial4'], ':', linewidth=1, color='black', alpha=0.7)[0] + # line_trial5 = ax.plot(times_forplot['trial5'], backlog['trial5'], ':', linewidth=1, color='black', alpha=0.7)[0] + + # colors = ['#2348FF' if value < max(median_curve)*0.2 else '#C21445' for value in median_curve] + + # ax.set(xlim=[0, hours[-1]], ylim=[0,50]) + # ax.set_xticks(hours[::10], labels=hours[::10]) + # ax.set_xlabel('time (hrs)', fontsize=16, **csfont) + # ax.set_ylabel('defect backlog\n(average/hour)', fontsize=16, **csfont) + # fig.tight_layout() + + # def update(frame): + # if frame <= 20: + # line_trial1.set_xdata(times_forplot['trial1'][:5*frame]) + # line_trial1.set_ydata(backlog['trial1'][:5*frame]) + + # line_trial2.set(visible=False) + # line_trial3.set(visible=False) + # line_trial4.set(visible=False) + # line_trial5.set(visible=False) + # elif (frame > 20) and (frame <= 40): + # line_trial2.set(visible=True) + # line_trial2.set_xdata(times_forplot['trial2'][:5*(frame-20)]) + # line_trial2.set_ydata(backlog['trial2'][:5*(frame-20)]) + # elif (frame > 40) and (frame <= 60): + # line_trial3.set(visible=True) + # line_trial3.set_xdata(times_forplot['trial3'][:5*(frame-40)]) + # line_trial3.set_ydata(backlog['trial3'][:5*(frame-40)]) + # elif (frame > 60) and (frame <= 80): + # line_trial4.set(visible=True) + # line_trial4.set_xdata(times_forplot['trial4'][:5*(frame-60)]) + # line_trial4.set_ydata(backlog['trial4'][:5*(frame-60)]) + # elif (frame > 80) and (frame <= 100): + # line_trial5.set(visible=True) + # line_trial5.set_xdata(times_forplot['trial5'][:5*(frame-80)]) + # line_trial5.set_ydata(backlog['trial5'][:5*(frame-80)]) + # else: + # ax.cla() # <-- clear the subplot otherwise boxplot shows previous frame + # ax.set(xlim=[0, hours[-1]], ylim=[0,50]) + # ax.set_xlabel('time (hrs)', fontsize=16, **csfont) + # ax.set_ylabel('defect backlog\n(average/hour)', fontsize=16, **csfont) + # ax.plot(times_forplot['trial1'], backlog['trial1'], ':', linewidth=1, color='black', alpha=0.7)[0] + # ax.plot(times_forplot['trial2'], backlog['trial2'], ':', linewidth=1, color='black', alpha=0.7)[0] + # ax.plot(times_forplot['trial3'], backlog['trial3'], ':', linewidth=1, color='black', alpha=0.7)[0] + # ax.plot(times_forplot['trial4'], backlog['trial4'], ':', linewidth=1, color='black', alpha=0.7)[0] + # ax.plot(times_forplot['trial5'], backlog['trial5'], ':', linewidth=1, color='black', alpha=0.7)[0] + # bplot = ax.boxplot(list(hourly_stats.values())[:(frame-100)], + # patch_artist=True, + # manage_ticks=False, + # sym='', + # notch=False) + # for index, patch in enumerate(bplot['boxes']): + # patch.set_facecolor(colors[index]) + # fig.tight_layout() + + # ani = animation.FuncAnimation(fig=fig, func=update, frames=160, interval=500) + # ani.save('boxplot2.gif', writer='pillow',fps=7,dpi=100) + def visualize_generation_distributions(defect_type_dict, incoming_defects_dict, generation_distributions): incoming_defects = {key: [] for key in defect_type_dict.keys()} @@ -134,21 +199,22 @@ def visualize_generation_distributions(defect_type_dict, incoming_defects_dict, axs[index].hist(incoming_defects[value], np.arange(left_of_first_bin, right_of_last_bin + d, d), label=f'{len(incoming_defects[value])} samples', color='#C21445', alpha=0.2, edgecolor='black', linewidth=1.5, density=True) axs[index].hist(data, np.arange(left_of_first_bin, right_of_last_bin + d, d), label="empirical data", linewidth=2, color='#C21445', density=True, histtype='step') # axs[0].set_title('Type 1', fontsize=10, **tnrfont) - axs[index].set_title(f'{value}', loc='left', fontsize=14, **csfont) + axs[index].set_title(f'{value}', loc='left', fontsize=16, **csfont) axs[index].legend(loc='upper right', bbox_to_anchor=(1.02, 1.13), fontsize='x-small') axs[index].set_xticks(np.unique(data)) else: axs.hist(incoming_defects[value], np.arange(left_of_first_bin, right_of_last_bin + d, d), label=f'{len(incoming_defects[value])} samples', color='#C21445', alpha=0.2, edgecolor='black', linewidth=1.5, density=True) axs.hist(data, np.arange(left_of_first_bin, right_of_last_bin + d, d), label="empirical data", linewidth=2, color='#C21445', density=True, histtype='step') # axs[0].set_title('Type 1', fontsize=10, **tnrfont) - axs.set_title(f'{value}', loc='left', fontsize=14, **csfont) + axs.set_title(f'{value}', loc='left', fontsize=16, **csfont) axs.legend(loc='upper right', bbox_to_anchor=(1.02, 1.13), fontsize='x-small') axs.set_xticks(np.unique(data)) if len(defect_type_dict.keys()) > 1: - axs[0].set_ylabel('density', fontsize=14, **csfont) + axs[0].set_ylabel('density', fontsize=16, **csfont) else: - axs.set_ylabel('density', fontsize=14, **csfont) - fig.text(0.5, 0, '# incoming defects per hour', ha='center', fontsize=14, **csfont) + axs.set_ylabel('density', fontsize=16, **csfont) + fig.text(0.5, 0, '# incoming defects per hour', ha='center', fontsize=16, **csfont) + fig.tight_layout() plt.show() @@ -166,19 +232,20 @@ def visualize_remediation_distributions(defect_type_dict, comparison_dict, remed for index, value in enumerate(defect_type_dict.keys()): axs[index].hist(incoming_remediations[value], label=f'{len(incoming_remediations[value])} samples', color='#2348FF', alpha=0.2, edgecolor='black', linewidth=1.5, density=True) axs[index].hist(remediation_distributions[value], label="empirical data", histtype='step', linewidth=2, color='#2348FF', density=True) - axs[index].set_title(f'{value}', loc='left', fontsize=14, **csfont) + axs[index].set_title(f'{value}', loc='left', fontsize=16, **csfont) axs[index].legend(loc='upper right', bbox_to_anchor=(1.02, 1.13), fontsize='x-small') else: fig, axs = plt.subplots (1, len(defect_type_dict.keys()), figsize=(8,4)) for key in defect_type_dict.keys(): axs.hist(incoming_remediations[key], label=f'{len(incoming_remediations[key])} samples', color='#2348FF', alpha=0.2, edgecolor='black', linewidth=1.5, density=True) axs.hist(remediation_distributions[key], label="empirical data", histtype='step', linewidth=2, color='#2348FF', density=True) - axs.set_title(f'{key}', loc='left', fontsize=14, **csfont) + axs.set_title(f'{key}', loc='left', fontsize=16, **csfont) axs.legend(loc='upper right', bbox_to_anchor=(1.02, 1.13), fontsize='x-small') if len(defect_type_dict.keys()) > 1: - axs[0].set_ylabel('density', fontsize=14, **csfont) + axs[0].set_ylabel('density', fontsize=16, **csfont) else: - axs.set_ylabel('density', fontsize=14, **csfont) - fig.text(0.5, 0, 'remediation time (hrs)', ha='center', fontsize=14, **csfont) + axs.set_ylabel('density', fontsize=16, **csfont) + fig.text(0.5, 0, 'remediation time (hrs)', ha='center', fontsize=16, **csfont) + fig.tight_layout() plt.show() \ No newline at end of file diff --git a/queueless-MC/queueless_main.py b/queueless-MC/queueless_main.py index 7b73783..6d5a391 100644 --- a/queueless-MC/queueless_main.py +++ b/queueless-MC/queueless_main.py @@ -3,6 +3,7 @@ import json import pickle import argparse +import warnings from initialize_simulation_ql import initialize_simulation from delta_table_simulation import delta_table_simulation from fastworkflow_build import fastworkflow_build @@ -24,6 +25,7 @@ args = parser.parse_args() # initialize_simulation_ql(args) pl.Config.set_tbl_hide_dataframe_shape(True) + warnings.filterwarnings("ignore") log_df, deltas_df, empirical_dict, incoming_dict, outgoing_dict, timedeltas_dict, control_types = initialize_simulation(args) for control_type in control_types: @@ -33,7 +35,7 @@ queueing_build(control_types, empirical_dict) # visualize incoming / outgoing distributions - print(deltas_df) + print(deltas_df.sort('Defect_ID')) # export states as pickled json or csv for item in ['empirical_dict', 'incoming_dict', 'outgoing_dict', 'timedeltas_dict', 'deltas_df']: diff --git a/queueless-MC/simulations/deltas_df.json b/queueless-MC/simulations/deltas_df.json index cb91a95..78ce37c 100644 --- a/queueless-MC/simulations/deltas_df.json +++ b/queueless-MC/simulations/deltas_df.json @@ -1 +1,321 @@ -[{"Defect_ID":1,"Control_Type":"ACC03","Delta_New_Assign":0.224,"Date_Assign":"2025-05-16","Delta_Assign_InProgress":0.063,"Date_InProgress":"2025-05-16","Delta_InProgress_Closed":0.204,"Delta_New_Closed":0.49,"Date_Closed":"2025-05-16"},{"Defect_ID":2,"Control_Type":"ACC17","Delta_New_Assign":0.501,"Date_Assign":"2025-05-16","Delta_Assign_InProgress":0.503,"Date_InProgress":"2025-05-16","Delta_InProgress_Closed":0.779,"Delta_New_Closed":1.783,"Date_Closed":"2025-05-16"},{"Defect_ID":3,"Control_Type":"ACC28","Delta_New_Assign":1.5,"Date_Assign":"2025-05-16","Delta_Assign_InProgress":1.594,"Date_InProgress":"2025-05-16","Delta_InProgress_Closed":1.067,"Delta_New_Closed":4.16,"Date_Closed":"2025-05-16"},{"Defect_ID":4,"Control_Type":"AUTH18","Delta_New_Assign":1.039,"Date_Assign":"2025-05-16","Delta_Assign_InProgress":0.229,"Date_InProgress":"2025-05-16","Delta_InProgress_Closed":1.603,"Delta_New_Closed":2.871,"Date_Closed":"2025-05-16"},{"Defect_ID":5,"Control_Type":"ACC03","Delta_New_Assign":0.845,"Date_Assign":"2025-05-16","Delta_Assign_InProgress":0.466,"Date_InProgress":"2025-05-16","Delta_InProgress_Closed":0.731,"Delta_New_Closed":2.041,"Date_Closed":"2025-05-16"},{"Defect_ID":6,"Control_Type":"AUTH42","Delta_New_Assign":0.378,"Date_Assign":"2025-05-16","Delta_Assign_InProgress":0.029,"Date_InProgress":"2025-05-16","Delta_InProgress_Closed":0.092,"Delta_New_Closed":0.499,"Date_Closed":"2025-05-16"},{"Defect_ID":7,"Control_Type":"ACC17","Delta_New_Assign":1.597,"Date_Assign":"2025-05-16","Delta_Assign_InProgress":0.052,"Date_InProgress":"2025-05-16","Delta_InProgress_Closed":0.047,"Delta_New_Closed":1.696,"Date_Closed":"2025-05-16"},{"Defect_ID":8,"Control_Type":"ACC03","Delta_New_Assign":0.329,"Date_Assign":"2025-05-17","Delta_Assign_InProgress":0.206,"Date_InProgress":"2025-05-17","Delta_InProgress_Closed":2.983,"Delta_New_Closed":3.518,"Date_Closed":"2025-05-17"},{"Defect_ID":9,"Control_Type":"ACC03","Delta_New_Assign":0.271,"Date_Assign":"2025-05-17","Delta_Assign_InProgress":3.382,"Date_InProgress":"2025-05-17","Delta_InProgress_Closed":4.347,"Delta_New_Closed":8.0,"Date_Closed":"2025-05-17"},{"Defect_ID":10,"Control_Type":"ACC03","Delta_New_Assign":1.506,"Date_Assign":"2025-05-17","Delta_Assign_InProgress":2.044,"Date_InProgress":"2025-05-17","Delta_InProgress_Closed":2.186,"Delta_New_Closed":5.736,"Date_Closed":"2025-05-17"},{"Defect_ID":11,"Control_Type":"ACC03","Delta_New_Assign":16.184,"Date_Assign":"2025-05-20","Delta_Assign_InProgress":3.04,"Date_InProgress":"2025-05-20","Delta_InProgress_Closed":4.576,"Delta_New_Closed":23.8,"Date_Closed":"2025-05-20"},{"Defect_ID":12,"Control_Type":"ACC03","Delta_New_Assign":15.869,"Date_Assign":"2025-05-20","Delta_Assign_InProgress":0.028,"Date_InProgress":"2025-05-20","Delta_InProgress_Closed":3.781,"Delta_New_Closed":19.678,"Date_Closed":"2025-05-20"},{"Defect_ID":13,"Control_Type":"ACC03","Delta_New_Assign":17.233,"Date_Assign":"2025-05-20","Delta_Assign_InProgress":1.986,"Date_InProgress":"2025-05-20","Delta_InProgress_Closed":4.589,"Delta_New_Closed":23.809,"Date_Closed":"2025-05-20"},{"Defect_ID":14,"Control_Type":"ACC03","Delta_New_Assign":18.747,"Date_Assign":"2025-05-20","Delta_Assign_InProgress":1.334,"Date_InProgress":"2025-05-20","Delta_InProgress_Closed":3.745,"Delta_New_Closed":23.826,"Date_Closed":"2025-05-20"},{"Defect_ID":15,"Control_Type":"AUTH18","Delta_New_Assign":2.122,"Date_Assign":"2025-05-22","Delta_Assign_InProgress":5.63,"Date_InProgress":"2025-05-22","Delta_InProgress_Closed":25.424,"Delta_New_Closed":33.176,"Date_Closed":"2025-05-23"},{"Defect_ID":16,"Control_Type":"ACC28","Delta_New_Assign":2.271,"Date_Assign":"2025-05-22","Delta_Assign_InProgress":4.08,"Date_InProgress":"2025-05-22","Delta_InProgress_Closed":22.26,"Delta_New_Closed":28.611,"Date_Closed":"2025-05-23"},{"Defect_ID":17,"Control_Type":"ACC28","Delta_New_Assign":5.857,"Date_Assign":"2025-05-22","Delta_Assign_InProgress":4.716,"Date_InProgress":"2025-05-22","Delta_InProgress_Closed":40.792,"Delta_New_Closed":51.366,"Date_Closed":"2025-05-24"},{"Defect_ID":18,"Control_Type":"ACC17","Delta_New_Assign":2.794,"Date_Assign":"2025-05-22","Delta_Assign_InProgress":22.522,"Date_InProgress":"2025-05-23","Delta_InProgress_Closed":22.016,"Delta_New_Closed":47.333,"Date_Closed":"2025-05-24"},{"Defect_ID":19,"Control_Type":"ACC03","Delta_New_Assign":24.622,"Date_Assign":"2025-05-23","Delta_Assign_InProgress":45.928,"Date_InProgress":"2025-05-25","Delta_InProgress_Closed":8.219,"Delta_New_Closed":78.768,"Date_Closed":"2025-05-25"},{"Defect_ID":20,"Control_Type":"AUTH42","Delta_New_Assign":8.084,"Date_Assign":"2025-05-24","Delta_Assign_InProgress":27.058,"Date_InProgress":"2025-05-25","Delta_InProgress_Closed":51.151,"Delta_New_Closed":86.292,"Date_Closed":"2025-05-27"},{"Defect_ID":21,"Control_Type":"AUTH42","Delta_New_Assign":8.087,"Date_Assign":"2025-05-24","Delta_Assign_InProgress":27.09,"Date_InProgress":"2025-05-25","Delta_InProgress_Closed":51.066,"Delta_New_Closed":86.242,"Date_Closed":"2025-05-27"},{"Defect_ID":22,"Control_Type":"AUTH42","Delta_New_Assign":33.001,"Date_Assign":"2025-05-25","Delta_Assign_InProgress":6.452,"Date_InProgress":"2025-05-25","Delta_InProgress_Closed":48.408,"Delta_New_Closed":87.86,"Date_Closed":"2025-05-27"},{"Defect_ID":23,"Control_Type":"AUTH42","Delta_New_Assign":36.294,"Date_Assign":"2025-05-25","Delta_Assign_InProgress":45.178,"Date_InProgress":"2025-05-27","Delta_InProgress_Closed":23.721,"Delta_New_Closed":105.192,"Date_Closed":"2025-05-28"},{"Defect_ID":24,"Control_Type":"AUTH18","Delta_New_Assign":42.981,"Date_Assign":"2025-05-27","Delta_Assign_InProgress":23.449,"Date_InProgress":"2025-05-28","Delta_InProgress_Closed":8.026,"Delta_New_Closed":74.457,"Date_Closed":"2025-05-28"},{"Defect_ID":25,"Control_Type":"AUTH18","Delta_New_Assign":42.986,"Date_Assign":"2025-05-27","Delta_Assign_InProgress":7.299,"Date_InProgress":"2025-05-27","Delta_InProgress_Closed":20.186,"Delta_New_Closed":70.471,"Date_Closed":"2025-05-28"},{"Defect_ID":26,"Control_Type":"ACC17","Delta_New_Assign":1.504,"Date_Assign":"2025-05-28","Delta_Assign_InProgress":2.21,"Date_InProgress":"2025-05-28","Delta_InProgress_Closed":1.458,"Delta_New_Closed":5.173,"Date_Closed":"2025-05-28"},{"Defect_ID":27,"Control_Type":"ACC17","Delta_New_Assign":9.149,"Date_Assign":"2025-05-29","Delta_Assign_InProgress":4.837,"Date_InProgress":"2025-05-29","Delta_InProgress_Closed":28.032,"Delta_New_Closed":42.018,"Date_Closed":"2025-05-30"},{"Defect_ID":28,"Control_Type":"ACC17","Delta_New_Assign":9.281,"Date_Assign":"2025-05-29","Delta_Assign_InProgress":2.112,"Date_InProgress":"2025-05-29","Delta_InProgress_Closed":23.894,"Delta_New_Closed":35.287,"Date_Closed":"2025-05-30"},{"Defect_ID":29,"Control_Type":"ACC17","Delta_New_Assign":9.376,"Date_Assign":"2025-05-29","Delta_Assign_InProgress":2.915,"Date_InProgress":"2025-05-29","Delta_InProgress_Closed":21.882,"Delta_New_Closed":34.173,"Date_Closed":"2025-05-30"}] \ No newline at end of file +[ + { + "Defect_ID": 1, + "Control_Type": "ACC03", + "Delta_New_Assign": 0.224, + "Date_Assign": "2025-05-16", + "Delta_Assign_InProgress": 0.063, + "Date_InProgress": "2025-05-16", + "Delta_InProgress_Closed": 0.204, + "Delta_New_Closed": 0.49, + "Date_Closed": "2025-05-16" + }, + { + "Defect_ID": 2, + "Control_Type": "ACC17", + "Delta_New_Assign": 0.501, + "Date_Assign": "2025-05-16", + "Delta_Assign_InProgress": 0.503, + "Date_InProgress": "2025-05-16", + "Delta_InProgress_Closed": 0.779, + "Delta_New_Closed": 1.783, + "Date_Closed": "2025-05-16" + }, + { + "Defect_ID": 3, + "Control_Type": "ACC28", + "Delta_New_Assign": 1.5, + "Date_Assign": "2025-05-16", + "Delta_Assign_InProgress": 1.594, + "Date_InProgress": "2025-05-16", + "Delta_InProgress_Closed": 1.067, + "Delta_New_Closed": 4.16, + "Date_Closed": "2025-05-16" + }, + { + "Defect_ID": 4, + "Control_Type": "AUTH18", + "Delta_New_Assign": 1.039, + "Date_Assign": "2025-05-16", + "Delta_Assign_InProgress": 0.229, + "Date_InProgress": "2025-05-16", + "Delta_InProgress_Closed": 1.603, + "Delta_New_Closed": 2.871, + "Date_Closed": "2025-05-16" + }, + { + "Defect_ID": 5, + "Control_Type": "ACC03", + "Delta_New_Assign": 0.845, + "Date_Assign": "2025-05-16", + "Delta_Assign_InProgress": 0.466, + "Date_InProgress": "2025-05-16", + "Delta_InProgress_Closed": 0.731, + "Delta_New_Closed": 2.041, + "Date_Closed": "2025-05-16" + }, + { + "Defect_ID": 6, + "Control_Type": "AUTH42", + "Delta_New_Assign": 0.378, + "Date_Assign": "2025-05-16", + "Delta_Assign_InProgress": 0.029, + "Date_InProgress": "2025-05-16", + "Delta_InProgress_Closed": 0.092, + "Delta_New_Closed": 0.499, + "Date_Closed": "2025-05-16" + }, + { + "Defect_ID": 7, + "Control_Type": "ACC17", + "Delta_New_Assign": 1.597, + "Date_Assign": "2025-05-16", + "Delta_Assign_InProgress": 0.052, + "Date_InProgress": "2025-05-16", + "Delta_InProgress_Closed": 0.047, + "Delta_New_Closed": 1.696, + "Date_Closed": "2025-05-16" + }, + { + "Defect_ID": 8, + "Control_Type": "ACC03", + "Delta_New_Assign": 0.329, + "Date_Assign": "2025-05-17", + "Delta_Assign_InProgress": 0.206, + "Date_InProgress": "2025-05-17", + "Delta_InProgress_Closed": 2.983, + "Delta_New_Closed": 3.518, + "Date_Closed": "2025-05-17" + }, + { + "Defect_ID": 9, + "Control_Type": "ACC03", + "Delta_New_Assign": 0.271, + "Date_Assign": "2025-05-17", + "Delta_Assign_InProgress": 3.382, + "Date_InProgress": "2025-05-17", + "Delta_InProgress_Closed": 4.347, + "Delta_New_Closed": 8.0, + "Date_Closed": "2025-05-17" + }, + { + "Defect_ID": 10, + "Control_Type": "ACC03", + "Delta_New_Assign": 1.506, + "Date_Assign": "2025-05-17", + "Delta_Assign_InProgress": 2.044, + "Date_InProgress": "2025-05-17", + "Delta_InProgress_Closed": 2.186, + "Delta_New_Closed": 5.736, + "Date_Closed": "2025-05-17" + }, + { + "Defect_ID": 11, + "Control_Type": "ACC03", + "Delta_New_Assign": 16.184, + "Date_Assign": "2025-05-20", + "Delta_Assign_InProgress": 3.04, + "Date_InProgress": "2025-05-20", + "Delta_InProgress_Closed": 4.576, + "Delta_New_Closed": 23.8, + "Date_Closed": "2025-05-20" + }, + { + "Defect_ID": 12, + "Control_Type": "ACC03", + "Delta_New_Assign": 15.869, + "Date_Assign": "2025-05-20", + "Delta_Assign_InProgress": 0.028, + "Date_InProgress": "2025-05-20", + "Delta_InProgress_Closed": 3.781, + "Delta_New_Closed": 19.678, + "Date_Closed": "2025-05-20" + }, + { + "Defect_ID": 13, + "Control_Type": "ACC03", + "Delta_New_Assign": 17.233, + "Date_Assign": "2025-05-20", + "Delta_Assign_InProgress": 1.986, + "Date_InProgress": "2025-05-20", + "Delta_InProgress_Closed": 4.589, + "Delta_New_Closed": 23.809, + "Date_Closed": "2025-05-20" + }, + { + "Defect_ID": 14, + "Control_Type": "ACC03", + "Delta_New_Assign": 18.747, + "Date_Assign": "2025-05-20", + "Delta_Assign_InProgress": 1.334, + "Date_InProgress": "2025-05-20", + "Delta_InProgress_Closed": 3.745, + "Delta_New_Closed": 23.826, + "Date_Closed": "2025-05-20" + }, + { + "Defect_ID": 15, + "Control_Type": "AUTH18", + "Delta_New_Assign": 2.122, + "Date_Assign": "2025-05-22", + "Delta_Assign_InProgress": 5.63, + "Date_InProgress": "2025-05-22", + "Delta_InProgress_Closed": 25.424, + "Delta_New_Closed": 33.176, + "Date_Closed": "2025-05-23" + }, + { + "Defect_ID": 16, + "Control_Type": "ACC28", + "Delta_New_Assign": 2.271, + "Date_Assign": "2025-05-22", + "Delta_Assign_InProgress": 4.08, + "Date_InProgress": "2025-05-22", + "Delta_InProgress_Closed": 22.26, + "Delta_New_Closed": 28.611, + "Date_Closed": "2025-05-23" + }, + { + "Defect_ID": 17, + "Control_Type": "ACC28", + "Delta_New_Assign": 5.857, + "Date_Assign": "2025-05-22", + "Delta_Assign_InProgress": 4.716, + "Date_InProgress": "2025-05-22", + "Delta_InProgress_Closed": 40.792, + "Delta_New_Closed": 51.366, + "Date_Closed": "2025-05-24" + }, + { + "Defect_ID": 18, + "Control_Type": "ACC17", + "Delta_New_Assign": 2.794, + "Date_Assign": "2025-05-22", + "Delta_Assign_InProgress": 22.522, + "Date_InProgress": "2025-05-23", + "Delta_InProgress_Closed": 22.016, + "Delta_New_Closed": 47.333, + "Date_Closed": "2025-05-24" + }, + { + "Defect_ID": 19, + "Control_Type": "ACC03", + "Delta_New_Assign": 24.622, + "Date_Assign": "2025-05-23", + "Delta_Assign_InProgress": 45.928, + "Date_InProgress": "2025-05-25", + "Delta_InProgress_Closed": 8.219, + "Delta_New_Closed": 78.768, + "Date_Closed": "2025-05-25" + }, + { + "Defect_ID": 20, + "Control_Type": "AUTH42", + "Delta_New_Assign": 8.084, + "Date_Assign": "2025-05-24", + "Delta_Assign_InProgress": 27.058, + "Date_InProgress": "2025-05-25", + "Delta_InProgress_Closed": 51.151, + "Delta_New_Closed": 86.292, + "Date_Closed": "2025-05-27" + }, + { + "Defect_ID": 21, + "Control_Type": "AUTH42", + "Delta_New_Assign": 8.087, + "Date_Assign": "2025-05-24", + "Delta_Assign_InProgress": 27.09, + "Date_InProgress": "2025-05-25", + "Delta_InProgress_Closed": 51.066, + "Delta_New_Closed": 86.242, + "Date_Closed": "2025-05-27" + }, + { + "Defect_ID": 22, + "Control_Type": "AUTH42", + "Delta_New_Assign": 33.001, + "Date_Assign": "2025-05-25", + "Delta_Assign_InProgress": 6.452, + "Date_InProgress": "2025-05-25", + "Delta_InProgress_Closed": 48.408, + "Delta_New_Closed": 87.86, + "Date_Closed": "2025-05-27" + }, + { + "Defect_ID": 23, + "Control_Type": "AUTH42", + "Delta_New_Assign": 36.294, + "Date_Assign": "2025-05-25", + "Delta_Assign_InProgress": 45.178, + "Date_InProgress": "2025-05-27", + "Delta_InProgress_Closed": 23.721, + "Delta_New_Closed": 105.192, + "Date_Closed": "2025-05-28" + }, + { + "Defect_ID": 24, + "Control_Type": "AUTH18", + "Delta_New_Assign": 42.981, + "Date_Assign": "2025-05-27", + "Delta_Assign_InProgress": 23.449, + "Date_InProgress": "2025-05-28", + "Delta_InProgress_Closed": 8.026, + "Delta_New_Closed": 74.457, + "Date_Closed": "2025-05-28" + }, + { + "Defect_ID": 25, + "Control_Type": "AUTH18", + "Delta_New_Assign": 42.986, + "Date_Assign": "2025-05-27", + "Delta_Assign_InProgress": 7.299, + "Date_InProgress": "2025-05-27", + "Delta_InProgress_Closed": 20.186, + "Delta_New_Closed": 70.471, + "Date_Closed": "2025-05-28" + }, + { + "Defect_ID": 26, + "Control_Type": "ACC17", + "Delta_New_Assign": 1.504, + "Date_Assign": "2025-05-28", + "Delta_Assign_InProgress": 2.21, + "Date_InProgress": "2025-05-28", + "Delta_InProgress_Closed": 1.458, + "Delta_New_Closed": 5.173, + "Date_Closed": "2025-05-28" + }, + { + "Defect_ID": 27, + "Control_Type": "ACC17", + "Delta_New_Assign": 9.149, + "Date_Assign": "2025-05-29", + "Delta_Assign_InProgress": 4.837, + "Date_InProgress": "2025-05-29", + "Delta_InProgress_Closed": 28.032, + "Delta_New_Closed": 42.018, + "Date_Closed": "2025-05-30" + }, + { + "Defect_ID": 28, + "Control_Type": "ACC17", + "Delta_New_Assign": 9.281, + "Date_Assign": "2025-05-29", + "Delta_Assign_InProgress": 2.112, + "Date_InProgress": "2025-05-29", + "Delta_InProgress_Closed": 23.894, + "Delta_New_Closed": 35.287, + "Date_Closed": "2025-05-30" + }, + { + "Defect_ID": 29, + "Control_Type": "ACC17", + "Delta_New_Assign": 9.376, + "Date_Assign": "2025-05-29", + "Delta_Assign_InProgress": 2.915, + "Date_InProgress": "2025-05-29", + "Delta_InProgress_Closed": 21.882, + "Delta_New_Closed": 34.173, + "Date_Closed": "2025-05-30" + } +] \ No newline at end of file diff --git a/queueless-MC/simulations/fastworkflow_df.json b/queueless-MC/simulations/fastworkflow_df.json index 7181ae5..66570c0 100644 --- a/queueless-MC/simulations/fastworkflow_df.json +++ b/queueless-MC/simulations/fastworkflow_df.json @@ -1,360 +1,360 @@ [ { - "item": "Delta_Assign_InProgress_ACC03_all_time", + "item": "delta_assign_inprogress_ACC03_all_time", "control_type": "ACC03", "time_span": "all_time", "mean": "34.83" }, { - "item": "Delta_Assign_InProgress_ACC03_day", + "item": "delta_assign_inprogress_ACC03_day", "control_type": "ACC03", "time_span": "day", "mean": "45.93" }, { - "item": "Delta_Assign_InProgress_ACC03_month", + "item": "delta_assign_inprogress_ACC03_month", "control_type": "ACC03", "time_span": "month", "mean": "40.21" }, { - "item": "Delta_Assign_InProgress_ACC17_all_time", + "item": "delta_assign_inprogress_ACC17_all_time", "control_type": "ACC17", "time_span": "all_time", "mean": "5.35" }, { - "item": "Delta_Assign_InProgress_ACC17_day", + "item": "delta_assign_inprogress_ACC17_day", "control_type": "ACC17", "time_span": "day", "mean": "3.29" }, { - "item": "Delta_Assign_InProgress_ACC17_month", + "item": "delta_assign_inprogress_ACC17_month", "control_type": "ACC17", "time_span": "month", "mean": "6.16" }, { - "item": "Delta_Assign_InProgress_ACC28_all_time", + "item": "delta_assign_inprogress_ACC28_all_time", "control_type": "ACC28", "time_span": "all_time", "mean": "3.93" }, { - "item": "Delta_Assign_InProgress_ACC28_day", + "item": "delta_assign_inprogress_ACC28_day", "control_type": "ACC28", "time_span": "day", "mean": "4.4" }, { - "item": "Delta_Assign_InProgress_ACC28_month", + "item": "delta_assign_inprogress_ACC28_month", "control_type": "ACC28", "time_span": "month", "mean": "4.31" }, { - "item": "Delta_Assign_InProgress_AUTH18_all_time", + "item": "delta_assign_inprogress_AUTH18_all_time", "control_type": "AUTH18", "time_span": "all_time", "mean": "16.66" }, { - "item": "Delta_Assign_InProgress_AUTH18_day", + "item": "delta_assign_inprogress_AUTH18_day", "control_type": "AUTH18", "time_span": "day", "mean": "23.45" }, { - "item": "Delta_Assign_InProgress_AUTH18_month", + "item": "delta_assign_inprogress_AUTH18_month", "control_type": "AUTH18", "time_span": "month", "mean": "19.31" }, { - "item": "Delta_Assign_InProgress_AUTH42_all_time", + "item": "delta_assign_inprogress_AUTH42_all_time", "control_type": "AUTH42", "time_span": "all_time", "mean": "32.5" }, { - "item": "Delta_Assign_InProgress_AUTH42_day", + "item": "delta_assign_inprogress_AUTH42_day", "control_type": "AUTH42", "time_span": "day", "mean": "45.18" }, { - "item": "Delta_Assign_InProgress_AUTH42_month", + "item": "delta_assign_inprogress_AUTH42_month", "control_type": "AUTH42", "time_span": "month", "mean": "37.74" }, { - "item": "Delta_InProgress_Closed_ACC03_all_time", + "item": "delta_inprogress_closed_ACC03_all_time", "control_type": "ACC03", "time_span": "all_time", "mean": "7.02" }, { - "item": "Delta_InProgress_Closed_ACC03_day", + "item": "delta_inprogress_closed_ACC03_day", "control_type": "ACC03", "time_span": "day", "mean": "8.22" }, { - "item": "Delta_InProgress_Closed_ACC03_month", + "item": "delta_inprogress_closed_ACC03_month", "control_type": "ACC03", "time_span": "month", "mean": "7.7" }, { - "item": "Delta_InProgress_Closed_ACC17_all_time", + "item": "delta_inprogress_closed_ACC17_all_time", "control_type": "ACC17", "time_span": "all_time", "mean": "17.65" }, { - "item": "Delta_InProgress_Closed_ACC17_day", + "item": "delta_inprogress_closed_ACC17_day", "control_type": "ACC17", "time_span": "day", "mean": "24.6" }, { - "item": "Delta_InProgress_Closed_ACC17_month", + "item": "delta_inprogress_closed_ACC17_month", "control_type": "ACC17", "time_span": "month", "mean": "20.43" }, { - "item": "Delta_InProgress_Closed_ACC28_all_time", + "item": "delta_inprogress_closed_ACC28_all_time", "control_type": "ACC28", "time_span": "all_time", "mean": "32.55" }, { - "item": "Delta_InProgress_Closed_ACC28_day", + "item": "delta_inprogress_closed_ACC28_day", "control_type": "ACC28", "time_span": "day", "mean": "40.79" }, { - "item": "Delta_InProgress_Closed_ACC28_month", + "item": "delta_inprogress_closed_ACC28_month", "control_type": "ACC28", "time_span": "month", "mean": "37.63" }, { - "item": "Delta_InProgress_Closed_AUTH18_all_time", + "item": "delta_inprogress_closed_AUTH18_all_time", "control_type": "AUTH18", "time_span": "all_time", "mean": "13.25" }, { - "item": "Delta_InProgress_Closed_AUTH18_day", + "item": "delta_inprogress_closed_AUTH18_day", "control_type": "AUTH18", "time_span": "day", "mean": "14.11" }, { - "item": "Delta_InProgress_Closed_AUTH18_month", + "item": "delta_inprogress_closed_AUTH18_month", "control_type": "AUTH18", "time_span": "month", "mean": "15.13" }, { - "item": "Delta_InProgress_Closed_AUTH42_all_time", + "item": "delta_inprogress_closed_AUTH42_all_time", "control_type": "AUTH42", "time_span": "all_time", "mean": "17.24" }, { - "item": "Delta_InProgress_Closed_AUTH42_day", + "item": "delta_inprogress_closed_AUTH42_day", "control_type": "AUTH42", "time_span": "day", "mean": "23.72" }, { - "item": "Delta_InProgress_Closed_AUTH42_month", + "item": "delta_inprogress_closed_AUTH42_month", "control_type": "AUTH42", "time_span": "month", "mean": "20.0" }, { - "item": "Delta_New_Assign_ACC03_all_time", + "item": "delta_new_assign_ACC03_all_time", "control_type": "ACC03", "time_span": "all_time", "mean": "21.32" }, { - "item": "Delta_New_Assign_ACC03_day", + "item": "delta_new_assign_ACC03_day", "control_type": "ACC03", "time_span": "day", "mean": "24.62" }, { - "item": "Delta_New_Assign_ACC03_month", + "item": "delta_new_assign_ACC03_month", "control_type": "ACC03", "time_span": "month", "mean": "24.13" }, { - "item": "Delta_New_Assign_ACC17_all_time", + "item": "delta_new_assign_ACC17_all_time", "control_type": "ACC17", "time_span": "all_time", "mean": "6.6" }, { - "item": "Delta_New_Assign_ACC17_day", + "item": "delta_new_assign_ACC17_day", "control_type": "ACC17", "time_span": "day", "mean": "9.27" }, { - "item": "Delta_New_Assign_ACC17_month", + "item": "delta_new_assign_ACC17_month", "control_type": "ACC17", "time_span": "month", "mean": "7.5" }, { - "item": "Delta_New_Assign_ACC28_all_time", + "item": "delta_new_assign_ACC28_all_time", "control_type": "ACC28", "time_span": "all_time", "mean": "3.63" }, { - "item": "Delta_New_Assign_ACC28_day", + "item": "delta_new_assign_ACC28_day", "control_type": "ACC28", "time_span": "day", "mean": "4.06" }, { - "item": "Delta_New_Assign_ACC28_month", + "item": "delta_new_assign_ACC28_month", "control_type": "ACC28", "time_span": "month", "mean": "3.98" }, { - "item": "Delta_New_Assign_AUTH18_all_time", + "item": "delta_new_assign_AUTH18_all_time", "control_type": "AUTH18", "time_span": "all_time", "mean": "30.32" }, { - "item": "Delta_New_Assign_AUTH18_day", + "item": "delta_new_assign_AUTH18_day", "control_type": "AUTH18", "time_span": "day", "mean": "42.98" }, { - "item": "Delta_New_Assign_AUTH18_month", + "item": "delta_new_assign_AUTH18_month", "control_type": "AUTH18", "time_span": "month", "mean": "35.04" }, { - "item": "Delta_New_Assign_AUTH42_all_time", + "item": "delta_new_assign_AUTH42_all_time", "control_type": "AUTH42", "time_span": "all_time", "mean": "26.3" }, { - "item": "Delta_New_Assign_AUTH42_day", + "item": "delta_new_assign_AUTH42_day", "control_type": "AUTH42", "time_span": "day", "mean": "34.65" }, { - "item": "Delta_New_Assign_AUTH42_month", + "item": "delta_new_assign_AUTH42_month", "control_type": "AUTH42", "time_span": "month", "mean": "30.48" }, { - "item": "Delta_New_Closed_ACC03_all_time", + "item": "delta_new_closed_ACC03_all_time", "control_type": "ACC03", "time_span": "all_time", "mean": "62.76" }, { - "item": "Delta_New_Closed_ACC03_day", + "item": "delta_new_closed_ACC03_day", "control_type": "ACC03", "time_span": "day", "mean": "78.77" }, { - "item": "Delta_New_Closed_ACC03_month", + "item": "delta_new_closed_ACC03_month", "control_type": "ACC03", "time_span": "month", "mean": "71.55" }, { - "item": "Delta_New_Closed_ACC17_all_time", + "item": "delta_new_closed_ACC17_all_time", "control_type": "ACC17", "time_span": "all_time", "mean": "28.64" }, { - "item": "Delta_New_Closed_ACC17_day", + "item": "delta_new_closed_ACC17_day", "control_type": "ACC17", "time_span": "day", "mean": "37.16" }, { - "item": "Delta_New_Closed_ACC17_month", + "item": "delta_new_closed_ACC17_month", "control_type": "ACC17", "time_span": "month", "mean": "32.98" }, { - "item": "Delta_New_Closed_ACC28_all_time", + "item": "delta_new_closed_ACC28_all_time", "control_type": "ACC28", "time_span": "all_time", "mean": "41.56" }, { - "item": "Delta_New_Closed_ACC28_day", + "item": "delta_new_closed_ACC28_day", "control_type": "ACC28", "time_span": "day", "mean": "51.37" }, { - "item": "Delta_New_Closed_ACC28_month", + "item": "delta_new_closed_ACC28_month", "control_type": "ACC28", "time_span": "month", "mean": "47.59" }, { - "item": "Delta_New_Closed_AUTH18_all_time", + "item": "delta_new_closed_AUTH18_all_time", "control_type": "AUTH18", "time_span": "all_time", "mean": "53.47" }, { - "item": "Delta_New_Closed_AUTH18_day", + "item": "delta_new_closed_AUTH18_day", "control_type": "AUTH18", "time_span": "day", "mean": "72.46" }, { - "item": "Delta_New_Closed_AUTH18_month", + "item": "delta_new_closed_AUTH18_month", "control_type": "AUTH18", "time_span": "month", "mean": "61.63" }, { - "item": "Delta_New_Closed_AUTH42_all_time", + "item": "delta_new_closed_AUTH42_all_time", "control_type": "AUTH42", "time_span": "all_time", "mean": "72.69" }, { - "item": "Delta_New_Closed_AUTH42_day", + "item": "delta_new_closed_AUTH42_day", "control_type": "AUTH42", "time_span": "day", "mean": "105.19" }, { - "item": "Delta_New_Closed_AUTH42_month", + "item": "delta_new_closed_AUTH42_month", "control_type": "AUTH42", "time_span": "month", "mean": "84.33" diff --git a/queueless-MC/simulations/generation_distributions.json b/queueless-MC/simulations/generation_distributions.json index f2b4ac5..ded2ff9 100644 --- a/queueless-MC/simulations/generation_distributions.json +++ b/queueless-MC/simulations/generation_distributions.json @@ -1,4332 +1 @@ -{ - "ACC17": [ - 1, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 3, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "AUTH18": [ - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 2, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "ACC03": [ - 1, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 2, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 4, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "AUTH42": [ - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 4, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "ACC28": [ - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 2, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ] -} \ No newline at end of file +{"AUTH18": [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], "ACC17": [1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], "ACC03": [1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], "ACC28": [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], "AUTH42": [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]} \ No newline at end of file diff --git a/queueless-MC/simulations/remediation_distributions.json b/queueless-MC/simulations/remediation_distributions.json index fef5f1b..59682ab 100644 --- a/queueless-MC/simulations/remediation_distributions.json +++ b/queueless-MC/simulations/remediation_distributions.json @@ -1,41 +1 @@ -{ - "ACC17": [ - 47.333, - 1.696, - 1.783, - 42.018, - 35.287, - 34.173, - 5.173 - ], - "AUTH18": [ - 74.457, - 33.176, - 2.871, - 70.471 - ], - "ACC03": [ - 19.678, - 2.041, - 23.809, - 5.736, - 23.8, - 0.49, - 8.0, - 3.518, - 23.826, - 78.768 - ], - "AUTH42": [ - 105.192, - 87.86, - 86.292, - 86.242, - 0.499 - ], - "ACC28": [ - 51.366, - 4.16, - 28.611 - ] -} \ No newline at end of file +{"AUTH18": [33.176, 70.471, 74.457, 2.871], "ACC17": [1.783, 35.287, 5.173, 47.333, 1.696, 42.018, 34.173], "ACC03": [23.809, 23.826, 5.736, 3.518, 78.768, 0.49, 2.041, 8.0, 19.678, 23.8], "ACC28": [4.16, 51.366, 28.611], "AUTH42": [0.499, 86.292, 87.86, 86.242, 105.192]} \ No newline at end of file diff --git a/queueless-MC/utils/FastWorkflowFunctions.py b/queueless-MC/utils/FastWorkflowFunctions.py index 9114022..7d61b2b 100644 --- a/queueless-MC/utils/FastWorkflowFunctions.py +++ b/queueless-MC/utils/FastWorkflowFunctions.py @@ -42,10 +42,6 @@ def run_fastworkflow_functions(self): self.generated_per_day() self.remediated_per_day() self.state_deltas() - # self.delta_new_assign() - # self.delta_assign_inprogress() - # self.delta_inprogress_closed() - # self.delta_new_closed() return self.sub_dict def generated_per_day(self): @@ -80,45 +76,4 @@ def state_deltas(self): value = np.round(np.mean(list(self.timedeltas_dict[self.control_type][items[i]].values())[indx:]), 2) self.update_sub_dict_deltas(item, 'month', value) # all time - self.update_sub_dict_deltas(item, 'all_time', np.round(np.mean(list(self.timedeltas_dict[self.control_type][items[i]].values())), 2)) - - # def delta_new_assign(self): - # item = 'delta_new_assign' - # self.update_sub_dict_deltas(item, '1', self.sub_deltas_df.filter(pl.col('Date_Assign').is_between(self.current_date-datetime.timedelta(days=1), - # self.current_date, - # closed = 'both')).mean()['Delta_New_Assign'][0]) - # self.update_sub_dict_deltas(item, '2', self.sub_deltas_df.filter(pl.col('Date_Assign').is_between(self.current_date-datetime.timedelta(days=90), - # self.current_date, - # closed = 'both')).mean()['Delta_New_Assign'][0]) - # self.update_sub_dict_deltas(item, '3', self.sub_deltas_df.mean()['Delta_New_Assign'][0]) - - - # def delta_assign_inprogress(self): - # item = 'delta_assign_inprogress' - # self.update_sub_dict_deltas(item, '1', self.sub_deltas_df.filter(pl.col('Date_InProgress').is_between(self.current_date-datetime.timedelta(days=1), - # self.current_date, - # closed = 'both')).mean()['Delta_Assign_InProgress'][0]) - # self.update_sub_dict_deltas(item, '2', self.sub_deltas_df.filter(pl.col('Date_InProgress').is_between(self.current_date-datetime.timedelta(days=90), - # self.current_date, - # closed = 'both')).mean()['Delta_Assign_InProgress'][0]) - # self.update_sub_dict_deltas(item, '3', self.sub_deltas_df.mean()['Delta_Assign_InProgress'][0]) - - # def delta_inprogress_closed(self): - # item = 'delta_inprogress_closed' - # self.update_sub_dict_deltas(item, '1', self.sub_deltas_df.filter(pl.col('Date_Closed').is_between(self.current_date-datetime.timedelta(days=1), - # self.current_date, - # closed = 'both')).mean()['Delta_InProgress_Closed'][0]) - # self.update_sub_dict_deltas(item, '2', self.sub_deltas_df.filter(pl.col('Date_Closed').is_between(self.current_date-datetime.timedelta(days=90), - # self.current_date, - # closed = 'both')).mean()['Delta_InProgress_Closed'][0]) - # self.update_sub_dict_deltas(item, '3', self.sub_deltas_df.mean()['Delta_InProgress_Closed'][0]) - - # def delta_new_closed(self): - # item = 'delta_new_closed' - # self.update_sub_dict_deltas(item, '1', self.sub_deltas_df.filter(pl.col('Date_Closed').is_between(self.current_date-datetime.timedelta(days=1), - # self.current_date, - # closed = 'both')).mean()['Delta_New_Closed'][0]) - # self.update_sub_dict_deltas(item, '2', self.sub_deltas_df.filter(pl.col('Date_Closed').is_between(self.current_date-datetime.timedelta(days=90), - # self.current_date, - # closed = 'both')).mean()['Delta_New_Closed'][0]) - # self.update_sub_dict_deltas(item, '3', self.sub_deltas_df.mean()['Delta_New_Closed'][0]) \ No newline at end of file + self.update_sub_dict_deltas(item, 'all_time', np.round(np.mean(list(self.timedeltas_dict[self.control_type][items[i]].values())), 2)) \ No newline at end of file diff --git a/queueless-MC/utils/VisualizationFunctions.py b/queueless-MC/utils/VisualizationFunctions.py index 3aca3a7..f590964 100644 --- a/queueless-MC/utils/VisualizationFunctions.py +++ b/queueless-MC/utils/VisualizationFunctions.py @@ -33,9 +33,17 @@ def visualize_histograms_theory(self, fig, axs, index, data, label=None, title=N return fig, axs def visualize_timeline(self, fig, axs, index, xdata, ydata, ylabel=None, title=None): - axs[index].plot(xdata, ydata, 'k-o', markersize=6) + axs[index].plot(xdata, ydata, 'k-', linewidth=1.5) + axs[index].plot(xdata, ydata, 'o', linewidth=1.5, color='black', markersize=8) + axs[index].plot(xdata, ydata, 'o', linewidth=1.5, color='#E24500', markersize=6) if ylabel: - axs[index].set_ylabel(ylabel, **self.csfont) + axs[index].set_ylabel(ylabel, fontsize=10, **self.csfont) if title: axs[index].set_title(title, loc='left', fontsize=10, **self.csfont) + # ydata_unique = np.unique(ydata, return_index=True) + # xdata_reduced = list(set([xdata[x] for x in ydata_unique[1]] + xdata[::5])) + xdata_reduced = xdata[::3] + axs[index].set_xticks(xdata_reduced) + axs[index].set_xticklabels(xdata_reduced, rotation=-45, fontsize=8, ha="left", **self.csfont) + # axs[index].grid(axis='x', color='#8C97C4', alpha=0.5, linestyle='-', linewidth=1) return fig, axs \ No newline at end of file