theatre-scheduling/modelling/scheduler.py

65 lines
1.6 KiB
Python

import pandas as pd
import numpy as np
import pyomo.environ as pe
import pyomo.gdp as pyogdp
from pyomo.core.base.set_types import Any
# check with Taha if code is too similar to Alstom?
class TheatreScheduler:
def __init__(self):
pass
def _generate_cases(self):
pass
def create_model(self):
model = pe.ConcreteModel()
# Model Data
model.CASES = pe.Set() # indexed by (caseID, sessionID)
model.CASE_DURATIONS = pe.Param() # median case times
model.SESSION_DURATIONS = pe.param() # session durations
model.M = pe.Param() # big M
max_util = 0.85
# Decision Variables
model.SESSION_ASSIGNED = pe.Var()
model.CASE_START_TIME = pe.Var()
model.UTILISATION = pe.Var()
# Objective
def objective_function(model):
pass
model.OBJECTIVE = pe.Objective()
# Constraints
# Case start time must be after start time of assigned theatre session
def case_start_time():
pass
model.CASE_START = pe.Constraint()
# Case end time must be before end time of assigned theatre session
def case_end_time():
pass
model.CASE_END_TIME = pe.Constraint()
# Cases can be assigned to a maximum of one session
def session_assignment():
pass
model.SESSION_ASSIGNMENT = pe.Constraint()
def disjunctions():
pass
model.DISJUNCTIONS = pyogdp.Disjunction()
def theatre_util():
pass
model.THEATRE_UTIL = pe.Constraint()
return model
def solve(self):
pass