2012-02-29 6 views
1

Я пытаюсь написать некоторый код, чтобы запланировать набор задач реальной жизни, которые вводятся пользователем. Эти задачи хранятся в базе данных sqlite. И в данный момент, единственные параметры, я принимаю во внимание такие,Алгоритм планирования для планирования жизни

The project to which a task belongs to --> p
The name of the task itself --> t
And the due date for this task --> d

В project и due date параметры не являются обязательными. Но при условии, что пользователь всегда будет вводить по крайней мере и due date для каждой задачи. Мне было интересно, можно ли планировать набор задач с помощью планировщика, например, Completely Fair Scheduler (CFS) !. Я понимаю, что CFS был написан для планирования задач с гораздо более тонкой детализацией (наносекунды), чем набор задач, предлагаемых для этой цели ... Но я понял, что это возможно и, возможно, более эффективно, если я могу изменить его для работы с задачи, которые находятся в том же масштабе времени, что и наше восприятие времени.

Типичная запись в базе данных будет в формате (p, t, d). «p» является необязательным. Вот несколько примеров ..

(_, 'Call home', 29/2/2012)
(Work, 'Meet boss', 14/3/2012)
(Work, 'Ask for raise', 18/3/2012)
(_, 'Book tickets', 10/3/2012)
(Work, 'Quit', 14/4/2012)
(Personal, 'Get botox injections', 10/3/2012)
(Personal, 'Get breast implants', 10/10/2012)
(_, 'Dad bday', 7/10/2012)

Вот ситуация, чтобы рассмотреть. Я хотел бы проснуться утром. Запустите этот алгоритм «еще не закодирован» на множестве задач .. как и приведенные выше .. и я хотел бы получить расписание на оставшуюся часть дня, что максимизирует пропускную способность. На более позднем этапе я хотел бы передать аргументы этим алгоритмам, которые позволили бы мне управлять планировщиком, чтобы вернуть набор задач в зависимости от моей текущей ситуации. Например, если я нахожусь на работе, я хочу иметь возможность передать аргументы алгоритму, чтобы попросить его вернуть задачи, которые могут быть завершены на работе.

Надеюсь, я смогу передать суть этого. Я понимаю, что одного только due date недостаточно для планирования задач с использованием CFS, например .. но если есть другие параметры, которые я должен рассмотреть, пожалуйста, дайте мне знать. И любые предложения по использованию такого алгоритма планирования будут полезны.

Спасибо.

ответ

1

cfs предназначен для планирования кусочков задач на процессоре. вы человек и не можете многозадачность, как процессор. вы намного лучше выполняете одну задачу до завершения.

Инструменты, обычно используемые для решения задач диспетчеризации для людей, относятся к constraint programming. они позволяют вам делать такие вещи, как оптимизация для определенных переменных (производительность, в вашем случае, которая, как я полагаю, связана с задачами, имеющими разные приоритеты) при различных ограничениях (например, существует только так много часов в день и не может сделать два вещи в то же время).

Оказалось, что в целом это сложный класс проблем, и нет единого, действительно хорошего решения (хотя многие из них основаны на поиске в той или иной форме). вам нужно настроить подходы, попробовать разные алгоритмы и т. д.из-за этого были разработаны различные пакеты, которые предоставляют довольно абстрактные интерфейсы, которые позволяют описывать проблему в формальных (иш) терминах, а затем попытаться решить ее различными способами.

Сказав все это, для любого конкретного случая (например, вашего), вероятно, будет более продуктивным просто написать прямое решение (а не изучать один из этих сложных пакетов). но я не вижу использования cfs, являющегося частью любого разумного решения.

не уверен, что это то, что вы искали, или полезно - извините. если бы я был в вашей позиции, я думаю, я бы попытался использовать choco, потому что это единственный пакет ограничений, с которым я получил некоторый опыт. но вы не я, и я сомневаюсь, что это хорошее решение для вас. Возможно, вам лучше всего искать информацию на основе информации здесь, а затем задавать другой вопрос, если у вас есть лучшее представление о том, что возможно?

Смежные вопросы