调度生命的调度算法

时间:2012-02-29 20:14:19

标签: algorithm scheduling

我正在尝试编写一些代码来安排一组由用户输入的现实生活任务。这些任务存储在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

projectdue date参数是可选的。但假设用户将始终为每个任务输入至少task namedue 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 个答案:

答案 0 :(得分:1)

cfs用于在cpu上调度任务切片。你是一个人,不能像cpu一样多任务。你完成一项任务要好得多。

通常用于解决人类调度任务的工具与constraint programming有关。它们允许你在不同的约束条件下对某些变量进行优化(生产率,在你的情况下,我猜这与具有不同优先级的任务有关)(比如一天只有这么多小时,而且无法做到两个)事情在同一时间)。

事实证明,一般来说,这是一个很难解决的问题,而且没有单一的,非常好的解决方案(尽管很多都是基于某种形式的引导式搜索)。你需要调整方法,尝试不同的算法等,因此,已经开发了各种软件包,提供相当抽象的接口,让你用正式(ish)术语描述问题,然后尝试以各种方式解决它。

说了这么多,对于任何一个特定情况(和你的一样),简单地编写直接解决方案(而不是学习其中一个复杂的包)可能会更有效率。但我不认为使用cfs是任何合理解决方案的一部分。

不确定这是您正在寻找的还是有帮助的 - 抱歉。如果我在你的位置,我想我会尝试使用choco,因为它是我有一些经验的一个约束包。但你不是我,我怀疑这对你来说是一个很好的解决方案 - 你可能最好只根据这里的信息进行搜索,然后在你更好地了解可能的情况后再询问另一个问题?