Spaces:
Sleeping
Sleeping
File size: 2,991 Bytes
ac23dee 244f9d0 ac23dee 244f9d0 ac23dee 244f9d0 932f1a8 244f9d0 144bb18 ac23dee 244f9d0 ac23dee 244f9d0 ac23dee 244f9d0 ac23dee 244f9d0 ac23dee 244f9d0 ac23dee 244f9d0 ac23dee 244f9d0 ac23dee 244f9d0 ac23dee 244f9d0 ac23dee 244f9d0 ac23dee |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
import gradio as gr
import numpy as np
import joblib
from datetime import datetime, timedelta
# Load model and label encoders
model = joblib.load("best_model.pkl")
le_operation_type = joblib.load("le_operation_type.pkl")
le_operator_id = joblib.load("le_operator_id.pkl")
def predict_end_date(start_date_str, quantity, operation_type, operator_id, day_of_week):
try:
start_date = datetime.strptime(start_date_str, "%d-%m-%Y")
except ValueError:
return "Error: Start Date must be in DD-MM-YYYY format"
# Encode categorical inputs
try:
operation_code = le_operation_type.transform([operation_type])[0]
except ValueError:
return f"Unknown Operation Type: {operation_type}"
try:
operator_code = le_operator_id.transform([operator_id])[0]
except ValueError:
return f"Unknown Operator ID: {operator_id}"
# Feature engineering
quantity_log = np.log1p(quantity)
quantity_log_squared = quantity_log ** 2
quantity_operation_interaction = quantity_log * operation_code
quantity_operator_interaction = quantity_log * operator_code
# Create feature vector for prediction
X = np.array([[
quantity_log,
quantity_log_squared,
quantity_operation_interaction,
quantity_operator_interaction,
operation_code,
operator_code,
day_of_week
]])
pred_days = model.predict(X)[0]
whole_days = int(pred_days)
fractional_day = pred_days - whole_days
total_seconds = fractional_day * 24 * 3600
hours = int(total_seconds // 3600)
minutes = int((total_seconds % 3600) // 60)
est_end_datetime = start_date + timedelta(days=whole_days, hours=hours, minutes=minutes)
est_end_date_str = est_end_datetime.strftime("%d-%m-%Y %H:%M")
duration_str = f"{whole_days} days, {hours} hours, {minutes} minutes"
return f"Estimated End Date & Time: {est_end_date_str}\nEstimated Duration: {duration_str}"
# Build Gradio interface
def gradio_interface(start_date, quantity, operation_type, operator_id, day_of_week):
return predict_end_date(start_date, quantity, operation_type, operator_id, day_of_week)
operation_options = list(le_operation_type.classes_)
operator_options = list(le_operator_id.classes_)
iface = gr.Interface(
fn=gradio_interface,
inputs=[
gr.Textbox(label="Start Date (DD-MM-YYYY)", value="21-07-2025"),
gr.Number(label="Quantity", value=6000),
gr.Dropdown(choices=operation_options, label="Operation Type", value=operation_options[0]),
gr.Dropdown(choices=operator_options, label="Operator ID", value=operator_options[0]),
gr.Slider(minimum=0, maximum=6, step=1, label="Day of Week (0=Monday, 6=Sunday)", value=1)
],
outputs="text",
title="Manufacturing Scheduler Prediction",
description="Predict the estimated end date and duration of a manufacturing job based on input parameters."
)
if __name__ == "__main__":
iface.launch()
|