Я работаю над приложением PHP для компании по уходу на дому. У них есть x количество опекунов, которые каждую неделю должны посещать дома x количества пользователей услуг (клиентов). У каждого пользователя услуги есть установленное «расписание», когда они должны быть посещены, которое включает периоды плюс продолжительность посещения в минутах.
Так, например, пользователь услуги может иметь следующее расписание.
AM Lunch Tea Late Night Respite
Mon 30m - 30m 60m - -
Tue 30m - - 60m - -
Wed 20m 25m 30m 60m 120m -
Thu - - 30m - - -
Fri 30m 25m - - - -
Sat - - - - - -
Sun 20m 25m - - - -
Эти периоды в настоящее время сохраняются в базе данных в следующем формате:
Table: Service_user_schedules
id service_user_id day period duration
Каждую неделю опекуны заполняют таблицу с указанием периодов, в которые они могут работать. Эти данные затем вводятся в систему и сохраняются в базе данных в следующем формате:
Table: Carer_available_shifts
id carer_id day period
Теперь проблема в том, что мне нужно создать контроллер, который будет принимать эти данные и автоматически назначать лиц, осуществляющих уход за пользователями услуг, в зависимости от их доступности. поставили. Это должно быть редактируемым, чтобы в случае, если никто не доступен для определенного опекуна, пользователь мог выбрать тот, который недоступен, и они все равно будут добавлены в базу данных.
На данный момент у меня беспорядок циклов, функций и эхо-сигналов, чтобы проверить, доступны ли опекуны для конкретного пользователя службы, и сделать ее доступной для редактирования.
Выполнял ли кто-нибудь подобные задачи раньше, и если да, то нашли ли вы простой способ их выполнить. Я бы предпочел сделать его объектно-ориентированным, чтобы я мог повторно использовать тот же общий класс, но на данный момент я в полной растерянности!
РЕДАКТИРОВАТЬ: Я добавил вознаграждение за этот вопрос. В настоящее время я исследую генетические алгоритмы (то, о чем я даже не слышал, не говоря уже об использовании!), Как решение этой проблемы, основанное на некоторых ответах. Я хотел бы знать, использовал ли кто-либо из вас другие методы решения этой проблемы или если вы использовали генетические алгоритмы, не могли бы вы дать менее общее объяснение того, как вы применили их к этой конкретной проблеме.
Я предполагаю что это препятствие будет довольно распространенным во многих приложениях "кадрового" типа, и я удивлен, как мало обсуждается это где-нибудь в сети!
ОБНОВЛЕНИЕ
Для этого конкретного проекта, я думаю, я могу в конечном итоге использовать метод базы данных, как описано Tak, но, возможно, возможно преобразовать в использование GA в будущем, когда у меня будет больше времени на разработку.
Сейчас я немного не понимаю, кому присудить награду. duedl0r приложил много усилий для своего (или ее) ответа. Это дало мне отличное представление о мире генетических алгоритмов - метода решения проблем, с которым я никогда раньше не сталкивался. Однако ответ, предоставленный Tak, предоставляет решение, которое я буду использовать для этого проекта. Поэтому я назначил награду Таку.