diff --git a/v1/machine_maintenance/.gitignore b/v1/machine_maintenance/.gitignore new file mode 100644 index 00000000..b6651b36 --- /dev/null +++ b/v1/machine_maintenance/.gitignore @@ -0,0 +1,13 @@ +# Python +__pycache__/ +*.pyc +.venv/ +*.egg-info/ +build/ + +# RAI / engine local artifacts +raiconfig.yaml +metadata.json +debug.jsonl +spans.jsonl +dev_run/ diff --git a/v1/machine_maintenance/README.md b/v1/machine_maintenance/README.md new file mode 100644 index 00000000..ce891256 --- /dev/null +++ b/v1/machine_maintenance/README.md @@ -0,0 +1,346 @@ +--- +title: "Machine Maintenance" +description: "A multi-reasoner template that chains querying, rules, graph analysis, predictive scoring, and prescriptive optimization to diagnose plant performance, classify machine risk, find producibility bottlenecks, rank forward failure risk, and schedule preventive maintenance under technician-coverage limits." +featured: false +experience_level: intermediate +industry: "Manufacturing" +reasoning_types: + - Graph + - Predictive + - Prescriptive + - Rules-based +tags: + - Multi-Reasoner + - Chained Reasoning + - Scheduling + - Maintenance + - Manufacturing + - OEE + - Risk Classification + - Bottleneck Analysis +--- + +## What this template is for + +Manufacturing reliability teams have to decide **which machines to maintain, when, and with which technician** — under a fixed maintenance-bay limit and a thin bench of qualified technicians. Get it wrong and a critical machine fails unplanned, or a plant's only on-site specialist becomes a single point of failure. The hard part is that no single view answers the question: plant OEE shows where output is lost but not what will fail next, failure predictions rank risk but ignore who can do the work, and a feasible schedule can still hide a concentration risk that one resignation would expose. + +This template works the problem end to end on a 50-machine, 3-plant, 12-period operation. **It chains five reasoning stages over one ontology — querying to diagnose plant performance, rules to classify machine risk, graph analysis to find producibility bottlenecks, predictive scoring to rank forward failure risk, and prescriptive optimization to schedule maintenance and stress-test it.** Each stage writes its findings back to the model, so the next stage builds on what the last one learned. + +## Who this is for + +- Data scientists and analysts learning to chain multiple RelationalAI reasoners over one ontology +- Manufacturing and reliability teams building preventive-maintenance and risk-classification workflows +- Anyone wanting a worked multi-reasoner example on a realistic operational dataset + +Readers are assumed comfortable reading Python; domain terms (OEE, betweenness centrality, the maintenance horizon) are explained inline. + +## What you'll build + +- An ontology over machines, technicians, qualifications, products, production runs, downtime events, failure predictions, and machine-product capabilities +- Querying-stage metrics: OEE by plant, downtime by fault and plant, waste rates, technician coverage +- A per-machine `risk_tier` derived from business rules +- A betweenness-centrality bottleneck ranking over the machine-product graph +- A forward failure-risk ranking from the bundled predictions (skippable, or a live GNN) +- A preventive-maintenance schedule plus a technician-availability what-if + +## What's included + +- `machine_maintenance.py` — the five-stage multi-reasoner script +- `runbook.md` — a prompt-by-prompt walkthrough of the five-stage chain, with the real figures each stage produces +- `data/` — the bundled sample data (15 CSVs) +- `pyproject.toml` — package configuration and dependencies + +## Prerequisites + +### Access +- A Snowflake account that has the RAI Native App installed. +- A Snowflake user with permissions to access the RAI Native App. + +### Tools +- Python >= 3.10 + +## Quickstart + +1. Download ZIP: + ```bash + curl -O https://docs.relational.ai/templates/zips/v1/machine_maintenance.zip + unzip machine_maintenance.zip + cd machine_maintenance + ``` + > [!TIP] + > You can also download the template ZIP using the "Download ZIP" button at the top of this page. + +2. Create venv: + ```bash + python -m venv .venv + source .venv/bin/activate + python -m pip install --upgrade pip + ``` + +3. Install: + ```bash + python -m pip install . + ``` + +4. Configure: + ```bash + rai init + ``` + +5. Run: + ```bash + python machine_maintenance.py + ``` + + Each stage prints its findings. The first lines look like: + + ```text + -- OEE by plant -- + Plant_C: availability 97.7% performance 81.7% quality 98.2% OEE 78.3% + ``` + + See `runbook.md` for the full walkthrough and output. + +## Template structure + +```text +. +├── README.md +├── runbook.md +├── pyproject.toml +├── machine_maintenance.py +└── data/ + ├── machines.csv + ├── technicians.csv + ├── qualifications.csv + ├── products.csv + ├── production_runs.csv + ├── machine_product_capabilities.csv + ├── downtime_events.csv + ├── fault_types.csv + ├── failure_predictions.csv + ├── sensors.csv + ├── sensor_readings.csv + ├── travel.csv + ├── training_options.csv + ├── availability.csv + └── degradation.csv +``` + +## Sample data + +The bundled CSVs are a sample manufacturing dataset: + +| File | Rows | Description | +|---|---|---| +| `machines.csv` | 50 | Machines across 3 plants and 5 types (Turbine, Generator, Pump, Compressor, Motor) | +| `technicians.csv` | 20 | Technicians with skill level, base location, and rate | +| `qualifications.csv` | 32 | Which technicians are qualified for which machine type | +| `products.csv` | 8 | Products manufactured | +| `production_runs.csv` | 844 | Per-run planned/actual/good/waste quantities and speeds | +| `machine_product_capabilities.csv` | 120 | Which machines can produce which products | +| `downtime_events.csv` | 353 | Downtime events with fault name, duration, and planned flag | +| `fault_types.csv` | 15 | Fault catalog (name, category, MTTR/MTBF) | +| `failure_predictions.csv` | 600 | Per-machine, per-period failure probability and predicted mode | +| `sensors.csv` / `sensor_readings.csv` | 200 / 2,400 | Sensor catalog and readings with anomaly flags | +| `travel.csv` | 9 | Inter-location travel hours and cost | +| `training_options.csv` | 41 | Cross-training cost and duration per technician/type | +| `availability.csv` | 240 | Per-technician, per-period availability | +| `degradation.csv` | 5 | Per-type degradation rate and maintenance reset factor | + +The five-stage script loads `machines`, `technicians`, `qualifications`, `products`, `production_runs`, `machine_product_capabilities`, `downtime_events`, and `failure_predictions`. The remaining files — `fault_types`, `sensors`/`sensor_readings`, `travel`, `training_options`, `availability`, `degradation` — ship for the extensions in [Customize](#customize-this-template) and richer modeling of your own. + +## Model overview + +One shared ontology threads all five stages. Each stage reads concepts and properties earlier stages wrote, and writes new ones for downstream stages. + +- **Key entities**: `Machine`, `Technician`, `Qualification`, `Product`, `ProductionRun`, `DowntimeEvent`, `FailurePrediction`, `MachineProductCapability`, and a generated `Period`; plus the derived `MachinePeriod` (the schedule decision space) and `MaintenancePlan` (singleton plan headline). +- **Primary identifiers**: string ids on the base entities (`machine_id`, `technician_id`, `product_id`, `run_id`, `event_id`, `prediction_id`); composite keys on `Qualification` (`technician_id` + `machine_type`), `MachineProductCapability` (`machine_id` + `product_id`), and `MachinePeriod` (`machine_id` + period); integer `pid` on `Period`. +- **Important invariants**: `failure_probability` is a fraction in `[0, 1]`; `criticality` is an integer from 1 to 5; `is_planned` is 0 or 1; durations, quantities, and costs are non-negative; `Machine.risk_tier` is one of Critical, Elevated, or Standard; the prescriptive decision variables are binary. + +### Concepts + +**`Machine`** — the 50 machines under management. Stages 2–4 enrich it with risk, bottleneck, and coverage properties. + +| Property | Type | Identifying? | Notes | +|---|---|---|---| +| `machine_id` | String | Yes | From `data/machines.csv` | +| `machine_type`, `facility`, `location` | String | No | Type (Turbine/Generator/Pump/Compressor/Motor), plant, plant city | +| `remaining_useful_life`, `failure_probability` | Float | No | Remaining useful life; static per-machine failure probability | +| `criticality` | Integer | No | Business impact, 1 to 5 | +| `risk_tier` | String | No | **Rules stage** — Critical / Elevated / Standard | +| `bottleneck` | Float | No | **Graph stage** — betweenness centrality | + +**`Technician`** — the 20 maintenance technicians. + +| Property | Type | Identifying? | Notes | +|---|---|---|---| +| `technician_id` | String | Yes | From `data/technicians.csv` | +| `base_location`, `skill_level` | String | No | Home plant city; skill band | +| `hourly_rate`, `max_weekly_hours` | Float / Integer | No | Labor capacity | + +**`Qualification`** — which technicians can service which machine type. + +| Property | Type | Identifying? | Notes | +|---|---|---|---| +| `technician_id` + `machine_type` | String | Yes | Composite key from `data/qualifications.csv` | +| `technician` | Relationship | — | Link to `Technician` | + +**`Product`** — the 8 manufactured products. + +| Property | Type | Identifying? | Notes | +|---|---|---|---| +| `product_id` | String | Yes | From `data/products.csv` | +| `product_name` | String | No | Human-readable name | + +**`ProductionRun`** — per-run output; feeds OEE and waste. + +| Property | Type | Identifying? | Notes | +|---|---|---|---| +| `run_id` | String | Yes | From `data/production_runs.csv` | +| `machine`, `product` | Relationship | — | Links to `Machine` / `Product` | +| `period_int` | Integer | No | Period, 1 to 12 | +| `actual_quantity`, `good_quantity`, `waste_quantity` | Integer | No | Quality and waste inputs | +| `actual_speed`, `target_speed` | Float | No | OEE performance inputs | + +**`DowntimeEvent`** — downtime occurrences. + +| Property | Type | Identifying? | Notes | +|---|---|---|---| +| `event_id` | String | Yes | From `data/downtime_events.csv` | +| `machine` | Relationship | — | Link to `Machine` | +| `fault_name` | String | No | Specific fault | +| `duration_minutes` | Integer | No | Downtime length | +| `is_planned` | Integer | No | 0 = unplanned (counts against availability) | + +**`FailurePrediction`** — per-machine, per-period failure forecast (pre-loaded). + +| Property | Type | Identifying? | Notes | +|---|---|---|---| +| `prediction_id` | String | Yes | From `data/failure_predictions.csv` | +| `machine_id_str`, `period_int` | String / Integer | No | Machine and period | +| `failure_probability`, `predicted_failure_mode` | Float / String | No | Predictive-stage inputs | + +**`MachineProductCapability`** — which machines can produce which products (the graph edges). + +| Property | Type | Identifying? | Notes | +|---|---|---|---| +| `machine_id` + `product_id` | String | Yes | Composite key from `data/machine_product_capabilities.csv` | +| `machine`, `product` | Relationship | — | Links to `Machine` / `Product` | + +**`Period`** — planning periods 1 to 12, generated in code (no CSV). + +**`MachinePeriod`** — the machine-by-period maintenance decision space (prescriptive stage); carries the binary `x_maintain` decision. + +**`MaintenancePlan`** — a singleton written after the solve, holding the objective, machines scheduled, and periods used. + +## How it works + +The script runs five stages in order — querying, rules, graph, predictive, prescriptive — each writing its findings back to the shared model. + +### 1. Querying +Per-plant OEE combines a performance leg (average of actual-versus-target speed) and a quality leg (good versus actual quantity) from production runs with an availability leg from unplanned downtime against a planned base of 480 minutes per run. The legs are aggregated per plant, then multiplied: + +```python +oee["availability"] = (oee["n_runs"] * OEE_PLANNED_MIN_PER_RUN - oee["unplanned_dt"]) / ( + oee["n_runs"] * OEE_PLANNED_MIN_PER_RUN +) +oee["oee"] = oee["availability"] * oee["performance"] * oee["quality"] +``` + +Further queries rank downtime by fault and plant, surface the highest forward failure risk, compute waste rates by machine-product, and count qualified technicians per machine type. + +### 2. Rules +Three boolean flags combine into a single `Machine.risk_tier`. Each flag is a derived relationship — for example, chronic downtime fires above the event threshold: + +```python +Machine.is_chronic = model.Relationship(f"{Machine} has chronic downtime") +model.where(Machine.downtime_event_count > CHRONIC_DOWNTIME_THRESHOLD).define(Machine.is_chronic()) +``` + +A machine with all three flags is Critical, exactly two is Elevated, otherwise Standard. + +### 3. Graph +A bipartite machine-product graph is built from `machine_product_capabilities`, and betweenness centrality ranks machines by how much production routing flows through them — the producibility bottlenecks: + +```python +prod_graph = Graph(model, directed=False, weighted=False) +model.where( + MachineProductCapability.machine(_GM), MachineProductCapability.product(_GP) +).define(prod_graph.Edge.new(src=_GM, dst=_GP)) +prod_graph.Node.bottleneck_raw = prod_graph.betweenness_centrality() +``` + +### 4. Predictive +Forward failure risk comes from the bundled pre-computed `failure_predictions` by default — no training step — so the predictive question is answerable out of the box. The stage is controlled by `PREDICTIVE_MODE` at the top of the script: `"preloaded"` (default), `"skip"` to omit the stage entirely, or `"live"` to wire a GNN over the sensor and downtime history (see _Customize_). Nothing downstream depends on this stage — the Stage 5 schedule reads each machine's own `failure_probability`, not these forward predictions — so `"skip"` leaves every other result unchanged: + +```python +PREDICTIVE_MODE = "preloaded" # "preloaded" | "skip" | "live" +... +elif PREDICTIVE_MODE == "preloaded": + fail_p12 = model.where(FailurePrediction.period_int == PERIOD_HORIZON).select( + FailurePrediction.machine_id_str.alias("machine_id"), + FailurePrediction.predicted_failure_mode.alias("mode"), + FailurePrediction.failure_probability.alias("fp"), + ).to_df().sort_values("fp", ascending=False) +``` + +### 5. Prescriptive +A binary `MachinePeriod.x_maintain` decides which machine is maintained in which period. Each machine gets at most one slot and only if coverage is feasible (Turbine work requires an on-site qualified technician), and each period is capped at five jobs: + +```python +prob.satisfy( + model.require( + aggs.sum(MachinePeriod.x_maintain).per(Period).where(MachinePeriod.period(Period)) <= 5 + ), + name=["bay", Period.pid], +) +``` + +The objective prioritizes high failure-probability, high-criticality work in earlier periods. A second solve removes a key technician to show which machines lose coverage. The result is persisted as a `MaintenancePlan` headline so it stays queryable after the run. + +## Customize this template + +### Use your own data +Replace the CSVs in `data/` with your own machines, technicians, production, and downtime records (matching the column headers). Concept definitions bind directly to the CSV columns. + +### Tune parameters +The thresholds at the top of `machine_maintenance.py` — period horizon, per-period bay limit, chronic/high-risk/overdue cutoffs — are constants you can adjust to your operation. + +### Extend the model +Add reasoners or stages: cluster machines by shared technicians, train a GNN on the sensor/downtime history for failure prediction (set `PREDICTIVE_MODE = "live"`), or add cross-training recommendations from `training_options` to relieve the coverage bottlenecks the what-if surfaces. + +### Scale up / productionize +- Swap the `data/` CSV bundle for `model.Table(...)` reads against your Snowflake tables — the concept definitions stay the same — so the model runs on live operational data. +- Lengthen `PERIOD_HORIZON` and raise the per-period bay limit to match a real maintenance calendar; the prescriptive solve scales with the engine's solve budget. +- For larger schedules, run the prescriptive stage on a gurobi-enabled engine; the formulation is unchanged. + +## Troubleshooting + +
+ModuleNotFoundError + +Make sure you activated the virtual environment and ran `python -m pip install .` to install dependencies listed in `pyproject.toml`. +
+ +
+Connection or authentication errors + +Run `rai init` to configure your Snowflake connection. Verify that the RAI Native App is installed and your user has the required permissions. +
+ +## Learn more + +### Core concepts +- [Multi-reasoner workflows](https://docs.relational.ai/) — chaining reasoners and accreting enrichments on one ontology. + +### Language & modeling reference +- [PyRel v1 query language](https://docs.relational.ai/) — `model.where(...)`, `aggs`, and `.define()`. + +### Reasoner reference +- [Graph reasoner](https://docs.relational.ai/) — node/edge construction and centrality algorithms. +- [Prescriptive reasoner](https://docs.relational.ai/) — the `Problem` API, decision variables, constraints, and objectives. + +## Support + +- File issues at the RelationalAI templates repository. diff --git a/v1/machine_maintenance/data/availability.csv b/v1/machine_maintenance/data/availability.csv new file mode 100644 index 00000000..bfab277e --- /dev/null +++ b/v1/machine_maintenance/data/availability.csv @@ -0,0 +1,241 @@ +technician_id,period,available,availability_reason +T001,1,0.0,Vacation +T001,2,1.0,Available +T001,3,0.5,Training +T001,4,0.0,Training +T001,5,0.5,Training +T001,6,1.0,Available +T001,7,0.5,Onboarding +T001,8,0.8,Vacation +T001,9,0.8,Onboarding +T001,10,1.0,Available +T001,11,0.8,Onboarding +T001,12,0.5,Onboarding +T002,1,1.0,Available +T002,2,0.8,Onboarding +T002,3,1.0,Available +T002,4,0.8,Training +T002,5,1.0,Available +T002,6,1.0,Available +T002,7,1.0,Available +T002,8,1.0,Available +T002,9,1.0,Available +T002,10,0.8,Onboarding +T002,11,1.0,Available +T002,12,1.0,Available +T003,1,0.0,Vacation +T003,2,1.0,Available +T003,3,1.0,Available +T003,4,0.5,Onboarding +T003,5,1.0,Available +T003,6,0.0,Onboarding +T003,7,1.0,Available +T003,8,1.0,Available +T003,9,1.0,Available +T003,10,0.8,Onboarding +T003,11,1.0,Available +T003,12,1.0,Available +T004,1,1.0,Available +T004,2,1.0,Available +T004,3,1.0,Available +T004,4,0.8,Training +T004,5,1.0,Available +T004,6,0.8,Vacation +T004,7,0.8,Vacation +T004,8,0.8,Training +T004,9,1.0,Available +T004,10,1.0,Available +T004,11,1.0,Available +T004,12,1.0,Available +T005,7,1.0,Available +T005,2,0.8,Vacation +T005,3,0.5,Vacation +T005,4,1.0,Available +T005,5,1.0,Available +T005,6,1.0,Available +T005,1,1.0,Available +T005,8,1.0,Available +T005,9,1.0,Available +T005,10,0.5,Vacation +T005,11,0.8,Training +T005,12,1.0,Available +T006,1,1.0,Available +T006,2,1.0,Available +T006,3,1.0,Available +T006,4,1.0,Available +T006,5,1.0,Available +T006,6,1.0,Available +T006,7,1.0,Available +T006,8,1.0,Available +T006,9,1.0,Available +T006,10,1.0,Available +T006,11,1.0,Available +T006,12,0.5,Vacation +T007,7,1.0,Available +T007,2,1.0,Available +T007,3,1.0,Available +T007,4,1.0,Available +T007,5,1.0,Available +T007,6,0.8,Training +T007,1,1.0,Available +T007,8,1.0,Available +T007,9,1.0,Available +T007,10,1.0,Available +T007,11,1.0,Available +T007,12,1.0,Available +T008,7,1.0,Available +T008,2,1.0,Available +T008,3,0.5,Vacation +T008,4,1.0,Available +T008,5,1.0,Available +T008,6,1.0,Available +T008,1,0.8,Training +T008,8,1.0,Available +T008,9,1.0,Available +T008,10,0.8,Training +T008,11,0.8,Training +T008,12,1.0,Available +T009,1,0.0,Vacation +T009,2,1.0,Available +T009,3,1.0,Available +T009,4,0.5,Training +T009,5,1.0,Available +T009,6,0.8,Vacation +T009,7,1.0,Available +T009,8,1.0,Available +T009,9,1.0,Available +T009,10,0.8,Onboarding +T009,11,1.0,Available +T009,12,0.8,Vacation +T010,1,1.0,Available +T010,2,0.5,Onboarding +T010,3,0.5,Vacation +T010,4,0.5,Onboarding +T010,5,1.0,Available +T010,6,1.0,Available +T010,7,1.0,Available +T010,8,0.8,Vacation +T010,9,1.0,Available +T010,10,1.0,Available +T010,11,1.0,Available +T010,12,0.8,Training +T011,1,1.0,Available +T011,2,1.0,Available +T011,3,1.0,Available +T011,4,1.0,Available +T011,5,1.0,Available +T011,6,1.0,Available +T011,7,0.8,Training +T011,8,1.0,Available +T011,9,1.0,Available +T011,10,1.0,Available +T011,11,1.0,Available +T011,12,0.8,Onboarding +T012,1,0.5,Vacation +T012,2,0.5,Training +T012,3,0.5,Vacation +T012,4,1.0,Available +T012,5,1.0,Available +T012,6,1.0,Available +T012,7,0.8,Onboarding +T012,8,1.0,Available +T012,9,0.8,Vacation +T012,10,0.5,Onboarding +T012,11,1.0,Available +T012,12,1.0,Available +T013,1,1.0,Available +T013,2,1.0,Available +T013,3,1.0,Available +T013,4,1.0,Available +T013,5,1.0,Available +T013,6,1.0,Available +T013,7,1.0,Available +T013,8,1.0,Available +T013,9,1.0,Available +T013,10,1.0,Available +T013,11,1.0,Available +T013,12,1.0,Available +T014,1,1.0,Available +T014,2,1.0,Available +T014,3,1.0,Available +T014,4,1.0,Available +T014,5,1.0,Available +T014,6,1.0,Available +T014,7,1.0,Available +T014,8,0.8,Onboarding +T014,9,1.0,Available +T014,10,0.0,Onboarding +T014,11,1.0,Available +T014,12,1.0,Available +T015,1,1.0,Available +T015,2,1.0,Available +T015,3,0.0,Onboarding +T015,4,1.0,Available +T015,5,1.0,Available +T015,6,0.0,Training +T015,7,0.8,Training +T015,8,1.0,Available +T015,9,1.0,Available +T015,10,1.0,Available +T015,11,1.0,Available +T015,12,1.0,Available +T016,1,1.0,Available +T016,2,1.0,Available +T016,3,1.0,Available +T016,4,0.8,Training +T016,5,1.0,Available +T016,6,0.0,Vacation +T016,7,1.0,Available +T016,8,0.8,Onboarding +T016,9,1.0,Available +T016,10,1.0,Available +T016,11,1.0,Available +T016,12,1.0,Available +T017,1,0.0,Onboarding +T017,2,0.5,Training +T017,3,1.0,Available +T017,4,1.0,Available +T017,5,1.0,Available +T017,6,1.0,Available +T017,7,0.8,Vacation +T017,8,1.0,Available +T017,9,1.0,Available +T017,10,0.0,Training +T017,11,1.0,Available +T017,12,1.0,Available +T018,1,1.0,Available +T018,2,1.0,Available +T018,3,1.0,Available +T018,4,0.8,Onboarding +T018,5,1.0,Available +T018,6,0.0,Vacation +T018,7,0.5,Onboarding +T018,8,0.8,Onboarding +T018,9,1.0,Available +T018,10,1.0,Available +T018,11,1.0,Available +T018,12,1.0,Available +T019,1,0.5,Onboarding +T019,2,1.0,Available +T019,3,0.8,Vacation +T019,4,1.0,Available +T019,5,0.5,Training +T019,6,1.0,Available +T019,7,1.0,Available +T019,8,0.8,Vacation +T019,9,1.0,Available +T019,10,1.0,Available +T019,11,1.0,Available +T019,12,0.5,Training +T020,1,1.0,Available +T020,2,1.0,Available +T020,3,1.0,Available +T020,4,1.0,Available +T020,5,1.0,Available +T020,6,0.5,Vacation +T020,7,1.0,Available +T020,8,0.5,Training +T020,9,1.0,Available +T020,10,1.0,Available +T020,11,1.0,Available +T020,12,1.0,Available diff --git a/v1/machine_maintenance/data/degradation.csv b/v1/machine_maintenance/data/degradation.csv new file mode 100644 index 00000000..6494e541 --- /dev/null +++ b/v1/machine_maintenance/data/degradation.csv @@ -0,0 +1,6 @@ +machine_type,degradation_rate_per_period,maintenance_reset_factor +Compressor,0.038,0.8 +Generator,0.042,0.9 +Motor,0.025,0.7 +Pump,0.03,0.75 +Turbine,0.045,0.85 diff --git a/v1/machine_maintenance/data/downtime_events.csv b/v1/machine_maintenance/data/downtime_events.csv new file mode 100644 index 00000000..7db4872c --- /dev/null +++ b/v1/machine_maintenance/data/downtime_events.csv @@ -0,0 +1,354 @@ +event_id,machine_id,shift_id,period,fault_type_id,fault_name,reason_l1,reason_l2,reason_l3,duration_minutes,is_planned +DT0001,M001,SHIFT_SWING,1,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,64,0 +DT0002,M001,SHIFT_DAY,1,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,50,0 +DT0003,M001,SHIFT_SWING,2,FT13,Corrosion,Material,Surface,Corrosion,61,0 +DT0004,M001,SHIFT_NIGHT,3,FT03,Gear Wear,Mechanical,Drive Train,Gear Wear,61,0 +DT0005,M001,SHIFT_SWING,3,FT10,Pressure Loss,Process,Fluid,Pressure Loss,44,0 +DT0006,M001,SHIFT_DAY,4,FT02,Shaft Misalignment,Mechanical,Rotating Equipment,Shaft Misalignment,76,0 +DT0007,M001,SHIFT_DAY,4,FT13,Corrosion,Material,Surface,Corrosion,68,1 +DT0008,M001,SHIFT_NIGHT,4,FT02,Shaft Misalignment,Mechanical,Rotating Equipment,Shaft Misalignment,87,0 +DT0009,M001,SHIFT_NIGHT,5,FT02,Shaft Misalignment,Mechanical,Rotating Equipment,Shaft Misalignment,88,0 +DT0010,M001,SHIFT_DAY,5,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,34,1 +DT0011,M001,SHIFT_SWING,6,FT09,Overheating,Process,Thermal,Overheating,58,0 +DT0012,M001,SHIFT_SWING,6,FT09,Overheating,Process,Thermal,Overheating,28,0 +DT0013,M001,SHIFT_DAY,6,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,73,0 +DT0014,M001,SHIFT_DAY,7,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,117,0 +DT0015,M001,SHIFT_NIGHT,8,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,121,0 +DT0016,M001,SHIFT_SWING,8,FT02,Shaft Misalignment,Mechanical,Rotating Equipment,Shaft Misalignment,71,0 +DT0017,M001,SHIFT_NIGHT,8,FT13,Corrosion,Material,Surface,Corrosion,67,0 +DT0018,M001,SHIFT_SWING,9,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,85,0 +DT0019,M001,SHIFT_DAY,9,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,84,0 +DT0020,M001,SHIFT_DAY,10,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,89,0 +DT0021,M001,SHIFT_NIGHT,11,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,91,0 +DT0022,M001,SHIFT_DAY,12,FT03,Gear Wear,Mechanical,Drive Train,Gear Wear,40,0 +DT0023,M001,SHIFT_DAY,12,FT09,Overheating,Process,Thermal,Overheating,75,0 +DT0024,M002,SHIFT_NIGHT,5,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,59,0 +DT0025,M002,SHIFT_NIGHT,8,FT09,Overheating,Process,Thermal,Overheating,115,1 +DT0026,M003,SHIFT_SWING,1,FT03,Gear Wear,Mechanical,Drive Train,Gear Wear,61,0 +DT0027,M003,SHIFT_DAY,2,FT10,Pressure Loss,Process,Fluid,Pressure Loss,33,0 +DT0028,M003,SHIFT_SWING,2,FT09,Overheating,Process,Thermal,Overheating,56,1 +DT0029,M003,SHIFT_SWING,3,FT03,Gear Wear,Mechanical,Drive Train,Gear Wear,20,0 +DT0030,M003,SHIFT_SWING,3,FT02,Shaft Misalignment,Mechanical,Rotating Equipment,Shaft Misalignment,22,0 +DT0031,M003,SHIFT_DAY,3,FT03,Gear Wear,Mechanical,Drive Train,Gear Wear,23,0 +DT0032,M003,SHIFT_SWING,4,FT09,Overheating,Process,Thermal,Overheating,54,0 +DT0033,M003,SHIFT_DAY,5,FT09,Overheating,Process,Thermal,Overheating,38,0 +DT0034,M003,SHIFT_NIGHT,6,FT02,Shaft Misalignment,Mechanical,Rotating Equipment,Shaft Misalignment,42,0 +DT0035,M003,SHIFT_SWING,7,FT10,Pressure Loss,Process,Fluid,Pressure Loss,27,0 +DT0036,M003,SHIFT_SWING,7,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,16,0 +DT0037,M003,SHIFT_SWING,8,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,30,0 +DT0038,M003,SHIFT_SWING,8,FT10,Pressure Loss,Process,Fluid,Pressure Loss,34,0 +DT0039,M003,SHIFT_NIGHT,8,FT03,Gear Wear,Mechanical,Drive Train,Gear Wear,34,0 +DT0040,M003,SHIFT_SWING,9,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,24,0 +DT0041,M003,SHIFT_DAY,9,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,30,0 +DT0042,M003,SHIFT_SWING,10,FT10,Pressure Loss,Process,Fluid,Pressure Loss,24,0 +DT0043,M003,SHIFT_DAY,10,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,18,0 +DT0044,M003,SHIFT_NIGHT,11,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,64,0 +DT0045,M003,SHIFT_SWING,12,FT10,Pressure Loss,Process,Fluid,Pressure Loss,40,0 +DT0046,M004,SHIFT_DAY,2,FT09,Overheating,Process,Thermal,Overheating,86,1 +DT0047,M004,SHIFT_DAY,7,FT02,Shaft Misalignment,Mechanical,Rotating Equipment,Shaft Misalignment,57,0 +DT0048,M005,SHIFT_SWING,5,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,22,0 +DT0049,M006,SHIFT_NIGHT,1,FT03,Gear Wear,Mechanical,Drive Train,Gear Wear,42,1 +DT0050,M006,SHIFT_DAY,2,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,44,0 +DT0051,M006,SHIFT_SWING,3,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,34,0 +DT0052,M006,SHIFT_NIGHT,3,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,42,0 +DT0053,M006,SHIFT_DAY,4,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,55,0 +DT0054,M006,SHIFT_NIGHT,5,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,44,0 +DT0055,M006,SHIFT_DAY,6,FT02,Shaft Misalignment,Mechanical,Rotating Equipment,Shaft Misalignment,47,1 +DT0056,M006,SHIFT_NIGHT,6,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,42,0 +DT0057,M006,SHIFT_NIGHT,6,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,78,0 +DT0058,M006,SHIFT_DAY,7,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,107,0 +DT0059,M006,SHIFT_DAY,7,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,88,0 +DT0060,M006,SHIFT_DAY,8,FT13,Corrosion,Material,Surface,Corrosion,27,0 +DT0061,M006,SHIFT_NIGHT,8,FT10,Pressure Loss,Process,Fluid,Pressure Loss,45,0 +DT0062,M006,SHIFT_SWING,9,FT13,Corrosion,Material,Surface,Corrosion,32,0 +DT0063,M006,SHIFT_SWING,9,FT09,Overheating,Process,Thermal,Overheating,63,1 +DT0064,M006,SHIFT_DAY,10,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,43,0 +DT0065,M006,SHIFT_NIGHT,10,FT09,Overheating,Process,Thermal,Overheating,47,1 +DT0066,M006,SHIFT_SWING,10,FT02,Shaft Misalignment,Mechanical,Rotating Equipment,Shaft Misalignment,31,0 +DT0067,M006,SHIFT_DAY,11,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,80,0 +DT0068,M006,SHIFT_DAY,11,FT02,Shaft Misalignment,Mechanical,Rotating Equipment,Shaft Misalignment,81,0 +DT0069,M006,SHIFT_SWING,12,FT03,Gear Wear,Mechanical,Drive Train,Gear Wear,94,0 +DT0070,M006,SHIFT_DAY,12,FT13,Corrosion,Material,Surface,Corrosion,51,0 +DT0071,M006,SHIFT_DAY,12,FT09,Overheating,Process,Thermal,Overheating,75,1 +DT0072,M007,SHIFT_DAY,3,FT13,Corrosion,Material,Surface,Corrosion,95,0 +DT0073,M007,SHIFT_SWING,4,FT02,Shaft Misalignment,Mechanical,Rotating Equipment,Shaft Misalignment,94,1 +DT0074,M007,SHIFT_SWING,7,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,74,0 +DT0075,M008,SHIFT_DAY,5,FT09,Overheating,Process,Thermal,Overheating,27,1 +DT0076,M008,SHIFT_SWING,9,FT02,Shaft Misalignment,Mechanical,Rotating Equipment,Shaft Misalignment,41,0 +DT0077,M008,SHIFT_SWING,11,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,64,0 +DT0078,M009,SHIFT_SWING,8,FT09,Overheating,Process,Thermal,Overheating,92,0 +DT0079,M009,SHIFT_SWING,11,FT02,Shaft Misalignment,Mechanical,Rotating Equipment,Shaft Misalignment,68,0 +DT0080,M009,SHIFT_SWING,12,FT09,Overheating,Process,Thermal,Overheating,49,0 +DT0081,M010,SHIFT_NIGHT,1,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,43,0 +DT0082,M010,SHIFT_SWING,5,FT02,Shaft Misalignment,Mechanical,Rotating Equipment,Shaft Misalignment,40,0 +DT0083,M010,SHIFT_SWING,9,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,69,0 +DT0084,M011,SHIFT_SWING,1,FT09,Overheating,Process,Thermal,Overheating,116,0 +DT0085,M011,SHIFT_NIGHT,1,FT10,Pressure Loss,Process,Fluid,Pressure Loss,39,0 +DT0086,M011,SHIFT_DAY,2,FT10,Pressure Loss,Process,Fluid,Pressure Loss,79,0 +DT0087,M011,SHIFT_SWING,3,FT15,Valve Fouling,Material,Wear Parts,Valve Fouling,58,0 +DT0088,M011,SHIFT_NIGHT,4,FT15,Valve Fouling,Material,Wear Parts,Valve Fouling,75,1 +DT0089,M011,SHIFT_SWING,4,FT15,Valve Fouling,Material,Wear Parts,Valve Fouling,66,0 +DT0090,M011,SHIFT_NIGHT,4,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,36,0 +DT0091,M011,SHIFT_DAY,5,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,81,0 +DT0092,M011,SHIFT_SWING,5,FT15,Valve Fouling,Material,Wear Parts,Valve Fouling,57,0 +DT0093,M011,SHIFT_DAY,6,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,130,0 +DT0094,M011,SHIFT_SWING,6,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,145,0 +DT0095,M011,SHIFT_NIGHT,6,FT10,Pressure Loss,Process,Fluid,Pressure Loss,85,0 +DT0096,M011,SHIFT_NIGHT,7,FT15,Valve Fouling,Material,Wear Parts,Valve Fouling,30,0 +DT0097,M011,SHIFT_SWING,8,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,79,0 +DT0098,M011,SHIFT_SWING,9,FT10,Pressure Loss,Process,Fluid,Pressure Loss,43,0 +DT0099,M011,SHIFT_DAY,10,FT09,Overheating,Process,Thermal,Overheating,96,0 +DT0100,M011,SHIFT_DAY,10,FT10,Pressure Loss,Process,Fluid,Pressure Loss,56,0 +DT0101,M011,SHIFT_SWING,11,FT08,Control Board,Electrical,Instrumentation,Control Board,79,0 +DT0102,M011,SHIFT_SWING,12,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,95,0 +DT0103,M011,SHIFT_DAY,12,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,33,0 +DT0104,M012,SHIFT_SWING,1,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,112,0 +DT0105,M012,SHIFT_NIGHT,7,FT15,Valve Fouling,Material,Wear Parts,Valve Fouling,37,0 +DT0106,M012,SHIFT_SWING,9,FT15,Valve Fouling,Material,Wear Parts,Valve Fouling,43,0 +DT0107,M013,SHIFT_SWING,1,FT15,Valve Fouling,Material,Wear Parts,Valve Fouling,30,0 +DT0108,M013,SHIFT_DAY,5,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,76,0 +DT0109,M013,SHIFT_SWING,6,FT10,Pressure Loss,Process,Fluid,Pressure Loss,67,0 +DT0110,M014,SHIFT_NIGHT,1,FT09,Overheating,Process,Thermal,Overheating,22,0 +DT0111,M014,SHIFT_SWING,1,FT08,Control Board,Electrical,Instrumentation,Control Board,49,0 +DT0112,M014,SHIFT_SWING,2,FT10,Pressure Loss,Process,Fluid,Pressure Loss,39,0 +DT0113,M014,SHIFT_DAY,3,FT09,Overheating,Process,Thermal,Overheating,51,0 +DT0114,M014,SHIFT_DAY,3,FT15,Valve Fouling,Material,Wear Parts,Valve Fouling,18,0 +DT0115,M014,SHIFT_SWING,4,FT15,Valve Fouling,Material,Wear Parts,Valve Fouling,36,0 +DT0116,M014,SHIFT_NIGHT,4,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,20,0 +DT0117,M014,SHIFT_DAY,5,FT08,Control Board,Electrical,Instrumentation,Control Board,47,0 +DT0118,M014,SHIFT_DAY,5,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,50,0 +DT0119,M014,SHIFT_DAY,6,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,63,0 +DT0120,M014,SHIFT_NIGHT,6,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,25,0 +DT0121,M014,SHIFT_NIGHT,6,FT10,Pressure Loss,Process,Fluid,Pressure Loss,36,1 +DT0122,M014,SHIFT_SWING,7,FT02,Shaft Misalignment,Mechanical,Rotating Equipment,Shaft Misalignment,31,0 +DT0123,M014,SHIFT_DAY,7,FT02,Shaft Misalignment,Mechanical,Rotating Equipment,Shaft Misalignment,28,0 +DT0124,M014,SHIFT_SWING,7,FT02,Shaft Misalignment,Mechanical,Rotating Equipment,Shaft Misalignment,22,0 +DT0125,M014,SHIFT_DAY,8,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,32,0 +DT0126,M014,SHIFT_SWING,8,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,66,0 +DT0127,M014,SHIFT_NIGHT,8,FT09,Overheating,Process,Thermal,Overheating,55,0 +DT0128,M014,SHIFT_SWING,9,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,30,0 +DT0129,M014,SHIFT_NIGHT,9,FT15,Valve Fouling,Material,Wear Parts,Valve Fouling,37,0 +DT0130,M014,SHIFT_DAY,9,FT09,Overheating,Process,Thermal,Overheating,18,0 +DT0131,M014,SHIFT_DAY,10,FT09,Overheating,Process,Thermal,Overheating,46,0 +DT0132,M014,SHIFT_DAY,11,FT15,Valve Fouling,Material,Wear Parts,Valve Fouling,17,0 +DT0133,M014,SHIFT_NIGHT,11,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,47,0 +DT0134,M014,SHIFT_SWING,12,FT10,Pressure Loss,Process,Fluid,Pressure Loss,40,0 +DT0135,M014,SHIFT_DAY,12,FT02,Shaft Misalignment,Mechanical,Rotating Equipment,Shaft Misalignment,21,0 +DT0136,M015,SHIFT_SWING,3,FT09,Overheating,Process,Thermal,Overheating,39,0 +DT0137,M015,SHIFT_SWING,12,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,35,0 +DT0138,M016,SHIFT_DAY,1,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,141,0 +DT0139,M016,SHIFT_SWING,1,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,116,0 +DT0140,M016,SHIFT_DAY,2,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,67,0 +DT0141,M016,SHIFT_SWING,2,FT15,Valve Fouling,Material,Wear Parts,Valve Fouling,87,0 +DT0142,M016,SHIFT_DAY,2,FT09,Overheating,Process,Thermal,Overheating,42,0 +DT0143,M016,SHIFT_SWING,3,FT15,Valve Fouling,Material,Wear Parts,Valve Fouling,74,0 +DT0144,M016,SHIFT_SWING,3,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,30,0 +DT0145,M016,SHIFT_NIGHT,3,FT09,Overheating,Process,Thermal,Overheating,52,0 +DT0146,M016,SHIFT_SWING,4,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,53,0 +DT0147,M016,SHIFT_SWING,4,FT09,Overheating,Process,Thermal,Overheating,49,0 +DT0148,M016,SHIFT_DAY,5,FT15,Valve Fouling,Material,Wear Parts,Valve Fouling,32,1 +DT0149,M016,SHIFT_SWING,5,FT08,Control Board,Electrical,Instrumentation,Control Board,59,0 +DT0150,M016,SHIFT_NIGHT,6,FT08,Control Board,Electrical,Instrumentation,Control Board,68,0 +DT0151,M016,SHIFT_SWING,6,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,93,0 +DT0152,M016,SHIFT_NIGHT,6,FT09,Overheating,Process,Thermal,Overheating,63,1 +DT0153,M016,SHIFT_SWING,7,FT15,Valve Fouling,Material,Wear Parts,Valve Fouling,61,0 +DT0154,M016,SHIFT_DAY,8,FT15,Valve Fouling,Material,Wear Parts,Valve Fouling,63,0 +DT0155,M016,SHIFT_SWING,9,FT08,Control Board,Electrical,Instrumentation,Control Board,61,0 +DT0156,M016,SHIFT_NIGHT,10,FT15,Valve Fouling,Material,Wear Parts,Valve Fouling,88,0 +DT0157,M016,SHIFT_SWING,10,FT08,Control Board,Electrical,Instrumentation,Control Board,62,0 +DT0158,M016,SHIFT_DAY,10,FT15,Valve Fouling,Material,Wear Parts,Valve Fouling,97,0 +DT0159,M016,SHIFT_DAY,11,FT10,Pressure Loss,Process,Fluid,Pressure Loss,51,1 +DT0160,M016,SHIFT_SWING,11,FT15,Valve Fouling,Material,Wear Parts,Valve Fouling,28,0 +DT0161,M016,SHIFT_SWING,11,FT09,Overheating,Process,Thermal,Overheating,41,1 +DT0162,M016,SHIFT_SWING,12,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,66,1 +DT0163,M016,SHIFT_SWING,12,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,40,1 +DT0164,M017,SHIFT_SWING,2,FT15,Valve Fouling,Material,Wear Parts,Valve Fouling,62,0 +DT0165,M017,SHIFT_NIGHT,4,FT08,Control Board,Electrical,Instrumentation,Control Board,26,0 +DT0166,M017,SHIFT_SWING,6,FT09,Overheating,Process,Thermal,Overheating,39,1 +DT0167,M018,SHIFT_NIGHT,1,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,108,0 +DT0168,M018,SHIFT_NIGHT,6,FT10,Pressure Loss,Process,Fluid,Pressure Loss,44,0 +DT0169,M018,SHIFT_SWING,9,FT02,Shaft Misalignment,Mechanical,Rotating Equipment,Shaft Misalignment,77,0 +DT0170,M018,SHIFT_SWING,10,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,119,1 +DT0171,M019,SHIFT_SWING,3,FT15,Valve Fouling,Material,Wear Parts,Valve Fouling,28,0 +DT0172,M019,SHIFT_SWING,6,FT09,Overheating,Process,Thermal,Overheating,36,0 +DT0173,M019,SHIFT_SWING,9,FT15,Valve Fouling,Material,Wear Parts,Valve Fouling,21,0 +DT0174,M020,SHIFT_DAY,6,FT15,Valve Fouling,Material,Wear Parts,Valve Fouling,50,0 +DT0175,M020,SHIFT_SWING,11,FT09,Overheating,Process,Thermal,Overheating,32,0 +DT0176,M022,SHIFT_NIGHT,1,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,74,1 +DT0177,M022,SHIFT_DAY,1,FT10,Pressure Loss,Process,Fluid,Pressure Loss,53,0 +DT0178,M022,SHIFT_SWING,2,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,83,0 +DT0179,M022,SHIFT_SWING,3,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,105,0 +DT0180,M022,SHIFT_DAY,3,FT13,Corrosion,Material,Surface,Corrosion,83,0 +DT0181,M022,SHIFT_DAY,4,FT11,Flow Blockage,Process,Fluid,Flow Blockage,70,0 +DT0182,M022,SHIFT_DAY,4,FT14,Impeller Erosion,Material,Wear Parts,Impeller Erosion,70,0 +DT0183,M022,SHIFT_NIGHT,5,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,132,0 +DT0184,M022,SHIFT_NIGHT,5,FT11,Flow Blockage,Process,Fluid,Flow Blockage,56,0 +DT0185,M022,SHIFT_SWING,6,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,81,1 +DT0186,M022,SHIFT_DAY,6,FT14,Impeller Erosion,Material,Wear Parts,Impeller Erosion,51,0 +DT0187,M022,SHIFT_DAY,7,FT14,Impeller Erosion,Material,Wear Parts,Impeller Erosion,78,0 +DT0188,M022,SHIFT_DAY,8,FT11,Flow Blockage,Process,Fluid,Flow Blockage,65,1 +DT0189,M022,SHIFT_SWING,8,FT10,Pressure Loss,Process,Fluid,Pressure Loss,32,1 +DT0190,M022,SHIFT_SWING,9,FT14,Impeller Erosion,Material,Wear Parts,Impeller Erosion,99,0 +DT0191,M022,SHIFT_NIGHT,10,FT11,Flow Blockage,Process,Fluid,Flow Blockage,32,0 +DT0192,M022,SHIFT_DAY,10,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,54,0 +DT0193,M022,SHIFT_SWING,10,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,144,0 +DT0194,M022,SHIFT_SWING,11,FT11,Flow Blockage,Process,Fluid,Flow Blockage,37,0 +DT0195,M022,SHIFT_NIGHT,11,FT11,Flow Blockage,Process,Fluid,Flow Blockage,62,0 +DT0196,M022,SHIFT_DAY,12,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,33,0 +DT0197,M022,SHIFT_NIGHT,12,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,33,0 +DT0198,M022,SHIFT_NIGHT,12,FT11,Flow Blockage,Process,Fluid,Flow Blockage,49,0 +DT0199,M023,SHIFT_SWING,2,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,23,0 +DT0200,M024,SHIFT_DAY,7,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,70,0 +DT0201,M024,SHIFT_DAY,8,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,64,0 +DT0202,M025,SHIFT_NIGHT,3,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,57,1 +DT0203,M025,SHIFT_DAY,4,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,77,0 +DT0204,M026,SHIFT_SWING,3,FT14,Impeller Erosion,Material,Wear Parts,Impeller Erosion,65,0 +DT0205,M026,SHIFT_DAY,9,FT11,Flow Blockage,Process,Fluid,Flow Blockage,26,0 +DT0206,M027,SHIFT_DAY,5,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,63,1 +DT0207,M027,SHIFT_DAY,6,FT13,Corrosion,Material,Surface,Corrosion,68,0 +DT0208,M027,SHIFT_SWING,10,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,74,0 +DT0209,M028,SHIFT_SWING,1,FT10,Pressure Loss,Process,Fluid,Pressure Loss,32,0 +DT0210,M028,SHIFT_NIGHT,1,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,64,0 +DT0211,M028,SHIFT_DAY,2,FT14,Impeller Erosion,Material,Wear Parts,Impeller Erosion,47,0 +DT0212,M028,SHIFT_SWING,2,FT11,Flow Blockage,Process,Fluid,Flow Blockage,24,0 +DT0213,M028,SHIFT_DAY,3,FT14,Impeller Erosion,Material,Wear Parts,Impeller Erosion,39,0 +DT0214,M028,SHIFT_DAY,3,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,135,0 +DT0215,M028,SHIFT_NIGHT,3,FT13,Corrosion,Material,Surface,Corrosion,83,0 +DT0216,M028,SHIFT_SWING,4,FT10,Pressure Loss,Process,Fluid,Pressure Loss,68,0 +DT0217,M028,SHIFT_SWING,4,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,55,0 +DT0218,M028,SHIFT_NIGHT,5,FT14,Impeller Erosion,Material,Wear Parts,Impeller Erosion,71,0 +DT0219,M028,SHIFT_NIGHT,5,FT11,Flow Blockage,Process,Fluid,Flow Blockage,65,0 +DT0220,M028,SHIFT_DAY,6,FT10,Pressure Loss,Process,Fluid,Pressure Loss,65,0 +DT0221,M028,SHIFT_NIGHT,7,FT11,Flow Blockage,Process,Fluid,Flow Blockage,43,0 +DT0222,M028,SHIFT_DAY,8,FT13,Corrosion,Material,Surface,Corrosion,46,0 +DT0223,M028,SHIFT_DAY,9,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,78,1 +DT0224,M028,SHIFT_SWING,10,FT11,Flow Blockage,Process,Fluid,Flow Blockage,34,0 +DT0225,M028,SHIFT_DAY,10,FT13,Corrosion,Material,Surface,Corrosion,33,0 +DT0226,M028,SHIFT_NIGHT,11,FT11,Flow Blockage,Process,Fluid,Flow Blockage,27,0 +DT0227,M028,SHIFT_SWING,12,FT11,Flow Blockage,Process,Fluid,Flow Blockage,21,0 +DT0228,M028,SHIFT_NIGHT,12,FT10,Pressure Loss,Process,Fluid,Pressure Loss,87,0 +DT0229,M029,SHIFT_SWING,12,FT11,Flow Blockage,Process,Fluid,Flow Blockage,17,0 +DT0230,M030,SHIFT_DAY,1,FT12,Seal Degradation,Material,Wear Parts,Seal Degradation,51,1 +DT0231,M031,SHIFT_DAY,6,FT05,Motor Burnout,Electrical,Power System,Motor Burnout,84,0 +DT0232,M031,SHIFT_DAY,11,FT05,Motor Burnout,Electrical,Power System,Motor Burnout,72,0 +DT0233,M032,SHIFT_DAY,1,FT09,Overheating,Process,Thermal,Overheating,34,1 +DT0234,M032,SHIFT_DAY,2,FT02,Shaft Misalignment,Mechanical,Rotating Equipment,Shaft Misalignment,51,0 +DT0235,M032,SHIFT_SWING,3,FT09,Overheating,Process,Thermal,Overheating,35,0 +DT0236,M032,SHIFT_DAY,4,FT07,Sensor Failure,Electrical,Instrumentation,Sensor Failure,36,0 +DT0237,M032,SHIFT_SWING,5,FT05,Motor Burnout,Electrical,Power System,Motor Burnout,78,0 +DT0238,M032,SHIFT_NIGHT,6,FT07,Sensor Failure,Electrical,Instrumentation,Sensor Failure,35,0 +DT0239,M032,SHIFT_NIGHT,6,FT05,Motor Burnout,Electrical,Power System,Motor Burnout,46,0 +DT0240,M032,SHIFT_NIGHT,6,FT02,Shaft Misalignment,Mechanical,Rotating Equipment,Shaft Misalignment,63,0 +DT0241,M032,SHIFT_DAY,7,FT09,Overheating,Process,Thermal,Overheating,66,0 +DT0242,M032,SHIFT_NIGHT,7,FT02,Shaft Misalignment,Mechanical,Rotating Equipment,Shaft Misalignment,32,0 +DT0243,M032,SHIFT_NIGHT,8,FT09,Overheating,Process,Thermal,Overheating,105,1 +DT0244,M032,SHIFT_SWING,8,FT09,Overheating,Process,Thermal,Overheating,97,0 +DT0245,M032,SHIFT_NIGHT,9,FT09,Overheating,Process,Thermal,Overheating,47,0 +DT0246,M032,SHIFT_SWING,10,FT08,Control Board,Electrical,Instrumentation,Control Board,63,0 +DT0247,M032,SHIFT_NIGHT,10,FT05,Motor Burnout,Electrical,Power System,Motor Burnout,94,0 +DT0248,M032,SHIFT_NIGHT,11,FT07,Sensor Failure,Electrical,Instrumentation,Sensor Failure,26,0 +DT0249,M032,SHIFT_SWING,12,FT05,Motor Burnout,Electrical,Power System,Motor Burnout,83,0 +DT0250,M032,SHIFT_DAY,12,FT05,Motor Burnout,Electrical,Power System,Motor Burnout,113,0 +DT0251,M033,SHIFT_DAY,2,FT09,Overheating,Process,Thermal,Overheating,34,1 +DT0252,M033,SHIFT_SWING,3,FT06,Wiring Fault,Electrical,Power System,Wiring Fault,17,0 +DT0253,M033,SHIFT_NIGHT,7,FT08,Control Board,Electrical,Instrumentation,Control Board,20,1 +DT0254,M034,SHIFT_NIGHT,2,FT06,Wiring Fault,Electrical,Power System,Wiring Fault,60,0 +DT0255,M034,SHIFT_DAY,9,FT05,Motor Burnout,Electrical,Power System,Motor Burnout,78,0 +DT0256,M035,SHIFT_SWING,1,FT07,Sensor Failure,Electrical,Instrumentation,Sensor Failure,28,0 +DT0257,M035,SHIFT_DAY,1,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,92,0 +DT0258,M035,SHIFT_SWING,2,FT07,Sensor Failure,Electrical,Instrumentation,Sensor Failure,38,0 +DT0259,M035,SHIFT_SWING,2,FT09,Overheating,Process,Thermal,Overheating,34,0 +DT0260,M035,SHIFT_DAY,2,FT09,Overheating,Process,Thermal,Overheating,87,1 +DT0261,M035,SHIFT_NIGHT,3,FT02,Shaft Misalignment,Mechanical,Rotating Equipment,Shaft Misalignment,75,0 +DT0262,M035,SHIFT_NIGHT,3,FT02,Shaft Misalignment,Mechanical,Rotating Equipment,Shaft Misalignment,78,0 +DT0263,M035,SHIFT_NIGHT,3,FT06,Wiring Fault,Electrical,Power System,Wiring Fault,33,0 +DT0264,M035,SHIFT_DAY,4,FT02,Shaft Misalignment,Mechanical,Rotating Equipment,Shaft Misalignment,38,0 +DT0265,M035,SHIFT_NIGHT,5,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,61,0 +DT0266,M035,SHIFT_SWING,5,FT06,Wiring Fault,Electrical,Power System,Wiring Fault,67,0 +DT0267,M035,SHIFT_SWING,5,FT08,Control Board,Electrical,Instrumentation,Control Board,76,0 +DT0268,M035,SHIFT_NIGHT,6,FT02,Shaft Misalignment,Mechanical,Rotating Equipment,Shaft Misalignment,64,0 +DT0269,M035,SHIFT_DAY,6,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,53,0 +DT0270,M035,SHIFT_DAY,6,FT05,Motor Burnout,Electrical,Power System,Motor Burnout,34,0 +DT0271,M035,SHIFT_NIGHT,7,FT09,Overheating,Process,Thermal,Overheating,96,1 +DT0272,M035,SHIFT_NIGHT,7,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,108,1 +DT0273,M035,SHIFT_NIGHT,7,FT07,Sensor Failure,Electrical,Instrumentation,Sensor Failure,44,1 +DT0274,M035,SHIFT_SWING,8,FT02,Shaft Misalignment,Mechanical,Rotating Equipment,Shaft Misalignment,75,0 +DT0275,M035,SHIFT_DAY,8,FT07,Sensor Failure,Electrical,Instrumentation,Sensor Failure,45,1 +DT0276,M035,SHIFT_DAY,8,FT02,Shaft Misalignment,Mechanical,Rotating Equipment,Shaft Misalignment,43,0 +DT0277,M035,SHIFT_SWING,9,FT06,Wiring Fault,Electrical,Power System,Wiring Fault,82,0 +DT0278,M035,SHIFT_DAY,10,FT09,Overheating,Process,Thermal,Overheating,100,0 +DT0279,M035,SHIFT_SWING,10,FT02,Shaft Misalignment,Mechanical,Rotating Equipment,Shaft Misalignment,57,0 +DT0280,M035,SHIFT_NIGHT,11,FT09,Overheating,Process,Thermal,Overheating,31,0 +DT0281,M035,SHIFT_SWING,11,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,100,0 +DT0282,M035,SHIFT_NIGHT,12,FT09,Overheating,Process,Thermal,Overheating,88,0 +DT0283,M036,SHIFT_SWING,1,FT05,Motor Burnout,Electrical,Power System,Motor Burnout,21,0 +DT0284,M036,SHIFT_NIGHT,7,FT08,Control Board,Electrical,Instrumentation,Control Board,40,0 +DT0285,M037,SHIFT_SWING,1,FT08,Control Board,Electrical,Instrumentation,Control Board,48,0 +DT0286,M037,SHIFT_NIGHT,11,FT06,Wiring Fault,Electrical,Power System,Wiring Fault,24,0 +DT0287,M038,SHIFT_DAY,1,FT09,Overheating,Process,Thermal,Overheating,113,0 +DT0288,M038,SHIFT_SWING,3,FT09,Overheating,Process,Thermal,Overheating,33,0 +DT0289,M038,SHIFT_SWING,7,FT05,Motor Burnout,Electrical,Power System,Motor Burnout,55,0 +DT0290,M038,SHIFT_SWING,10,FT05,Motor Burnout,Electrical,Power System,Motor Burnout,89,0 +DT0291,M039,SHIFT_SWING,1,FT05,Motor Burnout,Electrical,Power System,Motor Burnout,19,0 +DT0292,M039,SHIFT_NIGHT,4,FT07,Sensor Failure,Electrical,Instrumentation,Sensor Failure,10,0 +DT0293,M039,SHIFT_SWING,5,FT09,Overheating,Process,Thermal,Overheating,42,0 +DT0294,M040,SHIFT_DAY,4,FT09,Overheating,Process,Thermal,Overheating,75,0 +DT0295,M040,SHIFT_DAY,6,FT05,Motor Burnout,Electrical,Power System,Motor Burnout,75,0 +DT0296,M040,SHIFT_SWING,9,FT09,Overheating,Process,Thermal,Overheating,52,0 +DT0297,M041,SHIFT_NIGHT,1,FT06,Wiring Fault,Electrical,Power System,Wiring Fault,43,0 +DT0298,M041,SHIFT_SWING,5,FT06,Wiring Fault,Electrical,Power System,Wiring Fault,38,0 +DT0299,M041,SHIFT_NIGHT,8,FT05,Motor Burnout,Electrical,Power System,Motor Burnout,93,0 +DT0300,M041,SHIFT_DAY,10,FT05,Motor Burnout,Electrical,Power System,Motor Burnout,100,0 +DT0301,M042,SHIFT_DAY,8,FT06,Wiring Fault,Electrical,Power System,Wiring Fault,74,0 +DT0302,M043,SHIFT_SWING,1,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,65,0 +DT0303,M043,SHIFT_DAY,2,FT06,Wiring Fault,Electrical,Power System,Wiring Fault,41,0 +DT0304,M043,SHIFT_DAY,2,FT05,Motor Burnout,Electrical,Power System,Motor Burnout,19,1 +DT0305,M043,SHIFT_SWING,3,FT04,Belt Snap,Mechanical,Drive Train,Belt Snap,34,1 +DT0306,M043,SHIFT_DAY,3,FT05,Motor Burnout,Electrical,Power System,Motor Burnout,28,0 +DT0307,M043,SHIFT_DAY,4,FT05,Motor Burnout,Electrical,Power System,Motor Burnout,60,0 +DT0308,M043,SHIFT_DAY,5,FT09,Overheating,Process,Thermal,Overheating,58,0 +DT0309,M043,SHIFT_SWING,6,FT04,Belt Snap,Mechanical,Drive Train,Belt Snap,33,0 +DT0310,M043,SHIFT_NIGHT,7,FT05,Motor Burnout,Electrical,Power System,Motor Burnout,58,0 +DT0311,M043,SHIFT_SWING,8,FT09,Overheating,Process,Thermal,Overheating,45,0 +DT0312,M043,SHIFT_DAY,8,FT05,Motor Burnout,Electrical,Power System,Motor Burnout,25,0 +DT0313,M043,SHIFT_NIGHT,9,FT06,Wiring Fault,Electrical,Power System,Wiring Fault,25,0 +DT0314,M043,SHIFT_NIGHT,10,FT07,Sensor Failure,Electrical,Instrumentation,Sensor Failure,26,0 +DT0315,M043,SHIFT_SWING,10,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,66,0 +DT0316,M043,SHIFT_NIGHT,11,FT06,Wiring Fault,Electrical,Power System,Wiring Fault,16,0 +DT0317,M043,SHIFT_DAY,11,FT09,Overheating,Process,Thermal,Overheating,26,0 +DT0318,M043,SHIFT_SWING,12,FT04,Belt Snap,Mechanical,Drive Train,Belt Snap,14,0 +DT0319,M043,SHIFT_SWING,12,FT04,Belt Snap,Mechanical,Drive Train,Belt Snap,23,0 +DT0320,M044,SHIFT_SWING,1,FT04,Belt Snap,Mechanical,Drive Train,Belt Snap,37,0 +DT0321,M044,SHIFT_DAY,7,FT05,Motor Burnout,Electrical,Power System,Motor Burnout,44,0 +DT0322,M045,SHIFT_SWING,2,FT05,Motor Burnout,Electrical,Power System,Motor Burnout,75,0 +DT0323,M045,SHIFT_SWING,3,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,75,0 +DT0324,M045,SHIFT_SWING,8,FT05,Motor Burnout,Electrical,Power System,Motor Burnout,93,0 +DT0325,M045,SHIFT_DAY,9,FT01,Bearing Failure,Mechanical,Rotating Equipment,Bearing Failure,97,0 +DT0326,M045,SHIFT_DAY,11,FT05,Motor Burnout,Electrical,Power System,Motor Burnout,37,0 +DT0327,M047,SHIFT_SWING,1,FT06,Wiring Fault,Electrical,Power System,Wiring Fault,74,0 +DT0328,M047,SHIFT_DAY,2,FT05,Motor Burnout,Electrical,Power System,Motor Burnout,80,0 +DT0329,M047,SHIFT_DAY,2,FT05,Motor Burnout,Electrical,Power System,Motor Burnout,85,0 +DT0330,M047,SHIFT_NIGHT,3,FT09,Overheating,Process,Thermal,Overheating,81,0 +DT0331,M047,SHIFT_DAY,3,FT06,Wiring Fault,Electrical,Power System,Wiring Fault,24,0 +DT0332,M047,SHIFT_NIGHT,4,FT06,Wiring Fault,Electrical,Power System,Wiring Fault,43,1 +DT0333,M047,SHIFT_SWING,4,FT05,Motor Burnout,Electrical,Power System,Motor Burnout,97,0 +DT0334,M047,SHIFT_SWING,4,FT05,Motor Burnout,Electrical,Power System,Motor Burnout,92,0 +DT0335,M047,SHIFT_NIGHT,5,FT04,Belt Snap,Mechanical,Drive Train,Belt Snap,32,0 +DT0336,M047,SHIFT_DAY,5,FT06,Wiring Fault,Electrical,Power System,Wiring Fault,21,0 +DT0337,M047,SHIFT_NIGHT,6,FT07,Sensor Failure,Electrical,Instrumentation,Sensor Failure,25,0 +DT0338,M047,SHIFT_SWING,7,FT04,Belt Snap,Mechanical,Drive Train,Belt Snap,31,0 +DT0339,M047,SHIFT_DAY,7,FT06,Wiring Fault,Electrical,Power System,Wiring Fault,48,0 +DT0340,M047,SHIFT_NIGHT,7,FT06,Wiring Fault,Electrical,Power System,Wiring Fault,72,0 +DT0341,M047,SHIFT_DAY,8,FT05,Motor Burnout,Electrical,Power System,Motor Burnout,72,0 +DT0342,M047,SHIFT_SWING,9,FT05,Motor Burnout,Electrical,Power System,Motor Burnout,44,0 +DT0343,M047,SHIFT_DAY,9,FT05,Motor Burnout,Electrical,Power System,Motor Burnout,80,0 +DT0344,M047,SHIFT_SWING,10,FT05,Motor Burnout,Electrical,Power System,Motor Burnout,54,0 +DT0345,M047,SHIFT_SWING,10,FT07,Sensor Failure,Electrical,Instrumentation,Sensor Failure,17,0 +DT0346,M047,SHIFT_DAY,11,FT07,Sensor Failure,Electrical,Instrumentation,Sensor Failure,44,0 +DT0347,M047,SHIFT_DAY,12,FT09,Overheating,Process,Thermal,Overheating,74,0 +DT0348,M048,SHIFT_DAY,5,FT05,Motor Burnout,Electrical,Power System,Motor Burnout,47,0 +DT0349,M048,SHIFT_SWING,7,FT06,Wiring Fault,Electrical,Power System,Wiring Fault,60,0 +DT0350,M048,SHIFT_NIGHT,10,FT09,Overheating,Process,Thermal,Overheating,70,0 +DT0351,M049,SHIFT_DAY,10,FT04,Belt Snap,Mechanical,Drive Train,Belt Snap,10,0 +DT0352,M050,SHIFT_SWING,9,FT05,Motor Burnout,Electrical,Power System,Motor Burnout,88,0 +DT0353,M050,SHIFT_DAY,10,FT05,Motor Burnout,Electrical,Power System,Motor Burnout,32,1 diff --git a/v1/machine_maintenance/data/failure_predictions.csv b/v1/machine_maintenance/data/failure_predictions.csv new file mode 100644 index 00000000..5e95ec96 --- /dev/null +++ b/v1/machine_maintenance/data/failure_predictions.csv @@ -0,0 +1,601 @@ +prediction_id,machine_id,period,failure_probability,predicted_failure_mode,confidence +FP0001,M001,1,0.069,bearing_wear,0.5 +FP0002,M001,2,0.089,bearing_wear,0.58 +FP0003,M001,3,0.147,overheating,0.65 +FP0004,M001,4,0.138,bearing_wear,0.57 +FP0005,M001,5,0.198,bearing_wear,0.64 +FP0006,M001,6,0.187,bearing_wear,0.57 +FP0007,M001,7,0.219,valve_stuck,0.65 +FP0008,M001,8,0.236,bearing_wear,0.59 +FP0009,M001,9,0.262,bearing_wear,0.66 +FP0010,M001,10,0.317,motor_burnout,0.77 +FP0011,M001,11,0.309,seal_leak,0.65 +FP0012,M001,12,0.346,bearing_wear,0.78 +FP0013,M002,1,0.02,bearing_wear,0.53 +FP0014,M002,2,0.031,bearing_wear,0.49 +FP0015,M002,3,0.028,seal_leak,0.48 +FP0016,M002,4,0.039,bearing_wear,0.56 +FP0017,M002,5,0.024,bearing_wear,0.58 +FP0018,M002,6,0.034,seal_leak,0.54 +FP0019,M002,7,0.033,rotor_imbalance,0.48 +FP0020,M002,8,0.028,bearing_wear,0.57 +FP0021,M002,9,0.048,electrical_fault,0.63 +FP0022,M002,10,0.051,bearing_wear,0.56 +FP0023,M002,11,0.056,bearing_wear,0.58 +FP0024,M002,12,0.042,bearing_wear,0.58 +FP0025,M003,1,0.05,bearing_wear,0.48 +FP0026,M003,2,0.08,bearing_wear,0.57 +FP0027,M003,3,0.072,bearing_wear,0.61 +FP0028,M003,4,0.074,bearing_wear,0.54 +FP0029,M003,5,0.09,bearing_wear,0.56 +FP0030,M003,6,0.112,bearing_wear,0.58 +FP0031,M003,7,0.111,bearing_wear,0.59 +FP0032,M003,8,0.11,bearing_wear,0.53 +FP0033,M003,9,0.123,bearing_wear,0.52 +FP0034,M003,10,0.119,bearing_wear,0.61 +FP0035,M003,11,0.136,bearing_wear,0.56 +FP0036,M003,12,0.16,valve_stuck,0.67 +FP0037,M004,1,0.071,valve_stuck,0.58 +FP0038,M004,2,0.066,bearing_wear,0.59 +FP0039,M004,3,0.074,bearing_wear,0.61 +FP0040,M004,4,0.058,bearing_wear,0.61 +FP0041,M004,5,0.091,bearing_wear,0.58 +FP0042,M004,6,0.084,bearing_wear,0.53 +FP0043,M004,7,0.065,bearing_wear,0.6 +FP0044,M004,8,0.067,bearing_wear,0.52 +FP0045,M004,9,0.104,bearing_wear,0.58 +FP0046,M004,10,0.102,bearing_wear,0.53 +FP0047,M004,11,0.091,overheating,0.62 +FP0048,M004,12,0.096,bearing_wear,0.65 +FP0049,M005,1,0.046,bearing_wear,0.56 +FP0050,M005,2,0.047,rotor_imbalance,0.62 +FP0051,M005,3,0.079,seal_leak,0.61 +FP0052,M005,4,0.057,bearing_wear,0.57 +FP0053,M005,5,0.091,bearing_wear,0.56 +FP0054,M005,6,0.098,electrical_fault,0.55 +FP0055,M005,7,0.101,rotor_imbalance,0.63 +FP0056,M005,8,0.072,bearing_wear,0.63 +FP0057,M005,9,0.09,valve_stuck,0.61 +FP0058,M005,10,0.111,bearing_wear,0.55 +FP0059,M005,11,0.102,bearing_wear,0.56 +FP0060,M005,12,0.107,seal_leak,0.59 +FP0061,M006,1,0.088,bearing_wear,0.52 +FP0062,M006,2,0.099,bearing_wear,0.59 +FP0063,M006,3,0.136,bearing_wear,0.64 +FP0064,M006,4,0.167,bearing_wear,0.68 +FP0065,M006,5,0.191,bearing_wear,0.57 +FP0066,M006,6,0.189,bearing_wear,0.59 +FP0067,M006,7,0.237,bearing_wear,0.64 +FP0068,M006,8,0.242,motor_burnout,0.63 +FP0069,M006,9,0.278,bearing_wear,0.68 +FP0070,M006,10,0.306,bearing_wear,0.72 +FP0071,M006,11,0.314,bearing_wear,0.7 +FP0072,M006,12,0.35,motor_burnout,0.76 +FP0073,M007,1,0.02,bearing_wear,0.52 +FP0074,M007,2,0.027,bearing_wear,0.61 +FP0075,M007,3,0.02,bearing_wear,0.49 +FP0076,M007,4,0.038,rotor_imbalance,0.6 +FP0077,M007,5,0.043,bearing_wear,0.57 +FP0078,M007,6,0.04,bearing_wear,0.56 +FP0079,M007,7,0.045,motor_burnout,0.54 +FP0080,M007,8,0.057,bearing_wear,0.63 +FP0081,M007,9,0.05,bearing_wear,0.49 +FP0082,M007,10,0.036,bearing_wear,0.5 +FP0083,M007,11,0.062,bearing_wear,0.56 +FP0084,M007,12,0.069,bearing_wear,0.63 +FP0085,M008,1,0.052,motor_burnout,0.55 +FP0086,M008,2,0.055,bearing_wear,0.6 +FP0087,M008,3,0.048,bearing_wear,0.51 +FP0088,M008,4,0.042,bearing_wear,0.54 +FP0089,M008,5,0.064,bearing_wear,0.52 +FP0090,M008,6,0.055,bearing_wear,0.54 +FP0091,M008,7,0.058,rotor_imbalance,0.63 +FP0092,M008,8,0.086,bearing_wear,0.52 +FP0093,M008,9,0.071,bearing_wear,0.59 +FP0094,M008,10,0.097,bearing_wear,0.51 +FP0095,M008,11,0.099,bearing_wear,0.63 +FP0096,M008,12,0.072,bearing_wear,0.6 +FP0097,M009,1,0.066,bearing_wear,0.61 +FP0098,M009,2,0.089,bearing_wear,0.58 +FP0099,M009,3,0.084,bearing_wear,0.55 +FP0100,M009,4,0.079,bearing_wear,0.64 +FP0101,M009,5,0.11,bearing_wear,0.61 +FP0102,M009,6,0.091,bearing_wear,0.54 +FP0103,M009,7,0.114,electrical_fault,0.6 +FP0104,M009,8,0.118,impeller_erosion,0.62 +FP0105,M009,9,0.131,bearing_wear,0.55 +FP0106,M009,10,0.116,bearing_wear,0.53 +FP0107,M009,11,0.103,overheating,0.6 +FP0108,M009,12,0.114,bearing_wear,0.58 +FP0109,M010,1,0.02,bearing_wear,0.46 +FP0110,M010,2,0.02,bearing_wear,0.56 +FP0111,M010,3,0.021,bearing_wear,0.57 +FP0112,M010,4,0.02,overheating,0.51 +FP0113,M010,5,0.031,bearing_wear,0.51 +FP0114,M010,6,0.044,bearing_wear,0.6 +FP0115,M010,7,0.02,bearing_wear,0.49 +FP0116,M010,8,0.044,motor_burnout,0.62 +FP0117,M010,9,0.024,bearing_wear,0.6 +FP0118,M010,10,0.053,bearing_wear,0.54 +FP0119,M010,11,0.063,bearing_wear,0.57 +FP0120,M010,12,0.034,bearing_wear,0.56 +FP0121,M011,1,0.213,motor_burnout,0.61 +FP0122,M011,2,0.241,valve_stuck,0.63 +FP0123,M011,3,0.266,seal_leak,0.63 +FP0124,M011,4,0.258,electrical_fault,0.62 +FP0125,M011,5,0.295,valve_stuck,0.64 +FP0126,M011,6,0.317,rotor_imbalance,0.74 +FP0127,M011,7,0.309,valve_stuck,0.67 +FP0128,M011,8,0.333,valve_stuck,0.79 +FP0129,M011,9,0.358,valve_stuck,0.7 +FP0130,M011,10,0.374,valve_stuck,0.7 +FP0131,M011,11,0.401,valve_stuck,0.79 +FP0132,M011,12,0.42,valve_stuck,0.79 +FP0133,M012,1,0.198,seal_leak,0.57 +FP0134,M012,2,0.195,valve_stuck,0.68 +FP0135,M012,3,0.221,seal_leak,0.68 +FP0136,M012,4,0.236,valve_stuck,0.66 +FP0137,M012,5,0.273,valve_stuck,0.63 +FP0138,M012,6,0.287,valve_stuck,0.66 +FP0139,M012,7,0.313,electrical_fault,0.68 +FP0140,M012,8,0.334,valve_stuck,0.66 +FP0141,M012,9,0.319,valve_stuck,0.65 +FP0142,M012,10,0.36,valve_stuck,0.75 +FP0143,M012,11,0.392,valve_stuck,0.77 +FP0144,M012,12,0.415,valve_stuck,0.82 +FP0145,M013,1,0.023,valve_stuck,0.58 +FP0146,M013,2,0.041,valve_stuck,0.54 +FP0147,M013,3,0.035,valve_stuck,0.55 +FP0148,M013,4,0.044,seal_leak,0.59 +FP0149,M013,5,0.027,valve_stuck,0.55 +FP0150,M013,6,0.047,seal_leak,0.59 +FP0151,M013,7,0.046,valve_stuck,0.51 +FP0152,M013,8,0.05,valve_stuck,0.54 +FP0153,M013,9,0.035,valve_stuck,0.61 +FP0154,M013,10,0.051,valve_stuck,0.55 +FP0155,M013,11,0.041,valve_stuck,0.49 +FP0156,M013,12,0.081,valve_stuck,0.54 +FP0157,M014,1,0.083,valve_stuck,0.59 +FP0158,M014,2,0.076,valve_stuck,0.58 +FP0159,M014,3,0.104,valve_stuck,0.55 +FP0160,M014,4,0.115,valve_stuck,0.58 +FP0161,M014,5,0.116,valve_stuck,0.64 +FP0162,M014,6,0.126,valve_stuck,0.66 +FP0163,M014,7,0.116,valve_stuck,0.6 +FP0164,M014,8,0.117,valve_stuck,0.54 +FP0165,M014,9,0.138,electrical_fault,0.59 +FP0166,M014,10,0.135,valve_stuck,0.63 +FP0167,M014,11,0.148,valve_stuck,0.64 +FP0168,M014,12,0.153,valve_stuck,0.56 +FP0169,M015,1,0.04,valve_stuck,0.55 +FP0170,M015,2,0.055,valve_stuck,0.51 +FP0171,M015,3,0.06,valve_stuck,0.55 +FP0172,M015,4,0.065,valve_stuck,0.62 +FP0173,M015,5,0.058,overheating,0.52 +FP0174,M015,6,0.056,valve_stuck,0.56 +FP0175,M015,7,0.044,valve_stuck,0.5 +FP0176,M015,8,0.061,motor_burnout,0.51 +FP0177,M015,9,0.069,overheating,0.53 +FP0178,M015,10,0.06,valve_stuck,0.52 +FP0179,M015,11,0.082,valve_stuck,0.56 +FP0180,M015,12,0.056,valve_stuck,0.56 +FP0181,M016,1,0.258,valve_stuck,0.72 +FP0182,M016,2,0.272,valve_stuck,0.69 +FP0183,M016,3,0.276,valve_stuck,0.74 +FP0184,M016,4,0.326,impeller_erosion,0.72 +FP0185,M016,5,0.324,valve_stuck,0.72 +FP0186,M016,6,0.337,impeller_erosion,0.7 +FP0187,M016,7,0.379,overheating,0.74 +FP0188,M016,8,0.376,overheating,0.72 +FP0189,M016,9,0.42,valve_stuck,0.73 +FP0190,M016,10,0.42,overheating,0.78 +FP0191,M016,11,0.42,valve_stuck,0.82 +FP0192,M016,12,0.42,valve_stuck,0.77 +FP0193,M017,1,0.033,valve_stuck,0.55 +FP0194,M017,2,0.035,valve_stuck,0.62 +FP0195,M017,3,0.032,valve_stuck,0.55 +FP0196,M017,4,0.041,valve_stuck,0.56 +FP0197,M017,5,0.041,valve_stuck,0.59 +FP0198,M017,6,0.041,valve_stuck,0.6 +FP0199,M017,7,0.033,valve_stuck,0.59 +FP0200,M017,8,0.069,valve_stuck,0.57 +FP0201,M017,9,0.066,bearing_wear,0.51 +FP0202,M017,10,0.076,valve_stuck,0.51 +FP0203,M017,11,0.046,impeller_erosion,0.49 +FP0204,M017,12,0.054,valve_stuck,0.57 +FP0205,M018,1,0.054,impeller_erosion,0.57 +FP0206,M018,2,0.049,valve_stuck,0.57 +FP0207,M018,3,0.069,rotor_imbalance,0.56 +FP0208,M018,4,0.042,valve_stuck,0.6 +FP0209,M018,5,0.048,valve_stuck,0.57 +FP0210,M018,6,0.061,valve_stuck,0.51 +FP0211,M018,7,0.044,valve_stuck,0.48 +FP0212,M018,8,0.052,impeller_erosion,0.53 +FP0213,M018,9,0.065,valve_stuck,0.57 +FP0214,M018,10,0.082,valve_stuck,0.51 +FP0215,M018,11,0.067,valve_stuck,0.54 +FP0216,M018,12,0.091,valve_stuck,0.65 +FP0217,M019,1,0.079,valve_stuck,0.5 +FP0218,M019,2,0.071,valve_stuck,0.58 +FP0219,M019,3,0.087,valve_stuck,0.52 +FP0220,M019,4,0.09,valve_stuck,0.58 +FP0221,M019,5,0.105,valve_stuck,0.58 +FP0222,M019,6,0.091,valve_stuck,0.54 +FP0223,M019,7,0.093,rotor_imbalance,0.64 +FP0224,M019,8,0.117,valve_stuck,0.56 +FP0225,M019,9,0.1,electrical_fault,0.61 +FP0226,M019,10,0.097,valve_stuck,0.65 +FP0227,M019,11,0.112,valve_stuck,0.64 +FP0228,M019,12,0.104,valve_stuck,0.61 +FP0229,M020,1,0.024,valve_stuck,0.6 +FP0230,M020,2,0.02,valve_stuck,0.6 +FP0231,M020,3,0.02,electrical_fault,0.54 +FP0232,M020,4,0.02,valve_stuck,0.59 +FP0233,M020,5,0.02,valve_stuck,0.5 +FP0234,M020,6,0.031,valve_stuck,0.48 +FP0235,M020,7,0.046,valve_stuck,0.58 +FP0236,M020,8,0.037,bearing_wear,0.6 +FP0237,M020,9,0.03,valve_stuck,0.6 +FP0238,M020,10,0.053,valve_stuck,0.52 +FP0239,M020,11,0.029,motor_burnout,0.53 +FP0240,M020,12,0.054,valve_stuck,0.56 +FP0241,M021,1,0.091,bearing_wear,0.58 +FP0242,M021,2,0.092,seal_leak,0.53 +FP0243,M021,3,0.118,seal_leak,0.59 +FP0244,M021,4,0.109,seal_leak,0.55 +FP0245,M021,5,0.107,seal_leak,0.61 +FP0246,M021,6,0.096,seal_leak,0.54 +FP0247,M021,7,0.107,seal_leak,0.57 +FP0248,M021,8,0.111,seal_leak,0.62 +FP0249,M021,9,0.108,motor_burnout,0.58 +FP0250,M021,10,0.118,electrical_fault,0.64 +FP0251,M021,11,0.127,impeller_erosion,0.65 +FP0252,M021,12,0.108,seal_leak,0.59 +FP0253,M022,1,0.074,seal_leak,0.51 +FP0254,M022,2,0.115,seal_leak,0.6 +FP0255,M022,3,0.098,seal_leak,0.55 +FP0256,M022,4,0.126,seal_leak,0.54 +FP0257,M022,5,0.104,seal_leak,0.55 +FP0258,M022,6,0.137,seal_leak,0.64 +FP0259,M022,7,0.12,seal_leak,0.61 +FP0260,M022,8,0.148,seal_leak,0.6 +FP0261,M022,9,0.136,seal_leak,0.62 +FP0262,M022,10,0.151,seal_leak,0.62 +FP0263,M022,11,0.173,seal_leak,0.6 +FP0264,M022,12,0.16,rotor_imbalance,0.68 +FP0265,M023,1,0.098,seal_leak,0.6 +FP0266,M023,2,0.091,seal_leak,0.63 +FP0267,M023,3,0.101,seal_leak,0.6 +FP0268,M023,4,0.124,seal_leak,0.55 +FP0269,M023,5,0.102,seal_leak,0.55 +FP0270,M023,6,0.106,seal_leak,0.55 +FP0271,M023,7,0.115,valve_stuck,0.63 +FP0272,M023,8,0.121,seal_leak,0.55 +FP0273,M023,9,0.136,seal_leak,0.57 +FP0274,M023,10,0.115,seal_leak,0.63 +FP0275,M023,11,0.115,seal_leak,0.53 +FP0276,M023,12,0.147,seal_leak,0.55 +FP0277,M024,1,0.11,seal_leak,0.67 +FP0278,M024,2,0.086,seal_leak,0.51 +FP0279,M024,3,0.121,seal_leak,0.56 +FP0280,M024,4,0.116,seal_leak,0.54 +FP0281,M024,5,0.11,seal_leak,0.52 +FP0282,M024,6,0.105,rotor_imbalance,0.58 +FP0283,M024,7,0.128,rotor_imbalance,0.55 +FP0284,M024,8,0.134,seal_leak,0.62 +FP0285,M024,9,0.116,seal_leak,0.65 +FP0286,M024,10,0.118,seal_leak,0.6 +FP0287,M024,11,0.139,seal_leak,0.57 +FP0288,M024,12,0.109,seal_leak,0.58 +FP0289,M025,1,0.02,seal_leak,0.54 +FP0290,M025,2,0.036,seal_leak,0.51 +FP0291,M025,3,0.029,seal_leak,0.54 +FP0292,M025,4,0.04,seal_leak,0.59 +FP0293,M025,5,0.045,seal_leak,0.6 +FP0294,M025,6,0.037,seal_leak,0.6 +FP0295,M025,7,0.035,seal_leak,0.58 +FP0296,M025,8,0.046,electrical_fault,0.52 +FP0297,M025,9,0.039,seal_leak,0.59 +FP0298,M025,10,0.061,motor_burnout,0.53 +FP0299,M025,11,0.057,impeller_erosion,0.51 +FP0300,M025,12,0.032,seal_leak,0.49 +FP0301,M026,1,0.038,seal_leak,0.58 +FP0302,M026,2,0.042,seal_leak,0.5 +FP0303,M026,3,0.064,seal_leak,0.63 +FP0304,M026,4,0.038,seal_leak,0.54 +FP0305,M026,5,0.03,seal_leak,0.47 +FP0306,M026,6,0.041,seal_leak,0.59 +FP0307,M026,7,0.054,seal_leak,0.59 +FP0308,M026,8,0.038,seal_leak,0.59 +FP0309,M026,9,0.045,seal_leak,0.54 +FP0310,M026,10,0.063,seal_leak,0.62 +FP0311,M026,11,0.054,seal_leak,0.48 +FP0312,M026,12,0.085,seal_leak,0.56 +FP0313,M027,1,0.051,seal_leak,0.63 +FP0314,M027,2,0.022,seal_leak,0.48 +FP0315,M027,3,0.043,seal_leak,0.53 +FP0316,M027,4,0.058,seal_leak,0.58 +FP0317,M027,5,0.023,overheating,0.5 +FP0318,M027,6,0.05,seal_leak,0.61 +FP0319,M027,7,0.061,seal_leak,0.5 +FP0320,M027,8,0.054,seal_leak,0.51 +FP0321,M027,9,0.042,seal_leak,0.59 +FP0322,M027,10,0.034,seal_leak,0.59 +FP0323,M027,11,0.055,seal_leak,0.54 +FP0324,M027,12,0.042,seal_leak,0.49 +FP0325,M028,1,0.327,bearing_wear,0.66 +FP0326,M028,2,0.343,seal_leak,0.77 +FP0327,M028,3,0.337,seal_leak,0.8 +FP0328,M028,4,0.379,rotor_imbalance,0.79 +FP0329,M028,5,0.363,seal_leak,0.78 +FP0330,M028,6,0.387,seal_leak,0.79 +FP0331,M028,7,0.414,seal_leak,0.77 +FP0332,M028,8,0.42,seal_leak,0.75 +FP0333,M028,9,0.42,seal_leak,0.71 +FP0334,M028,10,0.42,seal_leak,0.74 +FP0335,M028,11,0.42,seal_leak,0.8 +FP0336,M028,12,0.42,seal_leak,0.7 +FP0337,M029,1,0.039,electrical_fault,0.52 +FP0338,M029,2,0.02,impeller_erosion,0.49 +FP0339,M029,3,0.037,seal_leak,0.56 +FP0340,M029,4,0.025,seal_leak,0.48 +FP0341,M029,5,0.036,seal_leak,0.6 +FP0342,M029,6,0.022,electrical_fault,0.48 +FP0343,M029,7,0.027,seal_leak,0.56 +FP0344,M029,8,0.037,seal_leak,0.57 +FP0345,M029,9,0.048,seal_leak,0.51 +FP0346,M029,10,0.055,seal_leak,0.62 +FP0347,M029,11,0.055,overheating,0.55 +FP0348,M029,12,0.057,seal_leak,0.6 +FP0349,M030,1,0.1,bearing_wear,0.63 +FP0350,M030,2,0.077,seal_leak,0.51 +FP0351,M030,3,0.081,overheating,0.51 +FP0352,M030,4,0.08,seal_leak,0.53 +FP0353,M030,5,0.1,seal_leak,0.65 +FP0354,M030,6,0.098,seal_leak,0.62 +FP0355,M030,7,0.109,seal_leak,0.62 +FP0356,M030,8,0.109,seal_leak,0.53 +FP0357,M030,9,0.115,seal_leak,0.59 +FP0358,M030,10,0.112,seal_leak,0.61 +FP0359,M030,11,0.125,valve_stuck,0.65 +FP0360,M030,12,0.107,seal_leak,0.64 +FP0361,M031,1,0.086,rotor_imbalance,0.58 +FP0362,M031,2,0.092,rotor_imbalance,0.62 +FP0363,M031,3,0.094,rotor_imbalance,0.65 +FP0364,M031,4,0.083,rotor_imbalance,0.54 +FP0365,M031,5,0.087,rotor_imbalance,0.64 +FP0366,M031,6,0.09,electrical_fault,0.63 +FP0367,M031,7,0.094,motor_burnout,0.64 +FP0368,M031,8,0.117,rotor_imbalance,0.61 +FP0369,M031,9,0.104,rotor_imbalance,0.54 +FP0370,M031,10,0.114,electrical_fault,0.55 +FP0371,M031,11,0.139,rotor_imbalance,0.59 +FP0372,M031,12,0.147,rotor_imbalance,0.65 +FP0373,M032,1,0.066,rotor_imbalance,0.61 +FP0374,M032,2,0.071,rotor_imbalance,0.63 +FP0375,M032,3,0.075,rotor_imbalance,0.6 +FP0376,M032,4,0.083,rotor_imbalance,0.51 +FP0377,M032,5,0.099,rotor_imbalance,0.63 +FP0378,M032,6,0.093,electrical_fault,0.62 +FP0379,M032,7,0.119,impeller_erosion,0.53 +FP0380,M032,8,0.114,rotor_imbalance,0.6 +FP0381,M032,9,0.115,rotor_imbalance,0.54 +FP0382,M032,10,0.137,rotor_imbalance,0.65 +FP0383,M032,11,0.142,rotor_imbalance,0.6 +FP0384,M032,12,0.158,rotor_imbalance,0.6 +FP0385,M033,1,0.073,rotor_imbalance,0.58 +FP0386,M033,2,0.068,rotor_imbalance,0.56 +FP0387,M033,3,0.089,rotor_imbalance,0.59 +FP0388,M033,4,0.084,rotor_imbalance,0.53 +FP0389,M033,5,0.092,rotor_imbalance,0.54 +FP0390,M033,6,0.074,valve_stuck,0.6 +FP0391,M033,7,0.097,rotor_imbalance,0.57 +FP0392,M033,8,0.092,rotor_imbalance,0.56 +FP0393,M033,9,0.107,seal_leak,0.66 +FP0394,M033,10,0.109,rotor_imbalance,0.61 +FP0395,M033,11,0.105,electrical_fault,0.54 +FP0396,M033,12,0.106,overheating,0.53 +FP0397,M034,1,0.036,seal_leak,0.6 +FP0398,M034,2,0.07,rotor_imbalance,0.6 +FP0399,M034,3,0.045,rotor_imbalance,0.48 +FP0400,M034,4,0.053,rotor_imbalance,0.51 +FP0401,M034,5,0.069,rotor_imbalance,0.56 +FP0402,M034,6,0.08,rotor_imbalance,0.6 +FP0403,M034,7,0.055,rotor_imbalance,0.58 +FP0404,M034,8,0.059,rotor_imbalance,0.53 +FP0405,M034,9,0.093,rotor_imbalance,0.51 +FP0406,M034,10,0.091,rotor_imbalance,0.56 +FP0407,M034,11,0.079,valve_stuck,0.63 +FP0408,M034,12,0.072,impeller_erosion,0.53 +FP0409,M035,1,0.089,overheating,0.64 +FP0410,M035,2,0.102,rotor_imbalance,0.52 +FP0411,M035,3,0.099,bearing_wear,0.52 +FP0412,M035,4,0.136,rotor_imbalance,0.61 +FP0413,M035,5,0.137,rotor_imbalance,0.63 +FP0414,M035,6,0.13,rotor_imbalance,0.68 +FP0415,M035,7,0.163,rotor_imbalance,0.56 +FP0416,M035,8,0.143,rotor_imbalance,0.69 +FP0417,M035,9,0.181,motor_burnout,0.59 +FP0418,M035,10,0.163,rotor_imbalance,0.57 +FP0419,M035,11,0.187,rotor_imbalance,0.66 +FP0420,M035,12,0.201,rotor_imbalance,0.63 +FP0421,M036,1,0.053,rotor_imbalance,0.53 +FP0422,M036,2,0.058,rotor_imbalance,0.5 +FP0423,M036,3,0.063,rotor_imbalance,0.59 +FP0424,M036,4,0.048,rotor_imbalance,0.58 +FP0425,M036,5,0.08,impeller_erosion,0.65 +FP0426,M036,6,0.086,rotor_imbalance,0.64 +FP0427,M036,7,0.087,rotor_imbalance,0.59 +FP0428,M036,8,0.092,rotor_imbalance,0.55 +FP0429,M036,9,0.092,rotor_imbalance,0.62 +FP0430,M036,10,0.096,rotor_imbalance,0.57 +FP0431,M036,11,0.082,motor_burnout,0.52 +FP0432,M036,12,0.075,rotor_imbalance,0.5 +FP0433,M037,1,0.065,rotor_imbalance,0.58 +FP0434,M037,2,0.053,rotor_imbalance,0.52 +FP0435,M037,3,0.033,rotor_imbalance,0.59 +FP0436,M037,4,0.041,rotor_imbalance,0.58 +FP0437,M037,5,0.054,rotor_imbalance,0.55 +FP0438,M037,6,0.049,rotor_imbalance,0.54 +FP0439,M037,7,0.084,impeller_erosion,0.53 +FP0440,M037,8,0.076,rotor_imbalance,0.53 +FP0441,M037,9,0.059,rotor_imbalance,0.62 +FP0442,M037,10,0.075,rotor_imbalance,0.56 +FP0443,M037,11,0.069,rotor_imbalance,0.5 +FP0444,M037,12,0.092,rotor_imbalance,0.55 +FP0445,M038,1,0.081,rotor_imbalance,0.59 +FP0446,M038,2,0.081,bearing_wear,0.58 +FP0447,M038,3,0.081,bearing_wear,0.63 +FP0448,M038,4,0.076,rotor_imbalance,0.64 +FP0449,M038,5,0.071,rotor_imbalance,0.61 +FP0450,M038,6,0.112,rotor_imbalance,0.58 +FP0451,M038,7,0.112,motor_burnout,0.59 +FP0452,M038,8,0.097,rotor_imbalance,0.52 +FP0453,M038,9,0.104,rotor_imbalance,0.64 +FP0454,M038,10,0.105,rotor_imbalance,0.53 +FP0455,M038,11,0.121,seal_leak,0.58 +FP0456,M038,12,0.106,rotor_imbalance,0.58 +FP0457,M039,1,0.073,rotor_imbalance,0.51 +FP0458,M039,2,0.054,rotor_imbalance,0.59 +FP0459,M039,3,0.05,rotor_imbalance,0.49 +FP0460,M039,4,0.076,rotor_imbalance,0.51 +FP0461,M039,5,0.079,rotor_imbalance,0.64 +FP0462,M039,6,0.078,rotor_imbalance,0.58 +FP0463,M039,7,0.059,rotor_imbalance,0.54 +FP0464,M039,8,0.096,seal_leak,0.64 +FP0465,M039,9,0.071,rotor_imbalance,0.56 +FP0466,M039,10,0.08,rotor_imbalance,0.54 +FP0467,M039,11,0.078,electrical_fault,0.5 +FP0468,M039,12,0.105,rotor_imbalance,0.59 +FP0469,M040,1,0.09,rotor_imbalance,0.54 +FP0470,M040,2,0.097,rotor_imbalance,0.57 +FP0471,M040,3,0.08,rotor_imbalance,0.53 +FP0472,M040,4,0.102,rotor_imbalance,0.59 +FP0473,M040,5,0.117,rotor_imbalance,0.54 +FP0474,M040,6,0.113,rotor_imbalance,0.65 +FP0475,M040,7,0.117,motor_burnout,0.57 +FP0476,M040,8,0.097,rotor_imbalance,0.66 +FP0477,M040,9,0.104,rotor_imbalance,0.61 +FP0478,M040,10,0.128,rotor_imbalance,0.61 +FP0479,M040,11,0.142,rotor_imbalance,0.59 +FP0480,M040,12,0.109,valve_stuck,0.57 +FP0481,M041,1,0.105,motor_burnout,0.58 +FP0482,M041,2,0.114,motor_burnout,0.54 +FP0483,M041,3,0.122,motor_burnout,0.6 +FP0484,M041,4,0.117,motor_burnout,0.61 +FP0485,M041,5,0.102,motor_burnout,0.61 +FP0486,M041,6,0.139,motor_burnout,0.64 +FP0487,M041,7,0.139,motor_burnout,0.6 +FP0488,M041,8,0.138,motor_burnout,0.62 +FP0489,M041,9,0.131,rotor_imbalance,0.61 +FP0490,M041,10,0.133,motor_burnout,0.56 +FP0491,M041,11,0.134,motor_burnout,0.68 +FP0492,M041,12,0.112,motor_burnout,0.61 +FP0493,M042,1,0.044,impeller_erosion,0.54 +FP0494,M042,2,0.054,motor_burnout,0.58 +FP0495,M042,3,0.043,motor_burnout,0.52 +FP0496,M042,4,0.077,motor_burnout,0.57 +FP0497,M042,5,0.06,motor_burnout,0.59 +FP0498,M042,6,0.063,motor_burnout,0.58 +FP0499,M042,7,0.052,motor_burnout,0.53 +FP0500,M042,8,0.067,motor_burnout,0.63 +FP0501,M042,9,0.087,motor_burnout,0.57 +FP0502,M042,10,0.082,valve_stuck,0.57 +FP0503,M042,11,0.092,bearing_wear,0.63 +FP0504,M042,12,0.073,motor_burnout,0.54 +FP0505,M043,1,0.061,motor_burnout,0.59 +FP0506,M043,2,0.077,valve_stuck,0.51 +FP0507,M043,3,0.056,valve_stuck,0.63 +FP0508,M043,4,0.08,impeller_erosion,0.53 +FP0509,M043,5,0.065,motor_burnout,0.59 +FP0510,M043,6,0.078,motor_burnout,0.56 +FP0511,M043,7,0.09,motor_burnout,0.57 +FP0512,M043,8,0.113,motor_burnout,0.56 +FP0513,M043,9,0.084,electrical_fault,0.64 +FP0514,M043,10,0.103,motor_burnout,0.58 +FP0515,M043,11,0.11,motor_burnout,0.65 +FP0516,M043,12,0.124,motor_burnout,0.64 +FP0517,M044,1,0.092,seal_leak,0.54 +FP0518,M044,2,0.089,motor_burnout,0.63 +FP0519,M044,3,0.095,motor_burnout,0.51 +FP0520,M044,4,0.126,valve_stuck,0.6 +FP0521,M044,5,0.096,motor_burnout,0.61 +FP0522,M044,6,0.108,motor_burnout,0.56 +FP0523,M044,7,0.134,motor_burnout,0.56 +FP0524,M044,8,0.111,motor_burnout,0.58 +FP0525,M044,9,0.107,motor_burnout,0.56 +FP0526,M044,10,0.105,motor_burnout,0.59 +FP0527,M044,11,0.114,motor_burnout,0.57 +FP0528,M044,12,0.114,motor_burnout,0.56 +FP0529,M045,1,0.03,motor_burnout,0.56 +FP0530,M045,2,0.036,motor_burnout,0.49 +FP0531,M045,3,0.043,motor_burnout,0.49 +FP0532,M045,4,0.028,motor_burnout,0.49 +FP0533,M045,5,0.052,motor_burnout,0.61 +FP0534,M045,6,0.058,motor_burnout,0.53 +FP0535,M045,7,0.065,motor_burnout,0.59 +FP0536,M045,8,0.055,rotor_imbalance,0.57 +FP0537,M045,9,0.04,rotor_imbalance,0.49 +FP0538,M045,10,0.05,motor_burnout,0.6 +FP0539,M045,11,0.059,seal_leak,0.61 +FP0540,M045,12,0.067,impeller_erosion,0.52 +FP0541,M046,1,0.058,motor_burnout,0.61 +FP0542,M046,2,0.036,motor_burnout,0.48 +FP0543,M046,3,0.03,motor_burnout,0.59 +FP0544,M046,4,0.038,motor_burnout,0.56 +FP0545,M046,5,0.049,motor_burnout,0.59 +FP0546,M046,6,0.035,motor_burnout,0.48 +FP0547,M046,7,0.045,motor_burnout,0.57 +FP0548,M046,8,0.045,motor_burnout,0.5 +FP0549,M046,9,0.056,motor_burnout,0.52 +FP0550,M046,10,0.067,motor_burnout,0.64 +FP0551,M046,11,0.064,motor_burnout,0.59 +FP0552,M046,12,0.05,motor_burnout,0.59 +FP0553,M047,1,0.205,overheating,0.66 +FP0554,M047,2,0.208,motor_burnout,0.7 +FP0555,M047,3,0.209,overheating,0.66 +FP0556,M047,4,0.241,motor_burnout,0.72 +FP0557,M047,5,0.24,motor_burnout,0.6 +FP0558,M047,6,0.248,motor_burnout,0.69 +FP0559,M047,7,0.282,seal_leak,0.72 +FP0560,M047,8,0.282,motor_burnout,0.71 +FP0561,M047,9,0.294,motor_burnout,0.76 +FP0562,M047,10,0.301,motor_burnout,0.77 +FP0563,M047,11,0.339,motor_burnout,0.79 +FP0564,M047,12,0.354,motor_burnout,0.75 +FP0565,M048,1,0.078,motor_burnout,0.51 +FP0566,M048,2,0.096,bearing_wear,0.61 +FP0567,M048,3,0.095,motor_burnout,0.64 +FP0568,M048,4,0.099,motor_burnout,0.61 +FP0569,M048,5,0.082,motor_burnout,0.56 +FP0570,M048,6,0.083,motor_burnout,0.6 +FP0571,M048,7,0.089,motor_burnout,0.56 +FP0572,M048,8,0.109,seal_leak,0.56 +FP0573,M048,9,0.109,motor_burnout,0.52 +FP0574,M048,10,0.102,motor_burnout,0.64 +FP0575,M048,11,0.104,seal_leak,0.53 +FP0576,M048,12,0.106,motor_burnout,0.58 +FP0577,M049,1,0.081,motor_burnout,0.56 +FP0578,M049,2,0.058,motor_burnout,0.57 +FP0579,M049,3,0.071,motor_burnout,0.52 +FP0580,M049,4,0.079,motor_burnout,0.62 +FP0581,M049,5,0.066,motor_burnout,0.55 +FP0582,M049,6,0.081,motor_burnout,0.65 +FP0583,M049,7,0.084,motor_burnout,0.52 +FP0584,M049,8,0.082,motor_burnout,0.52 +FP0585,M049,9,0.094,motor_burnout,0.58 +FP0586,M049,10,0.07,overheating,0.53 +FP0587,M049,11,0.094,motor_burnout,0.61 +FP0588,M049,12,0.098,motor_burnout,0.6 +FP0589,M050,1,0.047,bearing_wear,0.55 +FP0590,M050,2,0.045,motor_burnout,0.59 +FP0591,M050,3,0.043,motor_burnout,0.52 +FP0592,M050,4,0.029,motor_burnout,0.58 +FP0593,M050,5,0.053,motor_burnout,0.55 +FP0594,M050,6,0.039,motor_burnout,0.62 +FP0595,M050,7,0.066,motor_burnout,0.53 +FP0596,M050,8,0.039,motor_burnout,0.6 +FP0597,M050,9,0.049,motor_burnout,0.52 +FP0598,M050,10,0.074,motor_burnout,0.51 +FP0599,M050,11,0.049,motor_burnout,0.5 +FP0600,M050,12,0.062,motor_burnout,0.6 diff --git a/v1/machine_maintenance/data/fault_types.csv b/v1/machine_maintenance/data/fault_types.csv new file mode 100644 index 00000000..ec5444b3 --- /dev/null +++ b/v1/machine_maintenance/data/fault_types.csv @@ -0,0 +1,16 @@ +fault_type_id,fault_name,fault_category,avg_mttr_minutes,avg_mtbf_hours +FT01,Bearing Failure,Mechanical,75,1000 +FT02,Shaft Misalignment,Mechanical,55,4502 +FT03,Gear Wear,Mechanical,60,1051 +FT04,Belt Snap,Mechanical,35,3853 +FT05,Motor Burnout,Electrical,65,3079 +FT06,Wiring Fault,Electrical,45,1997 +FT07,Sensor Failure,Electrical,30,2520 +FT08,Control Board,Electrical,50,2263 +FT09,Overheating,Process,60,1781 +FT10,Pressure Loss,Process,45,478 +FT11,Flow Blockage,Process,40,394 +FT12,Seal Degradation,Material,55,953 +FT13,Corrosion,Material,50,665 +FT14,Impeller Erosion,Material,65,1976 +FT15,Valve Fouling,Material,50,1197 diff --git a/v1/machine_maintenance/data/machine_product_capabilities.csv b/v1/machine_maintenance/data/machine_product_capabilities.csv new file mode 100644 index 00000000..b7985c90 --- /dev/null +++ b/v1/machine_maintenance/data/machine_product_capabilities.csv @@ -0,0 +1,121 @@ +machine_id,product_id,design_speed,optimal_speed,waste_conversion_factor +M001,PRD01,20.8,17.9,0.044 +M001,PRD07,22.2,20.3,0.046 +M002,PRD01,20.3,19.2,0.046 +M002,PRD07,24.9,21.8,0.029 +M003,PRD01,21.7,19.8,0.047 +M003,PRD07,22.9,20.4,0.046 +M004,PRD01,21.1,18.6,0.016 +M004,PRD07,22.0,20.4,0.025 +M005,PRD01,19.3,16.5,0.048 +M005,PRD07,22.9,20.5,0.03 +M006,PRD01,21.7,19.8,0.017 +M006,PRD07,24.0,20.7,0.041 +M007,PRD01,18.9,17.3,0.047 +M007,PRD07,25.0,21.5,0.013 +M008,PRD01,20.3,17.8,0.028 +M008,PRD07,25.9,22.4,0.036 +M009,PRD01,21.7,19.9,0.021 +M009,PRD07,25.0,23.5,0.033 +M010,PRD01,20.1,19.0,0.03 +M010,PRD07,23.7,22.1,0.041 +M011,PRD02,42.3,38.2,0.01 +M011,PRD06,87.3,81.3,0.029 +M012,PRD02,40.5,38.2,0.024 +M012,PRD06,82.9,73.8,0.035 +M013,PRD02,43.7,37.5,0.031 +M013,PRD06,87.4,75.0,0.028 +M014,PRD02,42.1,38.5,0.017 +M014,PRD06,72.6,64.5,0.018 +M015,PRD06,77.7,66.7,0.035 +M015,PRD02,41.6,39.1,0.035 +M016,PRD02,41.9,36.2,0.018 +M016,PRD06,83.5,75.9,0.03 +M017,PRD02,36.5,33.0,0.022 +M017,PRD06,80.5,75.1,0.028 +M018,PRD02,44.0,37.6,0.012 +M018,PRD06,84.6,72.3,0.015 +M019,PRD02,42.5,39.0,0.028 +M019,PRD06,82.8,77.6,0.016 +M020,PRD02,40.6,38.3,0.011 +M020,PRD06,74.3,68.0,0.029 +M021,PRD03,32.5,27.8,0.038 +M021,PRD06,74.1,64.3,0.012 +M021,PRD07,23.1,21.5,0.028 +M022,PRD03,28.0,25.5,0.043 +M022,PRD06,73.7,66.3,0.042 +M022,PRD07,22.7,21.1,0.027 +M023,PRD03,31.9,30.2,0.037 +M023,PRD06,77.2,73.2,0.033 +M023,PRD07,22.3,20.8,0.042 +M024,PRD03,31.6,28.7,0.023 +M024,PRD06,73.9,63.9,0.027 +M024,PRD07,24.9,22.5,0.028 +M025,PRD03,32.6,27.8,0.014 +M025,PRD06,85.6,78.0,0.041 +M025,PRD07,21.7,19.5,0.01 +M026,PRD03,28.1,24.1,0.036 +M026,PRD06,86.2,76.9,0.042 +M026,PRD07,25.3,23.3,0.018 +M027,PRD07,22.5,20.2,0.048 +M027,PRD06,87.0,79.3,0.012 +M027,PRD03,30.8,27.8,0.026 +M028,PRD03,30.8,28.6,0.024 +M028,PRD06,72.1,63.0,0.015 +M028,PRD07,24.1,20.7,0.024 +M029,PRD03,31.6,28.6,0.019 +M029,PRD06,84.3,77.2,0.021 +M029,PRD07,22.5,20.9,0.037 +M030,PRD03,32.8,29.4,0.017 +M030,PRD06,82.7,70.7,0.036 +M030,PRD07,23.0,20.5,0.023 +M031,PRD04,12.7,11.8,0.012 +M031,PRD08,15.7,14.8,0.017 +M032,PRD08,16.2,14.9,0.034 +M032,PRD04,12.7,11.4,0.015 +M033,PRD04,11.6,10.1,0.037 +M033,PRD08,14.5,13.5,0.023 +M034,PRD04,11.0,10.2,0.045 +M034,PRD08,14.6,12.7,0.029 +M035,PRD04,12.0,11.3,0.016 +M035,PRD08,16.3,14.6,0.025 +M036,PRD04,11.1,10.2,0.035 +M036,PRD08,16.4,14.3,0.015 +M037,PRD04,12.5,10.7,0.015 +M037,PRD08,16.1,14.4,0.017 +M038,PRD04,11.6,10.9,0.034 +M038,PRD08,15.9,14.5,0.034 +M039,PRD04,11.2,10.6,0.044 +M039,PRD08,13.8,12.9,0.03 +M040,PRD08,14.3,13.2,0.039 +M040,PRD04,13.2,12.0,0.043 +M041,PRD05,45.6,40.3,0.033 +M041,PRD08,16.2,14.7,0.016 +M041,PRD07,24.4,20.8,0.049 +M042,PRD05,43.6,39.1,0.041 +M042,PRD08,13.6,12.3,0.029 +M042,PRD07,25.4,23.7,0.028 +M043,PRD05,45.5,41.2,0.01 +M043,PRD08,15.7,14.8,0.015 +M043,PRD07,23.0,21.0,0.014 +M044,PRD05,47.8,42.1,0.038 +M044,PRD08,16.1,14.9,0.011 +M044,PRD07,23.8,22.1,0.045 +M045,PRD07,21.9,20.6,0.023 +M045,PRD08,14.9,13.6,0.044 +M045,PRD05,47.1,43.8,0.025 +M046,PRD05,43.5,38.8,0.021 +M046,PRD08,16.3,14.7,0.042 +M046,PRD07,25.4,21.8,0.045 +M047,PRD05,50.3,43.0,0.048 +M047,PRD08,15.5,14.6,0.014 +M047,PRD07,23.4,21.3,0.025 +M048,PRD05,44.9,40.7,0.013 +M048,PRD08,15.6,13.6,0.049 +M048,PRD07,22.7,19.6,0.029 +M049,PRD05,52.2,47.4,0.048 +M049,PRD08,14.1,13.0,0.019 +M049,PRD07,23.3,20.4,0.037 +M050,PRD05,45.9,39.3,0.024 +M050,PRD08,15.0,13.5,0.015 +M050,PRD07,25.0,22.9,0.031 diff --git a/v1/machine_maintenance/data/machines.csv b/v1/machine_maintenance/data/machines.csv new file mode 100644 index 00000000..73fd70db --- /dev/null +++ b/v1/machine_maintenance/data/machines.csv @@ -0,0 +1,51 @@ +machine_id,machine_name,machine_type,facility,location,line_id,remaining_useful_life,failure_probability,criticality,maintenance_duration_hours,last_maintenance_date,parts_required,estimated_parts_cost,replacement_cost,annual_output_value,age_years,daily_production_target +M001,Turbine_A_1,Turbine,Plant_A,Houston_TX,L01,5.0,0.267,4,8,2024-04-24,Bearings|Seals,12500.0,520000.0,185000.0,12,88 +M002,Turbine_B_2,Turbine,Plant_B,Chicago_IL,L07,38.9,0.03,5,8,2024-02-14,Bearings|Seals,12500.0,520000.0,185000.0,13,117 +M003,Turbine_C_3,Turbine,Plant_C,Phoenix_AZ,L13,16.3,0.103,3,8,2024-09-15,Bearings|Seals,12500.0,520000.0,185000.0,8,118 +M004,Turbine_D_4,Turbine,Plant_A,Houston_TX,L04,38.1,0.076,5,8,2024-08-02,Bearings|Seals,12500.0,520000.0,185000.0,2,94 +M005,Turbine_E_5,Turbine,Plant_C,Phoenix_AZ,L15,41.3,0.079,1,8,2024-03-22,Bearings|Seals,12500.0,520000.0,185000.0,9,107 +M006,Turbine_F_6,Turbine,Plant_A,Houston_TX,L01,2.0,0.292,5,8,2024-02-22,Bearings|Seals,12500.0,520000.0,185000.0,7,85 +M007,Turbine_G_7,Turbine,Plant_B,Chicago_IL,L07,42.7,0.03,5,8,2024-05-15,Bearings|Seals,12500.0,520000.0,185000.0,8,82 +M008,Turbine_H_8,Turbine,Plant_C,Phoenix_AZ,L13,17.4,0.066,4,8,2024-02-10,Bearings|Seals,12500.0,520000.0,185000.0,13,115 +M009,Turbine_I_9,Turbine,Plant_A,Houston_TX,L04,34.6,0.103,3,8,2024-10-22,Bearings|Seals,12500.0,520000.0,185000.0,6,92 +M010,Turbine_J_10,Turbine,Plant_C,Phoenix_AZ,L15,36.1,0.027,3,8,2024-02-10,Bearings|Seals,12500.0,520000.0,185000.0,13,94 +M011,Compressor_A_11,Compressor,Plant_B,Chicago_IL,L06,2.5,0.307,5,6,2024-03-24,Valves|Filters,8200.0,210000.0,95000.0,3,173 +M012,Compressor_B_12,Compressor,Plant_B,Chicago_IL,L07,20.3,0.281,4,6,2024-03-28,Valves|Filters,8200.0,210000.0,95000.0,7,184 +M013,Compressor_C_13,Compressor,Plant_A,Houston_TX,L03,27.2,0.044,3,6,2024-10-12,Valves|Filters,8200.0,210000.0,95000.0,13,164 +M014,Compressor_D_14,Compressor,Plant_C,Phoenix_AZ,L14,37.9,0.126,3,6,2024-04-27,Valves|Filters,8200.0,210000.0,95000.0,12,152 +M015,Compressor_E_15,Compressor,Plant_A,Houston_TX,L05,20.4,0.052,2,6,2024-10-17,Valves|Filters,8200.0,210000.0,95000.0,14,170 +M016,Compressor_F_16,Compressor,Plant_B,Chicago_IL,L06,24.8,0.348,5,6,2024-03-14,Valves|Filters,8200.0,210000.0,95000.0,5,166 +M017,Compressor_G_17,Compressor,Plant_B,Chicago_IL,L07,30.6,0.045,3,6,2024-10-26,Valves|Filters,8200.0,210000.0,95000.0,4,177 +M018,Compressor_H_18,Compressor,Plant_A,Houston_TX,L03,18.7,0.06,2,6,2024-09-17,Valves|Filters,8200.0,210000.0,95000.0,11,181 +M019,Compressor_I_19,Compressor,Plant_C,Phoenix_AZ,L14,41.1,0.096,2,6,2024-03-22,Valves|Filters,8200.0,210000.0,95000.0,3,177 +M020,Compressor_J_20,Compressor,Plant_A,Houston_TX,L05,24.4,0.026,4,6,2024-09-27,Valves|Filters,8200.0,210000.0,95000.0,11,166 +M021,Pump_A_21,Pump,Plant_A,Houston_TX,L01,9.4,0.106,1,4,2024-10-01,Impeller|Seals,5800.0,105000.0,62000.0,10,197 +M022,Pump_B_22,Pump,Plant_B,Chicago_IL,L07,0.7,0.151,4,4,2024-03-21,Impeller|Seals,5800.0,105000.0,62000.0,14,209 +M023,Pump_C_23,Pump,Plant_C,Phoenix_AZ,L13,39.7,0.115,3,4,2024-09-13,Impeller|Seals,5800.0,105000.0,62000.0,2,191 +M024,Pump_D_24,Pump,Plant_A,Houston_TX,L04,39.5,0.111,3,4,2024-09-16,Impeller|Seals,5800.0,105000.0,62000.0,10,218 +M025,Pump_E_25,Pump,Plant_B,Chicago_IL,L10,2.5,0.035,5,4,2024-09-28,Impeller|Seals,5800.0,105000.0,62000.0,5,180 +M026,Pump_F_26,Pump,Plant_C,Phoenix_AZ,L11,9.7,0.052,3,4,2024-06-06,Impeller|Seals,5800.0,105000.0,62000.0,11,195 +M027,Pump_G_27,Pump,Plant_A,Houston_TX,L02,28.9,0.044,1,4,2024-02-13,Impeller|Seals,5800.0,105000.0,62000.0,2,211 +M028,Pump_H_28,Pump,Plant_B,Chicago_IL,L08,27.6,0.397,4,4,2024-03-06,Impeller|Seals,5800.0,105000.0,62000.0,3,210 +M029,Pump_I_29,Pump,Plant_C,Phoenix_AZ,L14,27.5,0.037,5,4,2024-08-04,Impeller|Seals,5800.0,105000.0,62000.0,10,193 +M030,Pump_J_30,Pump,Plant_A,Houston_TX,L05,33.1,0.096,3,4,2024-07-23,Impeller|Seals,5800.0,105000.0,62000.0,10,203 +M031,Generator_A_31,Generator,Plant_A,Houston_TX,L01,32.8,0.11,2,12,2024-04-25,Rotor|Stator,22000.0,410000.0,230000.0,9,94 +M032,Generator_B_32,Generator,Plant_B,Chicago_IL,L07,36.4,0.102,5,12,2024-04-22,Rotor|Stator,22000.0,410000.0,230000.0,7,90 +M033,Generator_C_33,Generator,Plant_C,Phoenix_AZ,L13,19.1,0.091,1,12,2024-01-17,Rotor|Stator,22000.0,410000.0,230000.0,3,111 +M034,Generator_D_34,Generator,Plant_A,Houston_TX,L04,26.7,0.071,4,12,2024-04-19,Rotor|Stator,22000.0,410000.0,230000.0,3,124 +M035,Generator_E_35,Generator,Plant_B,Chicago_IL,L10,8.6,0.158,5,12,2024-08-30,Rotor|Stator,22000.0,410000.0,230000.0,4,105 +M036,Generator_F_36,Generator,Plant_C,Phoenix_AZ,L11,31.2,0.067,1,12,2024-02-19,Rotor|Stator,22000.0,410000.0,230000.0,14,117 +M037,Generator_G_37,Generator,Plant_A,Houston_TX,L02,33.3,0.062,1,12,2024-02-20,Rotor|Stator,22000.0,410000.0,230000.0,7,93 +M038,Generator_H_38,Generator,Plant_B,Chicago_IL,L08,7.9,0.093,1,12,2024-05-07,Rotor|Stator,22000.0,410000.0,230000.0,8,102 +M039,Generator_I_39,Generator,Plant_C,Phoenix_AZ,L14,21.9,0.074,2,12,2024-05-22,Rotor|Stator,22000.0,410000.0,230000.0,5,119 +M040,Generator_J_40,Generator,Plant_A,Houston_TX,L05,19.6,0.107,5,12,2024-02-20,Rotor|Stator,22000.0,410000.0,230000.0,5,93 +M041,Motor_A_41,Motor,Plant_A,Houston_TX,L01,37.3,0.12,1,3,2024-05-01,Windings|Bearings,4200.0,82000.0,48000.0,12,150 +M042,Motor_B_42,Motor,Plant_B,Chicago_IL,L07,15.5,0.069,4,3,2024-01-31,Windings|Bearings,4200.0,82000.0,48000.0,8,150 +M043,Motor_C_43,Motor,Plant_C,Phoenix_AZ,L13,1.1,0.1,4,3,2024-05-26,Windings|Bearings,4200.0,82000.0,48000.0,8,167 +M044,Motor_D_44,Motor,Plant_A,Houston_TX,L04,42.8,0.116,5,3,2024-09-06,Windings|Bearings,4200.0,82000.0,48000.0,13,149 +M045,Motor_E_45,Motor,Plant_B,Chicago_IL,L10,41.9,0.05,5,3,2024-10-04,Windings|Bearings,4200.0,82000.0,48000.0,5,143 +M046,Motor_F_46,Motor,Plant_C,Phoenix_AZ,L11,9.8,0.051,4,3,2024-09-14,Windings|Bearings,4200.0,82000.0,48000.0,13,173 +M047,Motor_G_47,Motor,Plant_A,Houston_TX,L02,25.8,0.259,4,3,2024-02-05,Windings|Bearings,4200.0,82000.0,48000.0,4,178 +M048,Motor_H_48,Motor,Plant_B,Chicago_IL,L08,16.2,0.088,1,3,2024-10-18,Windings|Bearings,4200.0,82000.0,48000.0,3,155 +M049,Motor_I_49,Motor,Plant_C,Phoenix_AZ,L14,29.7,0.079,4,3,2024-10-25,Windings|Bearings,4200.0,82000.0,48000.0,11,176 +M050,Motor_J_50,Motor,Plant_A,Houston_TX,L05,17.1,0.052,3,3,2024-05-02,Windings|Bearings,4200.0,82000.0,48000.0,10,156 diff --git a/v1/machine_maintenance/data/production_runs.csv b/v1/machine_maintenance/data/production_runs.csv new file mode 100644 index 00000000..e09fac30 --- /dev/null +++ b/v1/machine_maintenance/data/production_runs.csv @@ -0,0 +1,845 @@ +run_id,machine_id,product_id,shift_id,period,planned_quantity,actual_quantity,good_quantity,waste_quantity,actual_speed,target_speed +RUN0001,M001,PRD07,SHIFT_DAY,1,162,90,89,1,14.8,20.3 +RUN0002,M001,PRD01,SHIFT_SWING,2,143,92,90,2,13.2,17.9 +RUN0003,M001,PRD01,SHIFT_NIGHT,3,143,78,75,3,12.6,17.9 +RUN0004,M001,PRD07,SHIFT_SWING,4,162,63,62,1,15.4,20.3 +RUN0005,M001,PRD01,SHIFT_DAY,5,143,76,74,2,12.8,17.9 +RUN0006,M001,PRD01,SHIFT_NIGHT,6,143,68,66,2,12.8,17.9 +RUN0007,M001,PRD07,SHIFT_DAY,7,162,86,85,1,14.3,20.3 +RUN0008,M001,PRD01,SHIFT_NIGHT,8,143,66,64,2,11.4,17.9 +RUN0009,M001,PRD07,SHIFT_NIGHT,8,162,83,80,3,14.3,20.3 +RUN0010,M001,PRD07,SHIFT_SWING,9,162,88,87,1,13.5,20.3 +RUN0011,M001,PRD01,SHIFT_SWING,9,143,88,84,4,13.4,17.9 +RUN0012,M001,PRD01,SHIFT_DAY,10,143,80,78,2,12.4,17.9 +RUN0013,M001,PRD07,SHIFT_NIGHT,11,162,103,101,2,14.3,20.3 +RUN0014,M001,PRD01,SHIFT_DAY,11,143,100,96,4,13.9,17.9 +RUN0015,M001,PRD01,SHIFT_DAY,12,143,79,78,1,13.1,17.9 +RUN0016,M002,PRD01,SHIFT_NIGHT,1,153,98,95,3,12.3,19.2 +RUN0017,M002,PRD01,SHIFT_DAY,2,153,104,102,2,13.0,19.2 +RUN0018,M002,PRD07,SHIFT_DAY,2,174,124,122,2,15.5,21.8 +RUN0019,M002,PRD07,SHIFT_DAY,3,174,116,113,3,14.6,21.8 +RUN0020,M002,PRD07,SHIFT_DAY,4,174,133,131,2,16.7,21.8 +RUN0021,M002,PRD01,SHIFT_NIGHT,4,153,103,98,5,12.9,19.2 +RUN0022,M002,PRD01,SHIFT_DAY,5,153,105,100,5,14.0,19.2 +RUN0023,M002,PRD07,SHIFT_NIGHT,5,174,107,104,3,14.3,21.8 +RUN0024,M002,PRD01,SHIFT_DAY,6,153,112,107,5,14.1,19.2 +RUN0025,M002,PRD07,SHIFT_SWING,6,174,131,128,3,16.4,21.8 +RUN0026,M002,PRD01,SHIFT_NIGHT,7,153,109,106,3,13.7,19.2 +RUN0027,M002,PRD01,SHIFT_NIGHT,8,153,79,76,3,13.0,19.2 +RUN0028,M002,PRD01,SHIFT_SWING,9,153,102,99,3,12.8,19.2 +RUN0029,M002,PRD01,SHIFT_DAY,10,153,104,101,3,13.0,19.2 +RUN0030,M002,PRD07,SHIFT_DAY,11,174,128,127,1,16.1,21.8 +RUN0031,M002,PRD07,SHIFT_DAY,12,174,120,117,3,15.1,21.8 +RUN0032,M002,PRD01,SHIFT_DAY,12,153,111,106,5,13.9,19.2 +RUN0033,M003,PRD07,SHIFT_DAY,1,163,135,132,3,18.1,20.4 +RUN0034,M003,PRD01,SHIFT_DAY,1,158,118,117,1,15.8,19.8 +RUN0035,M003,PRD01,SHIFT_NIGHT,2,158,119,115,4,16.4,19.8 +RUN0036,M003,PRD07,SHIFT_DAY,2,163,123,122,1,17.0,20.4 +RUN0037,M003,PRD01,SHIFT_DAY,3,158,126,124,2,17.0,19.8 +RUN0038,M003,PRD07,SHIFT_DAY,3,163,120,118,2,16.1,20.4 +RUN0039,M003,PRD01,SHIFT_DAY,4,158,118,115,3,16.7,19.8 +RUN0040,M003,PRD01,SHIFT_NIGHT,5,158,108,105,3,14.7,19.8 +RUN0041,M003,PRD07,SHIFT_NIGHT,6,163,120,116,4,15.8,20.4 +RUN0042,M003,PRD01,SHIFT_SWING,6,158,130,126,4,17.1,19.8 +RUN0043,M003,PRD07,SHIFT_SWING,7,163,119,116,3,15.7,20.4 +RUN0044,M003,PRD01,SHIFT_NIGHT,7,158,119,116,3,15.7,19.8 +RUN0045,M003,PRD07,SHIFT_DAY,8,163,113,110,3,17.9,20.4 +RUN0046,M003,PRD07,SHIFT_NIGHT,9,163,113,109,4,16.0,20.4 +RUN0047,M003,PRD07,SHIFT_SWING,10,163,117,115,2,16.1,20.4 +RUN0048,M003,PRD07,SHIFT_SWING,11,163,117,114,3,15.7,20.4 +RUN0049,M003,PRD01,SHIFT_DAY,11,158,132,131,1,17.7,19.8 +RUN0050,M003,PRD07,SHIFT_SWING,12,163,136,130,6,17.8,20.4 +RUN0051,M003,PRD01,SHIFT_NIGHT,12,158,116,112,4,15.2,19.8 +RUN0052,M004,PRD01,SHIFT_DAY,1,148,118,118,0,14.8,18.6 +RUN0053,M004,PRD07,SHIFT_NIGHT,1,163,106,104,2,13.3,20.4 +RUN0054,M004,PRD07,SHIFT_NIGHT,2,163,105,103,2,14.5,20.4 +RUN0055,M004,PRD01,SHIFT_NIGHT,2,148,91,91,0,12.6,18.6 +RUN0056,M004,PRD07,SHIFT_DAY,3,163,128,126,2,16.1,20.4 +RUN0057,M004,PRD01,SHIFT_SWING,4,148,108,107,1,13.6,18.6 +RUN0058,M004,PRD07,SHIFT_DAY,4,163,116,114,2,14.5,20.4 +RUN0059,M004,PRD01,SHIFT_DAY,5,148,115,114,1,14.4,18.6 +RUN0060,M004,PRD07,SHIFT_SWING,5,163,115,113,2,14.4,20.4 +RUN0061,M004,PRD01,SHIFT_DAY,6,148,116,116,0,14.5,18.6 +RUN0062,M004,PRD07,SHIFT_SWING,6,163,116,114,2,14.6,20.4 +RUN0063,M004,PRD07,SHIFT_NIGHT,7,163,112,111,1,14.9,20.4 +RUN0064,M004,PRD01,SHIFT_NIGHT,7,148,100,100,0,13.4,18.6 +RUN0065,M004,PRD01,SHIFT_NIGHT,8,148,100,100,0,12.6,18.6 +RUN0066,M004,PRD07,SHIFT_DAY,9,163,112,110,2,14.1,20.4 +RUN0067,M004,PRD01,SHIFT_NIGHT,9,148,100,100,0,12.6,18.6 +RUN0068,M004,PRD01,SHIFT_SWING,10,148,101,101,0,12.7,18.6 +RUN0069,M004,PRD01,SHIFT_SWING,11,148,108,108,0,13.5,18.6 +RUN0070,M004,PRD01,SHIFT_DAY,12,148,105,104,1,13.2,18.6 +RUN0071,M005,PRD01,SHIFT_NIGHT,1,132,97,95,2,12.2,16.5 +RUN0072,M005,PRD07,SHIFT_DAY,2,164,134,131,3,16.8,20.5 +RUN0073,M005,PRD01,SHIFT_DAY,3,132,103,99,4,12.9,16.5 +RUN0074,M005,PRD01,SHIFT_DAY,4,132,105,100,5,13.2,16.5 +RUN0075,M005,PRD07,SHIFT_SWING,5,164,126,124,2,16.6,20.5 +RUN0076,M005,PRD07,SHIFT_NIGHT,6,164,136,132,4,17.0,20.5 +RUN0077,M005,PRD07,SHIFT_SWING,7,164,136,132,4,17.0,20.5 +RUN0078,M005,PRD01,SHIFT_SWING,7,132,112,111,1,14.1,16.5 +RUN0079,M005,PRD07,SHIFT_DAY,8,164,140,136,4,17.5,20.5 +RUN0080,M005,PRD01,SHIFT_SWING,8,132,115,110,5,14.4,16.5 +RUN0081,M005,PRD07,SHIFT_NIGHT,9,164,132,128,4,16.5,20.5 +RUN0082,M005,PRD01,SHIFT_DAY,10,132,119,114,5,14.9,16.5 +RUN0083,M005,PRD01,SHIFT_DAY,11,132,119,114,5,14.9,16.5 +RUN0084,M005,PRD07,SHIFT_NIGHT,11,164,127,124,3,15.9,20.5 +RUN0085,M005,PRD01,SHIFT_SWING,12,132,106,101,5,13.3,16.5 +RUN0086,M006,PRD01,SHIFT_SWING,1,158,110,109,1,14.5,19.8 +RUN0087,M006,PRD07,SHIFT_NIGHT,1,165,115,111,4,15.1,20.7 +RUN0088,M006,PRD01,SHIFT_SWING,2,158,113,112,1,14.9,19.8 +RUN0089,M006,PRD07,SHIFT_NIGHT,2,165,117,112,5,15.4,20.7 +RUN0090,M006,PRD07,SHIFT_DAY,3,165,103,100,3,15.3,20.7 +RUN0091,M006,PRD01,SHIFT_NIGHT,4,158,99,99,0,14.1,19.8 +RUN0092,M006,PRD01,SHIFT_SWING,5,158,115,114,1,15.1,19.8 +RUN0093,M006,PRD07,SHIFT_DAY,5,165,121,117,4,15.9,20.7 +RUN0094,M006,PRD01,SHIFT_NIGHT,6,158,91,90,1,13.9,19.8 +RUN0095,M006,PRD07,SHIFT_NIGHT,6,165,91,90,1,13.9,20.7 +RUN0096,M006,PRD01,SHIFT_SWING,7,158,96,95,1,15.1,19.8 +RUN0097,M006,PRD07,SHIFT_NIGHT,7,165,89,86,3,14.0,20.7 +RUN0098,M006,PRD07,SHIFT_DAY,8,165,108,106,2,14.7,20.7 +RUN0099,M006,PRD01,SHIFT_DAY,8,158,101,100,1,13.7,19.8 +RUN0100,M006,PRD01,SHIFT_DAY,9,158,111,109,2,15.5,19.8 +RUN0101,M006,PRD07,SHIFT_NIGHT,9,165,106,104,2,14.8,20.7 +RUN0102,M006,PRD01,SHIFT_SWING,10,158,96,95,1,13.8,19.8 +RUN0103,M006,PRD07,SHIFT_NIGHT,10,165,106,105,1,15.2,20.7 +RUN0104,M006,PRD01,SHIFT_SWING,11,158,87,86,1,13.1,19.8 +RUN0105,M006,PRD07,SHIFT_SWING,11,165,93,89,4,14.0,20.7 +RUN0106,M006,PRD07,SHIFT_DAY,12,165,96,95,1,15.6,20.7 +RUN0107,M006,PRD01,SHIFT_NIGHT,12,158,88,87,1,14.4,19.8 +RUN0108,M007,PRD07,SHIFT_SWING,1,172,120,119,1,15.0,21.5 +RUN0109,M007,PRD07,SHIFT_NIGHT,2,172,121,120,1,15.2,21.5 +RUN0110,M007,PRD07,SHIFT_SWING,3,172,102,101,1,14.2,21.5 +RUN0111,M007,PRD01,SHIFT_NIGHT,3,138,89,87,2,12.4,17.3 +RUN0112,M007,PRD01,SHIFT_NIGHT,4,138,82,78,4,11.4,17.3 +RUN0113,M007,PRD07,SHIFT_NIGHT,4,172,110,110,0,15.3,21.5 +RUN0114,M007,PRD07,SHIFT_SWING,5,172,118,117,1,14.8,21.5 +RUN0115,M007,PRD07,SHIFT_SWING,6,172,112,111,1,14.0,21.5 +RUN0116,M007,PRD01,SHIFT_NIGHT,7,138,82,80,2,12.2,17.3 +RUN0117,M007,PRD01,SHIFT_NIGHT,8,138,89,86,3,11.2,17.3 +RUN0118,M007,PRD07,SHIFT_SWING,9,172,128,128,0,16.0,21.5 +RUN0119,M007,PRD01,SHIFT_NIGHT,9,138,88,85,3,11.0,17.3 +RUN0120,M007,PRD01,SHIFT_NIGHT,10,138,96,92,4,12.1,17.3 +RUN0121,M007,PRD07,SHIFT_NIGHT,11,172,121,120,1,15.2,21.5 +RUN0122,M007,PRD07,SHIFT_DAY,12,172,132,132,0,16.6,21.5 +RUN0123,M008,PRD07,SHIFT_NIGHT,1,179,138,136,2,17.3,22.4 +RUN0124,M008,PRD01,SHIFT_DAY,2,142,114,112,2,14.3,17.8 +RUN0125,M008,PRD07,SHIFT_NIGHT,2,179,142,140,2,17.8,22.4 +RUN0126,M008,PRD01,SHIFT_NIGHT,3,142,108,106,2,13.6,17.8 +RUN0127,M008,PRD07,SHIFT_SWING,3,179,143,141,2,17.9,22.4 +RUN0128,M008,PRD07,SHIFT_NIGHT,4,179,144,141,3,18.0,22.4 +RUN0129,M008,PRD07,SHIFT_SWING,5,179,141,140,1,18.8,22.4 +RUN0130,M008,PRD07,SHIFT_NIGHT,6,179,144,142,2,18.1,22.4 +RUN0131,M008,PRD01,SHIFT_DAY,6,142,112,111,1,14.0,17.8 +RUN0132,M008,PRD01,SHIFT_NIGHT,7,142,102,100,2,12.8,17.8 +RUN0133,M008,PRD07,SHIFT_NIGHT,7,179,146,142,4,18.3,22.4 +RUN0134,M008,PRD01,SHIFT_DAY,8,142,128,125,3,16.1,17.8 +RUN0135,M008,PRD01,SHIFT_DAY,9,142,110,107,3,15.1,17.8 +RUN0136,M008,PRD01,SHIFT_NIGHT,10,142,106,105,1,13.3,17.8 +RUN0137,M008,PRD01,SHIFT_DAY,11,142,112,111,1,15.0,17.8 +RUN0138,M008,PRD07,SHIFT_NIGHT,11,179,123,118,5,16.6,22.4 +RUN0139,M008,PRD01,SHIFT_DAY,12,142,128,126,2,16.0,17.8 +RUN0140,M008,PRD07,SHIFT_SWING,12,179,149,146,3,18.7,22.4 +RUN0141,M009,PRD07,SHIFT_NIGHT,1,188,130,128,2,16.3,23.5 +RUN0142,M009,PRD01,SHIFT_DAY,1,159,120,120,0,15.1,19.9 +RUN0143,M009,PRD01,SHIFT_SWING,2,159,120,119,1,15.1,19.9 +RUN0144,M009,PRD01,SHIFT_NIGHT,3,159,107,107,0,13.4,19.9 +RUN0145,M009,PRD01,SHIFT_SWING,4,159,112,110,2,14.0,19.9 +RUN0146,M009,PRD07,SHIFT_SWING,4,188,133,128,5,16.7,23.5 +RUN0147,M009,PRD01,SHIFT_DAY,5,159,120,119,1,15.0,19.9 +RUN0148,M009,PRD07,SHIFT_NIGHT,5,188,133,131,2,16.7,23.5 +RUN0149,M009,PRD01,SHIFT_SWING,6,159,120,119,1,15.0,19.9 +RUN0150,M009,PRD07,SHIFT_NIGHT,7,188,124,122,2,15.5,23.5 +RUN0151,M009,PRD01,SHIFT_NIGHT,7,159,102,101,1,12.8,19.9 +RUN0152,M009,PRD01,SHIFT_SWING,8,159,98,96,2,15.2,19.9 +RUN0153,M009,PRD01,SHIFT_SWING,9,159,105,104,1,13.2,19.9 +RUN0154,M009,PRD07,SHIFT_DAY,10,188,132,128,4,16.5,23.5 +RUN0155,M009,PRD01,SHIFT_SWING,10,159,116,114,2,14.5,19.9 +RUN0156,M009,PRD07,SHIFT_NIGHT,11,188,112,110,2,16.4,23.5 +RUN0157,M009,PRD01,SHIFT_DAY,12,159,100,98,2,14.0,19.9 +RUN0158,M010,PRD07,SHIFT_NIGHT,1,176,129,124,5,17.8,22.1 +RUN0159,M010,PRD07,SHIFT_NIGHT,2,176,129,128,1,16.2,22.1 +RUN0160,M010,PRD01,SHIFT_NIGHT,2,152,122,119,3,15.3,19.0 +RUN0161,M010,PRD07,SHIFT_DAY,3,176,158,153,5,19.8,22.1 +RUN0162,M010,PRD01,SHIFT_NIGHT,4,152,120,117,3,15.1,19.0 +RUN0163,M010,PRD07,SHIFT_SWING,5,176,132,130,2,18.0,22.1 +RUN0164,M010,PRD01,SHIFT_SWING,6,152,126,125,1,15.8,19.0 +RUN0165,M010,PRD07,SHIFT_DAY,7,176,152,150,2,19.0,22.1 +RUN0166,M010,PRD01,SHIFT_DAY,8,152,129,128,1,16.2,19.0 +RUN0167,M010,PRD07,SHIFT_DAY,9,176,136,133,3,19.9,22.1 +RUN0168,M010,PRD01,SHIFT_SWING,10,152,124,121,3,15.5,19.0 +RUN0169,M010,PRD01,SHIFT_DAY,11,152,130,126,4,16.3,19.0 +RUN0170,M010,PRD07,SHIFT_NIGHT,11,176,127,124,3,15.9,22.1 +RUN0171,M010,PRD07,SHIFT_DAY,12,176,160,155,5,20.0,22.1 +RUN0172,M011,PRD02,SHIFT_DAY,1,305,189,187,2,28.3,38.2 +RUN0173,M011,PRD06,SHIFT_NIGHT,1,650,389,384,5,58.0,81.3 +RUN0174,M011,PRD02,SHIFT_NIGHT,2,305,167,167,0,25.0,38.2 +RUN0175,M011,PRD02,SHIFT_SWING,3,305,201,200,1,28.7,38.2 +RUN0176,M011,PRD02,SHIFT_SWING,4,305,173,173,0,26.6,38.2 +RUN0177,M011,PRD06,SHIFT_DAY,4,650,396,387,9,60.8,81.3 +RUN0178,M011,PRD06,SHIFT_NIGHT,5,650,311,302,9,54.6,81.3 +RUN0179,M011,PRD06,SHIFT_SWING,6,650,261,256,5,52.3,81.3 +RUN0180,M011,PRD02,SHIFT_SWING,6,305,130,130,0,26.1,38.2 +RUN0181,M011,PRD02,SHIFT_SWING,7,305,190,189,1,24.6,38.2 +RUN0182,M011,PRD06,SHIFT_DAY,7,650,423,414,9,54.6,81.3 +RUN0183,M011,PRD02,SHIFT_SWING,8,305,164,163,1,24.6,38.2 +RUN0184,M011,PRD06,SHIFT_SWING,9,650,404,397,7,55.6,81.3 +RUN0185,M011,PRD06,SHIFT_SWING,10,650,391,384,7,58.2,81.3 +RUN0186,M011,PRD02,SHIFT_DAY,10,305,181,180,1,26.9,38.2 +RUN0187,M011,PRD02,SHIFT_DAY,11,305,174,174,0,26.1,38.2 +RUN0188,M011,PRD06,SHIFT_DAY,12,650,325,321,4,55.4,81.3 +RUN0189,M012,PRD06,SHIFT_DAY,1,590,322,314,8,52.5,73.8 +RUN0190,M012,PRD02,SHIFT_SWING,2,305,213,208,5,26.7,38.2 +RUN0191,M012,PRD06,SHIFT_SWING,2,590,388,373,15,48.5,73.8 +RUN0192,M012,PRD02,SHIFT_SWING,3,305,213,208,5,26.7,38.2 +RUN0193,M012,PRD06,SHIFT_DAY,3,590,394,380,14,49.3,73.8 +RUN0194,M012,PRD02,SHIFT_SWING,4,305,212,210,2,26.6,38.2 +RUN0195,M012,PRD06,SHIFT_DAY,5,590,432,418,14,54.1,73.8 +RUN0196,M012,PRD06,SHIFT_DAY,6,590,449,431,18,56.2,73.8 +RUN0197,M012,PRD06,SHIFT_DAY,7,590,390,377,13,52.9,73.8 +RUN0198,M012,PRD02,SHIFT_DAY,8,305,237,233,4,29.7,38.2 +RUN0199,M012,PRD02,SHIFT_DAY,9,305,207,205,2,27.1,38.2 +RUN0200,M012,PRD06,SHIFT_DAY,9,590,434,424,10,56.8,73.8 +RUN0201,M012,PRD02,SHIFT_SWING,10,305,210,208,2,26.3,38.2 +RUN0202,M012,PRD06,SHIFT_NIGHT,10,590,425,418,7,53.2,73.8 +RUN0203,M012,PRD02,SHIFT_NIGHT,11,305,202,201,1,25.3,38.2 +RUN0204,M012,PRD06,SHIFT_SWING,12,590,441,427,14,55.2,73.8 +RUN0205,M013,PRD02,SHIFT_DAY,1,300,192,190,2,25.7,37.5 +RUN0206,M013,PRD02,SHIFT_SWING,2,300,208,203,5,26.0,37.5 +RUN0207,M013,PRD06,SHIFT_SWING,2,600,408,395,13,51.1,75.0 +RUN0208,M013,PRD06,SHIFT_DAY,3,600,415,412,3,51.9,75.0 +RUN0209,M013,PRD02,SHIFT_SWING,4,300,224,220,4,28.0,37.5 +RUN0210,M013,PRD06,SHIFT_NIGHT,4,600,415,408,7,51.9,75.0 +RUN0211,M013,PRD02,SHIFT_DAY,5,300,217,215,2,29.5,37.5 +RUN0212,M013,PRD06,SHIFT_NIGHT,5,600,386,383,3,52.5,75.0 +RUN0213,M013,PRD02,SHIFT_NIGHT,6,300,190,188,2,25.6,37.5 +RUN0214,M013,PRD06,SHIFT_NIGHT,6,600,391,385,6,52.6,75.0 +RUN0215,M013,PRD02,SHIFT_NIGHT,7,300,213,211,2,26.7,37.5 +RUN0216,M013,PRD06,SHIFT_NIGHT,8,600,444,431,13,55.5,75.0 +RUN0217,M013,PRD02,SHIFT_SWING,9,300,200,196,4,25.1,37.5 +RUN0218,M013,PRD02,SHIFT_NIGHT,10,300,199,192,7,24.9,37.5 +RUN0219,M013,PRD06,SHIFT_SWING,10,600,399,390,9,49.9,75.0 +RUN0220,M013,PRD02,SHIFT_SWING,11,300,221,214,7,27.7,37.5 +RUN0221,M013,PRD06,SHIFT_DAY,11,600,420,409,11,52.5,75.0 +RUN0222,M013,PRD06,SHIFT_SWING,12,600,438,433,5,54.8,75.0 +RUN0223,M014,PRD02,SHIFT_NIGHT,1,308,211,208,3,31.0,38.5 +RUN0224,M014,PRD06,SHIFT_SWING,2,516,425,421,4,55.5,64.5 +RUN0225,M014,PRD02,SHIFT_SWING,2,308,242,241,1,31.6,38.5 +RUN0226,M014,PRD02,SHIFT_SWING,3,308,199,198,1,29.1,38.5 +RUN0227,M014,PRD02,SHIFT_DAY,4,308,249,247,2,33.1,38.5 +RUN0228,M014,PRD06,SHIFT_DAY,4,516,410,408,2,54.5,64.5 +RUN0229,M014,PRD06,SHIFT_SWING,5,516,313,308,5,49.1,64.5 +RUN0230,M014,PRD02,SHIFT_SWING,6,308,198,197,1,33.4,38.5 +RUN0231,M014,PRD02,SHIFT_DAY,7,308,245,243,2,33.5,38.5 +RUN0232,M014,PRD06,SHIFT_SWING,7,516,413,408,5,56.5,64.5 +RUN0233,M014,PRD02,SHIFT_NIGHT,8,308,194,192,2,28.9,38.5 +RUN0234,M014,PRD06,SHIFT_NIGHT,8,516,341,335,6,50.8,64.5 +RUN0235,M014,PRD06,SHIFT_DAY,9,516,361,355,6,54.9,64.5 +RUN0236,M014,PRD02,SHIFT_DAY,10,308,255,253,2,33.5,38.5 +RUN0237,M014,PRD06,SHIFT_DAY,10,516,439,436,3,57.7,64.5 +RUN0238,M014,PRD02,SHIFT_DAY,11,308,212,210,2,30.7,38.5 +RUN0239,M014,PRD06,SHIFT_SWING,12,516,372,369,3,49.7,64.5 +RUN0240,M014,PRD02,SHIFT_SWING,12,308,241,240,1,32.3,38.5 +RUN0241,M015,PRD06,SHIFT_DAY,1,533,392,380,12,49.0,66.7 +RUN0242,M015,PRD02,SHIFT_NIGHT,2,312,224,222,2,28.0,39.1 +RUN0243,M015,PRD06,SHIFT_DAY,3,533,340,337,3,46.3,66.7 +RUN0244,M015,PRD02,SHIFT_DAY,4,312,241,237,4,30.2,39.1 +RUN0245,M015,PRD06,SHIFT_NIGHT,4,533,372,359,13,46.6,66.7 +RUN0246,M015,PRD02,SHIFT_NIGHT,5,312,223,219,4,27.9,39.1 +RUN0247,M015,PRD02,SHIFT_SWING,6,312,233,225,8,29.2,39.1 +RUN0248,M015,PRD06,SHIFT_DAY,6,533,382,373,9,47.8,66.7 +RUN0249,M015,PRD06,SHIFT_NIGHT,7,533,369,365,4,46.2,66.7 +RUN0250,M015,PRD06,SHIFT_DAY,8,533,395,381,14,49.4,66.7 +RUN0251,M015,PRD02,SHIFT_DAY,9,312,221,216,5,27.7,39.1 +RUN0252,M015,PRD06,SHIFT_DAY,10,533,421,408,13,52.7,66.7 +RUN0253,M015,PRD02,SHIFT_DAY,11,312,249,245,4,31.2,39.1 +RUN0254,M015,PRD06,SHIFT_SWING,11,533,374,363,11,46.8,66.7 +RUN0255,M015,PRD02,SHIFT_DAY,12,312,218,215,3,29.4,39.1 +RUN0256,M016,PRD02,SHIFT_NIGHT,1,289,88,87,1,23.9,36.2 +RUN0257,M016,PRD06,SHIFT_DAY,2,607,334,327,7,52.6,75.9 +RUN0258,M016,PRD02,SHIFT_SWING,2,289,171,168,3,27.0,36.2 +RUN0259,M016,PRD02,SHIFT_DAY,3,289,182,181,1,27.2,36.2 +RUN0260,M016,PRD06,SHIFT_DAY,3,607,359,349,10,53.7,75.9 +RUN0261,M016,PRD06,SHIFT_DAY,4,607,395,382,13,55.3,75.9 +RUN0262,M016,PRD02,SHIFT_SWING,4,289,170,169,1,23.8,36.2 +RUN0263,M016,PRD06,SHIFT_SWING,5,607,333,327,6,51.5,75.9 +RUN0264,M016,PRD06,SHIFT_DAY,6,607,351,342,9,57.3,75.9 +RUN0265,M016,PRD02,SHIFT_DAY,6,289,157,155,2,25.6,36.2 +RUN0266,M016,PRD06,SHIFT_NIGHT,7,607,356,351,5,51.1,75.9 +RUN0267,M016,PRD06,SHIFT_NIGHT,8,607,357,348,9,51.5,75.9 +RUN0268,M016,PRD02,SHIFT_SWING,9,289,174,171,3,23.3,36.2 +RUN0269,M016,PRD06,SHIFT_DAY,9,607,400,392,8,53.4,75.9 +RUN0270,M016,PRD02,SHIFT_DAY,10,289,107,106,1,27.8,36.2 +RUN0271,M016,PRD02,SHIFT_SWING,11,289,166,163,3,23.8,36.2 +RUN0272,M016,PRD06,SHIFT_SWING,11,607,355,344,11,50.8,75.9 +RUN0273,M016,PRD02,SHIFT_DAY,12,289,174,172,2,28.0,36.2 +RUN0274,M017,PRD02,SHIFT_NIGHT,1,264,189,187,2,23.7,33.0 +RUN0275,M017,PRD02,SHIFT_NIGHT,2,264,175,174,1,23.4,33.0 +RUN0276,M017,PRD06,SHIFT_SWING,2,600,369,364,5,49.4,75.1 +RUN0277,M017,PRD06,SHIFT_DAY,3,600,451,442,9,56.4,75.1 +RUN0278,M017,PRD06,SHIFT_SWING,4,600,391,385,6,51.7,75.1 +RUN0279,M017,PRD02,SHIFT_DAY,5,264,180,176,4,22.5,33.0 +RUN0280,M017,PRD06,SHIFT_DAY,5,600,440,435,5,55.0,75.1 +RUN0281,M017,PRD06,SHIFT_SWING,6,600,396,384,12,54.0,75.1 +RUN0282,M017,PRD06,SHIFT_NIGHT,7,600,384,372,12,48.1,75.1 +RUN0283,M017,PRD02,SHIFT_SWING,7,264,198,195,3,24.8,33.0 +RUN0284,M017,PRD02,SHIFT_SWING,8,264,188,186,2,23.5,33.0 +RUN0285,M017,PRD06,SHIFT_DAY,8,600,455,440,15,56.9,75.1 +RUN0286,M017,PRD02,SHIFT_SWING,9,264,179,176,3,22.4,33.0 +RUN0287,M017,PRD06,SHIFT_SWING,9,600,396,385,11,49.6,75.1 +RUN0288,M017,PRD02,SHIFT_DAY,10,264,178,176,2,22.3,33.0 +RUN0289,M017,PRD06,SHIFT_SWING,10,600,388,382,6,48.5,75.1 +RUN0290,M017,PRD02,SHIFT_DAY,11,264,192,188,4,24.1,33.0 +RUN0291,M017,PRD02,SHIFT_NIGHT,12,264,188,186,2,23.6,33.0 +RUN0292,M018,PRD02,SHIFT_NIGHT,1,300,172,171,1,27.9,37.6 +RUN0293,M018,PRD02,SHIFT_SWING,2,300,199,198,1,24.9,37.6 +RUN0294,M018,PRD06,SHIFT_NIGHT,3,578,378,373,5,47.3,72.3 +RUN0295,M018,PRD02,SHIFT_SWING,4,300,212,210,2,26.6,37.6 +RUN0296,M018,PRD06,SHIFT_DAY,4,578,428,422,6,53.5,72.3 +RUN0297,M018,PRD06,SHIFT_SWING,5,578,420,414,6,52.6,72.3 +RUN0298,M018,PRD02,SHIFT_NIGHT,6,300,186,184,2,25.7,37.6 +RUN0299,M018,PRD02,SHIFT_DAY,7,300,233,231,2,29.2,37.6 +RUN0300,M018,PRD02,SHIFT_SWING,8,300,225,224,1,28.2,37.6 +RUN0301,M018,PRD06,SHIFT_SWING,8,578,423,416,7,52.9,72.3 +RUN0302,M018,PRD06,SHIFT_DAY,9,578,342,338,4,51.0,72.3 +RUN0303,M018,PRD02,SHIFT_NIGHT,10,300,158,157,1,26.4,37.6 +RUN0304,M018,PRD02,SHIFT_NIGHT,11,300,219,217,2,27.4,37.6 +RUN0305,M018,PRD06,SHIFT_DAY,11,578,428,424,4,53.5,72.3 +RUN0306,M018,PRD06,SHIFT_DAY,12,578,398,394,4,49.8,72.3 +RUN0307,M019,PRD02,SHIFT_DAY,1,312,271,266,5,33.9,39.0 +RUN0308,M019,PRD06,SHIFT_NIGHT,2,620,517,508,9,64.7,77.6 +RUN0309,M019,PRD02,SHIFT_NIGHT,2,312,243,239,4,30.4,39.0 +RUN0310,M019,PRD06,SHIFT_NIGHT,3,620,487,484,3,64.7,77.6 +RUN0311,M019,PRD06,SHIFT_SWING,4,620,472,467,5,59.0,77.6 +RUN0312,M019,PRD02,SHIFT_NIGHT,5,312,262,260,2,32.8,39.0 +RUN0313,M019,PRD02,SHIFT_DAY,6,312,244,241,3,31.7,39.0 +RUN0314,M019,PRD06,SHIFT_SWING,6,620,514,510,4,66.8,77.6 +RUN0315,M019,PRD02,SHIFT_SWING,7,312,252,247,5,31.6,39.0 +RUN0316,M019,PRD06,SHIFT_SWING,7,620,474,471,3,59.3,77.6 +RUN0317,M019,PRD06,SHIFT_SWING,8,620,481,477,4,60.2,77.6 +RUN0318,M019,PRD06,SHIFT_DAY,9,620,514,509,5,67.3,77.6 +RUN0319,M019,PRD02,SHIFT_NIGHT,10,312,230,226,4,28.8,39.0 +RUN0320,M019,PRD06,SHIFT_NIGHT,11,620,506,504,2,63.3,77.6 +RUN0321,M019,PRD02,SHIFT_SWING,11,312,265,257,8,33.2,39.0 +RUN0322,M019,PRD02,SHIFT_DAY,12,312,280,273,7,35.1,39.0 +RUN0323,M020,PRD02,SHIFT_DAY,1,306,213,212,1,26.7,38.3 +RUN0324,M020,PRD06,SHIFT_SWING,2,544,392,382,10,49.0,68.0 +RUN0325,M020,PRD02,SHIFT_DAY,3,306,240,239,1,30.1,38.3 +RUN0326,M020,PRD06,SHIFT_DAY,4,544,392,385,7,49.1,68.0 +RUN0327,M020,PRD02,SHIFT_SWING,4,306,220,218,2,27.6,38.3 +RUN0328,M020,PRD06,SHIFT_NIGHT,5,544,378,367,11,47.3,68.0 +RUN0329,M020,PRD02,SHIFT_NIGHT,5,306,220,218,2,27.6,38.3 +RUN0330,M020,PRD02,SHIFT_SWING,6,306,202,200,2,28.2,38.3 +RUN0331,M020,PRD06,SHIFT_DAY,7,544,428,414,14,53.5,68.0 +RUN0332,M020,PRD02,SHIFT_SWING,7,306,232,231,1,29.1,38.3 +RUN0333,M020,PRD06,SHIFT_NIGHT,8,544,388,375,13,48.5,68.0 +RUN0334,M020,PRD02,SHIFT_DAY,8,306,232,230,2,29.0,38.3 +RUN0335,M020,PRD02,SHIFT_NIGHT,9,306,227,226,1,28.4,38.3 +RUN0336,M020,PRD06,SHIFT_NIGHT,9,544,391,382,9,48.9,68.0 +RUN0337,M020,PRD02,SHIFT_DAY,10,306,244,242,2,30.5,38.3 +RUN0338,M020,PRD06,SHIFT_DAY,11,544,363,357,6,48.7,68.0 +RUN0339,M020,PRD02,SHIFT_NIGHT,12,306,228,227,1,28.5,38.3 +RUN0340,M020,PRD06,SHIFT_SWING,12,544,381,373,8,47.7,68.0 +RUN0341,M021,PRD06,SHIFT_DAY,1,514,406,403,3,50.8,64.3 +RUN0342,M021,PRD07,SHIFT_NIGHT,2,172,112,110,2,14.0,21.5 +RUN0343,M021,PRD07,SHIFT_NIGHT,3,172,121,119,2,15.2,21.5 +RUN0344,M021,PRD03,SHIFT_DAY,4,222,153,152,1,19.2,27.8 +RUN0345,M021,PRD07,SHIFT_SWING,4,172,116,113,3,14.5,21.5 +RUN0346,M021,PRD07,SHIFT_NIGHT,5,172,117,115,2,14.7,21.5 +RUN0347,M021,PRD03,SHIFT_DAY,5,222,168,162,6,21.1,27.8 +RUN0348,M021,PRD06,SHIFT_NIGHT,6,514,347,346,1,43.4,64.3 +RUN0349,M021,PRD03,SHIFT_SWING,7,222,171,164,7,21.4,27.8 +RUN0350,M021,PRD07,SHIFT_NIGHT,8,172,124,122,2,15.5,21.5 +RUN0351,M021,PRD03,SHIFT_SWING,9,222,169,166,3,21.2,27.8 +RUN0352,M021,PRD06,SHIFT_SWING,9,514,379,378,1,47.4,64.3 +RUN0353,M021,PRD03,SHIFT_DAY,10,222,155,152,3,19.4,27.8 +RUN0354,M021,PRD07,SHIFT_NIGHT,10,172,124,122,2,15.6,21.5 +RUN0355,M021,PRD07,SHIFT_SWING,11,172,118,115,3,14.8,21.5 +RUN0356,M021,PRD07,SHIFT_SWING,12,172,129,126,3,16.2,21.5 +RUN0357,M022,PRD03,SHIFT_NIGHT,1,204,112,107,5,16.2,25.5 +RUN0358,M022,PRD06,SHIFT_NIGHT,1,530,291,285,6,42.0,66.3 +RUN0359,M022,PRD03,SHIFT_NIGHT,2,204,126,123,3,17.3,25.5 +RUN0360,M022,PRD07,SHIFT_NIGHT,2,168,110,107,3,15.1,21.1 +RUN0361,M022,PRD06,SHIFT_DAY,3,530,217,215,2,44.6,66.3 +RUN0362,M022,PRD07,SHIFT_DAY,4,168,79,78,1,14.0,21.1 +RUN0363,M022,PRD03,SHIFT_DAY,5,204,122,120,2,19.1,25.5 +RUN0364,M022,PRD06,SHIFT_SWING,5,530,304,292,12,47.3,66.3 +RUN0365,M022,PRD07,SHIFT_DAY,6,168,85,84,1,14.7,21.1 +RUN0366,M022,PRD06,SHIFT_SWING,7,530,318,311,7,47.5,66.3 +RUN0367,M022,PRD07,SHIFT_NIGHT,8,168,109,106,3,15.2,21.1 +RUN0368,M022,PRD03,SHIFT_DAY,8,204,130,126,4,18.2,25.5 +RUN0369,M022,PRD06,SHIFT_SWING,9,530,312,307,5,49.2,66.3 +RUN0370,M022,PRD06,SHIFT_DAY,10,530,195,189,6,46.9,66.3 +RUN0371,M022,PRD03,SHIFT_SWING,11,204,121,120,1,19.1,25.5 +RUN0372,M022,PRD06,SHIFT_NIGHT,12,530,333,319,14,47.3,66.3 +RUN0373,M022,PRD07,SHIFT_DAY,12,168,103,100,3,14.7,21.1 +RUN0374,M023,PRD07,SHIFT_DAY,1,166,150,143,7,18.8,20.8 +RUN0375,M023,PRD03,SHIFT_SWING,1,241,212,206,6,26.6,30.2 +RUN0376,M023,PRD07,SHIFT_NIGHT,2,166,118,116,2,15.6,20.8 +RUN0377,M023,PRD07,SHIFT_NIGHT,3,166,130,128,2,16.3,20.8 +RUN0378,M023,PRD03,SHIFT_SWING,3,241,184,181,3,23.1,30.2 +RUN0379,M023,PRD03,SHIFT_DAY,4,241,210,202,8,26.3,30.2 +RUN0380,M023,PRD06,SHIFT_DAY,5,585,527,517,10,65.9,73.2 +RUN0381,M023,PRD06,SHIFT_NIGHT,6,585,480,470,10,60.0,73.2 +RUN0382,M023,PRD07,SHIFT_SWING,6,166,144,141,3,18.1,20.8 +RUN0383,M023,PRD07,SHIFT_SWING,7,166,145,143,2,18.2,20.8 +RUN0384,M023,PRD07,SHIFT_DAY,8,166,146,139,7,18.3,20.8 +RUN0385,M023,PRD06,SHIFT_SWING,8,585,472,462,10,59.0,73.2 +RUN0386,M023,PRD06,SHIFT_NIGHT,9,585,428,419,9,53.6,73.2 +RUN0387,M023,PRD07,SHIFT_DAY,9,166,141,138,3,17.7,20.8 +RUN0388,M023,PRD03,SHIFT_DAY,10,241,215,206,9,26.9,30.2 +RUN0389,M023,PRD06,SHIFT_SWING,10,585,484,475,9,60.5,73.2 +RUN0390,M023,PRD07,SHIFT_SWING,11,166,125,123,2,15.7,20.8 +RUN0391,M023,PRD06,SHIFT_SWING,11,585,472,465,7,59.0,73.2 +RUN0392,M023,PRD03,SHIFT_NIGHT,12,241,184,182,2,23.1,30.2 +RUN0393,M024,PRD03,SHIFT_SWING,1,229,169,166,3,21.2,28.7 +RUN0394,M024,PRD07,SHIFT_SWING,2,180,137,134,3,17.2,22.5 +RUN0395,M024,PRD07,SHIFT_DAY,3,180,133,132,1,16.7,22.5 +RUN0396,M024,PRD07,SHIFT_NIGHT,4,180,115,112,3,14.4,22.5 +RUN0397,M024,PRD06,SHIFT_SWING,5,511,385,381,4,48.2,63.9 +RUN0398,M024,PRD06,SHIFT_SWING,6,511,340,335,5,42.5,63.9 +RUN0399,M024,PRD06,SHIFT_DAY,7,511,328,321,7,48.1,63.9 +RUN0400,M024,PRD03,SHIFT_SWING,8,229,131,128,3,19.0,28.7 +RUN0401,M024,PRD03,SHIFT_SWING,9,229,155,151,4,19.4,28.7 +RUN0402,M024,PRD06,SHIFT_DAY,9,511,402,390,12,50.3,63.9 +RUN0403,M024,PRD07,SHIFT_DAY,10,180,124,123,1,15.5,22.5 +RUN0404,M024,PRD07,SHIFT_SWING,11,180,125,123,2,15.7,22.5 +RUN0405,M024,PRD06,SHIFT_DAY,11,511,381,376,5,47.7,63.9 +RUN0406,M024,PRD06,SHIFT_NIGHT,12,511,379,372,7,47.4,63.9 +RUN0407,M024,PRD07,SHIFT_NIGHT,12,180,132,131,1,16.6,22.5 +RUN0408,M025,PRD07,SHIFT_DAY,1,156,104,104,0,13.0,19.5 +RUN0409,M025,PRD03,SHIFT_SWING,2,222,164,162,2,20.5,27.8 +RUN0410,M025,PRD03,SHIFT_DAY,3,222,145,143,2,20.7,27.8 +RUN0411,M025,PRD07,SHIFT_NIGHT,4,156,101,101,0,13.8,19.5 +RUN0412,M025,PRD03,SHIFT_DAY,4,222,138,136,2,18.8,27.8 +RUN0413,M025,PRD06,SHIFT_NIGHT,5,624,425,408,17,53.2,78.0 +RUN0414,M025,PRD03,SHIFT_DAY,6,222,162,162,0,20.3,27.8 +RUN0415,M025,PRD03,SHIFT_NIGHT,7,222,158,156,2,19.8,27.8 +RUN0416,M025,PRD06,SHIFT_NIGHT,8,624,392,380,12,49.1,78.0 +RUN0417,M025,PRD07,SHIFT_SWING,9,156,105,104,1,13.2,19.5 +RUN0418,M025,PRD06,SHIFT_DAY,9,624,420,403,17,52.5,78.0 +RUN0419,M025,PRD06,SHIFT_NIGHT,10,624,428,410,18,53.5,78.0 +RUN0420,M025,PRD03,SHIFT_NIGHT,10,222,139,137,2,17.4,27.8 +RUN0421,M025,PRD03,SHIFT_NIGHT,11,222,142,140,2,17.8,27.8 +RUN0422,M025,PRD03,SHIFT_SWING,12,222,148,147,1,18.5,27.8 +RUN0423,M026,PRD06,SHIFT_SWING,1,615,517,498,19,64.7,76.9 +RUN0424,M026,PRD03,SHIFT_DAY,2,192,172,168,4,21.6,24.1 +RUN0425,M026,PRD07,SHIFT_SWING,2,186,160,158,2,20.1,23.3 +RUN0426,M026,PRD03,SHIFT_SWING,3,192,144,140,4,19.4,24.1 +RUN0427,M026,PRD07,SHIFT_NIGHT,3,186,138,137,1,18.6,23.3 +RUN0428,M026,PRD07,SHIFT_DAY,4,186,144,143,1,18.1,23.3 +RUN0429,M026,PRD03,SHIFT_SWING,4,192,145,141,4,18.2,24.1 +RUN0430,M026,PRD06,SHIFT_DAY,5,615,552,544,8,69.0,76.9 +RUN0431,M026,PRD03,SHIFT_SWING,6,192,156,152,4,19.6,24.1 +RUN0432,M026,PRD06,SHIFT_SWING,7,615,468,451,17,58.6,76.9 +RUN0433,M026,PRD06,SHIFT_SWING,8,615,476,467,9,59.5,76.9 +RUN0434,M026,PRD03,SHIFT_SWING,8,192,157,153,4,19.7,24.1 +RUN0435,M026,PRD07,SHIFT_DAY,9,186,151,148,3,20.0,23.3 +RUN0436,M026,PRD03,SHIFT_DAY,10,192,164,161,3,20.5,24.1 +RUN0437,M026,PRD06,SHIFT_DAY,11,615,548,527,21,68.6,76.9 +RUN0438,M026,PRD06,SHIFT_DAY,12,615,493,472,21,61.7,76.9 +RUN0439,M027,PRD06,SHIFT_DAY,1,634,491,488,3,61.4,79.3 +RUN0440,M027,PRD03,SHIFT_SWING,1,222,164,162,2,20.6,27.8 +RUN0441,M027,PRD03,SHIFT_NIGHT,2,222,163,160,3,20.4,27.8 +RUN0442,M027,PRD07,SHIFT_DAY,3,161,116,114,2,14.5,20.2 +RUN0443,M027,PRD03,SHIFT_DAY,3,222,160,158,2,20.0,27.8 +RUN0444,M027,PRD07,SHIFT_SWING,4,161,112,110,2,14.1,20.2 +RUN0445,M027,PRD06,SHIFT_SWING,4,634,483,481,2,60.4,79.3 +RUN0446,M027,PRD03,SHIFT_SWING,5,222,150,148,2,20.2,27.8 +RUN0447,M027,PRD06,SHIFT_DAY,5,634,436,435,1,58.4,79.3 +RUN0448,M027,PRD07,SHIFT_SWING,6,161,105,102,3,15.3,20.2 +RUN0449,M027,PRD03,SHIFT_DAY,7,222,154,150,4,19.3,27.8 +RUN0450,M027,PRD06,SHIFT_NIGHT,8,634,426,422,4,53.3,79.3 +RUN0451,M027,PRD06,SHIFT_SWING,9,634,420,417,3,52.5,79.3 +RUN0452,M027,PRD07,SHIFT_NIGHT,9,161,108,105,3,13.5,20.2 +RUN0453,M027,PRD07,SHIFT_DAY,10,161,106,103,3,14.4,20.2 +RUN0454,M027,PRD06,SHIFT_NIGHT,10,634,372,367,5,50.4,79.3 +RUN0455,M027,PRD07,SHIFT_SWING,11,161,116,114,2,14.5,20.2 +RUN0456,M027,PRD03,SHIFT_NIGHT,11,222,157,155,2,19.7,27.8 +RUN0457,M027,PRD03,SHIFT_DAY,12,222,176,174,2,22.0,27.8 +RUN0458,M028,PRD06,SHIFT_NIGHT,1,504,277,273,4,43.4,63.0 +RUN0459,M028,PRD07,SHIFT_DAY,2,165,97,95,2,14.3,20.7 +RUN0460,M028,PRD06,SHIFT_SWING,3,504,250,249,1,42.7,63.0 +RUN0461,M028,PRD07,SHIFT_NIGHT,3,165,83,81,2,14.3,20.7 +RUN0462,M028,PRD06,SHIFT_NIGHT,4,504,269,265,4,45.3,63.0 +RUN0463,M028,PRD03,SHIFT_SWING,5,228,122,121,1,21.3,28.6 +RUN0464,M028,PRD07,SHIFT_NIGHT,6,165,104,103,1,14.0,20.7 +RUN0465,M028,PRD06,SHIFT_SWING,6,504,316,312,4,42.5,63.0 +RUN0466,M028,PRD03,SHIFT_DAY,7,228,144,142,2,19.9,28.6 +RUN0467,M028,PRD06,SHIFT_DAY,8,504,324,320,4,44.9,63.0 +RUN0468,M028,PRD06,SHIFT_DAY,9,504,296,294,2,44.3,63.0 +RUN0469,M028,PRD07,SHIFT_DAY,10,165,114,113,1,15.4,20.7 +RUN0470,M028,PRD03,SHIFT_NIGHT,10,228,135,133,2,18.2,28.6 +RUN0471,M028,PRD03,SHIFT_DAY,11,228,154,152,2,20.5,28.6 +RUN0472,M028,PRD07,SHIFT_SWING,12,165,100,98,2,14.2,20.7 +RUN0473,M028,PRD06,SHIFT_SWING,12,504,333,329,4,47.0,63.0 +RUN0474,M029,PRD06,SHIFT_NIGHT,1,617,511,501,10,63.9,77.2 +RUN0475,M029,PRD03,SHIFT_SWING,2,228,175,173,2,21.9,28.6 +RUN0476,M029,PRD03,SHIFT_SWING,3,228,188,185,3,23.6,28.6 +RUN0477,M029,PRD06,SHIFT_SWING,4,617,470,463,7,58.8,77.2 +RUN0478,M029,PRD07,SHIFT_SWING,5,167,132,129,3,16.6,20.9 +RUN0479,M029,PRD06,SHIFT_SWING,5,617,500,489,11,62.5,77.2 +RUN0480,M029,PRD06,SHIFT_DAY,6,617,540,531,9,67.5,77.2 +RUN0481,M029,PRD03,SHIFT_NIGHT,7,228,179,178,1,22.4,28.6 +RUN0482,M029,PRD07,SHIFT_SWING,8,167,126,122,4,15.8,20.9 +RUN0483,M029,PRD07,SHIFT_DAY,9,167,140,135,5,17.5,20.9 +RUN0484,M029,PRD03,SHIFT_DAY,10,228,178,175,3,22.3,28.6 +RUN0485,M029,PRD06,SHIFT_SWING,11,617,508,499,9,63.6,77.2 +RUN0486,M029,PRD03,SHIFT_DAY,11,228,180,178,2,22.6,28.6 +RUN0487,M029,PRD07,SHIFT_DAY,12,167,139,136,3,18.1,20.9 +RUN0488,M030,PRD06,SHIFT_DAY,1,565,421,408,13,55.6,70.7 +RUN0489,M030,PRD03,SHIFT_DAY,1,235,159,158,1,21.1,29.4 +RUN0490,M030,PRD03,SHIFT_NIGHT,2,235,166,165,1,20.8,29.4 +RUN0491,M030,PRD06,SHIFT_DAY,2,565,395,380,15,49.4,70.7 +RUN0492,M030,PRD03,SHIFT_DAY,3,235,163,163,0,20.4,29.4 +RUN0493,M030,PRD06,SHIFT_DAY,4,565,447,438,9,55.9,70.7 +RUN0494,M030,PRD03,SHIFT_DAY,5,235,183,181,2,22.9,29.4 +RUN0495,M030,PRD07,SHIFT_NIGHT,6,164,115,114,1,14.4,20.5 +RUN0496,M030,PRD06,SHIFT_NIGHT,6,565,359,354,5,44.9,70.7 +RUN0497,M030,PRD03,SHIFT_NIGHT,7,235,168,166,2,21.0,29.4 +RUN0498,M030,PRD07,SHIFT_SWING,7,164,117,116,1,14.7,20.5 +RUN0499,M030,PRD07,SHIFT_SWING,8,164,115,114,1,14.4,20.5 +RUN0500,M030,PRD03,SHIFT_SWING,9,235,166,165,1,20.8,29.4 +RUN0501,M030,PRD06,SHIFT_DAY,10,565,423,419,4,52.9,70.7 +RUN0502,M030,PRD07,SHIFT_NIGHT,11,164,120,118,2,15.0,20.5 +RUN0503,M030,PRD06,SHIFT_DAY,12,565,416,402,14,52.0,70.7 +RUN0504,M031,PRD04,SHIFT_SWING,1,94,68,68,0,8.5,11.8 +RUN0505,M031,PRD08,SHIFT_NIGHT,2,118,76,75,1,9.5,14.8 +RUN0506,M031,PRD08,SHIFT_SWING,3,118,88,87,1,11.0,14.8 +RUN0507,M031,PRD08,SHIFT_SWING,4,118,79,78,1,9.9,14.8 +RUN0508,M031,PRD08,SHIFT_NIGHT,5,118,83,82,1,10.4,14.8 +RUN0509,M031,PRD08,SHIFT_NIGHT,6,118,72,71,1,9.9,14.8 +RUN0510,M031,PRD04,SHIFT_SWING,6,94,62,62,0,8.6,11.8 +RUN0511,M031,PRD04,SHIFT_NIGHT,7,94,61,61,0,7.7,11.8 +RUN0512,M031,PRD08,SHIFT_SWING,8,118,88,87,1,11.1,14.8 +RUN0513,M031,PRD04,SHIFT_DAY,9,94,72,72,0,9.1,11.8 +RUN0514,M031,PRD08,SHIFT_SWING,9,118,90,90,0,11.3,14.8 +RUN0515,M031,PRD04,SHIFT_NIGHT,10,94,60,60,0,7.6,11.8 +RUN0516,M031,PRD04,SHIFT_SWING,11,94,58,58,0,7.9,11.8 +RUN0517,M031,PRD08,SHIFT_DAY,11,118,87,86,1,11.8,14.8 +RUN0518,M031,PRD08,SHIFT_SWING,12,118,84,84,0,10.5,14.8 +RUN0519,M032,PRD04,SHIFT_SWING,1,91,62,62,0,8.4,11.4 +RUN0520,M032,PRD04,SHIFT_NIGHT,2,91,58,58,0,8.2,11.4 +RUN0521,M032,PRD04,SHIFT_DAY,3,91,59,59,0,8.0,11.4 +RUN0522,M032,PRD04,SHIFT_SWING,4,91,56,56,0,7.6,11.4 +RUN0523,M032,PRD08,SHIFT_DAY,5,119,79,78,1,10.8,14.9 +RUN0524,M032,PRD04,SHIFT_SWING,5,91,57,57,0,7.8,11.4 +RUN0525,M032,PRD04,SHIFT_SWING,6,91,55,55,0,8.1,11.4 +RUN0526,M032,PRD08,SHIFT_NIGHT,6,119,63,61,2,9.3,14.9 +RUN0527,M032,PRD04,SHIFT_SWING,7,91,48,48,0,7.6,11.4 +RUN0528,M032,PRD04,SHIFT_SWING,8,91,39,39,0,8.5,11.4 +RUN0529,M032,PRD04,SHIFT_SWING,9,91,56,56,0,7.4,11.4 +RUN0530,M032,PRD08,SHIFT_NIGHT,9,119,81,79,2,10.7,14.9 +RUN0531,M032,PRD04,SHIFT_NIGHT,10,91,42,42,0,7.9,11.4 +RUN0532,M032,PRD08,SHIFT_NIGHT,11,119,69,68,1,9.2,14.9 +RUN0533,M032,PRD08,SHIFT_DAY,12,119,47,46,1,10.1,14.9 +RUN0534,M033,PRD04,SHIFT_SWING,1,80,61,59,2,7.7,10.1 +RUN0535,M033,PRD08,SHIFT_NIGHT,1,108,87,86,1,10.9,13.5 +RUN0536,M033,PRD04,SHIFT_SWING,2,80,62,61,1,8.4,10.1 +RUN0537,M033,PRD08,SHIFT_DAY,3,108,84,84,0,10.9,13.5 +RUN0538,M033,PRD04,SHIFT_NIGHT,4,80,61,60,1,7.7,10.1 +RUN0539,M033,PRD04,SHIFT_DAY,5,80,62,60,2,7.8,10.1 +RUN0540,M033,PRD08,SHIFT_DAY,5,108,91,89,2,11.4,13.5 +RUN0541,M033,PRD04,SHIFT_DAY,6,80,66,65,1,8.3,10.1 +RUN0542,M033,PRD08,SHIFT_DAY,6,108,89,88,1,11.2,13.5 +RUN0543,M033,PRD08,SHIFT_DAY,7,108,92,90,2,12.1,13.5 +RUN0544,M033,PRD04,SHIFT_SWING,8,80,64,64,0,8.1,10.1 +RUN0545,M033,PRD04,SHIFT_DAY,9,80,67,65,2,8.4,10.1 +RUN0546,M033,PRD04,SHIFT_NIGHT,10,80,60,60,0,7.6,10.1 +RUN0547,M033,PRD08,SHIFT_DAY,10,108,85,85,0,10.7,13.5 +RUN0548,M033,PRD08,SHIFT_NIGHT,11,108,86,85,1,10.8,13.5 +RUN0549,M033,PRD08,SHIFT_SWING,12,108,90,89,1,11.3,13.5 +RUN0550,M034,PRD04,SHIFT_SWING,1,81,60,58,2,7.6,10.2 +RUN0551,M034,PRD04,SHIFT_NIGHT,2,81,51,50,1,6.8,10.2 +RUN0552,M034,PRD08,SHIFT_NIGHT,2,101,63,62,1,8.5,12.7 +RUN0553,M034,PRD08,SHIFT_SWING,3,101,75,74,1,9.4,12.7 +RUN0554,M034,PRD08,SHIFT_NIGHT,4,101,75,74,1,9.4,12.7 +RUN0555,M034,PRD04,SHIFT_NIGHT,5,81,53,51,2,6.7,10.2 +RUN0556,M034,PRD08,SHIFT_NIGHT,6,101,73,73,0,9.2,12.7 +RUN0557,M034,PRD08,SHIFT_DAY,7,101,69,67,2,8.7,12.7 +RUN0558,M034,PRD04,SHIFT_SWING,7,81,56,55,1,7.1,10.2 +RUN0559,M034,PRD04,SHIFT_SWING,8,81,61,60,1,7.7,10.2 +RUN0560,M034,PRD08,SHIFT_DAY,8,101,79,78,1,9.9,12.7 +RUN0561,M034,PRD04,SHIFT_SWING,9,81,46,45,1,7.0,10.2 +RUN0562,M034,PRD08,SHIFT_DAY,10,101,76,75,1,9.5,12.7 +RUN0563,M034,PRD08,SHIFT_SWING,11,101,76,75,1,9.6,12.7 +RUN0564,M034,PRD08,SHIFT_SWING,12,101,76,74,2,9.5,12.7 +RUN0565,M034,PRD04,SHIFT_DAY,12,81,63,61,2,7.9,10.2 +RUN0566,M035,PRD08,SHIFT_SWING,1,116,72,71,1,10.3,14.6 +RUN0567,M035,PRD04,SHIFT_NIGHT,1,90,51,51,0,7.3,11.3 +RUN0568,M035,PRD04,SHIFT_DAY,2,90,46,46,0,8.7,11.3 +RUN0569,M035,PRD08,SHIFT_DAY,3,116,70,70,0,11.0,14.6 +RUN0570,M035,PRD04,SHIFT_NIGHT,3,90,47,47,0,7.4,11.3 +RUN0571,M035,PRD08,SHIFT_NIGHT,4,116,75,74,1,10.3,14.6 +RUN0572,M035,PRD08,SHIFT_SWING,5,116,49,49,0,10.8,14.6 +RUN0573,M035,PRD04,SHIFT_SWING,6,90,40,40,0,7.3,11.3 +RUN0574,M035,PRD04,SHIFT_DAY,7,90,48,48,0,8.2,11.3 +RUN0575,M035,PRD08,SHIFT_NIGHT,7,116,58,57,1,9.9,14.6 +RUN0576,M035,PRD08,SHIFT_SWING,8,116,51,51,0,9.8,14.6 +RUN0577,M035,PRD04,SHIFT_DAY,9,90,57,57,0,8.6,11.3 +RUN0578,M035,PRD04,SHIFT_DAY,10,90,45,45,0,8.4,11.3 +RUN0579,M035,PRD04,SHIFT_DAY,11,90,60,59,1,8.7,11.3 +RUN0580,M035,PRD08,SHIFT_SWING,11,116,64,63,1,9.4,14.6 +RUN0581,M035,PRD04,SHIFT_SWING,12,90,53,53,0,7.4,11.3 +RUN0582,M035,PRD08,SHIFT_DAY,12,116,76,76,0,10.5,14.6 +RUN0583,M036,PRD08,SHIFT_NIGHT,1,114,84,83,1,11.0,14.3 +RUN0584,M036,PRD04,SHIFT_SWING,2,81,68,67,1,8.5,10.2 +RUN0585,M036,PRD08,SHIFT_SWING,2,114,99,99,0,12.4,14.3 +RUN0586,M036,PRD08,SHIFT_DAY,3,114,94,94,0,11.8,14.3 +RUN0587,M036,PRD04,SHIFT_DAY,3,81,72,72,0,9.1,10.2 +RUN0588,M036,PRD08,SHIFT_DAY,4,114,94,93,1,11.8,14.3 +RUN0589,M036,PRD04,SHIFT_NIGHT,4,81,66,65,1,8.3,10.2 +RUN0590,M036,PRD04,SHIFT_DAY,5,81,69,67,2,8.7,10.2 +RUN0591,M036,PRD08,SHIFT_NIGHT,5,114,90,90,0,11.3,14.3 +RUN0592,M036,PRD04,SHIFT_NIGHT,6,81,64,63,1,8.0,10.2 +RUN0593,M036,PRD08,SHIFT_SWING,6,114,88,87,1,11.1,14.3 +RUN0594,M036,PRD08,SHIFT_SWING,7,114,85,85,0,11.1,14.3 +RUN0595,M036,PRD04,SHIFT_DAY,7,81,67,66,1,8.8,10.2 +RUN0596,M036,PRD08,SHIFT_DAY,8,114,93,92,1,11.7,14.3 +RUN0597,M036,PRD04,SHIFT_SWING,8,81,68,66,2,8.5,10.2 +RUN0598,M036,PRD08,SHIFT_DAY,9,114,96,95,1,12.1,14.3 +RUN0599,M036,PRD04,SHIFT_SWING,10,81,68,66,2,8.5,10.2 +RUN0600,M036,PRD08,SHIFT_SWING,11,114,87,87,0,10.9,14.3 +RUN0601,M036,PRD04,SHIFT_NIGHT,11,81,68,67,1,8.6,10.2 +RUN0602,M036,PRD04,SHIFT_SWING,12,81,61,61,0,7.7,10.2 +RUN0603,M036,PRD08,SHIFT_SWING,12,114,96,95,1,12.1,14.3 +RUN0604,M037,PRD04,SHIFT_DAY,1,85,60,60,0,8.4,10.7 +RUN0605,M037,PRD04,SHIFT_DAY,2,85,60,60,0,7.5,10.7 +RUN0606,M037,PRD08,SHIFT_DAY,3,115,84,83,1,10.5,14.4 +RUN0607,M037,PRD04,SHIFT_NIGHT,3,85,56,56,0,7.1,10.7 +RUN0608,M037,PRD08,SHIFT_NIGHT,4,115,73,72,1,9.2,14.4 +RUN0609,M037,PRD04,SHIFT_SWING,4,85,65,64,1,8.2,10.7 +RUN0610,M037,PRD08,SHIFT_SWING,5,115,85,84,1,10.7,14.4 +RUN0611,M037,PRD04,SHIFT_NIGHT,5,85,61,60,1,7.7,10.7 +RUN0612,M037,PRD04,SHIFT_DAY,6,85,64,64,0,8.0,10.7 +RUN0613,M037,PRD08,SHIFT_NIGHT,6,115,78,78,0,9.8,14.4 +RUN0614,M037,PRD08,SHIFT_DAY,7,115,81,80,1,10.2,14.4 +RUN0615,M037,PRD08,SHIFT_SWING,8,115,80,80,0,10.0,14.4 +RUN0616,M037,PRD04,SHIFT_DAY,9,85,66,66,0,8.3,10.7 +RUN0617,M037,PRD04,SHIFT_NIGHT,10,85,56,56,0,7.1,10.7 +RUN0618,M037,PRD08,SHIFT_SWING,10,115,77,77,0,9.7,14.4 +RUN0619,M037,PRD08,SHIFT_SWING,11,115,77,76,1,10.2,14.4 +RUN0620,M037,PRD08,SHIFT_NIGHT,12,115,82,81,1,10.3,14.4 +RUN0621,M038,PRD04,SHIFT_DAY,1,87,55,54,1,7.9,10.9 +RUN0622,M038,PRD08,SHIFT_DAY,1,116,68,66,2,9.7,14.5 +RUN0623,M038,PRD04,SHIFT_SWING,2,87,64,64,0,8.0,10.9 +RUN0624,M038,PRD08,SHIFT_DAY,2,116,80,77,3,10.1,14.5 +RUN0625,M038,PRD08,SHIFT_NIGHT,3,116,67,66,1,9.1,14.5 +RUN0626,M038,PRD04,SHIFT_SWING,4,87,60,60,0,7.6,10.9 +RUN0627,M038,PRD08,SHIFT_DAY,4,116,90,88,2,11.3,14.5 +RUN0628,M038,PRD08,SHIFT_DAY,5,116,86,85,1,10.8,14.5 +RUN0629,M038,PRD04,SHIFT_NIGHT,6,87,56,55,1,7.1,10.9 +RUN0630,M038,PRD04,SHIFT_DAY,7,87,58,56,2,7.8,10.9 +RUN0631,M038,PRD08,SHIFT_NIGHT,7,116,70,68,2,9.4,14.5 +RUN0632,M038,PRD04,SHIFT_DAY,8,87,59,58,1,7.4,10.9 +RUN0633,M038,PRD08,SHIFT_DAY,8,116,85,84,1,10.7,14.5 +RUN0634,M038,PRD04,SHIFT_NIGHT,9,87,58,58,0,7.3,10.9 +RUN0635,M038,PRD04,SHIFT_DAY,10,87,56,55,1,7.8,10.9 +RUN0636,M038,PRD08,SHIFT_NIGHT,10,116,67,66,1,9.3,14.5 +RUN0637,M038,PRD08,SHIFT_NIGHT,11,116,76,74,2,9.5,14.5 +RUN0638,M038,PRD08,SHIFT_SWING,12,116,85,82,3,10.7,14.5 +RUN0639,M038,PRD04,SHIFT_NIGHT,12,87,58,56,2,7.3,10.9 +RUN0640,M039,PRD08,SHIFT_NIGHT,1,103,76,76,0,10.0,12.9 +RUN0641,M039,PRD08,SHIFT_SWING,2,103,90,89,1,11.3,12.9 +RUN0642,M039,PRD04,SHIFT_SWING,3,84,74,72,2,9.3,10.6 +RUN0643,M039,PRD08,SHIFT_SWING,3,103,86,84,2,10.8,12.9 +RUN0644,M039,PRD08,SHIFT_NIGHT,4,103,78,77,1,9.9,12.9 +RUN0645,M039,PRD04,SHIFT_SWING,4,84,65,64,1,8.3,10.6 +RUN0646,M039,PRD08,SHIFT_NIGHT,5,103,80,79,1,10.5,12.9 +RUN0647,M039,PRD04,SHIFT_SWING,5,84,65,63,2,8.5,10.6 +RUN0648,M039,PRD08,SHIFT_DAY,6,103,83,81,2,10.4,12.9 +RUN0649,M039,PRD04,SHIFT_SWING,7,84,68,67,1,8.6,10.6 +RUN0650,M039,PRD04,SHIFT_NIGHT,8,84,67,66,1,8.4,10.6 +RUN0651,M039,PRD08,SHIFT_NIGHT,8,103,74,72,2,9.3,12.9 +RUN0652,M039,PRD04,SHIFT_SWING,9,84,72,70,2,9.0,10.6 +RUN0653,M039,PRD08,SHIFT_NIGHT,9,103,75,74,1,9.4,12.9 +RUN0654,M039,PRD04,SHIFT_NIGHT,10,84,64,62,2,8.1,10.6 +RUN0655,M039,PRD04,SHIFT_SWING,11,84,67,66,1,8.4,10.6 +RUN0656,M039,PRD04,SHIFT_DAY,12,84,74,72,2,9.3,10.6 +RUN0657,M039,PRD08,SHIFT_NIGHT,12,103,79,78,1,9.9,12.9 +RUN0658,M040,PRD08,SHIFT_DAY,1,105,74,72,2,9.3,13.2 +RUN0659,M040,PRD08,SHIFT_NIGHT,2,105,68,66,2,8.5,13.2 +RUN0660,M040,PRD04,SHIFT_DAY,3,96,66,64,2,8.3,12.0 +RUN0661,M040,PRD08,SHIFT_NIGHT,3,105,76,75,1,9.5,13.2 +RUN0662,M040,PRD04,SHIFT_DAY,4,96,62,60,2,9.2,12.0 +RUN0663,M040,PRD08,SHIFT_SWING,5,105,75,73,2,9.4,13.2 +RUN0664,M040,PRD08,SHIFT_DAY,6,105,61,59,2,9.1,13.2 +RUN0665,M040,PRD08,SHIFT_SWING,7,105,71,68,3,8.9,13.2 +RUN0666,M040,PRD04,SHIFT_NIGHT,7,96,64,63,1,8.0,12.0 +RUN0667,M040,PRD04,SHIFT_DAY,8,96,76,73,3,9.6,12.0 +RUN0668,M040,PRD08,SHIFT_SWING,8,105,79,77,2,9.9,13.2 +RUN0669,M040,PRD04,SHIFT_SWING,9,96,64,63,1,9.0,12.0 +RUN0670,M040,PRD04,SHIFT_NIGHT,10,96,64,63,1,8.0,12.0 +RUN0671,M040,PRD04,SHIFT_NIGHT,11,96,62,60,2,7.8,12.0 +RUN0672,M040,PRD08,SHIFT_SWING,11,105,76,75,1,9.6,13.2 +RUN0673,M040,PRD08,SHIFT_NIGHT,12,105,75,73,2,9.4,13.2 +RUN0674,M041,PRD08,SHIFT_SWING,1,117,75,74,1,10.4,14.7 +RUN0675,M041,PRD05,SHIFT_NIGHT,2,322,224,220,4,28.0,40.3 +RUN0676,M041,PRD08,SHIFT_DAY,2,117,84,84,0,10.5,14.7 +RUN0677,M041,PRD08,SHIFT_SWING,3,117,90,90,0,11.3,14.7 +RUN0678,M041,PRD07,SHIFT_SWING,3,166,123,119,4,15.4,20.8 +RUN0679,M041,PRD07,SHIFT_DAY,4,166,121,119,2,15.2,20.8 +RUN0680,M041,PRD05,SHIFT_DAY,4,322,248,245,3,31.0,40.3 +RUN0681,M041,PRD05,SHIFT_SWING,5,322,235,232,3,30.6,40.3 +RUN0682,M041,PRD07,SHIFT_SWING,5,166,114,110,4,14.9,20.8 +RUN0683,M041,PRD05,SHIFT_NIGHT,6,322,235,230,5,29.4,40.3 +RUN0684,M041,PRD05,SHIFT_SWING,7,322,249,242,7,31.2,40.3 +RUN0685,M041,PRD08,SHIFT_NIGHT,8,117,77,77,0,10.7,14.7 +RUN0686,M041,PRD07,SHIFT_DAY,8,166,104,101,3,14.5,20.8 +RUN0687,M041,PRD07,SHIFT_NIGHT,9,166,112,108,4,14.0,20.8 +RUN0688,M041,PRD05,SHIFT_SWING,10,322,195,189,6,30.9,40.3 +RUN0689,M041,PRD05,SHIFT_NIGHT,11,322,229,224,5,28.7,40.3 +RUN0690,M041,PRD07,SHIFT_SWING,11,166,117,115,2,14.7,20.8 +RUN0691,M041,PRD05,SHIFT_SWING,12,322,239,236,3,29.9,40.3 +RUN0692,M042,PRD08,SHIFT_SWING,1,98,64,63,1,8.0,12.3 +RUN0693,M042,PRD05,SHIFT_NIGHT,2,312,211,207,4,26.4,39.1 +RUN0694,M042,PRD08,SHIFT_NIGHT,2,98,60,60,0,7.6,12.3 +RUN0695,M042,PRD08,SHIFT_NIGHT,3,98,68,67,1,8.5,12.3 +RUN0696,M042,PRD08,SHIFT_DAY,4,98,72,72,0,9.0,12.3 +RUN0697,M042,PRD05,SHIFT_DAY,4,312,217,213,4,27.2,39.1 +RUN0698,M042,PRD07,SHIFT_NIGHT,5,189,129,127,2,16.2,23.7 +RUN0699,M042,PRD07,SHIFT_NIGHT,6,189,134,131,3,16.8,23.7 +RUN0700,M042,PRD08,SHIFT_SWING,6,98,65,65,0,8.2,12.3 +RUN0701,M042,PRD05,SHIFT_DAY,7,312,240,232,8,30.1,39.1 +RUN0702,M042,PRD08,SHIFT_DAY,8,98,58,57,1,8.6,12.3 +RUN0703,M042,PRD07,SHIFT_SWING,9,189,131,129,2,16.4,23.7 +RUN0704,M042,PRD05,SHIFT_DAY,10,312,227,222,5,28.4,39.1 +RUN0705,M042,PRD08,SHIFT_SWING,11,98,66,65,1,8.3,12.3 +RUN0706,M042,PRD07,SHIFT_DAY,12,189,146,142,4,18.3,23.7 +RUN0707,M043,PRD07,SHIFT_SWING,1,168,129,128,1,17.3,21.0 +RUN0708,M043,PRD05,SHIFT_SWING,1,329,258,256,2,34.6,41.2 +RUN0709,M043,PRD08,SHIFT_DAY,2,118,80,80,0,11.5,14.8 +RUN0710,M043,PRD07,SHIFT_SWING,3,168,123,123,0,17.7,21.0 +RUN0711,M043,PRD05,SHIFT_SWING,4,329,238,236,2,31.8,41.2 +RUN0712,M043,PRD08,SHIFT_DAY,4,118,88,88,0,11.8,14.8 +RUN0713,M043,PRD07,SHIFT_SWING,5,168,116,115,1,16.6,21.0 +RUN0714,M043,PRD07,SHIFT_NIGHT,6,168,122,121,1,15.8,21.0 +RUN0715,M043,PRD05,SHIFT_NIGHT,6,329,247,247,0,32.1,41.2 +RUN0716,M043,PRD08,SHIFT_NIGHT,7,118,80,80,0,10.7,14.8 +RUN0717,M043,PRD07,SHIFT_DAY,7,168,140,138,2,18.7,21.0 +RUN0718,M043,PRD07,SHIFT_SWING,8,168,120,119,1,16.2,21.0 +RUN0719,M043,PRD08,SHIFT_NIGHT,8,118,89,88,1,12.0,14.8 +RUN0720,M043,PRD05,SHIFT_NIGHT,9,329,259,258,1,34.2,41.2 +RUN0721,M043,PRD05,SHIFT_SWING,10,329,256,255,1,35.4,41.2 +RUN0722,M043,PRD07,SHIFT_SWING,10,168,126,126,0,17.5,21.0 +RUN0723,M043,PRD07,SHIFT_SWING,11,168,134,134,0,18.4,21.0 +RUN0724,M043,PRD05,SHIFT_NIGHT,12,329,261,260,1,34.0,41.2 +RUN0725,M043,PRD08,SHIFT_NIGHT,12,118,83,82,1,10.9,14.8 +RUN0726,M044,PRD08,SHIFT_NIGHT,1,119,77,77,0,10.1,14.9 +RUN0727,M044,PRD05,SHIFT_NIGHT,1,336,206,203,3,26.9,42.1 +RUN0728,M044,PRD05,SHIFT_DAY,2,336,236,233,3,29.5,42.1 +RUN0729,M044,PRD08,SHIFT_NIGHT,2,119,78,78,0,9.8,14.9 +RUN0730,M044,PRD07,SHIFT_DAY,3,176,127,123,4,15.9,22.1 +RUN0731,M044,PRD08,SHIFT_NIGHT,4,119,86,86,0,10.8,14.9 +RUN0732,M044,PRD05,SHIFT_DAY,5,336,236,233,3,29.6,42.1 +RUN0733,M044,PRD07,SHIFT_SWING,5,176,128,122,6,16.1,22.1 +RUN0734,M044,PRD05,SHIFT_NIGHT,6,336,227,224,3,28.4,42.1 +RUN0735,M044,PRD07,SHIFT_NIGHT,6,176,130,127,3,16.3,22.1 +RUN0736,M044,PRD05,SHIFT_SWING,7,336,214,207,7,28.1,42.1 +RUN0737,M044,PRD07,SHIFT_DAY,7,176,120,116,4,15.8,22.1 +RUN0738,M044,PRD05,SHIFT_SWING,8,336,256,252,4,32.1,42.1 +RUN0739,M044,PRD07,SHIFT_SWING,9,176,122,118,4,15.3,22.1 +RUN0740,M044,PRD08,SHIFT_NIGHT,10,119,84,84,0,10.6,14.9 +RUN0741,M044,PRD07,SHIFT_NIGHT,10,176,119,115,4,14.9,22.1 +RUN0742,M044,PRD07,SHIFT_SWING,11,176,124,119,5,15.5,22.1 +RUN0743,M044,PRD05,SHIFT_NIGHT,12,336,248,241,7,31.1,42.1 +RUN0744,M044,PRD08,SHIFT_NIGHT,12,119,85,85,0,10.7,14.9 +RUN0745,M045,PRD08,SHIFT_SWING,1,108,72,69,3,9.1,13.6 +RUN0746,M045,PRD05,SHIFT_NIGHT,1,350,240,238,2,30.1,43.8 +RUN0747,M045,PRD07,SHIFT_SWING,2,164,95,94,1,14.1,20.6 +RUN0748,M045,PRD05,SHIFT_NIGHT,3,350,202,199,3,27.5,43.8 +RUN0749,M045,PRD08,SHIFT_DAY,3,108,68,66,2,9.3,13.6 +RUN0750,M045,PRD05,SHIFT_DAY,4,350,268,265,3,33.6,43.8 +RUN0751,M045,PRD05,SHIFT_DAY,5,350,249,244,5,31.2,43.8 +RUN0752,M045,PRD07,SHIFT_NIGHT,6,164,108,106,2,13.6,20.6 +RUN0753,M045,PRD08,SHIFT_SWING,6,108,78,76,2,9.8,13.6 +RUN0754,M045,PRD08,SHIFT_SWING,7,108,70,67,3,8.8,13.6 +RUN0755,M045,PRD07,SHIFT_DAY,8,164,94,92,2,14.6,20.6 +RUN0756,M045,PRD08,SHIFT_DAY,9,108,70,67,3,9.8,13.6 +RUN0757,M045,PRD05,SHIFT_NIGHT,9,350,226,220,6,31.5,43.8 +RUN0758,M045,PRD07,SHIFT_DAY,10,164,112,111,1,14.0,20.6 +RUN0759,M045,PRD05,SHIFT_DAY,11,350,254,250,4,33.1,43.8 +RUN0760,M045,PRD08,SHIFT_DAY,11,108,74,72,2,9.7,13.6 +RUN0761,M045,PRD05,SHIFT_SWING,12,350,236,234,2,29.6,43.8 +RUN0762,M046,PRD08,SHIFT_NIGHT,1,117,88,85,3,11.0,14.7 +RUN0763,M046,PRD05,SHIFT_SWING,1,310,232,230,2,29.1,38.8 +RUN0764,M046,PRD07,SHIFT_NIGHT,2,174,133,131,2,16.7,21.8 +RUN0765,M046,PRD08,SHIFT_SWING,3,117,99,95,4,12.4,14.7 +RUN0766,M046,PRD05,SHIFT_SWING,4,310,263,261,2,32.9,38.8 +RUN0767,M046,PRD08,SHIFT_NIGHT,5,117,90,89,1,11.3,14.7 +RUN0768,M046,PRD07,SHIFT_SWING,5,174,145,138,7,18.2,21.8 +RUN0769,M046,PRD07,SHIFT_DAY,6,174,152,148,4,19.1,21.8 +RUN0770,M046,PRD05,SHIFT_NIGHT,7,310,246,243,3,30.8,38.8 +RUN0771,M046,PRD05,SHIFT_DAY,8,310,260,259,1,32.6,38.8 +RUN0772,M046,PRD05,SHIFT_SWING,9,310,248,246,2,31.0,38.8 +RUN0773,M046,PRD08,SHIFT_SWING,10,117,98,95,3,12.3,14.7 +RUN0774,M046,PRD08,SHIFT_DAY,11,117,93,90,3,11.7,14.7 +RUN0775,M046,PRD08,SHIFT_SWING,12,117,98,97,1,12.3,14.7 +RUN0776,M046,PRD05,SHIFT_SWING,12,310,264,263,1,33.1,38.8 +RUN0777,M047,PRD07,SHIFT_NIGHT,1,170,97,96,1,14.4,21.3 +RUN0778,M047,PRD07,SHIFT_SWING,2,170,79,79,0,15.1,21.3 +RUN0779,M047,PRD07,SHIFT_NIGHT,3,170,86,84,2,13.8,21.3 +RUN0780,M047,PRD07,SHIFT_SWING,4,170,95,93,2,15.8,21.3 +RUN0781,M047,PRD08,SHIFT_SWING,4,116,59,59,0,9.8,14.6 +RUN0782,M047,PRD08,SHIFT_NIGHT,5,116,66,66,0,9.4,14.6 +RUN0783,M047,PRD07,SHIFT_DAY,6,170,123,121,2,15.8,21.3 +RUN0784,M047,PRD08,SHIFT_SWING,6,116,81,81,0,10.4,14.6 +RUN0785,M047,PRD08,SHIFT_SWING,7,116,56,56,0,10.3,14.6 +RUN0786,M047,PRD08,SHIFT_SWING,8,116,79,78,1,10.8,14.6 +RUN0787,M047,PRD07,SHIFT_DAY,8,170,117,116,1,15.9,21.3 +RUN0788,M047,PRD05,SHIFT_SWING,9,344,178,171,7,30.0,43.0 +RUN0789,M047,PRD08,SHIFT_NIGHT,10,116,77,77,0,10.4,14.6 +RUN0790,M047,PRD05,SHIFT_DAY,10,344,237,233,4,32.0,43.0 +RUN0791,M047,PRD08,SHIFT_SWING,11,116,80,80,0,11.1,14.6 +RUN0792,M047,PRD07,SHIFT_DAY,12,170,113,110,3,16.8,21.3 +RUN0793,M048,PRD07,SHIFT_DAY,1,156,105,104,1,13.2,19.6 +RUN0794,M048,PRD08,SHIFT_DAY,1,108,80,77,3,10.0,13.6 +RUN0795,M048,PRD05,SHIFT_NIGHT,2,325,234,233,1,29.3,40.7 +RUN0796,M048,PRD08,SHIFT_NIGHT,2,108,76,74,2,9.5,13.6 +RUN0797,M048,PRD07,SHIFT_SWING,3,156,113,110,3,14.2,19.6 +RUN0798,M048,PRD08,SHIFT_DAY,4,108,82,79,3,10.3,13.6 +RUN0799,M048,PRD07,SHIFT_NIGHT,5,156,104,103,1,13.8,19.6 +RUN0800,M048,PRD05,SHIFT_SWING,5,325,206,203,3,27.1,40.7 +RUN0801,M048,PRD07,SHIFT_DAY,6,156,108,106,2,13.6,19.6 +RUN0802,M048,PRD05,SHIFT_SWING,7,325,196,195,1,26.2,40.7 +RUN0803,M048,PRD08,SHIFT_SWING,7,108,72,71,1,9.7,13.6 +RUN0804,M048,PRD07,SHIFT_SWING,8,156,102,101,1,12.8,19.6 +RUN0805,M048,PRD05,SHIFT_NIGHT,9,325,210,208,2,26.3,40.7 +RUN0806,M048,PRD07,SHIFT_SWING,9,156,111,109,2,13.9,19.6 +RUN0807,M048,PRD08,SHIFT_SWING,10,108,69,68,1,10.2,13.6 +RUN0808,M048,PRD08,SHIFT_SWING,11,108,72,69,3,9.0,13.6 +RUN0809,M048,PRD07,SHIFT_NIGHT,12,156,99,98,1,12.4,19.6 +RUN0810,M049,PRD07,SHIFT_NIGHT,1,163,136,132,4,17.1,20.4 +RUN0811,M049,PRD08,SHIFT_DAY,2,104,91,90,1,11.4,13.0 +RUN0812,M049,PRD05,SHIFT_SWING,2,379,298,290,8,37.3,47.4 +RUN0813,M049,PRD05,SHIFT_NIGHT,3,379,300,288,12,37.5,47.4 +RUN0814,M049,PRD07,SHIFT_NIGHT,3,163,126,121,5,15.8,20.4 +RUN0815,M049,PRD08,SHIFT_NIGHT,4,104,84,83,1,10.6,13.0 +RUN0816,M049,PRD07,SHIFT_DAY,5,163,134,129,5,16.8,20.4 +RUN0817,M049,PRD08,SHIFT_DAY,6,104,83,83,0,10.4,13.0 +RUN0818,M049,PRD05,SHIFT_NIGHT,7,379,319,307,12,39.9,47.4 +RUN0819,M049,PRD05,SHIFT_SWING,8,379,328,320,8,41.1,47.4 +RUN0820,M049,PRD07,SHIFT_NIGHT,9,163,135,130,5,16.9,20.4 +RUN0821,M049,PRD05,SHIFT_NIGHT,9,379,287,277,10,35.9,47.4 +RUN0822,M049,PRD08,SHIFT_SWING,10,104,86,86,0,11.0,13.0 +RUN0823,M049,PRD05,SHIFT_SWING,11,379,298,287,11,37.3,47.4 +RUN0824,M049,PRD07,SHIFT_SWING,11,163,138,134,4,17.3,20.4 +RUN0825,M049,PRD05,SHIFT_NIGHT,12,379,303,288,15,37.9,47.4 +RUN0826,M049,PRD08,SHIFT_SWING,12,104,80,80,0,10.1,13.0 +RUN0827,M050,PRD07,SHIFT_NIGHT,1,183,126,125,1,15.8,22.9 +RUN0828,M050,PRD08,SHIFT_SWING,2,108,79,79,0,9.9,13.5 +RUN0829,M050,PRD05,SHIFT_NIGHT,2,314,215,214,1,26.9,39.3 +RUN0830,M050,PRD07,SHIFT_NIGHT,3,183,133,130,3,16.7,22.9 +RUN0831,M050,PRD05,SHIFT_SWING,4,314,220,215,5,27.6,39.3 +RUN0832,M050,PRD07,SHIFT_DAY,4,183,135,132,3,16.9,22.9 +RUN0833,M050,PRD05,SHIFT_SWING,5,314,209,208,1,26.2,39.3 +RUN0834,M050,PRD08,SHIFT_NIGHT,6,108,75,74,1,9.4,13.5 +RUN0835,M050,PRD05,SHIFT_DAY,6,314,250,246,4,31.3,39.3 +RUN0836,M050,PRD07,SHIFT_SWING,7,183,139,135,4,17.4,22.9 +RUN0837,M050,PRD07,SHIFT_DAY,8,183,124,123,1,15.6,22.9 +RUN0838,M050,PRD07,SHIFT_SWING,9,183,111,109,2,15.3,22.9 +RUN0839,M050,PRD08,SHIFT_SWING,9,108,74,74,0,10.3,13.5 +RUN0840,M050,PRD07,SHIFT_SWING,10,183,126,123,3,16.4,22.9 +RUN0841,M050,PRD05,SHIFT_SWING,10,314,228,223,5,29.6,39.3 +RUN0842,M050,PRD05,SHIFT_SWING,11,314,233,229,4,29.2,39.3 +RUN0843,M050,PRD08,SHIFT_NIGHT,11,108,73,72,1,9.2,13.5 +RUN0844,M050,PRD08,SHIFT_NIGHT,12,108,77,77,0,9.7,13.5 diff --git a/v1/machine_maintenance/data/products.csv b/v1/machine_maintenance/data/products.csv new file mode 100644 index 00000000..1331e4e8 --- /dev/null +++ b/v1/machine_maintenance/data/products.csv @@ -0,0 +1,9 @@ +product_id,product_name,product_type,unit_weight_kg,target_cycle_time_sec +PRD01,Turbine Blade Assembly,Component,12.5,180 +PRD02,Compressor Valve Unit,Component,3.2,90 +PRD03,Pump Impeller Kit,Component,8.0,120 +PRD04,Generator Rotor Pack,Assembly,25.0,300 +PRD05,Motor Winding Set,Component,4.5,75 +PRD06,Hydraulic Seal Kit,Sub-Assembly,1.8,45 +PRD07,Bearing Housing Assembly,Sub-Assembly,6.0,150 +PRD08,Control Panel Unit,Assembly,15.0,240 diff --git a/v1/machine_maintenance/data/qualifications.csv b/v1/machine_maintenance/data/qualifications.csv new file mode 100644 index 00000000..eda2217a --- /dev/null +++ b/v1/machine_maintenance/data/qualifications.csv @@ -0,0 +1,33 @@ +technician_id,machine_type,certification_expiry_date +T001,Turbine,2025-01-27 +T001,Generator,2025-05-11 +T002,Compressor,2025-06-01 +T002,Pump,2025-11-17 +T003,Generator,2025-09-03 +T003,Motor,2025-05-07 +T004,Compressor,2025-04-16 +T005,Motor,2025-10-02 +T005,Pump,2025-06-20 +T006,Pump,2025-08-27 +T006,Generator,2025-07-06 +T007,Compressor,2025-11-27 +T008,Compressor,2025-11-19 +T008,Motor,2025-04-19 +T009,Turbine,2025-06-11 +T009,Generator,2025-05-23 +T010,Pump,2025-06-30 +T010,Motor,2025-05-03 +T011,Compressor,2025-10-21 +T012,Motor,2025-06-29 +T012,Generator,2025-11-21 +T013,Pump,2025-06-19 +T013,Compressor,2025-05-06 +T014,Motor,2025-09-19 +T015,Pump,2025-10-18 +T016,Compressor,2025-05-05 +T017,Turbine,2025-10-15 +T018,Motor,2025-07-31 +T018,Pump,2025-08-20 +T019,Generator,2025-06-06 +T020,Compressor,2025-10-13 +T020,Motor,2025-11-09 diff --git a/v1/machine_maintenance/data/sensor_readings.csv b/v1/machine_maintenance/data/sensor_readings.csv new file mode 100644 index 00000000..3a665098 --- /dev/null +++ b/v1/machine_maintenance/data/sensor_readings.csv @@ -0,0 +1,2401 @@ +sensor_id,machine_id,period,value,is_anomaly +S001,M001,1,0.91,0 +S001,M001,2,2.12,0 +S001,M001,3,2.38,0 +S001,M001,4,2.55,0 +S001,M001,5,1.65,0 +S001,M001,6,2.29,0 +S001,M001,7,3.66,0 +S001,M001,8,4.98,0 +S001,M001,9,3.41,0 +S001,M001,10,4.7,0 +S001,M001,11,7.17,1 +S001,M001,12,7.36,1 +S002,M001,1,44.1,0 +S002,M001,2,57.58,0 +S002,M001,3,53.97,0 +S002,M001,4,57.01,0 +S002,M001,5,64.14,0 +S002,M001,6,56.56,0 +S002,M001,7,70.04,0 +S002,M001,8,74.08,0 +S002,M001,9,74.88,0 +S002,M001,10,74.12,0 +S002,M001,11,90.09,1 +S002,M001,12,94.81,1 +S003,M001,1,177.01,0 +S003,M001,2,187.9,0 +S003,M001,3,151.36,0 +S003,M001,4,182.5,0 +S003,M001,5,144.76,0 +S003,M001,6,149.3,0 +S003,M001,7,159.75,0 +S003,M001,8,145.09,0 +S003,M001,9,119.48,0 +S003,M001,10,120.37,0 +S003,M001,11,109.7,1 +S003,M001,12,108.42,1 +S004,M001,1,11.7,0 +S004,M001,2,11.64,0 +S004,M001,3,18.66,0 +S004,M001,4,18.99,0 +S004,M001,5,24.39,0 +S004,M001,6,24.44,0 +S004,M001,7,23.39,0 +S004,M001,8,31.92,0 +S004,M001,9,36.41,0 +S004,M001,10,42.13,1 +S004,M001,11,41.55,1 +S004,M001,12,39.52,0 +S005,M002,7,1.57,0 +S005,M002,2,0.55,0 +S005,M002,3,2.0,0 +S005,M002,4,1.77,0 +S005,M002,5,1.14,0 +S005,M002,6,0.66,0 +S005,M002,1,1.47,0 +S005,M002,8,1.17,0 +S005,M002,9,1.85,0 +S005,M002,10,0.98,0 +S005,M002,11,0.72,0 +S005,M002,12,0.69,0 +S006,M002,1,52.49,0 +S006,M002,2,51.71,0 +S006,M002,3,54.24,0 +S006,M002,4,47.62,0 +S006,M002,5,51.95,0 +S006,M002,6,45.9,0 +S006,M002,7,50.11,0 +S006,M002,8,48.6,0 +S006,M002,9,55.86,0 +S006,M002,10,42.29,0 +S006,M002,11,53.09,0 +S006,M002,12,57.55,0 +S007,M002,7,169.94,0 +S007,M002,2,193.27,0 +S007,M002,3,171.5,0 +S007,M002,4,194.4,0 +S007,M002,5,170.69,0 +S007,M002,6,191.37,0 +S007,M002,1,177.57,0 +S007,M002,8,186.48,0 +S007,M002,9,165.63,0 +S007,M002,10,165.63,0 +S007,M002,11,162.74,0 +S007,M002,12,197.68,0 +S008,M002,7,15.59,0 +S008,M002,2,17.11,0 +S008,M002,3,11.37,0 +S008,M002,4,11.28,0 +S008,M002,5,16.48,0 +S008,M002,6,21.17,0 +S008,M002,1,20.3,0 +S008,M002,8,11.95,0 +S008,M002,9,10.9,0 +S008,M002,10,24.35,0 +S008,M002,11,18.43,0 +S008,M002,12,20.05,0 +S009,M003,1,1.12,0 +S009,M003,2,1.81,0 +S009,M003,3,1.91,0 +S009,M003,4,1.13,0 +S009,M003,5,1.87,0 +S009,M003,6,0.58,0 +S009,M003,7,0.93,0 +S009,M003,8,0.97,0 +S009,M003,9,0.66,0 +S009,M003,10,1.26,0 +S009,M003,11,0.73,0 +S009,M003,12,1.22,0 +S010,M003,1,56.95,0 +S010,M003,2,47.0,0 +S010,M003,3,51.13,0 +S010,M003,4,42.3,0 +S010,M003,5,45.57,0 +S010,M003,6,44.52,0 +S010,M003,7,48.58,0 +S010,M003,8,51.22,0 +S010,M003,9,55.35,0 +S010,M003,10,52.43,0 +S010,M003,11,53.5,0 +S010,M003,12,51.13,0 +S011,M003,1,180.45,0 +S011,M003,2,182.89,0 +S011,M003,3,184.67,0 +S011,M003,4,151.45,0 +S011,M003,5,163.66,0 +S011,M003,6,188.12,0 +S011,M003,7,196.08,0 +S011,M003,8,167.55,0 +S011,M003,9,159.07,0 +S011,M003,10,157.16,0 +S011,M003,11,182.87,0 +S011,M003,12,153.48,0 +S012,M003,1,21.11,0 +S012,M003,2,24.58,0 +S012,M003,3,11.38,0 +S012,M003,4,17.96,0 +S012,M003,5,15.64,0 +S012,M003,6,16.8,0 +S012,M003,7,12.36,0 +S012,M003,8,14.67,0 +S012,M003,9,14.87,0 +S012,M003,10,24.12,0 +S012,M003,11,18.94,0 +S012,M003,12,23.25,0 +S013,M004,1,0.73,0 +S013,M004,2,1.63,0 +S013,M004,3,0.57,0 +S013,M004,4,0.62,0 +S013,M004,5,1.16,0 +S013,M004,6,1.14,0 +S013,M004,7,1.41,0 +S013,M004,8,1.12,0 +S013,M004,9,0.82,0 +S013,M004,10,1.27,0 +S013,M004,11,1.02,0 +S013,M004,12,0.67,0 +S014,M004,1,53.56,0 +S014,M004,2,51.86,0 +S014,M004,3,50.54,0 +S014,M004,4,46.17,0 +S014,M004,5,44.41,0 +S014,M004,6,59.69,0 +S014,M004,7,41.1,0 +S014,M004,8,44.09,0 +S014,M004,9,58.91,0 +S014,M004,10,55.35,0 +S014,M004,11,55.28,0 +S014,M004,12,45.79,0 +S015,M004,1,156.0,0 +S015,M004,2,174.87,0 +S015,M004,3,171.53,0 +S015,M004,4,156.46,0 +S015,M004,5,176.63,0 +S015,M004,6,161.51,0 +S015,M004,7,177.94,0 +S015,M004,8,183.4,0 +S015,M004,9,167.71,0 +S015,M004,10,169.85,0 +S015,M004,11,187.1,0 +S015,M004,12,171.81,0 +S016,M004,1,16.9,0 +S016,M004,2,11.17,0 +S016,M004,3,14.7,0 +S016,M004,4,16.44,0 +S016,M004,5,16.07,0 +S016,M004,6,19.6,0 +S016,M004,7,14.34,0 +S016,M004,8,16.08,0 +S016,M004,9,24.49,0 +S016,M004,10,12.58,0 +S016,M004,11,24.21,0 +S016,M004,12,16.9,0 +S017,M005,1,1.53,0 +S017,M005,2,1.04,0 +S017,M005,3,1.16,0 +S017,M005,4,0.66,0 +S017,M005,5,1.15,0 +S017,M005,6,1.1,0 +S017,M005,7,0.62,0 +S017,M005,8,1.81,0 +S017,M005,9,1.62,0 +S017,M005,10,0.83,0 +S017,M005,11,1.67,0 +S017,M005,12,0.61,0 +S018,M005,1,52.66,0 +S018,M005,2,50.61,0 +S018,M005,3,43.88,0 +S018,M005,4,55.52,0 +S018,M005,5,47.02,0 +S018,M005,6,59.16,0 +S018,M005,7,52.91,0 +S018,M005,8,42.95,0 +S018,M005,9,42.06,0 +S018,M005,10,45.12,0 +S018,M005,11,43.47,0 +S018,M005,12,43.06,0 +S019,M005,1,187.96,0 +S019,M005,2,153.77,0 +S019,M005,3,197.56,0 +S019,M005,4,181.4,0 +S019,M005,5,173.2,0 +S019,M005,6,178.19,0 +S019,M005,7,178.97,0 +S019,M005,8,184.06,0 +S019,M005,9,194.1,0 +S019,M005,10,182.15,0 +S019,M005,11,199.33,0 +S019,M005,12,166.16,0 +S020,M005,1,24.56,0 +S020,M005,2,14.74,0 +S020,M005,3,16.6,0 +S020,M005,4,17.03,0 +S020,M005,5,19.47,0 +S020,M005,6,21.94,0 +S020,M005,7,18.87,0 +S020,M005,8,15.28,0 +S020,M005,9,11.11,0 +S020,M005,10,16.93,0 +S020,M005,11,10.56,0 +S020,M005,12,15.53,0 +S021,M006,1,0.93,0 +S021,M006,2,1.62,0 +S021,M006,3,2.43,0 +S021,M006,4,1.3,0 +S021,M006,5,2.57,0 +S021,M006,6,2.63,0 +S021,M006,7,3.53,0 +S021,M006,8,4.94,0 +S021,M006,9,5.09,0 +S021,M006,10,3.94,0 +S021,M006,11,6.95,1 +S021,M006,12,6.71,1 +S022,M006,1,43.76,0 +S022,M006,2,53.11,0 +S022,M006,3,52.93,0 +S022,M006,4,64.17,0 +S022,M006,5,57.29,0 +S022,M006,6,67.23,0 +S022,M006,7,71.17,0 +S022,M006,8,77.46,0 +S022,M006,9,66.23,0 +S022,M006,10,80.13,0 +S022,M006,11,75.28,0 +S022,M006,12,90.61,1 +S023,M006,1,199.55,0 +S023,M006,2,174.4,0 +S023,M006,3,175.2,0 +S023,M006,4,159.52,0 +S023,M006,5,178.89,0 +S023,M006,6,150.49,0 +S023,M006,7,159.22,0 +S023,M006,8,148.22,0 +S023,M006,9,120.63,0 +S023,M006,10,130.53,0 +S023,M006,11,114.69,1 +S023,M006,12,106.59,1 +S024,M006,1,18.37,0 +S024,M006,2,16.48,0 +S024,M006,3,15.72,0 +S024,M006,4,26.33,0 +S024,M006,5,29.95,0 +S024,M006,6,26.7,0 +S024,M006,7,22.33,0 +S024,M006,8,23.91,0 +S024,M006,9,35.46,0 +S024,M006,10,42.25,1 +S024,M006,11,36.32,0 +S024,M006,12,44.84,1 +S025,M007,1,1.49,0 +S025,M007,2,0.69,0 +S025,M007,3,1.56,0 +S025,M007,4,0.63,0 +S025,M007,5,1.34,0 +S025,M007,6,1.47,0 +S025,M007,7,0.99,0 +S025,M007,8,0.69,0 +S025,M007,9,1.55,0 +S025,M007,10,1.92,0 +S025,M007,11,2.0,0 +S025,M007,12,1.87,0 +S026,M007,1,41.87,0 +S026,M007,2,53.41,0 +S026,M007,3,50.17,0 +S026,M007,4,40.36,0 +S026,M007,5,46.18,0 +S026,M007,6,59.02,0 +S026,M007,7,46.83,0 +S026,M007,8,55.32,0 +S026,M007,9,43.84,0 +S026,M007,10,60.0,0 +S026,M007,11,43.1,0 +S026,M007,12,45.92,0 +S027,M007,1,189.41,0 +S027,M007,2,175.38,0 +S027,M007,3,176.99,0 +S027,M007,4,186.93,0 +S027,M007,5,176.33,0 +S027,M007,6,183.1,0 +S027,M007,7,193.82,0 +S027,M007,8,180.9,0 +S027,M007,9,179.86,0 +S027,M007,10,157.71,0 +S027,M007,11,159.04,0 +S027,M007,12,184.64,0 +S028,M007,1,19.37,0 +S028,M007,2,23.54,0 +S028,M007,3,20.82,0 +S028,M007,4,10.66,0 +S028,M007,5,15.46,0 +S028,M007,6,20.79,0 +S028,M007,7,24.54,0 +S028,M007,8,19.16,0 +S028,M007,9,21.29,0 +S028,M007,10,21.76,0 +S028,M007,11,13.51,0 +S028,M007,12,13.59,0 +S029,M008,1,1.95,0 +S029,M008,2,1.68,0 +S029,M008,3,1.86,0 +S029,M008,4,0.79,0 +S029,M008,5,1.52,0 +S029,M008,6,1.36,0 +S029,M008,7,1.16,0 +S029,M008,8,1.65,0 +S029,M008,9,1.67,0 +S029,M008,10,1.25,0 +S029,M008,11,1.13,0 +S029,M008,12,0.74,0 +S030,M008,1,43.99,0 +S030,M008,2,52.09,0 +S030,M008,3,57.46,0 +S030,M008,4,41.04,0 +S030,M008,5,49.61,0 +S030,M008,6,47.42,0 +S030,M008,7,58.69,0 +S030,M008,8,54.23,0 +S030,M008,9,50.32,0 +S030,M008,10,42.49,0 +S030,M008,11,41.68,0 +S030,M008,12,43.21,0 +S031,M008,1,172.47,0 +S031,M008,2,175.67,0 +S031,M008,3,191.55,0 +S031,M008,4,154.59,0 +S031,M008,5,195.53,0 +S031,M008,6,190.84,0 +S031,M008,7,194.23,0 +S031,M008,8,196.52,0 +S031,M008,9,170.74,0 +S031,M008,10,169.82,0 +S031,M008,11,168.7,0 +S031,M008,12,169.31,0 +S032,M008,1,11.22,0 +S032,M008,2,13.37,0 +S032,M008,3,14.78,0 +S032,M008,4,11.49,0 +S032,M008,5,20.72,0 +S032,M008,6,15.03,0 +S032,M008,7,12.19,0 +S032,M008,8,10.57,0 +S032,M008,9,23.76,0 +S032,M008,10,17.09,0 +S032,M008,11,22.47,0 +S032,M008,12,21.38,0 +S033,M009,1,1.2,0 +S033,M009,2,1.42,0 +S033,M009,3,1.86,0 +S033,M009,4,0.53,0 +S033,M009,5,0.82,0 +S033,M009,6,0.72,0 +S033,M009,7,1.91,0 +S033,M009,8,1.41,0 +S033,M009,9,1.13,0 +S033,M009,10,1.66,0 +S033,M009,11,0.86,0 +S033,M009,12,0.68,0 +S034,M009,1,44.77,0 +S034,M009,2,52.78,0 +S034,M009,3,52.46,0 +S034,M009,4,41.26,0 +S034,M009,5,56.73,0 +S034,M009,6,50.0,0 +S034,M009,7,50.72,0 +S034,M009,8,52.64,0 +S034,M009,9,51.5,0 +S034,M009,10,54.37,0 +S034,M009,11,45.83,0 +S034,M009,12,40.03,0 +S035,M009,1,167.64,0 +S035,M009,2,178.53,0 +S035,M009,3,159.37,0 +S035,M009,4,183.41,0 +S035,M009,5,176.17,0 +S035,M009,6,168.03,0 +S035,M009,7,197.67,0 +S035,M009,8,177.2,0 +S035,M009,9,189.32,0 +S035,M009,10,175.38,0 +S035,M009,11,151.02,0 +S035,M009,12,193.67,0 +S036,M009,1,10.65,0 +S036,M009,2,15.8,0 +S036,M009,3,15.6,0 +S036,M009,4,21.21,0 +S036,M009,5,15.36,0 +S036,M009,6,11.01,0 +S036,M009,7,13.62,0 +S036,M009,8,19.86,0 +S036,M009,9,11.55,0 +S036,M009,10,18.73,0 +S036,M009,11,21.35,0 +S036,M009,12,12.0,0 +S037,M010,1,1.03,0 +S037,M010,2,1.01,0 +S037,M010,3,1.46,0 +S037,M010,4,1.75,0 +S037,M010,5,1.53,0 +S037,M010,6,1.97,0 +S037,M010,7,1.22,0 +S037,M010,8,0.77,0 +S037,M010,9,0.7,0 +S037,M010,10,1.57,0 +S037,M010,11,1.92,0 +S037,M010,12,0.56,0 +S038,M010,1,44.03,0 +S038,M010,2,55.82,0 +S038,M010,3,57.72,0 +S038,M010,4,46.31,0 +S038,M010,5,46.2,0 +S038,M010,6,47.96,0 +S038,M010,7,56.31,0 +S038,M010,8,49.47,0 +S038,M010,9,40.73,0 +S038,M010,10,52.94,0 +S038,M010,11,45.72,0 +S038,M010,12,57.24,0 +S039,M010,1,152.39,0 +S039,M010,2,182.79,0 +S039,M010,3,163.66,0 +S039,M010,4,189.97,0 +S039,M010,5,171.85,0 +S039,M010,6,170.0,0 +S039,M010,7,171.99,0 +S039,M010,8,197.82,0 +S039,M010,9,166.95,0 +S039,M010,10,159.34,0 +S039,M010,11,184.6,0 +S039,M010,12,168.37,0 +S040,M010,1,21.96,0 +S040,M010,2,14.0,0 +S040,M010,3,11.24,0 +S040,M010,4,16.37,0 +S040,M010,5,16.46,0 +S040,M010,6,24.93,0 +S040,M010,7,12.71,0 +S040,M010,8,14.41,0 +S040,M010,9,11.54,0 +S040,M010,10,14.92,0 +S040,M010,11,14.43,0 +S040,M010,12,16.69,0 +S041,M011,1,1.58,0 +S041,M011,2,0.88,0 +S041,M011,3,1.57,0 +S041,M011,4,1.91,0 +S041,M011,5,2.82,0 +S041,M011,6,3.67,0 +S041,M011,7,3.61,0 +S041,M011,8,3.77,0 +S041,M011,9,4.85,0 +S041,M011,10,5.9,0 +S041,M011,11,4.56,0 +S041,M011,12,7.01,1 +S042,M011,1,48.12,0 +S042,M011,2,51.29,0 +S042,M011,3,57.81,0 +S042,M011,4,48.78,0 +S042,M011,5,49.36,0 +S042,M011,6,67.93,0 +S042,M011,7,68.31,0 +S042,M011,8,67.96,0 +S042,M011,9,66.94,0 +S042,M011,10,73.45,0 +S042,M011,11,84.78,0 +S042,M011,12,85.43,1 +S043,M011,1,197.47,0 +S043,M011,2,150.22,0 +S043,M011,3,153.44,0 +S043,M011,4,163.45,0 +S043,M011,5,155.14,0 +S043,M011,6,152.79,0 +S043,M011,7,132.77,0 +S043,M011,8,129.41,0 +S043,M011,9,130.51,0 +S043,M011,10,121.74,0 +S043,M011,11,113.35,1 +S043,M011,12,119.21,0 +S044,M011,1,10.39,0 +S044,M011,2,13.48,0 +S044,M011,3,19.7,0 +S044,M011,4,27.26,0 +S044,M011,5,17.25,0 +S044,M011,6,29.29,0 +S044,M011,7,30.63,0 +S044,M011,8,25.91,0 +S044,M011,9,34.68,0 +S044,M011,10,38.91,0 +S044,M011,11,46.65,1 +S044,M011,12,38.0,0 +S045,M012,1,0.7,0 +S045,M012,2,0.61,0 +S045,M012,3,0.76,0 +S045,M012,4,1.57,0 +S045,M012,5,2.0,0 +S045,M012,6,1.72,0 +S045,M012,7,1.95,0 +S045,M012,8,1.98,0 +S045,M012,9,1.5,0 +S045,M012,10,1.56,0 +S045,M012,11,1.32,0 +S045,M012,12,0.94,0 +S046,M012,1,46.0,0 +S046,M012,2,43.15,0 +S046,M012,3,54.19,0 +S046,M012,4,54.0,0 +S046,M012,5,43.48,0 +S046,M012,6,47.23,0 +S046,M012,7,44.48,0 +S046,M012,8,59.7,0 +S046,M012,9,55.84,0 +S046,M012,10,44.73,0 +S046,M012,11,49.88,0 +S046,M012,12,47.22,0 +S047,M012,1,178.61,0 +S047,M012,2,173.37,0 +S047,M012,3,199.15,0 +S047,M012,4,156.49,0 +S047,M012,5,194.21,0 +S047,M012,6,153.29,0 +S047,M012,7,169.91,0 +S047,M012,8,185.85,0 +S047,M012,9,173.93,0 +S047,M012,10,170.54,0 +S047,M012,11,170.47,0 +S047,M012,12,178.75,0 +S048,M012,1,11.88,0 +S048,M012,2,14.76,0 +S048,M012,3,11.11,0 +S048,M012,4,16.99,0 +S048,M012,5,17.76,0 +S048,M012,6,11.93,0 +S048,M012,7,22.44,0 +S048,M012,8,18.27,0 +S048,M012,9,18.82,0 +S048,M012,10,21.52,0 +S048,M012,11,11.94,0 +S048,M012,12,17.54,0 +S049,M013,1,1.8,0 +S049,M013,2,1.75,0 +S049,M013,3,1.28,0 +S049,M013,4,0.96,0 +S049,M013,5,0.74,0 +S049,M013,6,1.9,0 +S049,M013,7,0.84,0 +S049,M013,8,1.92,0 +S049,M013,9,1.28,0 +S049,M013,10,0.93,0 +S049,M013,11,0.62,0 +S049,M013,12,0.79,0 +S050,M013,1,59.13,0 +S050,M013,2,45.49,0 +S050,M013,3,52.5,0 +S050,M013,4,52.29,0 +S050,M013,5,41.87,0 +S050,M013,6,52.82,0 +S050,M013,7,51.84,0 +S050,M013,8,51.61,0 +S050,M013,9,43.42,0 +S050,M013,10,52.49,0 +S050,M013,11,58.04,0 +S050,M013,12,46.75,0 +S051,M013,1,196.2,0 +S051,M013,2,152.06,0 +S051,M013,3,193.19,0 +S051,M013,4,154.06,0 +S051,M013,5,197.43,0 +S051,M013,6,188.55,0 +S051,M013,7,163.23,0 +S051,M013,8,160.54,0 +S051,M013,9,178.61,0 +S051,M013,10,180.91,0 +S051,M013,11,151.51,0 +S051,M013,12,194.45,0 +S052,M013,1,18.18,0 +S052,M013,2,19.63,0 +S052,M013,3,14.53,0 +S052,M013,4,13.67,0 +S052,M013,5,22.11,0 +S052,M013,6,16.09,0 +S052,M013,7,16.8,0 +S052,M013,8,20.33,0 +S052,M013,9,12.37,0 +S052,M013,10,16.23,0 +S052,M013,11,16.97,0 +S052,M013,12,15.1,0 +S053,M014,1,0.72,0 +S053,M014,2,1.79,0 +S053,M014,3,0.98,0 +S053,M014,4,1.98,0 +S053,M014,5,1.02,0 +S053,M014,6,1.1,0 +S053,M014,7,1.64,0 +S053,M014,8,1.27,0 +S053,M014,9,0.66,0 +S053,M014,10,0.86,0 +S053,M014,11,0.68,0 +S053,M014,12,1.17,0 +S054,M014,1,42.82,0 +S054,M014,2,41.01,0 +S054,M014,3,58.91,0 +S054,M014,4,57.28,0 +S054,M014,5,48.36,0 +S054,M014,6,59.25,0 +S054,M014,7,58.05,0 +S054,M014,8,56.27,0 +S054,M014,9,58.68,0 +S054,M014,10,54.42,0 +S054,M014,11,43.8,0 +S054,M014,12,43.19,0 +S055,M014,1,199.8,0 +S055,M014,2,173.34,0 +S055,M014,3,193.95,0 +S055,M014,4,174.87,0 +S055,M014,5,154.5,0 +S055,M014,6,169.66,0 +S055,M014,7,172.86,0 +S055,M014,8,162.04,0 +S055,M014,9,179.17,0 +S055,M014,10,152.43,0 +S055,M014,11,164.07,0 +S055,M014,12,179.88,0 +S056,M014,1,22.64,0 +S056,M014,2,20.09,0 +S056,M014,3,14.29,0 +S056,M014,4,10.12,0 +S056,M014,5,11.61,0 +S056,M014,6,12.01,0 +S056,M014,7,13.97,0 +S056,M014,8,15.49,0 +S056,M014,9,16.05,0 +S056,M014,10,10.68,0 +S056,M014,11,10.77,0 +S056,M014,12,18.43,0 +S057,M015,1,1.04,0 +S057,M015,2,0.93,0 +S057,M015,3,1.08,0 +S057,M015,4,1.18,0 +S057,M015,5,1.32,0 +S057,M015,6,1.74,0 +S057,M015,7,1.43,0 +S057,M015,8,1.42,0 +S057,M015,9,0.69,0 +S057,M015,10,0.65,0 +S057,M015,11,1.06,0 +S057,M015,12,1.98,0 +S058,M015,1,51.16,0 +S058,M015,2,47.31,0 +S058,M015,3,42.89,0 +S058,M015,4,52.05,0 +S058,M015,5,48.03,0 +S058,M015,6,40.81,0 +S058,M015,7,40.78,0 +S058,M015,8,54.27,0 +S058,M015,9,56.08,0 +S058,M015,10,50.39,0 +S058,M015,11,42.98,0 +S058,M015,12,57.86,0 +S059,M015,1,156.99,0 +S059,M015,2,196.57,0 +S059,M015,3,165.93,0 +S059,M015,4,169.65,0 +S059,M015,5,180.83,0 +S059,M015,6,192.13,0 +S059,M015,7,179.69,0 +S059,M015,8,175.37,0 +S059,M015,9,175.49,0 +S059,M015,10,174.49,0 +S059,M015,11,178.15,0 +S059,M015,12,173.74,0 +S060,M015,1,10.25,0 +S060,M015,2,14.97,0 +S060,M015,3,11.64,0 +S060,M015,4,16.25,0 +S060,M015,5,14.62,0 +S060,M015,6,23.48,0 +S060,M015,7,23.08,0 +S060,M015,8,19.44,0 +S060,M015,9,18.95,0 +S060,M015,10,13.98,0 +S060,M015,11,19.83,0 +S060,M015,12,24.58,0 +S061,M016,1,1.37,0 +S061,M016,2,0.97,0 +S061,M016,3,0.93,0 +S061,M016,4,1.96,0 +S061,M016,5,2.45,0 +S061,M016,6,3.29,0 +S061,M016,7,3.94,0 +S061,M016,8,3.64,0 +S061,M016,9,5.29,0 +S061,M016,10,4.46,0 +S061,M016,11,6.0,0 +S061,M016,12,7.1,1 +S062,M016,1,43.82,0 +S062,M016,2,49.86,0 +S062,M016,3,51.31,0 +S062,M016,4,53.66,0 +S062,M016,5,52.63,0 +S062,M016,6,61.53,0 +S062,M016,7,67.11,0 +S062,M016,8,68.54,0 +S062,M016,9,79.15,0 +S062,M016,10,81.46,0 +S062,M016,11,85.73,1 +S062,M016,12,87.78,1 +S063,M016,1,178.04,0 +S063,M016,2,197.71,0 +S063,M016,3,168.93,0 +S063,M016,4,160.11,0 +S063,M016,5,180.58,0 +S063,M016,6,153.43,0 +S063,M016,7,150.07,0 +S063,M016,8,143.61,0 +S063,M016,9,140.21,0 +S063,M016,10,137.12,0 +S063,M016,11,123.0,0 +S063,M016,12,116.07,0 +S064,M016,1,13.97,0 +S064,M016,2,17.95,0 +S064,M016,3,26.3,0 +S064,M016,4,17.75,0 +S064,M016,5,19.96,0 +S064,M016,6,31.78,0 +S064,M016,7,34.81,0 +S064,M016,8,34.26,0 +S064,M016,9,36.08,0 +S064,M016,10,38.86,0 +S064,M016,11,39.0,0 +S064,M016,12,42.2,1 +S065,M017,1,1.34,0 +S065,M017,2,1.9,0 +S065,M017,3,1.58,0 +S065,M017,4,0.93,0 +S065,M017,5,1.36,0 +S065,M017,6,1.31,0 +S065,M017,7,1.84,0 +S065,M017,8,1.09,0 +S065,M017,9,1.02,0 +S065,M017,10,1.66,0 +S065,M017,11,0.72,0 +S065,M017,12,0.56,0 +S066,M017,1,59.11,0 +S066,M017,2,41.58,0 +S066,M017,3,58.48,0 +S066,M017,4,53.12,0 +S066,M017,5,54.95,0 +S066,M017,6,44.28,0 +S066,M017,7,56.56,0 +S066,M017,8,45.42,0 +S066,M017,9,51.24,0 +S066,M017,10,45.43,0 +S066,M017,11,42.18,0 +S066,M017,12,54.82,0 +S067,M017,1,161.96,0 +S067,M017,2,152.54,0 +S067,M017,3,195.26,0 +S067,M017,4,161.28,0 +S067,M017,5,161.64,0 +S067,M017,6,155.01,0 +S067,M017,7,166.51,0 +S067,M017,8,173.62,0 +S067,M017,9,184.06,0 +S067,M017,10,156.87,0 +S067,M017,11,198.23,0 +S067,M017,12,198.9,0 +S068,M017,1,12.37,0 +S068,M017,2,19.79,0 +S068,M017,3,23.21,0 +S068,M017,4,17.14,0 +S068,M017,5,19.76,0 +S068,M017,6,21.34,0 +S068,M017,7,14.31,0 +S068,M017,8,14.28,0 +S068,M017,9,10.89,0 +S068,M017,10,21.53,0 +S068,M017,11,19.78,0 +S068,M017,12,13.48,0 +S069,M018,1,1.61,0 +S069,M018,2,1.78,0 +S069,M018,3,0.56,0 +S069,M018,4,1.88,0 +S069,M018,5,1.13,0 +S069,M018,6,1.76,0 +S069,M018,7,1.9,0 +S069,M018,8,0.55,0 +S069,M018,9,1.75,0 +S069,M018,10,1.68,0 +S069,M018,11,0.78,0 +S069,M018,12,1.62,0 +S070,M018,1,57.45,0 +S070,M018,2,45.79,0 +S070,M018,3,40.75,0 +S070,M018,4,45.97,0 +S070,M018,5,52.06,0 +S070,M018,6,58.57,0 +S070,M018,7,46.7,0 +S070,M018,8,49.09,0 +S070,M018,9,52.83,0 +S070,M018,10,50.49,0 +S070,M018,11,57.79,0 +S070,M018,12,42.68,0 +S071,M018,1,175.21,0 +S071,M018,2,163.64,0 +S071,M018,3,190.44,0 +S071,M018,4,166.53,0 +S071,M018,5,186.56,0 +S071,M018,6,182.41,0 +S071,M018,7,185.93,0 +S071,M018,8,150.7,0 +S071,M018,9,166.86,0 +S071,M018,10,164.75,0 +S071,M018,11,183.72,0 +S071,M018,12,159.66,0 +S072,M018,1,19.16,0 +S072,M018,2,19.58,0 +S072,M018,3,16.08,0 +S072,M018,4,16.42,0 +S072,M018,5,14.92,0 +S072,M018,6,16.01,0 +S072,M018,7,11.43,0 +S072,M018,8,24.73,0 +S072,M018,9,17.16,0 +S072,M018,10,24.04,0 +S072,M018,11,10.1,0 +S072,M018,12,15.75,0 +S073,M019,1,1.17,0 +S073,M019,2,0.9,0 +S073,M019,3,0.99,0 +S073,M019,4,1.37,0 +S073,M019,5,1.36,0 +S073,M019,6,0.89,0 +S073,M019,7,1.04,0 +S073,M019,8,0.85,0 +S073,M019,9,1.5,0 +S073,M019,10,1.2,0 +S073,M019,11,0.74,0 +S073,M019,12,1.53,0 +S074,M019,1,58.46,0 +S074,M019,2,57.76,0 +S074,M019,3,55.4,0 +S074,M019,4,53.81,0 +S074,M019,5,52.77,0 +S074,M019,6,58.81,0 +S074,M019,7,47.35,0 +S074,M019,8,44.42,0 +S074,M019,9,59.15,0 +S074,M019,10,49.56,0 +S074,M019,11,49.1,0 +S074,M019,12,59.78,0 +S075,M019,1,168.68,0 +S075,M019,2,185.1,0 +S075,M019,3,195.64,0 +S075,M019,4,187.87,0 +S075,M019,5,190.1,0 +S075,M019,6,191.28,0 +S075,M019,7,188.09,0 +S075,M019,8,184.02,0 +S075,M019,9,179.79,0 +S075,M019,10,189.37,0 +S075,M019,11,176.28,0 +S075,M019,12,176.41,0 +S076,M019,1,15.43,0 +S076,M019,2,23.76,0 +S076,M019,3,11.68,0 +S076,M019,4,22.43,0 +S076,M019,5,23.54,0 +S076,M019,6,13.03,0 +S076,M019,7,18.05,0 +S076,M019,8,12.47,0 +S076,M019,9,22.82,0 +S076,M019,10,16.63,0 +S076,M019,11,20.2,0 +S076,M019,12,20.75,0 +S077,M020,1,1.23,0 +S077,M020,2,1.85,0 +S077,M020,3,1.17,0 +S077,M020,4,0.58,0 +S077,M020,5,0.7,0 +S077,M020,6,1.12,0 +S077,M020,7,1.35,0 +S077,M020,8,1.34,0 +S077,M020,9,1.51,0 +S077,M020,10,0.96,0 +S077,M020,11,0.53,0 +S077,M020,12,0.88,0 +S078,M020,1,40.06,0 +S078,M020,2,44.36,0 +S078,M020,3,41.46,0 +S078,M020,4,48.47,0 +S078,M020,5,54.01,0 +S078,M020,6,50.82,0 +S078,M020,7,41.21,0 +S078,M020,8,57.88,0 +S078,M020,9,59.72,0 +S078,M020,10,49.44,0 +S078,M020,11,45.74,0 +S078,M020,12,43.6,0 +S079,M020,1,156.77,0 +S079,M020,2,182.08,0 +S079,M020,3,186.46,0 +S079,M020,4,198.19,0 +S079,M020,5,168.72,0 +S079,M020,6,194.57,0 +S079,M020,7,172.43,0 +S079,M020,8,195.86,0 +S079,M020,9,168.87,0 +S079,M020,10,154.01,0 +S079,M020,11,198.21,0 +S079,M020,12,193.73,0 +S080,M020,1,11.99,0 +S080,M020,2,22.9,0 +S080,M020,3,11.78,0 +S080,M020,4,24.89,0 +S080,M020,5,15.9,0 +S080,M020,6,11.91,0 +S080,M020,7,24.68,0 +S080,M020,8,22.52,0 +S080,M020,9,21.34,0 +S080,M020,10,24.68,0 +S080,M020,11,16.95,0 +S080,M020,12,20.79,0 +S081,M021,1,1.14,0 +S081,M021,2,1.07,0 +S081,M021,3,0.84,0 +S081,M021,4,1.19,0 +S081,M021,5,0.73,0 +S081,M021,6,0.78,0 +S081,M021,7,1.81,0 +S081,M021,8,1.65,0 +S081,M021,9,0.55,0 +S081,M021,10,1.49,0 +S081,M021,11,1.42,0 +S081,M021,12,1.9,0 +S082,M021,1,57.78,0 +S082,M021,2,44.81,0 +S082,M021,3,41.35,0 +S082,M021,4,51.88,0 +S082,M021,5,48.93,0 +S082,M021,6,53.44,0 +S082,M021,7,57.44,0 +S082,M021,8,44.89,0 +S082,M021,9,40.88,0 +S082,M021,10,48.78,0 +S082,M021,11,50.8,0 +S082,M021,12,55.09,0 +S083,M021,1,188.8,0 +S083,M021,2,157.01,0 +S083,M021,3,199.67,0 +S083,M021,4,161.71,0 +S083,M021,5,195.82,0 +S083,M021,6,178.81,0 +S083,M021,7,178.87,0 +S083,M021,8,188.63,0 +S083,M021,9,190.92,0 +S083,M021,10,161.85,0 +S083,M021,11,193.81,0 +S083,M021,12,199.28,0 +S084,M021,1,17.82,0 +S084,M021,2,16.2,0 +S084,M021,3,14.13,0 +S084,M021,4,18.35,0 +S084,M021,5,18.88,0 +S084,M021,6,21.03,0 +S084,M021,7,12.63,0 +S084,M021,8,20.18,0 +S084,M021,9,18.34,0 +S084,M021,10,10.7,0 +S084,M021,11,15.17,0 +S084,M021,12,19.65,0 +S085,M022,1,1.07,0 +S085,M022,2,1.29,0 +S085,M022,3,1.54,0 +S085,M022,4,1.11,0 +S085,M022,5,0.95,0 +S085,M022,6,0.78,0 +S085,M022,7,1.31,0 +S085,M022,8,0.86,0 +S085,M022,9,0.84,0 +S085,M022,10,1.79,0 +S085,M022,11,0.72,0 +S085,M022,12,1.19,0 +S086,M022,1,41.15,0 +S086,M022,2,48.25,0 +S086,M022,3,48.33,0 +S086,M022,4,50.6,0 +S086,M022,5,47.77,0 +S086,M022,6,45.1,0 +S086,M022,7,46.61,0 +S086,M022,8,41.58,0 +S086,M022,9,49.0,0 +S086,M022,10,47.42,0 +S086,M022,11,50.71,0 +S086,M022,12,56.59,0 +S087,M022,1,152.58,0 +S087,M022,2,168.86,0 +S087,M022,3,180.25,0 +S087,M022,4,151.98,0 +S087,M022,5,153.64,0 +S087,M022,6,190.23,0 +S087,M022,7,179.38,0 +S087,M022,8,183.57,0 +S087,M022,9,160.85,0 +S087,M022,10,160.44,0 +S087,M022,11,195.35,0 +S087,M022,12,165.16,0 +S088,M022,1,23.63,0 +S088,M022,2,13.18,0 +S088,M022,3,12.85,0 +S088,M022,4,21.12,0 +S088,M022,5,21.2,0 +S088,M022,6,21.31,0 +S088,M022,7,23.72,0 +S088,M022,8,20.43,0 +S088,M022,9,20.56,0 +S088,M022,10,15.95,0 +S088,M022,11,13.59,0 +S088,M022,12,14.82,0 +S089,M023,1,0.92,0 +S089,M023,2,1.2,0 +S089,M023,3,1.47,0 +S089,M023,4,0.96,0 +S089,M023,5,1.04,0 +S089,M023,6,1.82,0 +S089,M023,7,1.2,0 +S089,M023,8,1.7,0 +S089,M023,9,1.58,0 +S089,M023,10,1.64,0 +S089,M023,11,0.98,0 +S089,M023,12,0.8,0 +S090,M023,1,46.26,0 +S090,M023,2,40.91,0 +S090,M023,3,57.28,0 +S090,M023,4,54.83,0 +S090,M023,5,40.32,0 +S090,M023,6,51.07,0 +S090,M023,7,51.68,0 +S090,M023,8,54.4,0 +S090,M023,9,45.9,0 +S090,M023,10,43.92,0 +S090,M023,11,44.6,0 +S090,M023,12,51.4,0 +S091,M023,1,162.29,0 +S091,M023,2,177.53,0 +S091,M023,3,197.17,0 +S091,M023,4,166.88,0 +S091,M023,5,188.17,0 +S091,M023,6,174.43,0 +S091,M023,7,186.18,0 +S091,M023,8,186.98,0 +S091,M023,9,173.04,0 +S091,M023,10,186.64,0 +S091,M023,11,167.61,0 +S091,M023,12,157.0,0 +S092,M023,1,18.2,0 +S092,M023,2,12.76,0 +S092,M023,3,23.34,0 +S092,M023,4,24.85,0 +S092,M023,5,24.36,0 +S092,M023,6,17.86,0 +S092,M023,7,22.59,0 +S092,M023,8,11.11,0 +S092,M023,9,22.27,0 +S092,M023,10,10.73,0 +S092,M023,11,10.1,0 +S092,M023,12,12.06,0 +S093,M024,1,1.45,0 +S093,M024,2,0.6,0 +S093,M024,3,0.73,0 +S093,M024,4,0.83,0 +S093,M024,5,1.18,0 +S093,M024,6,0.59,0 +S093,M024,7,1.46,0 +S093,M024,8,1.9,0 +S093,M024,9,1.87,0 +S093,M024,10,1.49,0 +S093,M024,11,0.52,0 +S093,M024,12,1.3,0 +S094,M024,1,48.23,0 +S094,M024,2,40.33,0 +S094,M024,3,54.44,0 +S094,M024,4,50.71,0 +S094,M024,5,45.73,0 +S094,M024,6,50.04,0 +S094,M024,7,53.96,0 +S094,M024,8,48.61,0 +S094,M024,9,58.79,0 +S094,M024,10,43.59,0 +S094,M024,11,58.36,0 +S094,M024,12,50.49,0 +S095,M024,1,162.05,0 +S095,M024,2,180.99,0 +S095,M024,3,162.62,0 +S095,M024,4,167.72,0 +S095,M024,5,189.75,0 +S095,M024,6,153.95,0 +S095,M024,7,197.96,0 +S095,M024,8,172.95,0 +S095,M024,9,162.16,0 +S095,M024,10,184.86,0 +S095,M024,11,165.0,0 +S095,M024,12,191.4,0 +S096,M024,1,11.21,0 +S096,M024,2,24.88,0 +S096,M024,3,19.75,0 +S096,M024,4,10.48,0 +S096,M024,5,16.08,0 +S096,M024,6,15.66,0 +S096,M024,7,17.14,0 +S096,M024,8,19.55,0 +S096,M024,9,20.54,0 +S096,M024,10,11.24,0 +S096,M024,11,22.68,0 +S096,M024,12,19.67,0 +S097,M025,1,1.0,0 +S097,M025,2,1.97,0 +S097,M025,3,1.96,0 +S097,M025,4,1.84,0 +S097,M025,5,1.88,0 +S097,M025,6,0.84,0 +S097,M025,7,1.85,0 +S097,M025,8,1.54,0 +S097,M025,9,1.35,0 +S097,M025,10,0.91,0 +S097,M025,11,1.89,0 +S097,M025,12,1.53,0 +S098,M025,1,45.61,0 +S098,M025,2,50.86,0 +S098,M025,3,53.16,0 +S098,M025,4,43.59,0 +S098,M025,5,57.01,0 +S098,M025,6,40.31,0 +S098,M025,7,44.14,0 +S098,M025,8,42.88,0 +S098,M025,9,56.41,0 +S098,M025,10,56.42,0 +S098,M025,11,58.58,0 +S098,M025,12,45.99,0 +S099,M025,1,178.2,0 +S099,M025,2,178.33,0 +S099,M025,3,192.47,0 +S099,M025,4,183.85,0 +S099,M025,5,177.03,0 +S099,M025,6,169.19,0 +S099,M025,7,186.99,0 +S099,M025,8,189.52,0 +S099,M025,9,184.47,0 +S099,M025,10,153.92,0 +S099,M025,11,187.27,0 +S099,M025,12,167.29,0 +S100,M025,1,11.47,0 +S100,M025,2,13.48,0 +S100,M025,3,11.14,0 +S100,M025,4,19.08,0 +S100,M025,5,19.21,0 +S100,M025,6,18.93,0 +S100,M025,7,24.53,0 +S100,M025,8,14.9,0 +S100,M025,9,19.51,0 +S100,M025,10,21.75,0 +S100,M025,11,16.76,0 +S100,M025,12,13.42,0 +S101,M026,1,1.33,0 +S101,M026,2,1.06,0 +S101,M026,3,0.78,0 +S101,M026,4,1.38,0 +S101,M026,5,1.07,0 +S101,M026,6,1.66,0 +S101,M026,7,0.94,0 +S101,M026,8,0.87,0 +S101,M026,9,0.61,0 +S101,M026,10,0.9,0 +S101,M026,11,1.07,0 +S101,M026,12,1.68,0 +S102,M026,1,43.09,0 +S102,M026,2,47.79,0 +S102,M026,3,47.21,0 +S102,M026,4,41.83,0 +S102,M026,5,58.86,0 +S102,M026,6,48.89,0 +S102,M026,7,55.23,0 +S102,M026,8,42.04,0 +S102,M026,9,41.75,0 +S102,M026,10,48.62,0 +S102,M026,11,51.14,0 +S102,M026,12,50.25,0 +S103,M026,1,155.16,0 +S103,M026,2,154.48,0 +S103,M026,3,177.71,0 +S103,M026,4,179.85,0 +S103,M026,5,189.22,0 +S103,M026,6,193.19,0 +S103,M026,7,150.62,0 +S103,M026,8,170.69,0 +S103,M026,9,188.96,0 +S103,M026,10,186.24,0 +S103,M026,11,177.98,0 +S103,M026,12,199.64,0 +S104,M026,1,13.64,0 +S104,M026,2,17.82,0 +S104,M026,3,20.28,0 +S104,M026,4,12.54,0 +S104,M026,5,14.03,0 +S104,M026,6,14.03,0 +S104,M026,7,12.19,0 +S104,M026,8,12.51,0 +S104,M026,9,14.14,0 +S104,M026,10,14.5,0 +S104,M026,11,21.74,0 +S104,M026,12,15.42,0 +S105,M027,1,1.92,0 +S105,M027,2,1.58,0 +S105,M027,3,1.24,0 +S105,M027,4,1.43,0 +S105,M027,5,1.19,0 +S105,M027,6,0.7,0 +S105,M027,7,0.51,0 +S105,M027,8,1.09,0 +S105,M027,9,1.76,0 +S105,M027,10,1.07,0 +S105,M027,11,1.79,0 +S105,M027,12,1.16,0 +S106,M027,1,48.61,0 +S106,M027,2,56.47,0 +S106,M027,3,53.02,0 +S106,M027,4,51.89,0 +S106,M027,5,46.01,0 +S106,M027,6,52.06,0 +S106,M027,7,53.91,0 +S106,M027,8,49.58,0 +S106,M027,9,43.55,0 +S106,M027,10,47.96,0 +S106,M027,11,46.38,0 +S106,M027,12,54.7,0 +S107,M027,1,181.65,0 +S107,M027,2,198.39,0 +S107,M027,3,189.1,0 +S107,M027,4,166.29,0 +S107,M027,5,164.02,0 +S107,M027,6,189.29,0 +S107,M027,7,168.25,0 +S107,M027,8,196.6,0 +S107,M027,9,159.99,0 +S107,M027,10,199.86,0 +S107,M027,11,159.0,0 +S107,M027,12,188.38,0 +S108,M027,1,10.4,0 +S108,M027,2,20.91,0 +S108,M027,3,24.14,0 +S108,M027,4,13.14,0 +S108,M027,5,21.97,0 +S108,M027,6,22.47,0 +S108,M027,7,11.04,0 +S108,M027,8,22.72,0 +S108,M027,9,21.93,0 +S108,M027,10,20.09,0 +S108,M027,11,12.09,0 +S108,M027,12,14.54,0 +S109,M028,1,0.88,0 +S109,M028,2,0.73,0 +S109,M028,3,1.13,0 +S109,M028,4,1.07,0 +S109,M028,5,1.17,0 +S109,M028,6,1.4,0 +S109,M028,7,1.37,0 +S109,M028,8,1.3,0 +S109,M028,9,1.89,0 +S109,M028,10,1.8,0 +S109,M028,11,1.13,0 +S109,M028,12,0.56,0 +S110,M028,1,59.37,0 +S110,M028,2,54.03,0 +S110,M028,3,56.25,0 +S110,M028,4,51.88,0 +S110,M028,5,58.29,0 +S110,M028,6,42.19,0 +S110,M028,7,44.96,0 +S110,M028,8,53.29,0 +S110,M028,9,43.33,0 +S110,M028,10,52.25,0 +S110,M028,11,51.26,0 +S110,M028,12,52.9,0 +S111,M028,1,182.34,0 +S111,M028,2,198.34,0 +S111,M028,3,166.58,0 +S111,M028,4,189.81,0 +S111,M028,5,155.3,0 +S111,M028,6,154.93,0 +S111,M028,7,161.1,0 +S111,M028,8,187.34,0 +S111,M028,9,177.9,0 +S111,M028,10,184.38,0 +S111,M028,11,161.05,0 +S111,M028,12,168.71,0 +S112,M028,1,16.95,0 +S112,M028,2,20.19,0 +S112,M028,3,20.36,0 +S112,M028,4,12.26,0 +S112,M028,5,24.97,0 +S112,M028,6,17.24,0 +S112,M028,7,14.43,0 +S112,M028,8,23.81,0 +S112,M028,9,11.29,0 +S112,M028,10,22.47,0 +S112,M028,11,20.95,0 +S112,M028,12,15.22,0 +S113,M029,1,1.01,0 +S113,M029,2,1.68,0 +S113,M029,3,1.28,0 +S113,M029,4,1.02,0 +S113,M029,5,0.65,0 +S113,M029,6,1.58,0 +S113,M029,7,1.18,0 +S113,M029,8,0.6,0 +S113,M029,9,0.57,0 +S113,M029,10,1.57,0 +S113,M029,11,0.53,0 +S113,M029,12,1.01,0 +S114,M029,1,42.19,0 +S114,M029,2,56.0,0 +S114,M029,3,58.6,0 +S114,M029,4,54.81,0 +S114,M029,5,50.32,0 +S114,M029,6,51.04,0 +S114,M029,7,46.62,0 +S114,M029,8,48.53,0 +S114,M029,9,49.24,0 +S114,M029,10,55.96,0 +S114,M029,11,52.6,0 +S114,M029,12,43.73,0 +S115,M029,1,182.87,0 +S115,M029,2,169.78,0 +S115,M029,3,186.87,0 +S115,M029,4,194.15,0 +S115,M029,5,172.48,0 +S115,M029,6,171.48,0 +S115,M029,7,150.22,0 +S115,M029,8,160.74,0 +S115,M029,9,163.92,0 +S115,M029,10,185.19,0 +S115,M029,11,189.8,0 +S115,M029,12,178.87,0 +S116,M029,1,21.99,0 +S116,M029,2,18.05,0 +S116,M029,3,15.49,0 +S116,M029,4,12.96,0 +S116,M029,5,11.71,0 +S116,M029,6,20.06,0 +S116,M029,7,17.34,0 +S116,M029,8,24.49,0 +S116,M029,9,14.7,0 +S116,M029,10,15.83,0 +S116,M029,11,15.89,0 +S116,M029,12,11.71,0 +S117,M030,1,1.03,0 +S117,M030,2,1.19,0 +S117,M030,3,0.76,0 +S117,M030,4,1.51,0 +S117,M030,5,1.7,0 +S117,M030,6,1.88,0 +S117,M030,7,1.39,0 +S117,M030,8,1.51,0 +S117,M030,9,0.97,0 +S117,M030,10,0.86,0 +S117,M030,11,0.68,0 +S117,M030,12,1.06,0 +S118,M030,1,42.83,0 +S118,M030,2,47.77,0 +S118,M030,3,51.93,0 +S118,M030,4,51.5,0 +S118,M030,5,48.46,0 +S118,M030,6,49.73,0 +S118,M030,7,50.75,0 +S118,M030,8,58.38,0 +S118,M030,9,58.61,0 +S118,M030,10,43.46,0 +S118,M030,11,43.34,0 +S118,M030,12,45.78,0 +S119,M030,1,159.35,0 +S119,M030,2,192.1,0 +S119,M030,3,180.97,0 +S119,M030,4,193.28,0 +S119,M030,5,197.59,0 +S119,M030,6,174.23,0 +S119,M030,7,159.76,0 +S119,M030,8,169.2,0 +S119,M030,9,178.08,0 +S119,M030,10,182.65,0 +S119,M030,11,170.46,0 +S119,M030,12,174.59,0 +S120,M030,1,20.65,0 +S120,M030,2,16.66,0 +S120,M030,3,12.51,0 +S120,M030,4,18.48,0 +S120,M030,5,21.94,0 +S120,M030,6,13.31,0 +S120,M030,7,10.49,0 +S120,M030,8,13.37,0 +S120,M030,9,14.33,0 +S120,M030,10,21.71,0 +S120,M030,11,18.48,0 +S120,M030,12,21.59,0 +S121,M031,1,1.24,0 +S121,M031,2,1.27,0 +S121,M031,3,1.36,0 +S121,M031,4,0.9,0 +S121,M031,5,1.31,0 +S121,M031,6,1.99,0 +S121,M031,7,1.31,0 +S121,M031,8,1.64,0 +S121,M031,9,1.64,0 +S121,M031,10,1.16,0 +S121,M031,11,0.83,0 +S121,M031,12,1.14,0 +S122,M031,1,54.72,0 +S122,M031,2,53.07,0 +S122,M031,3,44.95,0 +S122,M031,4,57.5,0 +S122,M031,5,40.64,0 +S122,M031,6,45.26,0 +S122,M031,7,57.24,0 +S122,M031,8,41.74,0 +S122,M031,9,57.31,0 +S122,M031,10,42.35,0 +S122,M031,11,56.24,0 +S122,M031,12,44.2,0 +S123,M031,1,186.88,0 +S123,M031,2,184.46,0 +S123,M031,3,193.05,0 +S123,M031,4,180.51,0 +S123,M031,5,171.41,0 +S123,M031,6,180.81,0 +S123,M031,7,189.24,0 +S123,M031,8,190.68,0 +S123,M031,9,190.27,0 +S123,M031,10,178.5,0 +S123,M031,11,176.61,0 +S123,M031,12,179.84,0 +S124,M031,1,12.53,0 +S124,M031,2,24.69,0 +S124,M031,3,14.39,0 +S124,M031,4,18.59,0 +S124,M031,5,24.29,0 +S124,M031,6,17.72,0 +S124,M031,7,23.5,0 +S124,M031,8,22.23,0 +S124,M031,9,12.03,0 +S124,M031,10,21.25,0 +S124,M031,11,16.17,0 +S124,M031,12,10.89,0 +S125,M032,1,0.92,0 +S125,M032,2,1.48,0 +S125,M032,3,1.55,0 +S125,M032,4,0.7,0 +S125,M032,5,0.72,0 +S125,M032,6,0.98,0 +S125,M032,7,0.87,0 +S125,M032,8,1.77,0 +S125,M032,9,1.09,0 +S125,M032,10,0.71,0 +S125,M032,11,1.45,0 +S125,M032,12,1.44,0 +S126,M032,1,47.5,0 +S126,M032,2,41.51,0 +S126,M032,3,55.89,0 +S126,M032,4,55.38,0 +S126,M032,5,48.06,0 +S126,M032,6,55.0,0 +S126,M032,7,53.89,0 +S126,M032,8,57.55,0 +S126,M032,9,49.09,0 +S126,M032,10,49.76,0 +S126,M032,11,51.64,0 +S126,M032,12,57.38,0 +S127,M032,1,192.36,0 +S127,M032,2,154.66,0 +S127,M032,3,198.61,0 +S127,M032,4,181.74,0 +S127,M032,5,184.86,0 +S127,M032,6,192.51,0 +S127,M032,7,189.78,0 +S127,M032,8,169.89,0 +S127,M032,9,198.41,0 +S127,M032,10,191.24,0 +S127,M032,11,174.74,0 +S127,M032,12,166.14,0 +S128,M032,1,14.25,0 +S128,M032,2,18.21,0 +S128,M032,3,11.96,0 +S128,M032,4,22.79,0 +S128,M032,5,21.82,0 +S128,M032,6,23.41,0 +S128,M032,7,21.43,0 +S128,M032,8,10.69,0 +S128,M032,9,19.39,0 +S128,M032,10,22.55,0 +S128,M032,11,10.24,0 +S128,M032,12,23.94,0 +S129,M033,1,0.74,0 +S129,M033,2,1.18,0 +S129,M033,3,1.99,0 +S129,M033,4,1.14,0 +S129,M033,5,1.99,0 +S129,M033,6,1.86,0 +S129,M033,7,1.82,0 +S129,M033,8,0.95,0 +S129,M033,9,1.81,0 +S129,M033,10,1.81,0 +S129,M033,11,0.64,0 +S129,M033,12,1.04,0 +S130,M033,1,41.65,0 +S130,M033,2,53.29,0 +S130,M033,3,52.98,0 +S130,M033,4,41.04,0 +S130,M033,5,52.51,0 +S130,M033,6,54.52,0 +S130,M033,7,55.1,0 +S130,M033,8,48.58,0 +S130,M033,9,41.82,0 +S130,M033,10,41.9,0 +S130,M033,11,44.27,0 +S130,M033,12,41.56,0 +S131,M033,1,179.68,0 +S131,M033,2,175.97,0 +S131,M033,3,172.25,0 +S131,M033,4,150.4,0 +S131,M033,5,167.18,0 +S131,M033,6,156.03,0 +S131,M033,7,193.02,0 +S131,M033,8,184.7,0 +S131,M033,9,173.89,0 +S131,M033,10,161.45,0 +S131,M033,11,154.47,0 +S131,M033,12,190.3,0 +S132,M033,1,11.55,0 +S132,M033,2,15.51,0 +S132,M033,3,14.49,0 +S132,M033,4,15.74,0 +S132,M033,5,22.2,0 +S132,M033,6,23.12,0 +S132,M033,7,19.62,0 +S132,M033,8,20.16,0 +S132,M033,9,11.03,0 +S132,M033,10,18.45,0 +S132,M033,11,19.15,0 +S132,M033,12,12.46,0 +S133,M034,1,1.03,0 +S133,M034,2,0.82,0 +S133,M034,3,1.62,0 +S133,M034,4,1.88,0 +S133,M034,5,1.42,0 +S133,M034,6,1.16,0 +S133,M034,7,0.83,0 +S133,M034,8,1.84,0 +S133,M034,9,0.71,0 +S133,M034,10,0.68,0 +S133,M034,11,1.6,0 +S133,M034,12,1.03,0 +S134,M034,1,48.59,0 +S134,M034,2,55.82,0 +S134,M034,3,44.96,0 +S134,M034,4,52.89,0 +S134,M034,5,44.96,0 +S134,M034,6,52.02,0 +S134,M034,7,54.42,0 +S134,M034,8,45.7,0 +S134,M034,9,58.83,0 +S134,M034,10,40.54,0 +S134,M034,11,56.94,0 +S134,M034,12,57.52,0 +S135,M034,1,160.27,0 +S135,M034,2,180.35,0 +S135,M034,3,159.43,0 +S135,M034,4,169.59,0 +S135,M034,5,182.31,0 +S135,M034,6,189.19,0 +S135,M034,7,189.69,0 +S135,M034,8,161.97,0 +S135,M034,9,169.29,0 +S135,M034,10,162.05,0 +S135,M034,11,181.9,0 +S135,M034,12,153.55,0 +S136,M034,1,23.33,0 +S136,M034,2,10.18,0 +S136,M034,3,15.42,0 +S136,M034,4,14.75,0 +S136,M034,5,15.8,0 +S136,M034,6,22.58,0 +S136,M034,7,16.31,0 +S136,M034,8,18.2,0 +S136,M034,9,12.59,0 +S136,M034,10,17.07,0 +S136,M034,11,24.81,0 +S136,M034,12,11.09,0 +S137,M035,1,1.38,0 +S137,M035,2,0.64,0 +S137,M035,3,1.2,0 +S137,M035,4,2.72,0 +S137,M035,5,3.22,0 +S137,M035,6,2.66,0 +S137,M035,7,2.92,0 +S137,M035,8,4.4,0 +S137,M035,9,5.16,0 +S137,M035,10,4.94,0 +S137,M035,11,5.53,0 +S137,M035,12,6.92,1 +S138,M035,1,50.75,0 +S138,M035,2,44.13,0 +S138,M035,3,44.74,0 +S138,M035,4,47.22,0 +S138,M035,5,66.18,0 +S138,M035,6,70.25,0 +S138,M035,7,58.91,0 +S138,M035,8,66.01,0 +S138,M035,9,74.72,0 +S138,M035,10,82.04,0 +S138,M035,11,84.85,0 +S138,M035,12,89.65,1 +S139,M035,1,165.51,0 +S139,M035,2,170.14,0 +S139,M035,3,191.58,0 +S139,M035,4,153.79,0 +S139,M035,5,149.65,0 +S139,M035,6,172.41,0 +S139,M035,7,134.26,0 +S139,M035,8,145.91,0 +S139,M035,9,120.72,0 +S139,M035,10,131.51,0 +S139,M035,11,122.45,0 +S139,M035,12,103.51,1 +S140,M035,1,10.19,0 +S140,M035,2,12.74,0 +S140,M035,3,12.11,0 +S140,M035,4,21.01,0 +S140,M035,5,20.68,0 +S140,M035,6,25.42,0 +S140,M035,7,32.41,0 +S140,M035,8,26.58,0 +S140,M035,9,31.08,0 +S140,M035,10,39.75,0 +S140,M035,11,44.77,1 +S140,M035,12,45.99,1 +S141,M036,1,0.68,0 +S141,M036,2,1.85,0 +S141,M036,3,1.0,0 +S141,M036,4,1.14,0 +S141,M036,5,1.29,0 +S141,M036,6,0.89,0 +S141,M036,7,1.96,0 +S141,M036,8,1.44,0 +S141,M036,9,1.24,0 +S141,M036,10,1.27,0 +S141,M036,11,0.58,0 +S141,M036,12,1.79,0 +S142,M036,1,43.34,0 +S142,M036,2,43.15,0 +S142,M036,3,55.47,0 +S142,M036,4,57.89,0 +S142,M036,5,53.48,0 +S142,M036,6,42.31,0 +S142,M036,7,54.82,0 +S142,M036,8,40.05,0 +S142,M036,9,57.17,0 +S142,M036,10,40.25,0 +S142,M036,11,40.92,0 +S142,M036,12,47.28,0 +S143,M036,1,196.01,0 +S143,M036,2,158.95,0 +S143,M036,3,198.02,0 +S143,M036,4,151.77,0 +S143,M036,5,190.16,0 +S143,M036,6,185.7,0 +S143,M036,7,182.79,0 +S143,M036,8,161.23,0 +S143,M036,9,162.41,0 +S143,M036,10,195.79,0 +S143,M036,11,166.0,0 +S143,M036,12,191.3,0 +S144,M036,1,18.57,0 +S144,M036,2,11.79,0 +S144,M036,3,20.1,0 +S144,M036,4,10.79,0 +S144,M036,5,13.35,0 +S144,M036,6,17.74,0 +S144,M036,7,10.69,0 +S144,M036,8,16.01,0 +S144,M036,9,23.15,0 +S144,M036,10,22.99,0 +S144,M036,11,21.6,0 +S144,M036,12,14.66,0 +S145,M037,1,0.63,0 +S145,M037,2,1.19,0 +S145,M037,3,1.05,0 +S145,M037,4,0.94,0 +S145,M037,5,1.68,0 +S145,M037,6,1.61,0 +S145,M037,7,0.86,0 +S145,M037,8,1.05,0 +S145,M037,9,1.96,0 +S145,M037,10,2.0,0 +S145,M037,11,1.66,0 +S145,M037,12,1.6,0 +S146,M037,1,50.93,0 +S146,M037,2,55.92,0 +S146,M037,3,43.01,0 +S146,M037,4,58.65,0 +S146,M037,5,40.48,0 +S146,M037,6,50.83,0 +S146,M037,7,52.72,0 +S146,M037,8,53.87,0 +S146,M037,9,40.19,0 +S146,M037,10,46.7,0 +S146,M037,11,55.18,0 +S146,M037,12,47.53,0 +S147,M037,1,186.9,0 +S147,M037,2,165.38,0 +S147,M037,3,160.26,0 +S147,M037,4,199.16,0 +S147,M037,5,170.99,0 +S147,M037,6,198.06,0 +S147,M037,7,198.63,0 +S147,M037,8,157.12,0 +S147,M037,9,163.99,0 +S147,M037,10,152.2,0 +S147,M037,11,161.57,0 +S147,M037,12,192.28,0 +S148,M037,1,16.2,0 +S148,M037,2,23.43,0 +S148,M037,3,16.88,0 +S148,M037,4,21.22,0 +S148,M037,5,18.71,0 +S148,M037,6,17.58,0 +S148,M037,7,19.56,0 +S148,M037,8,15.92,0 +S148,M037,9,18.88,0 +S148,M037,10,10.93,0 +S148,M037,11,19.94,0 +S148,M037,12,11.96,0 +S149,M038,1,0.94,0 +S149,M038,2,1.78,0 +S149,M038,3,1.89,0 +S149,M038,4,1.09,0 +S149,M038,5,1.75,0 +S149,M038,6,0.99,0 +S149,M038,7,1.18,0 +S149,M038,8,0.85,0 +S149,M038,9,1.92,0 +S149,M038,10,0.7,0 +S149,M038,11,1.66,0 +S149,M038,12,0.66,0 +S150,M038,1,42.11,0 +S150,M038,2,48.99,0 +S150,M038,3,46.28,0 +S150,M038,4,42.41,0 +S150,M038,5,47.17,0 +S150,M038,6,55.41,0 +S150,M038,7,49.04,0 +S150,M038,8,49.27,0 +S150,M038,9,57.05,0 +S150,M038,10,41.81,0 +S150,M038,11,56.15,0 +S150,M038,12,46.08,0 +S151,M038,1,185.24,0 +S151,M038,2,180.17,0 +S151,M038,3,160.75,0 +S151,M038,4,192.83,0 +S151,M038,5,157.42,0 +S151,M038,6,185.56,0 +S151,M038,7,198.42,0 +S151,M038,8,169.81,0 +S151,M038,9,152.45,0 +S151,M038,10,164.94,0 +S151,M038,11,191.0,0 +S151,M038,12,158.69,0 +S152,M038,1,24.28,0 +S152,M038,2,22.82,0 +S152,M038,3,18.34,0 +S152,M038,4,18.25,0 +S152,M038,5,11.42,0 +S152,M038,6,11.53,0 +S152,M038,7,21.91,0 +S152,M038,8,11.82,0 +S152,M038,9,10.93,0 +S152,M038,10,21.71,0 +S152,M038,11,13.33,0 +S152,M038,12,12.97,0 +S153,M039,1,1.1,0 +S153,M039,2,1.53,0 +S153,M039,3,1.91,0 +S153,M039,4,0.63,0 +S153,M039,5,1.38,0 +S153,M039,6,1.88,0 +S153,M039,7,0.61,0 +S153,M039,8,2.0,0 +S153,M039,9,0.8,0 +S153,M039,10,1.47,0 +S153,M039,11,1.71,0 +S153,M039,12,0.64,0 +S154,M039,1,56.95,0 +S154,M039,2,56.18,0 +S154,M039,3,42.45,0 +S154,M039,4,58.85,0 +S154,M039,5,41.01,0 +S154,M039,6,58.48,0 +S154,M039,7,48.66,0 +S154,M039,8,54.49,0 +S154,M039,9,49.92,0 +S154,M039,10,47.65,0 +S154,M039,11,48.53,0 +S154,M039,12,47.08,0 +S155,M039,1,195.42,0 +S155,M039,2,163.75,0 +S155,M039,3,172.3,0 +S155,M039,4,157.43,0 +S155,M039,5,180.71,0 +S155,M039,6,180.85,0 +S155,M039,7,182.36,0 +S155,M039,8,174.94,0 +S155,M039,9,194.14,0 +S155,M039,10,173.95,0 +S155,M039,11,154.39,0 +S155,M039,12,169.15,0 +S156,M039,1,16.29,0 +S156,M039,2,19.64,0 +S156,M039,3,21.96,0 +S156,M039,4,13.74,0 +S156,M039,5,24.91,0 +S156,M039,6,18.15,0 +S156,M039,7,10.29,0 +S156,M039,8,15.74,0 +S156,M039,9,20.7,0 +S156,M039,10,17.2,0 +S156,M039,11,21.72,0 +S156,M039,12,15.16,0 +S157,M040,1,1.35,0 +S157,M040,2,0.98,0 +S157,M040,3,0.91,0 +S157,M040,4,0.54,0 +S157,M040,5,1.4,0 +S157,M040,6,0.54,0 +S157,M040,7,1.72,0 +S157,M040,8,0.92,0 +S157,M040,9,1.71,0 +S157,M040,10,1.21,0 +S157,M040,11,1.04,0 +S157,M040,12,1.38,0 +S158,M040,1,44.66,0 +S158,M040,2,43.19,0 +S158,M040,3,44.96,0 +S158,M040,4,44.82,0 +S158,M040,5,50.67,0 +S158,M040,6,55.82,0 +S158,M040,7,54.74,0 +S158,M040,8,55.28,0 +S158,M040,9,58.96,0 +S158,M040,10,51.51,0 +S158,M040,11,59.65,0 +S158,M040,12,47.77,0 +S159,M040,1,196.76,0 +S159,M040,2,199.58,0 +S159,M040,3,158.69,0 +S159,M040,4,161.83,0 +S159,M040,5,165.9,0 +S159,M040,6,186.91,0 +S159,M040,7,167.94,0 +S159,M040,8,179.58,0 +S159,M040,9,185.17,0 +S159,M040,10,167.58,0 +S159,M040,11,178.38,0 +S159,M040,12,157.11,0 +S160,M040,1,24.23,0 +S160,M040,2,22.55,0 +S160,M040,3,22.16,0 +S160,M040,4,24.56,0 +S160,M040,5,18.13,0 +S160,M040,6,12.63,0 +S160,M040,7,10.57,0 +S160,M040,8,10.84,0 +S160,M040,9,19.02,0 +S160,M040,10,10.3,0 +S160,M040,11,17.17,0 +S160,M040,12,14.98,0 +S161,M041,1,1.42,0 +S161,M041,2,1.71,0 +S161,M041,3,1.01,0 +S161,M041,4,0.77,0 +S161,M041,5,1.7,0 +S161,M041,6,1.8,0 +S161,M041,7,0.59,0 +S161,M041,8,0.72,0 +S161,M041,9,1.56,0 +S161,M041,10,0.71,0 +S161,M041,11,0.67,0 +S161,M041,12,1.29,0 +S162,M041,1,47.3,0 +S162,M041,2,41.45,0 +S162,M041,3,54.09,0 +S162,M041,4,53.24,0 +S162,M041,5,51.72,0 +S162,M041,6,46.73,0 +S162,M041,7,46.45,0 +S162,M041,8,59.52,0 +S162,M041,9,54.65,0 +S162,M041,10,48.74,0 +S162,M041,11,52.79,0 +S162,M041,12,49.74,0 +S163,M041,1,165.86,0 +S163,M041,2,185.36,0 +S163,M041,3,178.1,0 +S163,M041,4,194.48,0 +S163,M041,5,180.69,0 +S163,M041,6,167.84,0 +S163,M041,7,183.28,0 +S163,M041,8,190.72,0 +S163,M041,9,168.92,0 +S163,M041,10,186.7,0 +S163,M041,11,164.73,0 +S163,M041,12,158.89,0 +S164,M041,1,10.03,0 +S164,M041,2,20.53,0 +S164,M041,3,18.59,0 +S164,M041,4,22.76,0 +S164,M041,5,21.56,0 +S164,M041,6,18.51,0 +S164,M041,7,12.73,0 +S164,M041,8,14.77,0 +S164,M041,9,22.13,0 +S164,M041,10,19.17,0 +S164,M041,11,19.59,0 +S164,M041,12,11.56,0 +S165,M042,1,1.24,0 +S165,M042,2,1.0,0 +S165,M042,3,0.62,0 +S165,M042,4,1.02,0 +S165,M042,5,0.98,0 +S165,M042,6,1.45,0 +S165,M042,7,1.94,0 +S165,M042,8,1.73,0 +S165,M042,9,1.51,0 +S165,M042,10,1.59,0 +S165,M042,11,1.0,0 +S165,M042,12,0.52,0 +S166,M042,1,44.19,0 +S166,M042,2,53.86,0 +S166,M042,3,47.01,0 +S166,M042,4,55.74,0 +S166,M042,5,54.41,0 +S166,M042,6,40.96,0 +S166,M042,7,48.76,0 +S166,M042,8,48.39,0 +S166,M042,9,43.33,0 +S166,M042,10,48.28,0 +S166,M042,11,57.64,0 +S166,M042,12,47.02,0 +S167,M042,1,168.77,0 +S167,M042,2,191.44,0 +S167,M042,3,189.44,0 +S167,M042,4,178.9,0 +S167,M042,5,187.91,0 +S167,M042,6,161.28,0 +S167,M042,7,172.56,0 +S167,M042,8,189.96,0 +S167,M042,9,151.67,0 +S167,M042,10,151.0,0 +S167,M042,11,163.06,0 +S167,M042,12,155.24,0 +S168,M042,1,15.13,0 +S168,M042,2,23.32,0 +S168,M042,3,12.41,0 +S168,M042,4,11.13,0 +S168,M042,5,24.13,0 +S168,M042,6,24.67,0 +S168,M042,7,15.07,0 +S168,M042,8,24.78,0 +S168,M042,9,23.4,0 +S168,M042,10,20.57,0 +S168,M042,11,16.47,0 +S168,M042,12,19.8,0 +S169,M043,1,1.41,0 +S169,M043,2,1.15,0 +S169,M043,3,0.58,0 +S169,M043,4,1.0,0 +S169,M043,5,1.96,0 +S169,M043,6,1.11,0 +S169,M043,7,1.33,0 +S169,M043,8,1.89,0 +S169,M043,9,1.31,0 +S169,M043,10,1.49,0 +S169,M043,11,0.95,0 +S169,M043,12,0.64,0 +S170,M043,1,47.86,0 +S170,M043,2,50.99,0 +S170,M043,3,49.82,0 +S170,M043,4,41.09,0 +S170,M043,5,40.08,0 +S170,M043,6,41.75,0 +S170,M043,7,56.48,0 +S170,M043,8,52.5,0 +S170,M043,9,49.61,0 +S170,M043,10,41.94,0 +S170,M043,11,44.14,0 +S170,M043,12,52.76,0 +S171,M043,1,198.85,0 +S171,M043,2,173.68,0 +S171,M043,3,155.78,0 +S171,M043,4,189.24,0 +S171,M043,5,173.55,0 +S171,M043,6,194.74,0 +S171,M043,7,163.25,0 +S171,M043,8,182.09,0 +S171,M043,9,169.38,0 +S171,M043,10,168.55,0 +S171,M043,11,169.07,0 +S171,M043,12,159.33,0 +S172,M043,1,10.67,0 +S172,M043,2,16.6,0 +S172,M043,3,13.95,0 +S172,M043,4,22.56,0 +S172,M043,5,18.46,0 +S172,M043,6,12.27,0 +S172,M043,7,20.45,0 +S172,M043,8,11.45,0 +S172,M043,9,20.02,0 +S172,M043,10,22.12,0 +S172,M043,11,16.21,0 +S172,M043,12,21.35,0 +S173,M044,1,0.84,0 +S173,M044,2,0.59,0 +S173,M044,3,1.08,0 +S173,M044,4,1.28,0 +S173,M044,5,1.95,0 +S173,M044,6,1.53,0 +S173,M044,7,1.9,0 +S173,M044,8,1.36,0 +S173,M044,9,0.85,0 +S173,M044,10,0.95,0 +S173,M044,11,1.09,0 +S173,M044,12,1.78,0 +S174,M044,1,40.69,0 +S174,M044,2,51.42,0 +S174,M044,3,50.34,0 +S174,M044,4,51.43,0 +S174,M044,5,59.66,0 +S174,M044,6,42.95,0 +S174,M044,7,58.99,0 +S174,M044,8,48.98,0 +S174,M044,9,58.98,0 +S174,M044,10,43.34,0 +S174,M044,11,44.24,0 +S174,M044,12,43.85,0 +S175,M044,1,152.13,0 +S175,M044,2,153.92,0 +S175,M044,3,184.16,0 +S175,M044,4,160.1,0 +S175,M044,5,191.13,0 +S175,M044,6,157.39,0 +S175,M044,7,179.75,0 +S175,M044,8,165.99,0 +S175,M044,9,186.36,0 +S175,M044,10,190.37,0 +S175,M044,11,154.35,0 +S175,M044,12,177.82,0 +S176,M044,1,18.28,0 +S176,M044,2,22.85,0 +S176,M044,3,17.8,0 +S176,M044,4,23.76,0 +S176,M044,5,10.19,0 +S176,M044,6,20.51,0 +S176,M044,7,18.81,0 +S176,M044,8,21.73,0 +S176,M044,9,11.69,0 +S176,M044,10,12.24,0 +S176,M044,11,18.5,0 +S176,M044,12,18.74,0 +S177,M045,1,1.95,0 +S177,M045,2,0.65,0 +S177,M045,3,0.66,0 +S177,M045,4,1.67,0 +S177,M045,5,1.68,0 +S177,M045,6,1.8,0 +S177,M045,7,1.82,0 +S177,M045,8,1.82,0 +S177,M045,9,0.9,0 +S177,M045,10,1.48,0 +S177,M045,11,1.36,0 +S177,M045,12,1.21,0 +S178,M045,1,43.44,0 +S178,M045,2,48.06,0 +S178,M045,3,52.36,0 +S178,M045,4,53.62,0 +S178,M045,5,48.03,0 +S178,M045,6,47.92,0 +S178,M045,7,57.58,0 +S178,M045,8,53.81,0 +S178,M045,9,40.99,0 +S178,M045,10,49.5,0 +S178,M045,11,45.37,0 +S178,M045,12,47.45,0 +S179,M045,1,166.89,0 +S179,M045,2,189.68,0 +S179,M045,3,165.55,0 +S179,M045,4,192.14,0 +S179,M045,5,192.91,0 +S179,M045,6,184.24,0 +S179,M045,7,198.62,0 +S179,M045,8,161.4,0 +S179,M045,9,165.02,0 +S179,M045,10,187.19,0 +S179,M045,11,188.7,0 +S179,M045,12,166.04,0 +S180,M045,1,20.93,0 +S180,M045,2,19.07,0 +S180,M045,3,11.34,0 +S180,M045,4,16.63,0 +S180,M045,5,23.7,0 +S180,M045,6,16.11,0 +S180,M045,7,17.27,0 +S180,M045,8,17.75,0 +S180,M045,9,15.61,0 +S180,M045,10,10.84,0 +S180,M045,11,21.87,0 +S180,M045,12,10.98,0 +S181,M046,1,1.56,0 +S181,M046,2,1.11,0 +S181,M046,3,1.67,0 +S181,M046,4,1.29,0 +S181,M046,5,1.35,0 +S181,M046,6,0.76,0 +S181,M046,7,1.81,0 +S181,M046,8,0.8,0 +S181,M046,9,0.59,0 +S181,M046,10,0.55,0 +S181,M046,11,0.58,0 +S181,M046,12,1.04,0 +S182,M046,1,43.98,0 +S182,M046,2,47.37,0 +S182,M046,3,49.28,0 +S182,M046,4,47.94,0 +S182,M046,5,58.46,0 +S182,M046,6,53.62,0 +S182,M046,7,44.84,0 +S182,M046,8,49.78,0 +S182,M046,9,48.92,0 +S182,M046,10,59.21,0 +S182,M046,11,49.49,0 +S182,M046,12,51.03,0 +S183,M046,1,167.21,0 +S183,M046,2,191.88,0 +S183,M046,3,162.93,0 +S183,M046,4,191.54,0 +S183,M046,5,154.52,0 +S183,M046,6,151.37,0 +S183,M046,7,152.48,0 +S183,M046,8,192.69,0 +S183,M046,9,188.99,0 +S183,M046,10,160.72,0 +S183,M046,11,161.07,0 +S183,M046,12,161.26,0 +S184,M046,1,13.1,0 +S184,M046,2,19.77,0 +S184,M046,3,17.7,0 +S184,M046,4,22.97,0 +S184,M046,5,24.51,0 +S184,M046,6,20.23,0 +S184,M046,7,17.11,0 +S184,M046,8,11.98,0 +S184,M046,9,12.6,0 +S184,M046,10,22.01,0 +S184,M046,11,13.36,0 +S184,M046,12,19.13,0 +S185,M047,1,1.91,0 +S185,M047,2,1.57,0 +S185,M047,3,1.56,0 +S185,M047,4,0.91,0 +S185,M047,5,1.84,0 +S185,M047,6,1.78,0 +S185,M047,7,1.19,0 +S185,M047,8,0.83,0 +S185,M047,9,0.95,0 +S185,M047,10,1.28,0 +S185,M047,11,1.44,0 +S185,M047,12,1.38,0 +S186,M047,1,40.15,0 +S186,M047,2,59.99,0 +S186,M047,3,59.33,0 +S186,M047,4,56.79,0 +S186,M047,5,51.23,0 +S186,M047,6,51.88,0 +S186,M047,7,45.65,0 +S186,M047,8,53.69,0 +S186,M047,9,49.63,0 +S186,M047,10,46.73,0 +S186,M047,11,45.53,0 +S186,M047,12,46.5,0 +S187,M047,1,163.84,0 +S187,M047,2,182.81,0 +S187,M047,3,197.61,0 +S187,M047,4,182.57,0 +S187,M047,5,159.42,0 +S187,M047,6,175.86,0 +S187,M047,7,162.02,0 +S187,M047,8,152.84,0 +S187,M047,9,192.87,0 +S187,M047,10,190.5,0 +S187,M047,11,170.2,0 +S187,M047,12,165.98,0 +S188,M047,1,12.1,0 +S188,M047,2,10.38,0 +S188,M047,3,17.46,0 +S188,M047,4,14.43,0 +S188,M047,5,23.6,0 +S188,M047,6,16.07,0 +S188,M047,7,21.05,0 +S188,M047,8,18.75,0 +S188,M047,9,24.92,0 +S188,M047,10,22.24,0 +S188,M047,11,15.15,0 +S188,M047,12,20.7,0 +S189,M048,1,1.53,0 +S189,M048,2,1.46,0 +S189,M048,3,1.21,0 +S189,M048,4,1.91,0 +S189,M048,5,1.04,0 +S189,M048,6,0.95,0 +S189,M048,7,0.75,0 +S189,M048,8,1.49,0 +S189,M048,9,1.34,0 +S189,M048,10,0.94,0 +S189,M048,11,1.21,0 +S189,M048,12,1.61,0 +S190,M048,1,54.5,0 +S190,M048,2,51.18,0 +S190,M048,3,58.25,0 +S190,M048,4,58.94,0 +S190,M048,5,57.99,0 +S190,M048,6,53.09,0 +S190,M048,7,44.45,0 +S190,M048,8,44.47,0 +S190,M048,9,57.43,0 +S190,M048,10,48.41,0 +S190,M048,11,57.74,0 +S190,M048,12,47.43,0 +S191,M048,1,179.28,0 +S191,M048,2,173.19,0 +S191,M048,3,155.89,0 +S191,M048,4,152.68,0 +S191,M048,5,181.72,0 +S191,M048,6,179.02,0 +S191,M048,7,181.03,0 +S191,M048,8,173.61,0 +S191,M048,9,159.73,0 +S191,M048,10,155.99,0 +S191,M048,11,184.03,0 +S191,M048,12,176.49,0 +S192,M048,1,16.2,0 +S192,M048,2,23.06,0 +S192,M048,3,12.26,0 +S192,M048,4,24.89,0 +S192,M048,5,15.14,0 +S192,M048,6,24.81,0 +S192,M048,7,23.39,0 +S192,M048,8,24.8,0 +S192,M048,9,12.15,0 +S192,M048,10,22.94,0 +S192,M048,11,12.71,0 +S192,M048,12,11.21,0 +S193,M049,1,1.0,0 +S193,M049,2,1.98,0 +S193,M049,3,0.97,0 +S193,M049,4,0.59,0 +S193,M049,5,1.18,0 +S193,M049,6,0.81,0 +S193,M049,7,1.66,0 +S193,M049,8,1.36,0 +S193,M049,9,0.74,0 +S193,M049,10,1.68,0 +S193,M049,11,1.67,0 +S193,M049,12,0.69,0 +S194,M049,1,48.67,0 +S194,M049,2,48.59,0 +S194,M049,3,48.58,0 +S194,M049,4,49.55,0 +S194,M049,5,40.09,0 +S194,M049,6,50.68,0 +S194,M049,7,54.61,0 +S194,M049,8,59.0,0 +S194,M049,9,57.84,0 +S194,M049,10,55.14,0 +S194,M049,11,50.62,0 +S194,M049,12,40.36,0 +S195,M049,1,150.21,0 +S195,M049,2,186.68,0 +S195,M049,3,161.31,0 +S195,M049,4,193.85,0 +S195,M049,5,165.6,0 +S195,M049,6,155.14,0 +S195,M049,7,175.17,0 +S195,M049,8,165.31,0 +S195,M049,9,153.26,0 +S195,M049,10,152.29,0 +S195,M049,11,197.42,0 +S195,M049,12,172.8,0 +S196,M049,1,17.8,0 +S196,M049,2,17.86,0 +S196,M049,3,16.5,0 +S196,M049,4,20.3,0 +S196,M049,5,12.01,0 +S196,M049,6,24.94,0 +S196,M049,7,17.35,0 +S196,M049,8,21.25,0 +S196,M049,9,12.47,0 +S196,M049,10,23.6,0 +S196,M049,11,22.18,0 +S196,M049,12,10.29,0 +S197,M050,1,0.84,0 +S197,M050,2,1.98,0 +S197,M050,3,0.82,0 +S197,M050,4,0.53,0 +S197,M050,5,1.26,0 +S197,M050,6,0.68,0 +S197,M050,7,1.57,0 +S197,M050,8,1.69,0 +S197,M050,9,1.06,0 +S197,M050,10,1.46,0 +S197,M050,11,1.66,0 +S197,M050,12,1.43,0 +S198,M050,1,51.88,0 +S198,M050,2,40.96,0 +S198,M050,3,42.16,0 +S198,M050,4,56.72,0 +S198,M050,5,40.96,0 +S198,M050,6,42.32,0 +S198,M050,7,48.89,0 +S198,M050,8,42.47,0 +S198,M050,9,45.05,0 +S198,M050,10,54.04,0 +S198,M050,11,44.11,0 +S198,M050,12,53.71,0 +S199,M050,1,150.47,0 +S199,M050,2,171.04,0 +S199,M050,3,155.05,0 +S199,M050,4,176.02,0 +S199,M050,5,181.14,0 +S199,M050,6,185.04,0 +S199,M050,7,170.94,0 +S199,M050,8,194.93,0 +S199,M050,9,175.58,0 +S199,M050,10,180.88,0 +S199,M050,11,164.14,0 +S199,M050,12,189.24,0 +S200,M050,1,17.47,0 +S200,M050,2,19.14,0 +S200,M050,3,21.67,0 +S200,M050,4,22.47,0 +S200,M050,5,24.6,0 +S200,M050,6,15.37,0 +S200,M050,7,16.15,0 +S200,M050,8,12.41,0 +S200,M050,9,18.22,0 +S200,M050,10,23.66,0 +S200,M050,11,20.32,0 +S200,M050,12,17.21,0 diff --git a/v1/machine_maintenance/data/sensors.csv b/v1/machine_maintenance/data/sensors.csv new file mode 100644 index 00000000..04c75ef8 --- /dev/null +++ b/v1/machine_maintenance/data/sensors.csv @@ -0,0 +1,201 @@ +sensor_id,machine_id,sensor_type,unit,warning_threshold,critical_threshold +S001,M001,vibration,mm/s,3.5,6.0 +S002,M001,temperature,C,70.0,85.0 +S003,M001,pressure,PSI,135.0,115.0 +S004,M001,current,A,30.0,40.0 +S005,M002,vibration,mm/s,3.5,6.0 +S006,M002,temperature,C,70.0,85.0 +S007,M002,pressure,PSI,135.0,115.0 +S008,M002,current,A,30.0,40.0 +S009,M003,vibration,mm/s,3.5,6.0 +S010,M003,temperature,C,70.0,85.0 +S011,M003,pressure,PSI,135.0,115.0 +S012,M003,current,A,30.0,40.0 +S013,M004,vibration,mm/s,3.5,6.0 +S014,M004,temperature,C,70.0,85.0 +S015,M004,pressure,PSI,135.0,115.0 +S016,M004,current,A,30.0,40.0 +S017,M005,vibration,mm/s,3.5,6.0 +S018,M005,temperature,C,70.0,85.0 +S019,M005,pressure,PSI,135.0,115.0 +S020,M005,current,A,30.0,40.0 +S021,M006,vibration,mm/s,3.5,6.0 +S022,M006,temperature,C,70.0,85.0 +S023,M006,pressure,PSI,135.0,115.0 +S024,M006,current,A,30.0,40.0 +S025,M007,vibration,mm/s,3.5,6.0 +S026,M007,temperature,C,70.0,85.0 +S027,M007,pressure,PSI,135.0,115.0 +S028,M007,current,A,30.0,40.0 +S029,M008,vibration,mm/s,3.5,6.0 +S030,M008,temperature,C,70.0,85.0 +S031,M008,pressure,PSI,135.0,115.0 +S032,M008,current,A,30.0,40.0 +S033,M009,vibration,mm/s,3.5,6.0 +S034,M009,temperature,C,70.0,85.0 +S035,M009,pressure,PSI,135.0,115.0 +S036,M009,current,A,30.0,40.0 +S037,M010,vibration,mm/s,3.5,6.0 +S038,M010,temperature,C,70.0,85.0 +S039,M010,pressure,PSI,135.0,115.0 +S040,M010,current,A,30.0,40.0 +S041,M011,vibration,mm/s,3.5,6.0 +S042,M011,temperature,C,70.0,85.0 +S043,M011,pressure,PSI,135.0,115.0 +S044,M011,current,A,30.0,40.0 +S045,M012,vibration,mm/s,3.5,6.0 +S046,M012,temperature,C,70.0,85.0 +S047,M012,pressure,PSI,135.0,115.0 +S048,M012,current,A,30.0,40.0 +S049,M013,vibration,mm/s,3.5,6.0 +S050,M013,temperature,C,70.0,85.0 +S051,M013,pressure,PSI,135.0,115.0 +S052,M013,current,A,30.0,40.0 +S053,M014,vibration,mm/s,3.5,6.0 +S054,M014,temperature,C,70.0,85.0 +S055,M014,pressure,PSI,135.0,115.0 +S056,M014,current,A,30.0,40.0 +S057,M015,vibration,mm/s,3.5,6.0 +S058,M015,temperature,C,70.0,85.0 +S059,M015,pressure,PSI,135.0,115.0 +S060,M015,current,A,30.0,40.0 +S061,M016,vibration,mm/s,3.5,6.0 +S062,M016,temperature,C,70.0,85.0 +S063,M016,pressure,PSI,135.0,115.0 +S064,M016,current,A,30.0,40.0 +S065,M017,vibration,mm/s,3.5,6.0 +S066,M017,temperature,C,70.0,85.0 +S067,M017,pressure,PSI,135.0,115.0 +S068,M017,current,A,30.0,40.0 +S069,M018,vibration,mm/s,3.5,6.0 +S070,M018,temperature,C,70.0,85.0 +S071,M018,pressure,PSI,135.0,115.0 +S072,M018,current,A,30.0,40.0 +S073,M019,vibration,mm/s,3.5,6.0 +S074,M019,temperature,C,70.0,85.0 +S075,M019,pressure,PSI,135.0,115.0 +S076,M019,current,A,30.0,40.0 +S077,M020,vibration,mm/s,3.5,6.0 +S078,M020,temperature,C,70.0,85.0 +S079,M020,pressure,PSI,135.0,115.0 +S080,M020,current,A,30.0,40.0 +S081,M021,vibration,mm/s,3.5,6.0 +S082,M021,temperature,C,70.0,85.0 +S083,M021,pressure,PSI,135.0,115.0 +S084,M021,current,A,30.0,40.0 +S085,M022,vibration,mm/s,3.5,6.0 +S086,M022,temperature,C,70.0,85.0 +S087,M022,pressure,PSI,135.0,115.0 +S088,M022,current,A,30.0,40.0 +S089,M023,vibration,mm/s,3.5,6.0 +S090,M023,temperature,C,70.0,85.0 +S091,M023,pressure,PSI,135.0,115.0 +S092,M023,current,A,30.0,40.0 +S093,M024,vibration,mm/s,3.5,6.0 +S094,M024,temperature,C,70.0,85.0 +S095,M024,pressure,PSI,135.0,115.0 +S096,M024,current,A,30.0,40.0 +S097,M025,vibration,mm/s,3.5,6.0 +S098,M025,temperature,C,70.0,85.0 +S099,M025,pressure,PSI,135.0,115.0 +S100,M025,current,A,30.0,40.0 +S101,M026,vibration,mm/s,3.5,6.0 +S102,M026,temperature,C,70.0,85.0 +S103,M026,pressure,PSI,135.0,115.0 +S104,M026,current,A,30.0,40.0 +S105,M027,vibration,mm/s,3.5,6.0 +S106,M027,temperature,C,70.0,85.0 +S107,M027,pressure,PSI,135.0,115.0 +S108,M027,current,A,30.0,40.0 +S109,M028,vibration,mm/s,3.5,6.0 +S110,M028,temperature,C,70.0,85.0 +S111,M028,pressure,PSI,135.0,115.0 +S112,M028,current,A,30.0,40.0 +S113,M029,vibration,mm/s,3.5,6.0 +S114,M029,temperature,C,70.0,85.0 +S115,M029,pressure,PSI,135.0,115.0 +S116,M029,current,A,30.0,40.0 +S117,M030,vibration,mm/s,3.5,6.0 +S118,M030,temperature,C,70.0,85.0 +S119,M030,pressure,PSI,135.0,115.0 +S120,M030,current,A,30.0,40.0 +S121,M031,vibration,mm/s,3.5,6.0 +S122,M031,temperature,C,70.0,85.0 +S123,M031,pressure,PSI,135.0,115.0 +S124,M031,current,A,30.0,40.0 +S125,M032,vibration,mm/s,3.5,6.0 +S126,M032,temperature,C,70.0,85.0 +S127,M032,pressure,PSI,135.0,115.0 +S128,M032,current,A,30.0,40.0 +S129,M033,vibration,mm/s,3.5,6.0 +S130,M033,temperature,C,70.0,85.0 +S131,M033,pressure,PSI,135.0,115.0 +S132,M033,current,A,30.0,40.0 +S133,M034,vibration,mm/s,3.5,6.0 +S134,M034,temperature,C,70.0,85.0 +S135,M034,pressure,PSI,135.0,115.0 +S136,M034,current,A,30.0,40.0 +S137,M035,vibration,mm/s,3.5,6.0 +S138,M035,temperature,C,70.0,85.0 +S139,M035,pressure,PSI,135.0,115.0 +S140,M035,current,A,30.0,40.0 +S141,M036,vibration,mm/s,3.5,6.0 +S142,M036,temperature,C,70.0,85.0 +S143,M036,pressure,PSI,135.0,115.0 +S144,M036,current,A,30.0,40.0 +S145,M037,vibration,mm/s,3.5,6.0 +S146,M037,temperature,C,70.0,85.0 +S147,M037,pressure,PSI,135.0,115.0 +S148,M037,current,A,30.0,40.0 +S149,M038,vibration,mm/s,3.5,6.0 +S150,M038,temperature,C,70.0,85.0 +S151,M038,pressure,PSI,135.0,115.0 +S152,M038,current,A,30.0,40.0 +S153,M039,vibration,mm/s,3.5,6.0 +S154,M039,temperature,C,70.0,85.0 +S155,M039,pressure,PSI,135.0,115.0 +S156,M039,current,A,30.0,40.0 +S157,M040,vibration,mm/s,3.5,6.0 +S158,M040,temperature,C,70.0,85.0 +S159,M040,pressure,PSI,135.0,115.0 +S160,M040,current,A,30.0,40.0 +S161,M041,vibration,mm/s,3.5,6.0 +S162,M041,temperature,C,70.0,85.0 +S163,M041,pressure,PSI,135.0,115.0 +S164,M041,current,A,30.0,40.0 +S165,M042,vibration,mm/s,3.5,6.0 +S166,M042,temperature,C,70.0,85.0 +S167,M042,pressure,PSI,135.0,115.0 +S168,M042,current,A,30.0,40.0 +S169,M043,vibration,mm/s,3.5,6.0 +S170,M043,temperature,C,70.0,85.0 +S171,M043,pressure,PSI,135.0,115.0 +S172,M043,current,A,30.0,40.0 +S173,M044,vibration,mm/s,3.5,6.0 +S174,M044,temperature,C,70.0,85.0 +S175,M044,pressure,PSI,135.0,115.0 +S176,M044,current,A,30.0,40.0 +S177,M045,vibration,mm/s,3.5,6.0 +S178,M045,temperature,C,70.0,85.0 +S179,M045,pressure,PSI,135.0,115.0 +S180,M045,current,A,30.0,40.0 +S181,M046,vibration,mm/s,3.5,6.0 +S182,M046,temperature,C,70.0,85.0 +S183,M046,pressure,PSI,135.0,115.0 +S184,M046,current,A,30.0,40.0 +S185,M047,vibration,mm/s,3.5,6.0 +S186,M047,temperature,C,70.0,85.0 +S187,M047,pressure,PSI,135.0,115.0 +S188,M047,current,A,30.0,40.0 +S189,M048,vibration,mm/s,3.5,6.0 +S190,M048,temperature,C,70.0,85.0 +S191,M048,pressure,PSI,135.0,115.0 +S192,M048,current,A,30.0,40.0 +S193,M049,vibration,mm/s,3.5,6.0 +S194,M049,temperature,C,70.0,85.0 +S195,M049,pressure,PSI,135.0,115.0 +S196,M049,current,A,30.0,40.0 +S197,M050,vibration,mm/s,3.5,6.0 +S198,M050,temperature,C,70.0,85.0 +S199,M050,pressure,PSI,135.0,115.0 +S200,M050,current,A,30.0,40.0 diff --git a/v1/machine_maintenance/data/technicians.csv b/v1/machine_maintenance/data/technicians.csv new file mode 100644 index 00000000..a3ffa5e3 --- /dev/null +++ b/v1/machine_maintenance/data/technicians.csv @@ -0,0 +1,21 @@ +technician_id,technician_name,skill_level,base_location,certifications,hourly_rate,max_weekly_hours,specialization +T001,Alice_Johnson,Senior,Houston_TX,Turbine|Generator,97.0,40,Rotating_Equipment +T002,Bob_Martinez,Senior,Chicago_IL,Compressor|Pump,94.0,40,Fluid_Systems +T003,Charlie_Brown,Senior,Phoenix_AZ,Generator|Motor,87.0,40,Electrical_Systems +T004,Diana_Chen,Senior,Houston_TX,Compressor,88.0,40,Mechanical_Systems +T005,Edward_Smith,Senior,Chicago_IL,Motor|Pump,91.0,40,General_Maintenance +T006,Fiona_Garcia,Senior,Phoenix_AZ,Pump|Generator,89.0,40,Hydraulic_Systems +T007,George_Davis,Intermediate,Houston_TX,Compressor,84.0,40,Material_Handling +T008,Hannah_Wilson,Intermediate,Chicago_IL,Compressor|Motor,74.0,40,Rotating_Equipment +T009,Ian_Taylor,Intermediate,Phoenix_AZ,Turbine|Generator,83.0,40,Fluid_Systems +T010,Julia_Anderson,Intermediate,Houston_TX,Pump|Motor,79.0,40,Electrical_Systems +T011,Kevin_Kumar,Intermediate,Chicago_IL,Compressor,80.0,40,Mechanical_Systems +T012,Laura_Lee,Intermediate,Phoenix_AZ,Motor|Generator,84.0,40,General_Maintenance +T013,Mike_Thompson,Intermediate,Houston_TX,Pump|Compressor,84.0,40,Hydraulic_Systems +T014,Nina_White,Junior,Chicago_IL,Motor,69.0,40,Material_Handling +T015,Oscar_Harris,Junior,Phoenix_AZ,Pump,63.0,40,Rotating_Equipment +T016,Patricia_Clark,Junior,Houston_TX,Compressor,59.0,40,Fluid_Systems +T017,Raj_Young,Junior,Chicago_IL,Turbine,60.0,40,Electrical_Systems +T018,Sarah_Adams,Junior,Phoenix_AZ,Motor|Pump,65.0,40,Mechanical_Systems +T019,Tom_Baker,Junior,Houston_TX,Generator,62.0,40,General_Maintenance +T020,Uma_Scott,Junior,Chicago_IL,Compressor|Motor,69.0,40,Hydraulic_Systems diff --git a/v1/machine_maintenance/data/training_options.csv b/v1/machine_maintenance/data/training_options.csv new file mode 100644 index 00000000..f00a3a2c --- /dev/null +++ b/v1/machine_maintenance/data/training_options.csv @@ -0,0 +1,42 @@ +technician_id,machine_type,training_cost,training_weeks +T001,Compressor,6271.0,5 +T001,Motor,3330.0,7 +T002,Turbine,5984.0,4 +T002,Generator,5186.0,5 +T003,Turbine,4111.0,5 +T003,Compressor,3508.0,2 +T004,Turbine,6457.0,8 +T004,Generator,6432.0,4 +T005,Compressor,3698.0,2 +T006,Turbine,4165.0,4 +T006,Compressor,5205.0,4 +T006,Motor,2327.0,4 +T007,Pump,7211.0,5 +T007,Generator,2074.0,4 +T007,Motor,4643.0,3 +T008,Pump,7170.0,2 +T009,Compressor,2444.0,7 +T009,Motor,6867.0,4 +T010,Turbine,3489.0,6 +T011,Motor,5531.0,5 +T011,Pump,5135.0,5 +T012,Turbine,5726.0,6 +T012,Pump,6576.0,7 +T013,Turbine,5963.0,3 +T013,Generator,5312.0,3 +T013,Motor,4703.0,6 +T014,Turbine,2196.0,4 +T014,Generator,6124.0,4 +T016,Turbine,5267.0,7 +T016,Pump,3594.0,3 +T016,Generator,2996.0,4 +T016,Motor,6945.0,4 +T017,Compressor,4812.0,4 +T017,Motor,4963.0,2 +T018,Turbine,7337.0,7 +T018,Compressor,3502.0,2 +T018,Generator,6046.0,8 +T019,Turbine,7705.0,8 +T019,Pump,2241.0,8 +T019,Motor,5114.0,5 +T020,Pump,5512.0,7 diff --git a/v1/machine_maintenance/data/travel.csv b/v1/machine_maintenance/data/travel.csv new file mode 100644 index 00000000..d2c79cea --- /dev/null +++ b/v1/machine_maintenance/data/travel.csv @@ -0,0 +1,10 @@ +from_location,to_location,travel_hours,travel_cost +Chicago_IL,Houston_TX,3.0,650.0 +Chicago_IL,Chicago_IL,0.0,0.0 +Chicago_IL,Phoenix_AZ,3.5,720.0 +Houston_TX,Houston_TX,0.0,0.0 +Houston_TX,Chicago_IL,3.0,650.0 +Houston_TX,Phoenix_AZ,2.5,480.0 +Phoenix_AZ,Houston_TX,2.5,480.0 +Phoenix_AZ,Chicago_IL,3.5,720.0 +Phoenix_AZ,Phoenix_AZ,0.0,0.0 diff --git a/v1/machine_maintenance/machine_maintenance.py b/v1/machine_maintenance/machine_maintenance.py new file mode 100644 index 00000000..4c7c9e1a --- /dev/null +++ b/v1/machine_maintenance/machine_maintenance.py @@ -0,0 +1,631 @@ +"""Machine Maintenance -- multi-reasoner template (PyRel v1). + +A 50-machine, 3-plant, 12-period manufacturing operation. The script threads five +reasoning stages through a single ontology so each stage's enrichments feed the next: + + Stage 1 Querying -- OEE by plant, downtime drivers, waste rates, + technician coverage. + Stage 2 Rules -- per-machine risk tier (chronic / high-risk / overdue). + Stage 3 Graph -- machine-product producibility bottlenecks. + Stage 4 Predictive -- forward failure risk & mode (pre-loaded by default; + skippable, or wire a live GNN). + Stage 5 Prescriptive -- preventive-maintenance schedule + a technician what-if. + +Data is the bundled sample in data/*.csv. + +Run: + python machine_maintenance.py + +Output: + Prints each stage's findings to stdout. +""" + +from pathlib import Path + +from pandas import read_csv +from relationalai.semantics import Float, Integer, Model, String, distinct +from relationalai.semantics.reasoners.graph import Graph +from relationalai.semantics.reasoners.prescriptive import Problem +from relationalai.semantics.std import aggregates as aggs +from relationalai.semantics.std import floats + +# -------------------------------------------------- +# Configure inputs +# -------------------------------------------------- + +DATA_DIR = Path(__file__).parent / "data" +PERIOD_HORIZON = 12 # weekly planning periods +OEE_PLANNED_MIN_PER_RUN = 480 # planned minutes per production run (availability base) +CHRONIC_DOWNTIME_THRESHOLD = 15 # downtime events above which a machine is chronic +HIGH_RISK_FP = 0.20 # failure-probability cutoff for high-risk +HIGH_RISK_CRITICALITY = 4 # criticality cutoff for high-risk +OVERDUE_RUL = 9 # remaining-useful-life at/below which maintenance is overdue + +# Predictive stage (Stage 4) -- how forward failure risk is produced: +# "preloaded" (default) -- read the bundled failure_predictions; answerable, no training step. +# "skip" -- omit the stage entirely; the rest of the pipeline (incl. the Stage 5 +# schedule) is unaffected, since it reads per-machine failure_probability +# from the machine records, not these forward predictions. +# "live" -- train a GNN over sensor/downtime history (see README "Customize"). +PREDICTIVE_MODE = "preloaded" +_VALID_PREDICTIVE_MODES = ("preloaded", "skip", "live") +if PREDICTIVE_MODE not in _VALID_PREDICTIVE_MODES: + raise ValueError(f"PREDICTIVE_MODE must be one of {_VALID_PREDICTIVE_MODES}, got {PREDICTIVE_MODE!r}") + +model = Model("machine_maintenance") + +# ================================================================== +# Stage 0: Ontology -- load the bundled sample data +# ================================================================== + +# Machine --------------------------------------------------------------------- +Machine = model.Concept("Machine", identify_by={"machine_id": String}) +Machine.machine_name = model.Property(f"{Machine} has name {String:machine_name}") +Machine.machine_type = model.Property(f"{Machine} has type {String:machine_type}") +Machine.facility = model.Property(f"{Machine} at facility {String:facility}") +Machine.location = model.Property(f"{Machine} at location {String:location}") +Machine.remaining_useful_life = model.Property(f"{Machine} has remaining useful life {Float:remaining_useful_life}") +Machine.failure_probability = model.Property(f"{Machine} has failure probability {Float:failure_probability}") +Machine.criticality = model.Property(f"{Machine} has criticality {Integer:criticality}") +Machine.maintenance_duration_hours = model.Property(f"{Machine} needs {Integer:maintenance_duration_hours} maintenance hours") +Machine.estimated_parts_cost = model.Property(f"{Machine} has parts cost {Float:estimated_parts_cost}") + +_m = model.data(read_csv(DATA_DIR / "machines.csv")) +model.define( + m := Machine.new(machine_id=_m["machine_id"]), + m.machine_name(_m["machine_name"]), + m.machine_type(_m["machine_type"]), + m.facility(_m["facility"]), + m.location(_m["location"]), + m.remaining_useful_life(_m["remaining_useful_life"]), + m.failure_probability(_m["failure_probability"]), + m.criticality(_m["criticality"]), + m.maintenance_duration_hours(_m["maintenance_duration_hours"]), + m.estimated_parts_cost(_m["estimated_parts_cost"]), +) + +# Product --------------------------------------------------------------------- +Product = model.Concept("Product", identify_by={"product_id": String}) +Product.product_name = model.Property(f"{Product} has name {String:product_name}") +_p = model.data(read_csv(DATA_DIR / "products.csv")) +model.define( + p := Product.new(product_id=_p["product_id"]), + p.product_name(_p["product_name"]), +) + +# Technician ------------------------------------------------------------------ +Technician = model.Concept("Technician", identify_by={"technician_id": String}) +Technician.technician_name = model.Property(f"{Technician} has name {String:technician_name}") +Technician.skill_level = model.Property(f"{Technician} has skill level {String:skill_level}") +Technician.base_location = model.Property(f"{Technician} based at {String:base_location}") +Technician.hourly_rate = model.Property(f"{Technician} has hourly rate {Float:hourly_rate}") +Technician.max_weekly_hours = model.Property(f"{Technician} has max weekly hours {Integer:max_weekly_hours}") +_t = model.data(read_csv(DATA_DIR / "technicians.csv")) +model.define( + t := Technician.new(technician_id=_t["technician_id"]), + t.technician_name(_t["technician_name"]), + t.skill_level(_t["skill_level"]), + t.base_location(_t["base_location"]), + t.hourly_rate(_t["hourly_rate"]), + t.max_weekly_hours(_t["max_weekly_hours"]), +) + +# Qualification (technician x machine_type) ----------------------------------- +Qualification = model.Concept("Qualification", identify_by={"technician_id": String, "machine_type": String}) +Qualification.technician = model.Property(f"{Qualification} held by {Technician}") +Qualification.machine_type_str = model.Property(f"{Qualification} covers type {String:machine_type_str}") +_q = model.data(read_csv(DATA_DIR / "qualifications.csv")) +model.define( + q := Qualification.new(technician_id=_q["technician_id"], machine_type=_q["machine_type"]), + q.machine_type_str(_q["machine_type"]), +) +_QT = Technician.ref() +model.define(Qualification.technician(_QT)).where(Qualification.technician_id == _QT.technician_id) + +# ProductionRun --------------------------------------------------------------- +ProductionRun = model.Concept("ProductionRun", identify_by={"run_id": String}) +ProductionRun.machine_id_str = model.Property(f"{ProductionRun} on machine {String:machine_id_str}") +ProductionRun.product_id_str = model.Property(f"{ProductionRun} of product {String:product_id_str}") +ProductionRun.period_int = model.Property(f"{ProductionRun} in period {Integer:period_int}") +ProductionRun.actual_quantity = model.Property(f"{ProductionRun} actual qty {Integer:actual_quantity}") +ProductionRun.good_quantity = model.Property(f"{ProductionRun} good qty {Integer:good_quantity}") +ProductionRun.waste_quantity = model.Property(f"{ProductionRun} waste qty {Integer:waste_quantity}") +ProductionRun.actual_speed = model.Property(f"{ProductionRun} actual speed {Float:actual_speed}") +ProductionRun.target_speed = model.Property(f"{ProductionRun} target speed {Float:target_speed}") +ProductionRun.machine = model.Property(f"{ProductionRun} runs on {Machine}") +ProductionRun.product = model.Property(f"{ProductionRun} produces {Product}") +_pr = model.data(read_csv(DATA_DIR / "production_runs.csv")) +model.define( + r := ProductionRun.new(run_id=_pr["run_id"]), + r.machine_id_str(_pr["machine_id"]), + r.product_id_str(_pr["product_id"]), + r.period_int(_pr["period"]), + r.actual_quantity(_pr["actual_quantity"]), + r.good_quantity(_pr["good_quantity"]), + r.waste_quantity(_pr["waste_quantity"]), + r.actual_speed(_pr["actual_speed"]), + r.target_speed(_pr["target_speed"]), +) +_PRM = Machine.ref() +_PRP = Product.ref() +model.define(ProductionRun.machine(_PRM)).where(ProductionRun.machine_id_str == _PRM.machine_id) +model.define(ProductionRun.product(_PRP)).where(ProductionRun.product_id_str == _PRP.product_id) + +# DowntimeEvent --------------------------------------------------------------- +DowntimeEvent = model.Concept("DowntimeEvent", identify_by={"event_id": String}) +DowntimeEvent.machine_id_str = model.Property(f"{DowntimeEvent} on machine {String:machine_id_str}") +DowntimeEvent.fault_name = model.Property(f"{DowntimeEvent} has fault {String:fault_name}") +DowntimeEvent.duration_minutes = model.Property(f"{DowntimeEvent} lasted {Integer:duration_minutes} minutes") +DowntimeEvent.is_planned = model.Property(f"{DowntimeEvent} planned flag {Integer:is_planned}") +DowntimeEvent.machine = model.Property(f"{DowntimeEvent} affects {Machine}") +_de = model.data(read_csv(DATA_DIR / "downtime_events.csv")) +model.define( + d := DowntimeEvent.new(event_id=_de["event_id"]), + d.machine_id_str(_de["machine_id"]), + d.fault_name(_de["fault_name"]), + d.duration_minutes(_de["duration_minutes"]), + d.is_planned(_de["is_planned"]), +) +_DEM = Machine.ref() +model.define(DowntimeEvent.machine(_DEM)).where(DowntimeEvent.machine_id_str == _DEM.machine_id) + +# FailurePrediction ----------------------------------------------------------- +FailurePrediction = model.Concept("FailurePrediction", identify_by={"prediction_id": String}) +FailurePrediction.machine_id_str = model.Property(f"{FailurePrediction} for machine {String:machine_id_str}") +FailurePrediction.period_int = model.Property(f"{FailurePrediction} in period {Integer:period_int}") +FailurePrediction.failure_probability = model.Property(f"{FailurePrediction} probability {Float:failure_probability}") +FailurePrediction.predicted_failure_mode = model.Property(f"{FailurePrediction} mode {String:predicted_failure_mode}") +_fp = model.data(read_csv(DATA_DIR / "failure_predictions.csv")) +model.define( + f := FailurePrediction.new(prediction_id=_fp["prediction_id"]), + f.machine_id_str(_fp["machine_id"]), + f.period_int(_fp["period"]), + f.failure_probability(_fp["failure_probability"]), + f.predicted_failure_mode(_fp["predicted_failure_mode"]), +) + +# MachineProductCapability (machine x product) -------------------------------- +MachineProductCapability = model.Concept("MachineProductCapability", identify_by={"machine_id": String, "product_id": String}) +MachineProductCapability.machine_id_str = model.Property(f"{MachineProductCapability} of machine {String:machine_id_str}") +MachineProductCapability.product_id_str = model.Property(f"{MachineProductCapability} for product {String:product_id_str}") +MachineProductCapability.machine = model.Property(f"{MachineProductCapability} via {Machine}") +MachineProductCapability.product = model.Property(f"{MachineProductCapability} makes {Product}") +_mpc = model.data(read_csv(DATA_DIR / "machine_product_capabilities.csv")) +model.define( + c := MachineProductCapability.new(machine_id=_mpc["machine_id"], product_id=_mpc["product_id"]), + c.machine_id_str(_mpc["machine_id"]), + c.product_id_str(_mpc["product_id"]), +) +_CM = Machine.ref() +_CP = Product.ref() +model.define(MachineProductCapability.machine(_CM)).where(MachineProductCapability.machine_id_str == _CM.machine_id) +model.define(MachineProductCapability.product(_CP)).where(MachineProductCapability.product_id_str == _CP.product_id) + + +def banner(text): + print(f"\n{'=' * 70}\n{text}\n{'=' * 70}") + + +# ================================================================== +# Stage 1: Querying -- diagnose plant operations +# ================================================================== + +banner("STAGE 1 Querying") + +# --- OEE by plant = Availability x Performance x Quality --- +# Performance / quality / run counts come from production runs; unplanned downtime +# from downtime events. Aggregated separately (different fact tables) then combined. +runs_by_plant = model.where(ProductionRun.machine(Machine)).select( + distinct( + Machine.facility.alias("facility"), + aggs.count(ProductionRun).per(Machine.facility).alias("n_runs"), + aggs.avg(floats.float(ProductionRun.actual_speed) / floats.float(ProductionRun.target_speed)) + .per(Machine.facility).alias("performance"), + aggs.sum(floats.float(ProductionRun.good_quantity)).per(Machine.facility).alias("good_q"), + aggs.sum(floats.float(ProductionRun.actual_quantity)).per(Machine.facility).alias("actual_q"), + ) +).to_df() + +dt_unplanned_by_plant = model.where( + DowntimeEvent.machine(Machine), DowntimeEvent.is_planned == 0 +).select( + distinct( + Machine.facility.alias("facility"), + aggs.sum(floats.float(DowntimeEvent.duration_minutes)).per(Machine.facility).alias("unplanned_dt"), + ) +).to_df() + +oee = runs_by_plant.merge(dt_unplanned_by_plant, on="facility") +oee["n_runs"] = oee["n_runs"].astype(float) # count comes back as Int128Array +oee["availability"] = (oee["n_runs"] * OEE_PLANNED_MIN_PER_RUN - oee["unplanned_dt"]) / ( + oee["n_runs"] * OEE_PLANNED_MIN_PER_RUN +) +oee["quality"] = oee["good_q"] / oee["actual_q"] +oee["oee"] = oee["availability"] * oee["performance"] * oee["quality"] +oee = oee.sort_values("oee", ascending=False) +print("\n-- OEE by plant --") +for _, row in oee.iterrows(): + print( + f" {row['facility']}: availability {row['availability']*100:.1f}% " + f"performance {row['performance']*100:.1f}% quality {row['quality']*100:.1f}% " + f"OEE {row['oee']*100:.1f}%" + ) + +# --- Top downtime drivers by fault name --- +fault_dt = model.select( + distinct( + DowntimeEvent.fault_name.alias("fault_name"), + aggs.sum(floats.float(DowntimeEvent.duration_minutes)).per(DowntimeEvent.fault_name).alias("dt_min"), + ) +).to_df() +total_dt = fault_dt["dt_min"].sum() +fault_dt["pct"] = 100 * fault_dt["dt_min"] / total_dt +fault_dt = fault_dt.sort_values("dt_min", ascending=False) +print(f"\n-- Top downtime by fault name (total {total_dt:.0f} min) --") +for _, row in fault_dt.head(5).iterrows(): + print(f" {row['fault_name']}: {row['dt_min']:.0f} min ({row['pct']:.1f}%)") + +# --- Downtime by plant --- +plant_dt = model.where(DowntimeEvent.machine(Machine)).select( + distinct( + Machine.facility.alias("facility"), + aggs.sum(floats.float(DowntimeEvent.duration_minutes)).per(Machine.facility).alias("dt_min"), + ) +).to_df() +plant_dt["pct"] = 100 * plant_dt["dt_min"] / plant_dt["dt_min"].sum() +plant_dt = plant_dt.sort_values("dt_min", ascending=False) +print("\n-- Downtime by plant --") +for _, row in plant_dt.iterrows(): + print(f" {row['facility']}: {row['dt_min']:.0f} min ({row['pct']:.1f}%)") + +# --- Worst waste rates by machine-product --- +waste = model.where(ProductionRun.machine(Machine), ProductionRun.product(Product)).select( + distinct( + Machine.machine_id.alias("machine_id"), + Product.product_name.alias("product_name"), + ( + aggs.sum(floats.float(ProductionRun.waste_quantity)).per(Machine, Product) + / aggs.sum(floats.float(ProductionRun.actual_quantity)).per(Machine, Product) + ).alias("waste_rate"), + ) +).to_df().sort_values("waste_rate", ascending=False) +print("\n-- Worst waste rates by machine-product --") +for _, row in waste.head(5).iterrows(): + print(f" {row['machine_id']} + {row['product_name']} ({row['waste_rate']*100:.1f}%)") + +# --- Machine types with fewest qualified technicians --- +tech_cov = model.select( + distinct( + Qualification.machine_type_str.alias("machine_type"), + aggs.count(Qualification).per(Qualification.machine_type_str).alias("n_techs"), + ) +).to_df() +tech_cov["n_techs"] = tech_cov["n_techs"].astype(int) +tech_cov = tech_cov.sort_values("n_techs") +print("\n-- Qualified technicians per machine type --") +for _, row in tech_cov.iterrows(): + print(f" {row['machine_type']}: {int(row['n_techs'])}") + + +# ================================================================== +# Stage 2: Rules -- classify machine risk +# ================================================================== + +banner("STAGE 2 Rules") + +Machine.downtime_event_count = model.Property(f"{Machine} has downtime event count {Integer:downtime_event_count}") +model.define( + Machine.downtime_event_count( + aggs.count(DowntimeEvent).per(Machine).where(DowntimeEvent.machine(Machine)) | 0 + ) +) + +Machine.is_chronic = model.Relationship(f"{Machine} has chronic downtime") +model.where(Machine.downtime_event_count > CHRONIC_DOWNTIME_THRESHOLD).define(Machine.is_chronic()) + +Machine.is_high_risk = model.Relationship(f"{Machine} is high risk") +model.where( + Machine.failure_probability > HIGH_RISK_FP, Machine.criticality >= HIGH_RISK_CRITICALITY +).define(Machine.is_high_risk()) + +Machine.is_overdue = model.Relationship(f"{Machine} is overdue for maintenance") +model.where(Machine.remaining_useful_life <= OVERDUE_RUL).define(Machine.is_overdue()) + +Machine.risk_tier = model.Property(f"{Machine} has risk tier {String:risk_tier}") +# Critical: all three flags fire +model.where(Machine.is_chronic(), Machine.is_high_risk(), Machine.is_overdue()).define(Machine.risk_tier("Critical")) +# Elevated: exactly two +model.where(Machine.is_chronic(), Machine.is_high_risk(), model.not_(Machine.is_overdue())).define(Machine.risk_tier("Elevated")) +model.where(Machine.is_chronic(), model.not_(Machine.is_high_risk()), Machine.is_overdue()).define(Machine.risk_tier("Elevated")) +model.where(model.not_(Machine.is_chronic()), Machine.is_high_risk(), Machine.is_overdue()).define(Machine.risk_tier("Elevated")) +# Standard: zero or one +model.where(model.not_(Machine.is_chronic()), model.not_(Machine.is_high_risk()), model.not_(Machine.is_overdue())).define(Machine.risk_tier("Standard")) +model.where(Machine.is_chronic(), model.not_(Machine.is_high_risk()), model.not_(Machine.is_overdue())).define(Machine.risk_tier("Standard")) +model.where(model.not_(Machine.is_chronic()), Machine.is_high_risk(), model.not_(Machine.is_overdue())).define(Machine.risk_tier("Standard")) +model.where(model.not_(Machine.is_chronic()), model.not_(Machine.is_high_risk()), Machine.is_overdue()).define(Machine.risk_tier("Standard")) + +tiers = model.select( + distinct( + Machine.risk_tier.alias("tier"), + aggs.count(Machine).per(Machine.risk_tier).alias("n"), + ) +).to_df() +tiers["n"] = tiers["n"].astype(int) +tiers = tiers.sort_values("n", ascending=False) +print("\n-- Machine risk tiers --") +for _, row in tiers.iterrows(): + print(f" {row['tier']}: {int(row['n'])}") + +critical = model.where(Machine.risk_tier == "Critical").select( + Machine.machine_id.alias("machine_id"), + Machine.machine_type.alias("machine_type"), + Machine.facility.alias("facility"), +).to_df().sort_values("machine_id") +print(" Critical machines:") +for _, row in critical.iterrows(): + print(f" {row['machine_id']} ({row['machine_type']}, {row['facility']})") + +# ================================================================== +# Stage 3: Graph -- producibility bottlenecks +# ================================================================== + +banner("STAGE 3 Graph") + +# Bipartite machine-product graph (edge = machine can produce product). +# Betweenness centrality surfaces machines that bridge many products -- +# production-network bottlenecks whose loss is hardest to route around. +prod_graph = Graph(model, directed=False, weighted=False) +_GM = Machine.ref() +_GP = Product.ref() +model.where( + MachineProductCapability.machine(_GM), MachineProductCapability.product(_GP) +).define(prod_graph.Edge.new(src=_GM, dst=_GP)) + +n_nodes = int(model.select(prod_graph.num_nodes().alias("n")).to_df()["n"].iloc[0]) +n_edges = int(model.select(prod_graph.num_edges().alias("n")).to_df()["n"].iloc[0]) +print(f"\n bipartite graph: {n_nodes} nodes (machines + products), {n_edges} edges") + +prod_graph.Node.bottleneck_raw = prod_graph.betweenness_centrality() +Machine.bottleneck = model.Property(f"{Machine} has bottleneck centrality {Float:bottleneck}") +model.where(prod_graph.Node == Machine).define(Machine.bottleneck(prod_graph.Node.bottleneck_raw)) + +Machine.product_count = model.Property(f"{Machine} makes {Integer:product_count} products") +model.define( + Machine.product_count( + aggs.count(MachineProductCapability).per(Machine).where(MachineProductCapability.machine(Machine)) | 0 + ) +) + +bottlenecks = model.select( + Machine.machine_id.alias("machine_id"), + Machine.machine_type.alias("machine_type"), + Machine.bottleneck.alias("bottleneck"), + Machine.product_count.alias("product_count"), +).to_df() +bottlenecks["product_count"] = bottlenecks["product_count"].astype(int) +bottlenecks = bottlenecks.sort_values("bottleneck", ascending=False) +print("\n-- Top machine producibility bottlenecks (betweenness centrality) --") +for _, row in bottlenecks.head(8).iterrows(): + print( + f" {row['machine_id']} ({row['machine_type']}): betweenness {row['bottleneck']:.4f}, " + f"makes {row['product_count']} products" + ) + +# ================================================================== +# Stage 4: Predictive -- forward failure risk +# ================================================================== +# +# PREDICTIVE_MODE (set at the top of this file) selects how the stage runs: +# "preloaded" (default) -- read the bundled failure_predictions; no training step. +# "skip" -- omit the stage; nothing downstream depends on it, so the +# schedule in Stage 5 is identical with or without it. +# "live" -- train a GNN over sensor/downtime history (see README). + +banner("STAGE 4 Predictive") + +if PREDICTIVE_MODE == "skip": + print("\n (predictive stage skipped -- PREDICTIVE_MODE = 'skip')") + print(" Nothing downstream depends on it: the Stage 5 schedule reads per-machine") + print(" failure_probability from the machine records, not these forward predictions.") +elif PREDICTIVE_MODE == "preloaded": + fail_p12 = model.where(FailurePrediction.period_int == PERIOD_HORIZON).select( + FailurePrediction.machine_id_str.alias("machine_id"), + FailurePrediction.predicted_failure_mode.alias("mode"), + FailurePrediction.failure_probability.alias("fp"), + ).to_df().sort_values("fp", ascending=False) + print(f"\n-- Most likely to fail by period {PERIOD_HORIZON} (pre-loaded predictions) --") + for _, row in fail_p12.head(5).iterrows(): + print(f" {row['machine_id']} {row['mode']} ({row['fp'] * 100:.1f}%)") +else: # "live" + raise NotImplementedError( + "Live GNN path is not wired in this template. Set PREDICTIVE_MODE = 'preloaded' to " + "use the bundled predictions, 'skip' to omit the stage, or train a GNN over " + "sensor/downtime history and write FailurePrediction (see README 'Customize' and " + "the rai-predictive-modeling / -training skills)." + ) + + +# ================================================================== +# Stage 5: Prescriptive -- preventive-maintenance schedule + what-if +# ================================================================== + +banner("STAGE 5 Prescriptive") + +# Periods 1..H as a concept so the schedule can index (machine, period). +Period = model.Concept("Period", identify_by={"pid": Integer}) +_per = model.data([{"pid": t} for t in range(1, PERIOD_HORIZON + 1)]) +model.define(Period.new(pid=_per["pid"])) + +# Coverage feasibility: a machine can be maintained only if a qualified technician +# is available -- and Turbine work requires an ON-SITE (same-location) technician. +Machine.has_onsite_qualified = model.Relationship(f"{Machine} has an on-site qualified technician") +_QL = Qualification.ref() +_QLT = Technician.ref() +model.where( + _QL.machine_type_str == Machine.machine_type, + _QL.technician(_QLT), + _QLT.base_location == Machine.location, +).define(Machine.has_onsite_qualified()) + +# Same, but excluding technician T001 -- used for the what-if re-solve. +Machine.has_onsite_qualified_excl = model.Relationship(f"{Machine} has an on-site qualified technician excluding T001") +_QL2 = Qualification.ref() +_QLT2 = Technician.ref() +model.where( + _QL2.machine_type_str == Machine.machine_type, + _QL2.technician(_QLT2), + _QLT2.base_location == Machine.location, + _QLT2.technician_id != "T001", +).define(Machine.has_onsite_qualified_excl()) + +# coverable / coverable_wif: Turbine needs on-site tech; everything else is coverable. +Machine.coverable = model.Property(f"{Machine} coverage feasible {Integer:coverable}") +model.where(Machine.machine_type != "Turbine").define(Machine.coverable(1)) +model.where(Machine.machine_type == "Turbine", Machine.has_onsite_qualified()).define(Machine.coverable(1)) +model.where(Machine.machine_type == "Turbine", model.not_(Machine.has_onsite_qualified())).define(Machine.coverable(0)) + +Machine.coverable_wif = model.Property(f"{Machine} coverage feasible without T001 {Integer:coverable_wif}") +model.where(Machine.machine_type != "Turbine").define(Machine.coverable_wif(1)) +model.where(Machine.machine_type == "Turbine", Machine.has_onsite_qualified_excl()).define(Machine.coverable_wif(1)) +model.where(Machine.machine_type == "Turbine", model.not_(Machine.has_onsite_qualified_excl())).define(Machine.coverable_wif(0)) + +# Machine x Period decision space. +MachinePeriod = model.Concept("MachinePeriod", identify_by={"machine_id": String, "pid": Integer}) +MachinePeriod.machine = model.Property(f"{MachinePeriod} for {Machine}") +MachinePeriod.period = model.Property(f"{MachinePeriod} in {Period}") +MachinePeriod.machine_id_str = model.Property(f"{MachinePeriod} machine id {String:machine_id_str}") +MachinePeriod.period_num = model.Property(f"{MachinePeriod} period number {Integer:period_num}") +_MPM = Machine.ref() +_MPP = Period.ref() +model.define( + mp := MachinePeriod.new(machine_id=_MPM.machine_id, pid=_MPP.pid), + mp.machine(_MPM), + mp.period(_MPP), + mp.machine_id_str(_MPM.machine_id), + mp.period_num(_MPP.pid), +) + +# Pre-derive Float coefficients -- inline casts (floats.float) are not allowed +# inside the objective expression, so materialize them as properties first. +Machine.criticality_f = model.Property(f"{Machine} criticality as float {Float:criticality_f}") +model.define(Machine.criticality_f(floats.float(Machine.criticality))) +MachinePeriod.earliness = model.Property(f"{MachinePeriod} earliness weight {Float:earliness}") +model.define(MachinePeriod.earliness(floats.float(PERIOD_HORIZON + 1 - MachinePeriod.period_num))) + + +def _report_schedule(label, sched_df, si): + print(f"\n-- {label}: status {si.termination_status}, objective {si.objective_value:.3f} --") + print(f" machines scheduled: {len(sched_df)} of 50; periods used: 1..{int(sched_df['pid'].max())}") + per_period = sched_df.groupby("pid").size() + print(" jobs per period: " + ", ".join(f"p{p}={n}" for p, n in per_period.items())) + + +# --- Baseline solve -------------------------------------------------------- +MachinePeriod.x_maintain = model.Property(f"{MachinePeriod} maintain decision {Float:x_maintain}") +prob = Problem(model, Float) +prob.solve_for(MachinePeriod.x_maintain, type="bin", name=["maintain", MachinePeriod.machine_id_str, MachinePeriod.period_num]) +prob.satisfy( + model.require( + aggs.sum(MachinePeriod.x_maintain).per(Machine).where(MachinePeriod.machine(Machine)) <= Machine.coverable + ), + name=["cover", Machine.machine_id], +) +prob.satisfy( + model.require( + aggs.sum(MachinePeriod.x_maintain).per(Period).where(MachinePeriod.period(Period)) <= 5 + ), + name=["bay", Period.pid], +) +prob.maximize( + aggs.sum( + MachinePeriod.x_maintain + * Machine.failure_probability + * Machine.criticality_f + * MachinePeriod.earliness + ).where(MachinePeriod.machine(Machine)) +) +prob.solve("highs", time_limit_sec=120) +si = prob.solve_info() + +_vr = Float.ref() +_sm = Machine.ref() +sched = model.select( + _sm.machine_id.alias("machine_id"), + _sm.machine_type.alias("machine_type"), + _sm.facility.alias("facility"), + MachinePeriod.period_num.alias("pid"), +).where(MachinePeriod.machine(_sm), MachinePeriod.x_maintain(_vr), _vr > 0.5).to_df() +sched["pid"] = sched["pid"].astype(int) +_report_schedule("Baseline schedule", sched, si) +earliest = sched.sort_values("pid").head(5) +print(" first jobs (riskiest, earliest): " + ", ".join(f"{r.machine_id}(p{r.pid})" for r in earliest.itertuples())) + +# --- What-if: technician T001 unavailable ---------------------------------- +dropped = model.where(Machine.coverable == 1, Machine.coverable_wif == 0).select( + Machine.machine_id.alias("machine_id"), + Machine.machine_type.alias("machine_type"), + Machine.facility.alias("facility"), +).to_df().sort_values("machine_id") + +MachinePeriod.x_maintain_wif = model.Property(f"{MachinePeriod} maintain decision without T001 {Float:x_maintain_wif}") +prob2 = Problem(model, Float) +prob2.solve_for(MachinePeriod.x_maintain_wif, type="bin", name=["maintain_wif", MachinePeriod.machine_id_str, MachinePeriod.period_num]) +prob2.satisfy( + model.require( + aggs.sum(MachinePeriod.x_maintain_wif).per(Machine).where(MachinePeriod.machine(Machine)) <= Machine.coverable_wif + ), + name=["cover_wif", Machine.machine_id], +) +prob2.satisfy( + model.require( + aggs.sum(MachinePeriod.x_maintain_wif).per(Period).where(MachinePeriod.period(Period)) <= 5 + ), + name=["bay_wif", Period.pid], +) +prob2.maximize( + aggs.sum( + MachinePeriod.x_maintain_wif + * Machine.failure_probability + * Machine.criticality_f + * MachinePeriod.earliness + ).where(MachinePeriod.machine(Machine)) +) +prob2.solve("highs", time_limit_sec=120) +si2 = prob2.solve_info() + +_vr2 = Float.ref() +_sm2 = Machine.ref() +sched2 = model.select( + _sm2.machine_id.alias("machine_id"), + MachinePeriod.period_num.alias("pid"), +).where(MachinePeriod.machine(_sm2), MachinePeriod.x_maintain_wif(_vr2), _vr2 > 0.5).to_df() +print(f"\n-- What-if (T001 unavailable): status {si2.termination_status}, objective {si2.objective_value:.3f} --") +print(f" machines scheduled: {len(sched2)} of 50 (baseline {len(sched)}); objective delta {si.objective_value - si2.objective_value:.3f}") +print(f" machines that lose coverage: {len(dropped)}") +for _, row in dropped.iterrows(): + print(f" {row['machine_id']} ({row['machine_type']}, {row['facility']})") + +# Persist the plan headline as ontology so it stays queryable after the run. +MaintenancePlan = model.Concept("MaintenancePlan", identify_by={"key": Integer}) +MaintenancePlan.objective = model.Property(f"{MaintenancePlan} has objective {Float:objective}") +MaintenancePlan.machines_scheduled = model.Property(f"{MaintenancePlan} schedules {Integer:machines_scheduled} machines") +MaintenancePlan.periods_used = model.Property(f"{MaintenancePlan} spans {Integer:periods_used} periods") +_plan = model.data([{"key": 1, "obj": float(si.objective_value), "n": int(len(sched)), "p": int(sched["pid"].max())}]) +model.define( + plan := MaintenancePlan.new(key=_plan["key"]), + plan.objective(_plan["obj"]), + plan.machines_scheduled(_plan["n"]), + plan.periods_used(_plan["p"]), +) +plan_df = model.select( + MaintenancePlan.machines_scheduled.alias("machines_scheduled"), + MaintenancePlan.periods_used.alias("periods_used"), + MaintenancePlan.objective.alias("objective"), +).to_df() +print( + f"\n-- MaintenancePlan (persisted to ontology): " + f"{int(plan_df['machines_scheduled'].iloc[0])} machines over " + f"{int(plan_df['periods_used'].iloc[0])} periods, objective {plan_df['objective'].iloc[0]:.3f} --" +) + +print("\n>>> ALL STAGES complete") diff --git a/v1/machine_maintenance/pyproject.toml b/v1/machine_maintenance/pyproject.toml new file mode 100644 index 00000000..803a6cd6 --- /dev/null +++ b/v1/machine_maintenance/pyproject.toml @@ -0,0 +1,17 @@ +[build-system] +requires = ["setuptools>=64", "wheel"] +build-backend = "setuptools.build_meta" + +[project] +name = "rai-template-machine-maintenance" +version = "0.0.0" +description = "RelationalAI template: machine_maintenance (PyRel v1)" +readme = "README.md" +requires-python = ">=3.10" +dependencies = [ + "relationalai==1.15.0", + "pandas>=2.0", +] + +[tool.setuptools] +packages = [] diff --git a/v1/machine_maintenance/runbook.md b/v1/machine_maintenance/runbook.md new file mode 100644 index 00000000..752235d3 --- /dev/null +++ b/v1/machine_maintenance/runbook.md @@ -0,0 +1,180 @@ +# Runbook: Machine Maintenance — Multi-Reasoner Walkthrough + +Schedules preventive maintenance for a **50-machine, 3-plant, 12-period** manufacturing operation. OEE alone misranks the plants; downtime totals don't say what will fail next; rules flag risky machines but don't allocate scarce technician time; the optimizer produces a feasible schedule but can't see that all on-site Turbine coverage funnels through a single technician per plant. The chain threads querying, rules, graph, predictive, and prescriptive reasoners through one ontology so each stage's enrichments feed the next. + +> **Data provenance.** Every figure below is computed from the bundled `data/*.csv` — a sample manufacturing dataset: 50 machines, 20 technicians, 8 products, and 12 weekly periods across Plant_A, Plant_B, and Plant_C. +> +> **Status.** Every figure below comes from a real run of `machine_maintenance.py` against the bundled data — no predicted numbers. Querying and rules are deterministic; the graph and prescriptive stages use the template's own sound formulations. The predictive stage reads the bundled pre-loaded failure predictions by default (no training step); it can be skipped entirely (`PREDICTIVE_MODE = "skip"`) or swapped for a live GNN, and skipping it leaves every other figure unchanged. + +## The chain + +``` + ───────────────────────────────────────────────────────────────── + STAGE 1 Querying ──► OEE by plant, downtime drivers, waste + /rai-querying rates, technician coverage + Plant_C 78.3% > Plant_A 68.0% > Plant_B 63.3% + Bearing Failure = 19.4% of all downtime. + Turbines have only 3 qualified technicians. + ───────────────────────────────────────────────────────────────── + STAGE 2 Rules ──► Machine.risk_tier (50) + /rai-rules-authoring 3 Critical · 6 Elevated · 41 Standard + Critical: M001, M006 (Turbine/Plant_A), M011. + ───────────────────────────────────────────────────────────────── + STAGE 3 Graph ──► Machine.bottleneck (50) + /rai-graph-analysis Pumps & Motors bridge the most product lines. + ───────────────────────────────────────────────────────────────── + STAGE 4 Predictive ──► Forward failure risk & mode, 12 periods + /rai-predictive-modeling Pre-loaded by default; skippable or live GNN. + M016 / M028 / M011 ≈ 42% by period 12. + ───────────────────────────────────────────────────────────────── + STAGE 5 Prescriptive ──► Maintenance schedule + technician what-if + /rai-prescriptive-* All 50 scheduled (5/period, P1–10); drop T001 + and 4 Plant_A Turbines lose coverage. + ───────────────────────────────────────────────────────────────── +``` + +## Workflow + +> **How to use this walkthrough.** Each section is a Prompt you paste into a single RAI session; state accumulates across steps, so later reasoners read the properties earlier ones wrote. Responses show what the template produces against the bundled real data. + +### 1. Build ontology + +**Prompt** + +``` +/rai-build-starter-ontology Build a manufacturing maintenance ontology from the CSVs in data/. Scope it for preventive-maintenance scheduling over a multi-period horizon — introduce a Period concept (1..12 from the `period` column) alongside the source-bound concepts (machines, technicians, qualifications, products, production runs, downtime events, failure predictions, machine-product capabilities). +``` + +**Response** + +Concepts bound to the bundled CSVs: `Machine` (50, across Plant_A/B/C × Turbine/Generator/Pump/Compressor/Motor), `Technician` (20), `Qualification` (32), `Product` (8), `ProductionRun` (844), `DowntimeEvent` (353), `FailurePrediction` (600), `MachineProductCapability` (120), and a generated `Period` (1..12). The `MachinePeriod` decision space is added later, in the prescriptive stage. + +### 2. Examine the ontology + +**Prompt** + +``` +/rai-querying What concepts and relationships does the ontology have, and how many rows are in each? +``` + +**Response** + +50 `Machine`, 20 `Technician`, 32 `Qualification`, 8 `Product`, 844 `ProductionRun`, 353 `DowntimeEvent`, 600 `FailurePrediction`, 120 `MachineProductCapability`, and 12 `Period`. Machines relate to production runs, downtime events, failure predictions, and product capabilities; technicians relate to qualifications. + +### 3. Discover reasoner questions + +**Prompt** + +``` +/rai-discovery We run a 50-machine, 3-plant operation and want to keep it healthy: where are we losing output, what is likely to fail next, where are the structural single points of failure, and how should we schedule preventive maintenance under a thin bench of qualified technicians? +``` + +**Response** + +Routes the work across reasoner families: descriptive querying (OEE, downtime drivers, waste rates, technician coverage), rules (per-machine risk tiers), graph (producibility bottlenecks), predictive (forward failure risk), and prescriptive (preventive-maintenance scheduling with a technician what-if). These map to the stages below, in order. + +### 4. Diagnose plant operations — OEE + +**Prompt** + +``` +/rai-querying What's the OEE by plant, broken into Availability (planned time = production runs × 480 min per run; downtime = unplanned events only, is_planned = 0), Performance (avg of actual_speed / target_speed per run), and Quality (good_quantity / actual_quantity)? Compute OEE from the unrounded components, then round to one decimal. +``` + +**Response** + +| Plant | Availability | Performance | Quality | OEE | +|---|---|---|---|---| +| Plant_C | 97.7% | 81.7% | 98.2% | **78.3%** | +| Plant_A | 96.4% | 71.8% | 98.3% | **68.0%** | +| Plant_B | 92.5% | 69.8% | 98.1% | **63.3%** | + +Plant_C leads; Plant_B trails — driven by its low Availability (most unplanned downtime) and Performance. + +### 5. Find the downtime drivers + +**Prompt** + +``` +/rai-querying What are the top causes of downtime by specific fault name and their percent of total downtime? And which plant carries the most downtime? +``` + +**Response** + +Top fault names: **Bearing Failure 3,905 min (19.4%)**, Overheating 3,183 (15.8%), Motor Burnout 2,344 (11.7%), Seal Degradation 2,328 (11.6%), Shaft Misalignment 1,600 (8.0%). By plant: **Plant_B 10,494 min (52.2%)**, Plant_A 6,576 (32.7%), Plant_C 3,033 (15.1%). Total downtime = 20,103 min. + +### 6. Surface the worst waste + +**Prompt** + +``` +/rai-querying Which machine-product combinations have the worst waste rates (waste_quantity / actual_quantity), to one decimal? +``` + +**Response** + +M025 + Hydraulic Seal Kit (3.8%), M005 + Turbine Blade Assembly (3.7%), M002 + Turbine Blade Assembly (3.6%), M049 + Motor Winding Set (3.6%), M045 + Control Panel Unit (3.5%). + +### 7. Check technician coverage + +**Prompt** + +``` +/rai-querying Which machine types have the fewest qualified technicians? +``` + +**Response** + +Turbines are most constrained — only **3** qualified technicians (T001, T009, T017). Generators have 6; Pumps 7; Compressors and Motors 8 each. This concentration is what later makes Turbine coverage fragile in the schedule. + +### 8. Classify machine risk + +**Prompt** + +``` +/rai-rules-authoring Rate each machine's risk from three flags: chronic = more than 15 downtime events; high-risk = failure probability above 0.20 AND criticality 4 or higher; maintenance-overdue = remaining useful life of 9 or less. All three flags → Critical; exactly two → Elevated; otherwise Standard. +``` + +**Response** + +**3 Critical** — M001 (Turbine, Plant_A), M006 (Turbine, Plant_A), M011 (Compressor, Plant_B); **6 Elevated**; **41 Standard**. The two Critical Turbines sit in the same plant the coverage query already flagged as thin on Turbine technicians. + +### 9. Find producibility bottlenecks + +**Prompt** + +``` +/rai-graph-analysis Which machines are the biggest producibility bottlenecks — the ones the most production routes flow through, so they bridge the most product lines and are hardest to route around if lost? +``` + +**Response** + +The bipartite graph has 58 nodes (50 machines + 8 products) and 120 edges. Betweenness centrality is highest for the **20 machines that each make three products — every Pump (M021–M030) and Motor (M041–M050)** — which tie at the top (46.7) because the most production routes flow through them; the two-product machines sit on no shortest paths. (A machine-machine co-occurrence projection over shared products surfaces the same 20.) + +### 10. Predict forward failure risk + +**Prompt** + +``` +/rai-predictive-modeling Which machines are most likely to fail over the next 12 periods, and what's the most likely failure mode for each? +``` + +**Response** + +By default the template reads the bundled pre-loaded `failure_predictions` (no training step), so the answer is deterministic — by period 12 the highest-risk machines are M016 valve_stuck (42.0%), M028 seal_leak (42.0%), M011 valve_stuck (42.0%), M012 valve_stuck (41.5%), M047 motor_burnout (35.4%). This stage is **optional**: set `PREDICTIVE_MODE = "skip"` to omit it entirely — the schedule in the next step is unchanged, because it reads each machine's own `failure_probability`, not these forward predictions. To run it live instead, set `PREDICTIVE_MODE = "live"` and train a GNN over the sensor and downtime history (see _Customize_ in the README and the rai-predictive-modeling / rai-predictive-training skills). + +### 11. Schedule preventive maintenance + stress-test + +**Prompt** + +``` +/rai-prescriptive-problem-formulation What's the optimal preventive-maintenance schedule across the 50 machines and 12 periods — at most 5 jobs per period, each maintained machine assigned a qualified technician (Turbine work covered by an on-site technician at the same plant), prioritizing high failure-probability and high-criticality machines in earlier periods? And if technician T001 becomes unavailable, which machines lose coverage? +``` + +**Response** + +Baseline solve is **OPTIMAL**: all **50 machines scheduled across periods 1–10** at 5 jobs/period (periods 11–12 absorb the slack), with the riskiest machines (M028, M016, M012, M006, M011) placed in period 1. Re-solving with **T001 unavailable** is still OPTIMAL but covers only **46 of 50** machines: the four Plant_A Turbines — **M001, M004, M006, M009** — lose coverage, because no on-site Turbine technician remains in Plant_A. + +## Data + +Bundled CSVs in `data/`: 50 machines (3 plants, 5 types), 20 technicians, 32 qualifications, 8 products, 120 machine-product capabilities, 844 production runs, 353 downtime events, 600 failure predictions, 200 sensors / 2,400 sensor readings, plus travel, training options, availability, and degradation references. The five-stage script loads the first eight; the rest support the extensions in the README. All stages run in `machine_maintenance.py`.