Методы планирования

Я работаю над приложением 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, предоставляет решение, которое я буду использовать для этого проекта. Поэтому я назначил награду Таку.

13
задан ROMANIA_engineer 26 September 2017 в 03:14
поделиться