Download
/**
* @author: Dr. rer. nat. George Assaf (Brandenburg University of Technology (BTU), Cottbus, Germany)
* @version: 1.0
* @date: 2025-10-26
* @description: Helper class dealing with pat-ent related constraints, such as patient availability and later patient prefrences.
*/
package com.example.massp;
import org.chocosolver.solver.Model;
import org.chocosolver.solver.variables.IntVar;
class CalendarDomain{
private int resourceId;
private int[] globalCalendar;
private int[] resourceCalendar;
private int currentWorkload;
private int appointmentDurationInSlot;
private IntVar calendarVar;
public CalendarDomain(int resourceId, int[] globalCalendar, int[] resourceCalendar, int appointmentDurationInSlot, int currentWorkload) {
this.resourceId = resourceId;
this.globalCalendar = globalCalendar;
this.resourceCalendar = resourceCalendar;
this.appointmentDurationInSlot = appointmentDurationInSlot;
this.currentWorkload = currentWorkload;
}
public void findDate(Model model) {
calendarVar = model.intVar("appointmentSlotVar doctor" + resourceId, resourceCalendar);
elemenatePatientsAbsenceDates(model, MASPConfig.patient_absence_dates);
//return calendarVar;
}
public int getResourceId() {
return resourceId;
}
public int getCurrentWorkload() {
return currentWorkload;
}
public IntVar getCalendarVar() {
return calendarVar;
}
private void elemenatePatientsAbsenceDates(Model model, int[] patientAbsenceDates) {
if (patientAbsenceDates == null || patientAbsenceDates.length == 0) {
return; // No absence dates to process
}
for (int absenceDate : patientAbsenceDates) {
if(absenceDate>=0)
{
model.arithm(calendarVar.div(MASPConfig.SLOTS_PER_DAY).intVar(), "!=", absenceDate).post();
}
}
}
}