78 lines
2.4 KiB
Python
78 lines
2.4 KiB
Python
from pyomo.environ import SolverFactory
|
|
solver = SolverFactory('glpk')
|
|
|
|
import pandas as pd
|
|
import pyomo.environ as pyo
|
|
import datetime
|
|
# Create a model
|
|
model = pyo.ConcreteModel()
|
|
|
|
## Define variables
|
|
#model.x = pyo.Var(within=pyo.NonNegativeReals)
|
|
#model.y = pyo.Var(within=pyo.NonNegativeReals)
|
|
## Define objective
|
|
#model.obj = pyo.Objective(expr=model.x + model.y, sense=pyo.minimize)
|
|
## Define constraints
|
|
#model.con1 = pyo.Constraint(expr=model.x + 2 * model.y >= 4)
|
|
#model.con2 = pyo.Constraint(expr=model.x - model.y <= 1)
|
|
## Select solver
|
|
#solver = pyo.SolverFactory('glpk')
|
|
## Solve the problem
|
|
#result = solver.solve(model)
|
|
## Display results
|
|
#print('Status:', result.solver.status)
|
|
#print('Termination Condition:', result.solver.termination_condition)
|
|
#print('Optimal x:', pyo.value(model.x))
|
|
#print('Optimal y:', pyo.value(model.y))
|
|
#print('Optimal Objective:', pyo.value(model.obj))
|
|
|
|
class Scheduler:
|
|
def __init__(self, case_file_path, session_file_path, patient_file_path):
|
|
"""
|
|
Read case and session data into Pandas DataFrames
|
|
Args:
|
|
case_file_path (str): path to case data in CSV format
|
|
session_file_path (str): path to theatre session data in CSV format
|
|
"""
|
|
try:
|
|
self.df_cases = pd.read_csv(case_file_path)
|
|
except FileNotFoundError:
|
|
print("Case data not found.")
|
|
try:
|
|
self.df_sessions = pd.read_csv(session_file_path)
|
|
except FileNotFoundError:
|
|
print("Session data not found")
|
|
try:
|
|
self.df_patients = pd.read_csv(patient_file_path)
|
|
except FileNotFoundError:
|
|
print("Patient data not found")
|
|
#self.model = self.create_model()
|
|
|
|
def date2int(date):
|
|
d0 = pd.to_datetime("25/11/2024", dayfirst=True)
|
|
delta = (pd.to_datetime(date, dayfirst=True) - d0).days
|
|
day = delta%7
|
|
week = int((delta - day)/7)
|
|
return week,day
|
|
|
|
def int2date(week, day):
|
|
d0 = pd.to_datetime("25/11/2024", dayfirst=True)
|
|
delta = datetime.timedelta(days = 7*week + day)
|
|
date = d0 + delta
|
|
return date
|
|
|
|
path = '/home/hmag/code/pyomo/data'
|
|
my = Scheduler(path+'/cases.csv', path+'/sessions.csv', path+'/patients.csv')
|
|
|
|
print(my.df_cases)
|
|
print(my.df_sessions)
|
|
#print(my.df_patients)
|
|
#for i in my.df_patients:
|
|
# print(i)
|
|
print(my.df_cases['Date'][0])
|
|
date = my.df_cases['Date'][0]
|
|
|
|
print(date2int(date))
|
|
print(int2date(1,0))
|
|
|