Thessyrain commited on
Commit
705ada5
·
verified ·
1 Parent(s): 1c4c43a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +14 -13
app.py CHANGED
@@ -2,7 +2,8 @@ import gradio as gr
2
  import random
3
  import matplotlib.pyplot as plt
4
  import pandas as pd
5
- from io import StringIO
 
6
 
7
  # -------- Generate Sample Data --------
8
  def generate_jobs(num_jobs=5, num_machines=3):
@@ -62,17 +63,10 @@ def plot_schedule(schedule, title):
62
  ax.set_yticks(range(max(m for _, m, _, _ in schedule) + 1))
63
  ax.set_yticklabels([f"Machine {m+1}" for m in range(max(m for _, m, _, _ in schedule) + 1)])
64
  plt.tight_layout()
 
65
  plt.close(fig)
66
  return fig
67
 
68
- # -------- Convert Schedule to CSV --------
69
- def schedule_to_csv(schedule):
70
- df = pd.DataFrame(schedule, columns=["Job", "Machine", "Start Time", "End Time"])
71
- csv_buffer = StringIO()
72
- df.to_csv(csv_buffer, index=False)
73
- csv_buffer.seek(0)
74
- return csv_buffer.getvalue()
75
-
76
  # -------- Main Gradio Function --------
77
  def run_scheduler(num_jobs, num_machines, algorithm):
78
  jobs = generate_jobs(num_jobs, num_machines)
@@ -86,9 +80,16 @@ def run_scheduler(num_jobs, num_machines, algorithm):
86
  else:
87
  return None, "Invalid algorithm selected.", None
88
 
 
89
  fig = plot_schedule(schedule, title)
90
- csv_data = schedule_to_csv(schedule)
91
- return fig, f"🔹 Makespan: {makespan} time units", csv_data
 
 
 
 
 
 
92
 
93
  # -------- Gradio Interface --------
94
  demo = gr.Interface(
@@ -101,10 +102,10 @@ demo = gr.Interface(
101
  outputs=[
102
  gr.Plot(label="Generated Schedule"),
103
  gr.Textbox(label="Performance Metric", interactive=False),
104
- gr.File(label="Download Schedule (CSV)")
105
  ],
106
  title="🧠 Smart Factory Job Scheduling Visualizer",
107
- description="Visualize job scheduling in smart factories, compare algorithms, and download the schedule as CSV."
108
  )
109
 
110
  demo.launch()
 
2
  import random
3
  import matplotlib.pyplot as plt
4
  import pandas as pd
5
+ import tempfile
6
+ import os
7
 
8
  # -------- Generate Sample Data --------
9
  def generate_jobs(num_jobs=5, num_machines=3):
 
63
  ax.set_yticks(range(max(m for _, m, _, _ in schedule) + 1))
64
  ax.set_yticklabels([f"Machine {m+1}" for m in range(max(m for _, m, _, _ in schedule) + 1)])
65
  plt.tight_layout()
66
+
67
  plt.close(fig)
68
  return fig
69
 
 
 
 
 
 
 
 
 
70
  # -------- Main Gradio Function --------
71
  def run_scheduler(num_jobs, num_machines, algorithm):
72
  jobs = generate_jobs(num_jobs, num_machines)
 
80
  else:
81
  return None, "Invalid algorithm selected.", None
82
 
83
+ # Create Gantt Chart
84
  fig = plot_schedule(schedule, title)
85
+
86
+ # Create a temporary CSV file
87
+ df = pd.DataFrame(schedule, columns=["Job", "Machine", "Start Time", "End Time"])
88
+ temp_file = tempfile.NamedTemporaryFile(delete=False, suffix=".csv")
89
+ df.to_csv(temp_file.name, index=False)
90
+
91
+ # Return figure, performance metric, and download link
92
+ return fig, f"🔹 Makespan: {makespan} time units", temp_file.name
93
 
94
  # -------- Gradio Interface --------
95
  demo = gr.Interface(
 
102
  outputs=[
103
  gr.Plot(label="Generated Schedule"),
104
  gr.Textbox(label="Performance Metric", interactive=False),
105
+ gr.File(label="Download Schedule CSV")
106
  ],
107
  title="🧠 Smart Factory Job Scheduling Visualizer",
108
+ description="Generate job schedules, visualize Gantt charts, and export scheduling data for analysis."
109
  )
110
 
111
  demo.launch()