Задачка на оптимизацию
От: Lepsik Индия figvam.ca
Дата: 23.11.15 14:41
Оценка:
Имеется женская клиника которая 1 января начинает делать определенную популярную процедуру. Имеется слегка еластичный лимит на количество процедур — условно говоря капасити = 20 в неделю, но если пару недель будет 21 то ето не сильно страшно.

Известно что спрос на ету процедуру имеется и больше чем 20 человек в неделю, по крайней мере сейчас человек 200 женщин уже ждут с нетерпением.

Процедура может начаться только в первый день периода у женщины. Пациентке дана инструкция позвонить в первый день кровотечения и получить указания от медсестры.

Период у человеков детородного возраста бывает каждые 21-35 дней со средним 30 дней, СтДев 5.6 дней (если ето пригодится), у многих они нерегулярны, у некоторых бывают 3-6 раз в год.

Внимание вопрос — как организовать шедьюлинг пациентов который был бы честным и в общих чертах first come first served ?
Re: Задачка на оптимизацию
От: Кодт Россия  
Дата: 23.11.15 16:12
Оценка:
Здравствуйте, Lepsik, Вы писали:

L>Внимание вопрос — как организовать шедьюлинг пациентов который был бы честным и в общих чертах first come first served ?


Если бы врачи прозревали будущее, то сделали бы так.

Выстроили пациентов в очередь.
Рассмотрели подмножество тех, у кого первый день приходится на один из дней ближайшей недели.
Взяли бы первые 20-21 человек.
Всем остальным — ждать дальше.

Собственно, это лучшее, что можно предложить.


Однако, интересно, выдержит ли клиника, если все 20 человек придутся на один и тот же день?
Логично предположить, что ограничение загрузки — это 3 человека в день (2 человека в воскресенье).

Поэтому можно сделать так же, как с недельным предвидением, только с суточным.
Берём из живой очереди первых 3, приходящихся на данный день. Если за прошлую неделю был недобор, то можем позволить себе расширить лимит на 1-2 человека.
Всем остальным — ждать дальше.
Перекуём баги на фичи!
Re[2]: Задачка на оптимизацию
От: Lepsik Индия figvam.ca
Дата: 23.11.15 16:24
Оценка:
К>Всем остальным — ждать дальше.

процедура должна начаться именно в первый день периода, иначе — давай до свидания до следущего месяца
Re: Задачка на оптимизацию
От: fin_81  
Дата: 23.11.15 16:45
Оценка: 3 (1)
Здравствуйте, Lepsik, Вы писали:

L>...

L>Внимание вопрос — как организовать шедьюлинг пациентов который был бы честным и в общих чертах first come first served ?

Слишком расплывчатое требование. Что такое "честно"? И как-то сильно теряет смысл требовать от очереди FIFO, если за день в очереди может быть только 3 элемента(человека).

Постой алгоритм "по звонку". Позвонили, сразу в очередь. Кто не успел, тот опоздал.

Так как обычно заводят карточку на пациента, то можно сделать приоритет постановки в очередь. Если пациентка не была на процедуре Х*30 дней, то может вытеснить из очереди другую с меньшим значением Х.

Думаю другие шедулеры не будут сильно честнее для очереди из 3-4 элемента.
Re[3]: Задачка на оптимизацию
От: Кодт Россия  
Дата: 23.11.15 16:55
Оценка: 3 (1)
Здравствуйте, Lepsik, Вы писали:

К>>Всем остальным — ждать дальше.


L>процедура должна начаться именно в первый день периода, иначе — давай до свидания до следущего месяца


Я именно это и имею в виду.
В понедельник идут первые трое из тех, у кого началось в этот понедельник. Но в общей очереди они могут быть хоть пятидесятыми. Потому что первым сорока девяти всё равно в этот понедельник в клинике делать нечего.
Но если кандидаты имеют положение в очереди — №50, №100, №150, №200, — то №200 не пролезет вперёд №50.
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.